Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GLSL 3.30 is not supported. Supported versions are: 1.10, 1.20, and 1.00 ES #128

Open
i336 opened this issue Jan 7, 2017 · 56 comments
Open

GLSL 3.30 is not supported. Supported versions are: 1.10, 1.20, and 1.00 ES #128

i336 opened this issue Jan 7, 2017 · 56 comments

Comments

@i336
Copy link

@i336 i336 commented Jan 7, 2017

I've been looking for an extremely fast terminal emulator for many years. xterm has unfixed rendering bugs and is slower than molasses. I don't like urxvt's lack of memory management. st uses more memory than xterm (yep!).

Just saw Alacritty on HN and was determined to try it out.

What are your plans for older hardware? I'm currently using a couple of laptops from 2007-2008: a ThinkPad T43 and a ThinkPad T60. Unfortunately the Rust nightly you're currently using is broken on i686 (#126) so I can't test Alacritty on the T43, but it reported the error in the title on my T60 (which has a slightly better GPU, FWIW).

T43 specs:

OpenGL vendor string: X.Org R300 Project
OpenGL renderer string: Gallium 0.4 on ATI RV370
OpenGL version string: 2.1 Mesa 11.0.2
OpenGL shading language version string: 1.20

01:00.0 VGA compatible controller: AMD/ATI [Advanced Micro Devices, Inc.] RV370/M22 [Mobility Radeon X300]

T60 specs:

Extended renderer info (GLX_MESA_query_renderer):
    Vendor: X.Org R300 Project (0x1002)
    Device: ATI RV515 (0x7145)
    Version: 11.2.2
    Accelerated: yes
    Video memory: 128MB

01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] RV515/M54 [Mobility Radeon X1400]

Yep, I realize these are kind of the "oh wow" of GPU land :) but I'm genuinely wondering what the best approach would be to support GPUs like these - I've been pondering making my own terminal emulator for a little while (as well as a 2D engine too, actually), but have absolutely no knowledge of OpenGL, Vulkan, etc.

"It would be impossible" is completely understandable; "it would require a nontrivial architecture redesign" also wouldn't be too surprising.

@jwilm

This comment has been minimized.

Copy link
Collaborator

@jwilm jwilm commented Jan 7, 2017

It's not impossible. I took a shortcut using a GL feature GL_ARB_blend_func_extended to make sub-pixel font rendering work properly. There are other ways to achieve this, and I think doing so would be reasonable for the project.

Alacritty's memory footprint is a bit high unfortunately. This will hopefully be improved in the future, but it's still early days in this area.

@ghost

This comment has been minimized.

Copy link

@ghost ghost commented Jan 7, 2017

@jwilm Sorry, it happened on my laptop ASUS K501UX too.

╭─mindcat@mindcat-linux-pc ~/.local/share/Steam/SteamApps/common/Ironclad Tactics  
╰─➤  alacritty
device_pixel_ratio: 1
Alacritty encountered an unrecoverable error:

	There was an error initializing the shaders: failed compiling shader: 0:14(10): error: GLSL 3.30 is not supported. Supported versions are: 1.10, 1.20, 1.30, 1.40, 1.50, 1.00 ES, 3.00 ES, 3.10 ES, and 3.20 ES
╭─mindcat@mindcat-linux-pc ~/.local/share/Steam/SteamApps/common/Ironclad Tactics  
╰─➤  lspci                                                                                                                                                                   127 ↵
00:00.0 Host bridge: Intel Corporation Skylake Host Bridge/DRAM Registers (rev 08)
00:02.0 VGA compatible controller: Intel Corporation HD Graphics 520 (rev 07)
00:04.0 Signal processing controller: Intel Corporation Skylake Processor Thermal Subsystem (rev 08)
00:14.0 USB controller: Intel Corporation Sunrise Point-LP USB 3.0 xHCI Controller (rev 21)
00:14.2 Signal processing controller: Intel Corporation Sunrise Point-LP Thermal subsystem (rev 21)
00:15.0 Signal processing controller: Intel Corporation Sunrise Point-LP Serial IO I2C Controller #0 (rev 21)
00:15.1 Signal processing controller: Intel Corporation Sunrise Point-LP Serial IO I2C Controller #1 (rev 21)
00:16.0 Communication controller: Intel Corporation Sunrise Point-LP CSME HECI #1 (rev 21)
00:17.0 RAID bus controller: Intel Corporation 82801 Mobile SATA Controller [RAID mode] (rev 21)
00:1c.0 PCI bridge: Intel Corporation Device 9d10 (rev f1)
00:1c.4 PCI bridge: Intel Corporation Sunrise Point-LP PCI Express Root Port #5 (rev f1)
00:1c.5 PCI bridge: Intel Corporation Sunrise Point-LP PCI Express Root Port #6 (rev f1)
00:1f.0 ISA bridge: Intel Corporation Sunrise Point-LP LPC Controller (rev 21)
00:1f.2 Memory controller: Intel Corporation Sunrise Point-LP PMC (rev 21)
00:1f.3 Audio device: Intel Corporation Sunrise Point-LP HD Audio (rev 21)
00:1f.4 SMBus: Intel Corporation Sunrise Point-LP SMBus (rev 21)
01:00.0 3D controller: NVIDIA Corporation GM107M [GeForce GTX 950M] (rev ff)
02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 10)
03:00.0 Network controller: Intel Corporation Wireless 7265 (rev 59)

If I switch on NVIDIA card, it works fine. Intel HD 520 not.

@ghost

This comment was marked as spam.

Copy link

@ghost ghost commented Jan 7, 2017

@jwilm

╭─mindcat@mindcat-linux-pc ~/.local/share/Steam/SteamApps/common/Ironclad Tactics  
╰─➤  glxinfo 
name of display: :0.0
display: :0  screen: 0
direct rendering: Yes
server glx vendor string: SGI
server glx version string: 1.4
server glx extensions:
    GLX_ARB_create_context, GLX_ARB_create_context_profile, 
    GLX_ARB_create_context_robustness, GLX_ARB_fbconfig_float, 
    GLX_ARB_framebuffer_sRGB, GLX_ARB_multisample, 
    GLX_EXT_create_context_es2_profile, GLX_EXT_create_context_es_profile, 
    GLX_EXT_fbconfig_packed_float, GLX_EXT_framebuffer_sRGB, 
    GLX_EXT_import_context, GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info, 
    GLX_EXT_visual_rating, GLX_INTEL_swap_event, GLX_MESA_copy_sub_buffer, 
    GLX_OML_swap_method, GLX_SGIS_multisample, GLX_SGIX_fbconfig, 
    GLX_SGIX_pbuffer, GLX_SGIX_visual_select_group, GLX_SGI_swap_control
client glx vendor string: Mesa Project and SGI
client glx version string: 1.4
client glx extensions:
    GLX_ARB_create_context, GLX_ARB_create_context_profile, 
    GLX_ARB_create_context_robustness, GLX_ARB_fbconfig_float, 
    GLX_ARB_framebuffer_sRGB, GLX_ARB_get_proc_address, GLX_ARB_multisample, 
    GLX_EXT_buffer_age, GLX_EXT_create_context_es2_profile, 
    GLX_EXT_create_context_es_profile, GLX_EXT_fbconfig_packed_float, 
    GLX_EXT_framebuffer_sRGB, GLX_EXT_import_context, 
    GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info, GLX_EXT_visual_rating, 
    GLX_INTEL_swap_event, GLX_MESA_copy_sub_buffer, 
    GLX_MESA_multithread_makecurrent, GLX_MESA_query_renderer, 
    GLX_MESA_swap_control, GLX_OML_swap_method, GLX_OML_sync_control, 
    GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer, 
    GLX_SGIX_visual_select_group, GLX_SGI_make_current_read, 
    GLX_SGI_swap_control, GLX_SGI_video_sync
GLX version: 1.4
GLX extensions:
    GLX_ARB_create_context, GLX_ARB_create_context_profile, 
    GLX_ARB_create_context_robustness, GLX_ARB_fbconfig_float, 
    GLX_ARB_framebuffer_sRGB, GLX_ARB_get_proc_address, GLX_ARB_multisample, 
    GLX_EXT_buffer_age, GLX_EXT_create_context_es2_profile, 
    GLX_EXT_create_context_es_profile, GLX_EXT_fbconfig_packed_float, 
    GLX_EXT_framebuffer_sRGB, GLX_EXT_import_context, 
    GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info, GLX_EXT_visual_rating, 
    GLX_INTEL_swap_event, GLX_MESA_copy_sub_buffer, 
    GLX_MESA_multithread_makecurrent, GLX_MESA_query_renderer, 
    GLX_MESA_swap_control, GLX_OML_swap_method, GLX_OML_sync_control, 
    GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer, 
    GLX_SGIX_visual_select_group, GLX_SGI_make_current_read, 
    GLX_SGI_swap_control, GLX_SGI_video_sync
Extended renderer info (GLX_MESA_query_renderer):
    Vendor: Intel Open Source Technology Center (0x8086)
    Device: Mesa DRI Intel(R) HD Graphics 520 (Skylake GT2)  (0x1916)
    Version: 13.0.2
    Accelerated: yes
    Video memory: 3072MB
    Unified memory: yes
    Preferred profile: core (0x1)
    Max core profile version: 4.5
    Max compat profile version: 3.0
    Max GLES1 profile version: 1.1
    Max GLES[23] profile version: 3.2
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) HD Graphics 520 (Skylake GT2) 
OpenGL core profile version string: 3.2 (Core Profile) Mesa 13.0.2
OpenGL core profile shading language version string: 1.50
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
    GL_3DFX_texture_compression_FXT1, GL_AMD_conservative_depth, 
    GL_AMD_draw_buffers_blend, GL_AMD_seamless_cubemap_per_texture, 
    GL_AMD_shader_stencil_export, GL_AMD_shader_trinary_minmax, 
    GL_AMD_vertex_shader_layer, GL_AMD_vertex_shader_viewport_index, 
    GL_ANGLE_texture_compression_dxt3, GL_ANGLE_texture_compression_dxt5, 
    GL_APPLE_object_purgeable, GL_ARB_ES2_compatibility, 
    GL_ARB_ES3_1_compatibility, GL_ARB_ES3_2_compatibility, 
    GL_ARB_ES3_compatibility, GL_ARB_arrays_of_arrays, GL_ARB_base_instance, 
    GL_ARB_buffer_storage, GL_ARB_clear_buffer_object, GL_ARB_clear_texture, 
    GL_ARB_clip_control, GL_ARB_compressed_texture_pixel_storage, 
    GL_ARB_compute_shader, GL_ARB_conditional_render_inverted, 
    GL_ARB_conservative_depth, GL_ARB_copy_buffer, GL_ARB_copy_image, 
    GL_ARB_cull_distance, GL_ARB_debug_output, GL_ARB_depth_buffer_float, 
    GL_ARB_depth_clamp, GL_ARB_derivative_control, GL_ARB_direct_state_access, 
    GL_ARB_draw_buffers, GL_ARB_draw_buffers_blend, 
    GL_ARB_draw_elements_base_vertex, GL_ARB_draw_indirect, 
    GL_ARB_draw_instanced, GL_ARB_enhanced_layouts, 
    GL_ARB_explicit_attrib_location, GL_ARB_explicit_uniform_location, 
    GL_ARB_fragment_coord_conventions, GL_ARB_fragment_layer_viewport, 
    GL_ARB_fragment_shader, GL_ARB_framebuffer_no_attachments, 
    GL_ARB_framebuffer_object, GL_ARB_framebuffer_sRGB, 
    GL_ARB_get_program_binary, GL_ARB_get_texture_sub_image, 
    GL_ARB_gpu_shader5, GL_ARB_gpu_shader_fp64, GL_ARB_half_float_pixel, 
    GL_ARB_half_float_vertex, GL_ARB_instanced_arrays, 
    GL_ARB_internalformat_query, GL_ARB_internalformat_query2, 
    GL_ARB_invalidate_subdata, GL_ARB_map_buffer_alignment, 
    GL_ARB_map_buffer_range, GL_ARB_multi_bind, GL_ARB_multi_draw_indirect, 
    GL_ARB_occlusion_query2, GL_ARB_pipeline_statistics_query, 
    GL_ARB_pixel_buffer_object, GL_ARB_point_sprite, 
    GL_ARB_program_interface_query, GL_ARB_provoking_vertex, 
    GL_ARB_query_buffer_object, GL_ARB_robust_buffer_access_behavior, 
    GL_ARB_robustness, GL_ARB_sample_shading, GL_ARB_sampler_objects, 
    GL_ARB_seamless_cube_map, GL_ARB_seamless_cubemap_per_texture, 
    GL_ARB_separate_shader_objects, GL_ARB_shader_atomic_counter_ops, 
    GL_ARB_shader_atomic_counters, GL_ARB_shader_bit_encoding, 
    GL_ARB_shader_clock, GL_ARB_shader_draw_parameters, 
    GL_ARB_shader_image_load_store, GL_ARB_shader_image_size, 
    GL_ARB_shader_objects, GL_ARB_shader_precision, 
    GL_ARB_shader_stencil_export, GL_ARB_shader_storage_buffer_object, 
    GL_ARB_shader_subroutine, GL_ARB_shader_texture_image_samples, 
    GL_ARB_shader_texture_lod, GL_ARB_shader_viewport_layer_array, 
    GL_ARB_shading_language_420pack, GL_ARB_shading_language_packing, 
    GL_ARB_stencil_texturing, GL_ARB_sync, GL_ARB_tessellation_shader, 
    GL_ARB_texture_barrier, GL_ARB_texture_buffer_object, 
    GL_ARB_texture_buffer_object_rgb32, GL_ARB_texture_buffer_range, 
    GL_ARB_texture_compression_bptc, GL_ARB_texture_compression_rgtc, 
    GL_ARB_texture_cube_map_array, GL_ARB_texture_float, 
    GL_ARB_texture_gather, GL_ARB_texture_mirror_clamp_to_edge, 
    GL_ARB_texture_multisample, GL_ARB_texture_non_power_of_two, 
    GL_ARB_texture_query_levels, GL_ARB_texture_query_lod, 
    GL_ARB_texture_rectangle, GL_ARB_texture_rg, GL_ARB_texture_rgb10_a2ui, 
    GL_ARB_texture_stencil8, GL_ARB_texture_storage, 
    GL_ARB_texture_storage_multisample, GL_ARB_texture_swizzle, 
    GL_ARB_texture_view, GL_ARB_timer_query, GL_ARB_transform_feedback2, 
    GL_ARB_transform_feedback3, GL_ARB_transform_feedback_instanced, 
    GL_ARB_uniform_buffer_object, GL_ARB_vertex_array_bgra, 
    GL_ARB_vertex_array_object, GL_ARB_vertex_attrib_64bit, 
    GL_ARB_vertex_attrib_binding, GL_ARB_vertex_shader, 
    GL_ARB_vertex_type_10f_11f_11f_rev, GL_ARB_vertex_type_2_10_10_10_rev, 
    GL_ARB_viewport_array, GL_ATI_blend_equation_separate, 
    GL_ATI_texture_float, GL_EXT_abgr, GL_EXT_blend_equation_separate, 
    GL_EXT_draw_buffers2, GL_EXT_draw_instanced, GL_EXT_framebuffer_blit, 
    GL_EXT_framebuffer_multisample, GL_EXT_framebuffer_multisample_blit_scaled, 
    GL_EXT_framebuffer_sRGB, GL_EXT_packed_depth_stencil, GL_EXT_packed_float, 
    GL_EXT_pixel_buffer_object, GL_EXT_polygon_offset_clamp, 
    GL_EXT_provoking_vertex, GL_EXT_shader_integer_mix, 
    GL_EXT_shader_samples_identical, GL_EXT_texture_array, 
    GL_EXT_texture_compression_dxt1, GL_EXT_texture_compression_rgtc, 
    GL_EXT_texture_compression_s3tc, GL_EXT_texture_filter_anisotropic, 
    GL_EXT_texture_integer, GL_EXT_texture_sRGB, GL_EXT_texture_sRGB_decode, 
    GL_EXT_texture_shared_exponent, GL_EXT_texture_snorm, 
    GL_EXT_texture_swizzle, GL_EXT_timer_query, GL_EXT_transform_feedback, 
    GL_EXT_vertex_array_bgra, GL_IBM_multimode_draw_arrays, 
    GL_KHR_blend_equation_advanced, GL_KHR_blend_equation_advanced_coherent, 
    GL_KHR_context_flush_control, GL_KHR_debug, 
    GL_KHR_robust_buffer_access_behavior, GL_KHR_robustness, 
    GL_KHR_texture_compression_astc_ldr, 
    GL_KHR_texture_compression_astc_sliced_3d, GL_MESA_pack_invert, 
    GL_MESA_shader_integer_functions, GL_MESA_texture_signed_rgba, 
    GL_NV_conditional_render, GL_NV_depth_clamp, GL_NV_packed_depth_stencil, 
    GL_NV_texture_barrier, GL_OES_EGL_image, GL_OES_read_format, GL_S3_s3tc

OpenGL version string: 3.0 Mesa 13.0.2
OpenGL shading language version string: 1.30
OpenGL context flags: (none)
OpenGL extensions:
    GL_3DFX_texture_compression_FXT1, GL_AMD_conservative_depth, 
    GL_AMD_draw_buffers_blend, GL_AMD_seamless_cubemap_per_texture, 
    GL_AMD_shader_stencil_export, GL_AMD_shader_trinary_minmax, 
    GL_ANGLE_texture_compression_dxt3, GL_ANGLE_texture_compression_dxt5, 
    GL_APPLE_object_purgeable, GL_APPLE_packed_pixels, 
    GL_APPLE_vertex_array_object, GL_ARB_ES2_compatibility, 
    GL_ARB_ES3_compatibility, GL_ARB_arrays_of_arrays, GL_ARB_buffer_storage, 
    GL_ARB_clear_buffer_object, GL_ARB_clear_texture, GL_ARB_clip_control, 
    GL_ARB_color_buffer_float, GL_ARB_compressed_texture_pixel_storage, 
    GL_ARB_compute_shader, GL_ARB_conditional_render_inverted, 
    GL_ARB_conservative_depth, GL_ARB_copy_buffer, GL_ARB_copy_image, 
    GL_ARB_cull_distance, GL_ARB_debug_output, GL_ARB_depth_buffer_float, 
    GL_ARB_depth_clamp, GL_ARB_depth_texture, GL_ARB_derivative_control, 
    GL_ARB_draw_buffers, GL_ARB_draw_buffers_blend, 
    GL_ARB_draw_elements_base_vertex, GL_ARB_draw_instanced, 
    GL_ARB_explicit_attrib_location, GL_ARB_explicit_uniform_location, 
    GL_ARB_fragment_coord_conventions, GL_ARB_fragment_program, 
    GL_ARB_fragment_program_shadow, GL_ARB_fragment_shader, 
    GL_ARB_framebuffer_no_attachments, GL_ARB_framebuffer_object, 
    GL_ARB_framebuffer_sRGB, GL_ARB_get_program_binary, 
    GL_ARB_get_texture_sub_image, GL_ARB_half_float_pixel, 
    GL_ARB_half_float_vertex, GL_ARB_instanced_arrays, 
    GL_ARB_internalformat_query, GL_ARB_internalformat_query2, 
    GL_ARB_invalidate_subdata, GL_ARB_map_buffer_alignment, 
    GL_ARB_map_buffer_range, GL_ARB_multi_bind, GL_ARB_multisample, 
    GL_ARB_multitexture, GL_ARB_occlusion_query, GL_ARB_occlusion_query2, 
    GL_ARB_pipeline_statistics_query, GL_ARB_pixel_buffer_object, 
    GL_ARB_point_parameters, GL_ARB_point_sprite, 
    GL_ARB_program_interface_query, GL_ARB_provoking_vertex, 
    GL_ARB_query_buffer_object, GL_ARB_robust_buffer_access_behavior, 
    GL_ARB_robustness, GL_ARB_sample_shading, GL_ARB_sampler_objects, 
    GL_ARB_seamless_cube_map, GL_ARB_seamless_cubemap_per_texture, 
    GL_ARB_separate_shader_objects, GL_ARB_shader_atomic_counter_ops, 
    GL_ARB_shader_atomic_counters, GL_ARB_shader_bit_encoding, 
    GL_ARB_shader_clock, GL_ARB_shader_draw_parameters, 
    GL_ARB_shader_image_load_store, GL_ARB_shader_image_size, 
    GL_ARB_shader_objects, GL_ARB_shader_precision, 
    GL_ARB_shader_stencil_export, GL_ARB_shader_storage_buffer_object, 
    GL_ARB_shader_texture_image_samples, GL_ARB_shader_texture_lod, 
    GL_ARB_shading_language_100, GL_ARB_shading_language_420pack, 
    GL_ARB_shading_language_packing, GL_ARB_shadow, GL_ARB_stencil_texturing, 
    GL_ARB_sync, GL_ARB_texture_barrier, GL_ARB_texture_border_clamp, 
    GL_ARB_texture_compression, GL_ARB_texture_compression_bptc, 
    GL_ARB_texture_compression_rgtc, GL_ARB_texture_cube_map, 
    GL_ARB_texture_cube_map_array, GL_ARB_texture_env_add, 
    GL_ARB_texture_env_combine, GL_ARB_texture_env_crossbar, 
    GL_ARB_texture_env_dot3, GL_ARB_texture_float, GL_ARB_texture_gather, 
    GL_ARB_texture_mirror_clamp_to_edge, GL_ARB_texture_mirrored_repeat, 
    GL_ARB_texture_multisample, GL_ARB_texture_non_power_of_two, 
    GL_ARB_texture_query_levels, GL_ARB_texture_query_lod, 
    GL_ARB_texture_rectangle, GL_ARB_texture_rg, GL_ARB_texture_rgb10_a2ui, 
    GL_ARB_texture_stencil8, GL_ARB_texture_storage, 
    GL_ARB_texture_storage_multisample, GL_ARB_texture_swizzle, 
    GL_ARB_texture_view, GL_ARB_timer_query, GL_ARB_transform_feedback2, 
    GL_ARB_transform_feedback3, GL_ARB_transform_feedback_instanced, 
    GL_ARB_transpose_matrix, GL_ARB_uniform_buffer_object, 
    GL_ARB_vertex_array_bgra, GL_ARB_vertex_array_object, 
    GL_ARB_vertex_attrib_binding, GL_ARB_vertex_buffer_object, 
    GL_ARB_vertex_program, GL_ARB_vertex_shader, 
    GL_ARB_vertex_type_10f_11f_11f_rev, GL_ARB_vertex_type_2_10_10_10_rev, 
    GL_ARB_window_pos, GL_ATI_blend_equation_separate, GL_ATI_draw_buffers, 
    GL_ATI_separate_stencil, GL_ATI_texture_env_combine3, 
    GL_ATI_texture_float, GL_EXT_abgr, GL_EXT_bgra, GL_EXT_blend_color, 
    GL_EXT_blend_equation_separate, GL_EXT_blend_func_separate, 
    GL_EXT_blend_minmax, GL_EXT_blend_subtract, GL_EXT_compiled_vertex_array, 
    GL_EXT_copy_texture, GL_EXT_draw_buffers2, GL_EXT_draw_instanced, 
    GL_EXT_draw_range_elements, GL_EXT_fog_coord, GL_EXT_framebuffer_blit, 
    GL_EXT_framebuffer_multisample, GL_EXT_framebuffer_multisample_blit_scaled, 
    GL_EXT_framebuffer_object, GL_EXT_framebuffer_sRGB, 
    GL_EXT_gpu_program_parameters, GL_EXT_multi_draw_arrays, 
    GL_EXT_packed_depth_stencil, GL_EXT_packed_float, GL_EXT_packed_pixels, 
    GL_EXT_pixel_buffer_object, GL_EXT_point_parameters, 
    GL_EXT_polygon_offset, GL_EXT_polygon_offset_clamp, 
    GL_EXT_provoking_vertex, GL_EXT_rescale_normal, GL_EXT_secondary_color, 
    GL_EXT_separate_specular_color, GL_EXT_shader_integer_mix, 
    GL_EXT_shader_samples_identical, GL_EXT_shadow_funcs, 
    GL_EXT_stencil_two_side, GL_EXT_stencil_wrap, GL_EXT_subtexture, 
    GL_EXT_texture, GL_EXT_texture3D, GL_EXT_texture_array, 
    GL_EXT_texture_compression_dxt1, GL_EXT_texture_compression_rgtc, 
    GL_EXT_texture_compression_s3tc, GL_EXT_texture_cube_map, 
    GL_EXT_texture_edge_clamp, GL_EXT_texture_env_add, 
    GL_EXT_texture_env_combine, GL_EXT_texture_env_dot3, 
    GL_EXT_texture_filter_anisotropic, GL_EXT_texture_integer, 
    GL_EXT_texture_lod_bias, GL_EXT_texture_object, GL_EXT_texture_rectangle, 
    GL_EXT_texture_sRGB, GL_EXT_texture_sRGB_decode, 
    GL_EXT_texture_shared_exponent, GL_EXT_texture_snorm, 
    GL_EXT_texture_swizzle, GL_EXT_timer_query, GL_EXT_transform_feedback, 
    GL_EXT_vertex_array, GL_EXT_vertex_array_bgra, 
    GL_IBM_multimode_draw_arrays, GL_IBM_rasterpos_clip, 
    GL_IBM_texture_mirrored_repeat, GL_INGR_blend_func_separate, 
    GL_KHR_blend_equation_advanced, GL_KHR_blend_equation_advanced_coherent, 
    GL_KHR_context_flush_control, GL_KHR_debug, 
    GL_KHR_robust_buffer_access_behavior, GL_KHR_robustness, 
    GL_KHR_texture_compression_astc_ldr, 
    GL_KHR_texture_compression_astc_sliced_3d, GL_MESA_pack_invert, 
    GL_MESA_shader_integer_functions, GL_MESA_texture_signed_rgba, 
    GL_MESA_window_pos, GL_NV_blend_square, GL_NV_conditional_render, 
    GL_NV_depth_clamp, GL_NV_light_max_exponent, GL_NV_packed_depth_stencil, 
    GL_NV_primitive_restart, GL_NV_texgen_reflection, GL_NV_texture_barrier, 
    GL_NV_texture_env_combine4, GL_NV_texture_rectangle, GL_OES_EGL_image, 
    GL_OES_read_format, GL_S3_s3tc, GL_SGIS_generate_mipmap, 
    GL_SGIS_texture_border_clamp, GL_SGIS_texture_edge_clamp, 
    GL_SGIS_texture_lod, GL_SUN_multi_draw_arrays

OpenGL ES profile version string: OpenGL ES 3.2 Mesa 13.0.2
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
OpenGL ES profile extensions:
    GL_ANDROID_extension_pack_es31a, GL_ANGLE_texture_compression_dxt3, 
    GL_ANGLE_texture_compression_dxt5, GL_APPLE_texture_max_level, 
    GL_EXT_blend_minmax, GL_EXT_buffer_storage, GL_EXT_clip_cull_distance, 
    GL_EXT_color_buffer_float, GL_EXT_copy_image, GL_EXT_discard_framebuffer, 
    GL_EXT_draw_buffers, GL_EXT_draw_buffers_indexed, 
    GL_EXT_draw_elements_base_vertex, GL_EXT_geometry_point_size, 
    GL_EXT_geometry_shader, GL_EXT_gpu_shader5, GL_EXT_map_buffer_range, 
    GL_EXT_multi_draw_arrays, GL_EXT_polygon_offset_clamp, 
    GL_EXT_primitive_bounding_box, GL_EXT_read_format_bgra, 
    GL_EXT_separate_shader_objects, GL_EXT_shader_framebuffer_fetch, 
    GL_EXT_shader_integer_mix, GL_EXT_shader_io_blocks, 
    GL_EXT_shader_samples_identical, GL_EXT_tessellation_point_size, 
    GL_EXT_tessellation_shader, GL_EXT_texture_border_clamp, 
    GL_EXT_texture_buffer, GL_EXT_texture_compression_dxt1, 
    GL_EXT_texture_cube_map_array, GL_EXT_texture_filter_anisotropic, 
    GL_EXT_texture_format_BGRA8888, GL_EXT_texture_rg, 
    GL_EXT_texture_sRGB_decode, GL_EXT_texture_type_2_10_10_10_REV, 
    GL_EXT_unpack_subimage, GL_KHR_blend_equation_advanced, 
    GL_KHR_blend_equation_advanced_coherent, GL_KHR_context_flush_control, 
    GL_KHR_debug, GL_KHR_robust_buffer_access_behavior, GL_KHR_robustness, 
    GL_KHR_texture_compression_astc_ldr, 
    GL_KHR_texture_compression_astc_sliced_3d, 
    GL_MESA_shader_integer_functions, GL_NV_draw_buffers, 
    GL_NV_fbo_color_attachments, GL_NV_read_buffer, GL_NV_read_depth, 
    GL_NV_read_depth_stencil, GL_NV_read_stencil, GL_OES_EGL_image, 
    GL_OES_EGL_image_external, GL_OES_EGL_sync, 
    GL_OES_compressed_ETC1_RGB8_texture, GL_OES_copy_image, GL_OES_depth24, 
    GL_OES_depth_texture, GL_OES_depth_texture_cube_map, 
    GL_OES_draw_buffers_indexed, GL_OES_draw_elements_base_vertex, 
    GL_OES_element_index_uint, GL_OES_fbo_render_mipmap, 
    GL_OES_geometry_point_size, GL_OES_geometry_shader, 
    GL_OES_get_program_binary, GL_OES_gpu_shader5, GL_OES_mapbuffer, 
    GL_OES_packed_depth_stencil, GL_OES_primitive_bounding_box, 
    GL_OES_rgb8_rgba8, GL_OES_sample_shading, GL_OES_sample_variables, 
    GL_OES_shader_image_atomic, GL_OES_shader_io_blocks, 
    GL_OES_shader_multisample_interpolation, GL_OES_standard_derivatives, 
    GL_OES_stencil8, GL_OES_surfaceless_context, 
    GL_OES_tessellation_point_size, GL_OES_tessellation_shader, 
    GL_OES_texture_3D, GL_OES_texture_border_clamp, GL_OES_texture_buffer, 
    GL_OES_texture_cube_map_array, GL_OES_texture_float, 
    GL_OES_texture_float_linear, GL_OES_texture_half_float, 
    GL_OES_texture_half_float_linear, GL_OES_texture_npot, 
    GL_OES_texture_stencil8, GL_OES_texture_storage_multisample_2d_array, 
    GL_OES_vertex_array_object, GL_OES_viewport_array

40 GLX Visuals
    visual  x   bf lv rg d st  colorbuffer  sr ax dp st accumbuffer  ms  cav
  id dep cl sp  sz l  ci b ro  r  g  b  a F gb bf th cl  r  g  b  a ns b eat
----------------------------------------------------------------------------
0x020 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
0x021 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
0x0cd 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0  0  0  0  0  0  0  0 0 None
0x0ce 24 tc  0  32  0 r  . .   8  8  8  8 .  .  0  0  0  0  0  0  0  0 0 None
0x0cf 24 tc  0  32  0 r  . .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
0x0d0 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0  0  0  0  0  0  0  0 0 None
0x0d1 24 tc  0  24  0 r  . .   8  8  8  0 .  .  0  0  0  0  0  0  0  0 0 None
0x0d2 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0 24  8  0  0  0  0  0 0 None
0x0d3 24 tc  0  24  0 r  . .   8  8  8  0 .  .  0 24  8  0  0  0  0  0 0 None
0x0d4 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8 16 16 16 16  0 0 Slow
0x0d5 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0 24  8  0  0  0  0  0 0 None
0x0d6 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0 24  8 16 16 16  0  0 0 Slow
0x0d7 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0  0  0  0  0  0  0  4 1 None
0x0d8 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0  0  0  0  0  0  0  8 1 None
0x0d9 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8  0  0  0  0  4 1 None
0x0da 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8  0  0  0  0  8 1 None
0x0db 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0  0  0  0  0  0  0  4 1 None
0x0dc 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0  0  0  0  0  0  0  8 1 None
0x0dd 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0 24  8  0  0  0  0  4 1 None
0x0de 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0 24  8  0  0  0  0  8 1 None
0x0df 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0  0  0  0  0  0  0  0 0 None
0x0e0 24 dc  0  32  0 r  . .   8  8  8  8 .  .  0  0  0  0  0  0  0  0 0 None
0x0e1 24 dc  0  32  0 r  . .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
0x0e2 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0  0  0  0  0  0  0  0 0 None
0x0e3 24 dc  0  24  0 r  . .   8  8  8  0 .  .  0  0  0  0  0  0  0  0 0 None
0x0e4 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0 24  8  0  0  0  0  0 0 None
0x0e5 24 dc  0  24  0 r  . .   8  8  8  0 .  .  0 24  8  0  0  0  0  0 0 None
0x0e6 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
0x0e7 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8 16 16 16 16  0 0 Slow
0x0e8 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0 24  8  0  0  0  0  0 0 None
0x0e9 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0 24  8 16 16 16  0  0 0 Slow
0x0ea 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0  0  0  0  0  0  0  4 1 None
0x0eb 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0  0  0  0  0  0  0  8 1 None
0x0ec 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8  0  0  0  0  4 1 None
0x0ed 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8  0  0  0  0  8 1 None
0x0ee 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0  0  0  0  0  0  0  4 1 None
0x0ef 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0  0  0  0  0  0  0  8 1 None
0x0f0 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0 24  8  0  0  0  0  4 1 None
0x0f1 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0 24  8  0  0  0  0  8 1 None
0x08c 32 tc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None

64 GLXFBConfigs:
    visual  x   bf lv rg d st  colorbuffer  sr ax dp st accumbuffer  ms  cav
  id dep cl sp  sz l  ci b ro  r  g  b  a F gb bf th cl  r  g  b  a ns b eat
----------------------------------------------------------------------------
0x08d  0 tc  0  16  0 r  y .   5  6  5  0 .  .  0  0  0  0  0  0  0  0 0 None
0x08e  0 tc  0  16  0 r  . .   5  6  5  0 .  .  0  0  0  0  0  0  0  0 0 None
0x08f  0 tc  0  16  0 r  y .   5  6  5  0 .  .  0 16  0  0  0  0  0  0 0 None
0x090  0 tc  0  16  0 r  . .   5  6  5  0 .  .  0 16  0  0  0  0  0  0 0 None
0x091  0 tc  0  16  0 r  y .   5  6  5  0 .  .  0 24  8  0  0  0  0  0 0 None
0x092  0 tc  0  16  0 r  . .   5  6  5  0 .  .  0 24  8  0  0  0  0  0 0 None
0x093 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0  0  0  0  0  0  0  0 0 None
0x094 24 tc  0  32  0 r  . .   8  8  8  8 .  .  0  0  0  0  0  0  0  0 0 None
0x095 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
0x096 24 tc  0  32  0 r  . .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
0x097 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0  0  0  0  0  0  0  0 0 None
0x098 24 tc  0  24  0 r  . .   8  8  8  0 .  .  0  0  0  0  0  0  0  0 0 None
0x099 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0 24  8  0  0  0  0  0 0 None
0x09a 24 tc  0  24  0 r  . .   8  8  8  0 .  .  0 24  8  0  0  0  0  0 0 None
0x09b  0 tc  0  16  0 r  y .   5  6  5  0 .  .  0 16  0  0  0  0  0  0 0 None
0x09c  0 tc  0  16  0 r  y .   5  6  5  0 .  .  0 16  0 16 16 16  0  0 0 Slow
0x09d 32 tc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
0x09e 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8 16 16 16 16  0 0 Slow
0x09f 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0 24  8  0  0  0  0  0 0 None
0x0a0 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0 24  8 16 16 16  0  0 0 Slow
0x0a1  0 tc  0  16  0 r  y .   5  6  5  0 .  .  0  0  0  0  0  0  0  4 1 None
0x0a2  0 tc  0  16  0 r  y .   5  6  5  0 .  .  0  0  0  0  0  0  0  8 1 None
0x0a3  0 tc  0  16  0 r  y .   5  6  5  0 .  .  0 16  0  0  0  0  0  4 1 None
0x0a4  0 tc  0  16  0 r  y .   5  6  5  0 .  .  0 16  0  0  0  0  0  8 1 None
0x0a5 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0  0  0  0  0  0  0  4 1 None
0x0a6 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0  0  0  0  0  0  0  8 1 None
0x0a7 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8  0  0  0  0  4 1 None
0x0a8 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8  0  0  0  0  8 1 None
0x0a9 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0  0  0  0  0  0  0  4 1 None
0x0aa 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0  0  0  0  0  0  0  8 1 None
0x0ab 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0 24  8  0  0  0  0  4 1 None
0x0ac 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0 24  8  0  0  0  0  8 1 None
0x0ad  0 dc  0  16  0 r  y .   5  6  5  0 .  .  0  0  0  0  0  0  0  0 0 None
0x0ae  0 dc  0  16  0 r  . .   5  6  5  0 .  .  0  0  0  0  0  0  0  0 0 None
0x0af  0 dc  0  16  0 r  y .   5  6  5  0 .  .  0 16  0  0  0  0  0  0 0 None
0x0b0  0 dc  0  16  0 r  . .   5  6  5  0 .  .  0 16  0  0  0  0  0  0 0 None
0x0b1  0 dc  0  16  0 r  y .   5  6  5  0 .  .  0 24  8  0  0  0  0  0 0 None
0x0b2  0 dc  0  16  0 r  . .   5  6  5  0 .  .  0 24  8  0  0  0  0  0 0 None
0x0b3 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0  0  0  0  0  0  0  0 0 None
0x0b4 24 dc  0  32  0 r  . .   8  8  8  8 .  .  0  0  0  0  0  0  0  0 0 None
0x0b5 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
0x0b6 24 dc  0  32  0 r  . .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
0x0b7 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0  0  0  0  0  0  0  0 0 None
0x0b8 24 dc  0  24  0 r  . .   8  8  8  0 .  .  0  0  0  0  0  0  0  0 0 None
0x0b9 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0 24  8  0  0  0  0  0 0 None
0x0ba 24 dc  0  24  0 r  . .   8  8  8  0 .  .  0 24  8  0  0  0  0  0 0 None
0x0bb  0 dc  0  16  0 r  y .   5  6  5  0 .  .  0 16  0  0  0  0  0  0 0 None
0x0bc  0 dc  0  16  0 r  y .   5  6  5  0 .  .  0 16  0 16 16 16  0  0 0 Slow
0x0bd 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
0x0be 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8 16 16 16 16  0 0 Slow
0x0bf 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0 24  8  0  0  0  0  0 0 None
0x0c0 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0 24  8 16 16 16  0  0 0 Slow
0x0c1  0 dc  0  16  0 r  y .   5  6  5  0 .  .  0  0  0  0  0  0  0  4 1 None
0x0c2  0 dc  0  16  0 r  y .   5  6  5  0 .  .  0  0  0  0  0  0  0  8 1 None
0x0c3  0 dc  0  16  0 r  y .   5  6  5  0 .  .  0 16  0  0  0  0  0  4 1 None
0x0c4  0 dc  0  16  0 r  y .   5  6  5  0 .  .  0 16  0  0  0  0  0  8 1 None
0x0c5 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0  0  0  0  0  0  0  4 1 None
0x0c6 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0  0  0  0  0  0  0  8 1 None
0x0c7 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8  0  0  0  0  4 1 None
0x0c8 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8  0  0  0  0  8 1 None
0x0c9 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0  0  0  0  0  0  0  4 1 None
0x0ca 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0  0  0  0  0  0  0  8 1 None
0x0cb 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0 24  8  0  0  0  0  4 1 None
0x0cc 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0 24  8  0  0  0  0  8 1 None

--

--

╭─mindcat@mindcat-linux-pc ~/.local/share/Steam/SteamApps/common/Ironclad Tactics  
╰─➤  optirun glxinfo
name of display: :0.0
display: :0  screen: 0
direct rendering: Yes
server glx vendor string: VirtualGL
server glx version string: 1.4
server glx extensions:
    GLX_ARB_create_context, GLX_ARB_create_context_profile, 
    GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_import_context, 
    GLX_EXT_swap_control, GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info, 
    GLX_EXT_visual_rating, GLX_NV_swap_group, GLX_SGIX_fbconfig, 
    GLX_SGIX_pbuffer, GLX_SGI_make_current_read, GLX_SGI_swap_control, 
    GLX_SUN_get_transparent_index
client glx vendor string: VirtualGL
client glx version string: 1.4
client glx extensions:
    GLX_ARB_create_context, GLX_ARB_create_context_profile, 
    GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_import_context, 
    GLX_EXT_swap_control, GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info, 
    GLX_EXT_visual_rating, GLX_NV_swap_group, GLX_SGIX_fbconfig, 
    GLX_SGIX_pbuffer, GLX_SGI_make_current_read, GLX_SGI_swap_control, 
    GLX_SUN_get_transparent_index
GLX version: 1.4
GLX extensions:
    GLX_ARB_create_context, GLX_ARB_create_context_profile, 
    GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_import_context, 
    GLX_EXT_swap_control, GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info, 
    GLX_EXT_visual_rating, GLX_NV_swap_group, GLX_SGIX_fbconfig, 
    GLX_SGIX_pbuffer, GLX_SGI_make_current_read, GLX_SGI_swap_control, 
    GLX_SUN_get_transparent_index
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: GeForce GTX 950M/PCIe/SSE2
OpenGL core profile version string: 4.5.0 NVIDIA 375.26
OpenGL core profile shading language version string: 4.50 NVIDIA
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
    GL_AMD_multi_draw_indirect, GL_AMD_seamless_cubemap_per_texture, 
    GL_ARB_ES2_compatibility, GL_ARB_ES3_1_compatibility, 
    GL_ARB_ES3_2_compatibility, GL_ARB_ES3_compatibility, 
    GL_ARB_arrays_of_arrays, GL_ARB_base_instance, GL_ARB_bindless_texture, 
    GL_ARB_blend_func_extended, GL_ARB_buffer_storage, 
    GL_ARB_clear_buffer_object, GL_ARB_clear_texture, GL_ARB_clip_control, 
    GL_ARB_color_buffer_float, GL_ARB_compressed_texture_pixel_storage, 
    GL_ARB_compute_shader, GL_ARB_compute_variable_group_size, 
    GL_ARB_conditional_render_inverted, GL_ARB_conservative_depth, 
    GL_ARB_copy_buffer, GL_ARB_copy_image, GL_ARB_cull_distance, 
    GL_ARB_debug_output, GL_ARB_depth_buffer_float, GL_ARB_depth_clamp, 
    GL_ARB_depth_texture, GL_ARB_derivative_control, 
    GL_ARB_direct_state_access, GL_ARB_draw_buffers, 
    GL_ARB_draw_buffers_blend, GL_ARB_draw_elements_base_vertex, 
    GL_ARB_draw_indirect, GL_ARB_draw_instanced, GL_ARB_enhanced_layouts, 
    GL_ARB_explicit_attrib_location, GL_ARB_explicit_uniform_location, 
    GL_ARB_fragment_coord_conventions, GL_ARB_fragment_layer_viewport, 
    GL_ARB_fragment_program, GL_ARB_fragment_program_shadow, 
    GL_ARB_fragment_shader, GL_ARB_framebuffer_no_attachments, 
    GL_ARB_framebuffer_object, GL_ARB_framebuffer_sRGB, 
    GL_ARB_geometry_shader4, GL_ARB_get_program_binary, 
    GL_ARB_get_texture_sub_image, GL_ARB_gl_spirv, GL_ARB_gpu_shader5, 
    GL_ARB_gpu_shader_fp64, GL_ARB_gpu_shader_int64, GL_ARB_half_float_pixel, 
    GL_ARB_half_float_vertex, GL_ARB_imaging, GL_ARB_indirect_parameters, 
    GL_ARB_instanced_arrays, GL_ARB_internalformat_query, 
    GL_ARB_internalformat_query2, GL_ARB_invalidate_subdata, 
    GL_ARB_map_buffer_alignment, GL_ARB_map_buffer_range, GL_ARB_multi_bind, 
    GL_ARB_multi_draw_indirect, GL_ARB_multisample, GL_ARB_multitexture, 
    GL_ARB_occlusion_query, GL_ARB_occlusion_query2, 
    GL_ARB_parallel_shader_compile, GL_ARB_pipeline_statistics_query, 
    GL_ARB_pixel_buffer_object, GL_ARB_point_parameters, GL_ARB_point_sprite, 
    GL_ARB_program_interface_query, GL_ARB_provoking_vertex, 
    GL_ARB_query_buffer_object, GL_ARB_robust_buffer_access_behavior, 
    GL_ARB_robustness, GL_ARB_sample_shading, GL_ARB_sampler_objects, 
    GL_ARB_seamless_cube_map, GL_ARB_seamless_cubemap_per_texture, 
    GL_ARB_separate_shader_objects, GL_ARB_shader_atomic_counter_ops, 
    GL_ARB_shader_atomic_counters, GL_ARB_shader_ballot, 
    GL_ARB_shader_bit_encoding, GL_ARB_shader_clock, 
    GL_ARB_shader_draw_parameters, GL_ARB_shader_group_vote, 
    GL_ARB_shader_image_load_store, GL_ARB_shader_image_size, 
    GL_ARB_shader_objects, GL_ARB_shader_precision, 
    GL_ARB_shader_storage_buffer_object, GL_ARB_shader_subroutine, 
    GL_ARB_shader_texture_image_samples, GL_ARB_shader_texture_lod, 
    GL_ARB_shading_language_100, GL_ARB_shading_language_420pack, 
    GL_ARB_shading_language_include, GL_ARB_shading_language_packing, 
    GL_ARB_shadow, GL_ARB_sparse_buffer, GL_ARB_sparse_texture, 
    GL_ARB_stencil_texturing, GL_ARB_sync, GL_ARB_tessellation_shader, 
    GL_ARB_texture_barrier, GL_ARB_texture_border_clamp, 
    GL_ARB_texture_buffer_object, GL_ARB_texture_buffer_object_rgb32, 
    GL_ARB_texture_buffer_range, GL_ARB_texture_compression, 
    GL_ARB_texture_compression_bptc, GL_ARB_texture_compression_rgtc, 
    GL_ARB_texture_cube_map, GL_ARB_texture_cube_map_array, 
    GL_ARB_texture_env_add, GL_ARB_texture_env_combine, 
    GL_ARB_texture_env_crossbar, GL_ARB_texture_env_dot3, 
    GL_ARB_texture_float, GL_ARB_texture_gather, 
    GL_ARB_texture_mirror_clamp_to_edge, GL_ARB_texture_mirrored_repeat, 
    GL_ARB_texture_multisample, GL_ARB_texture_non_power_of_two, 
    GL_ARB_texture_query_levels, GL_ARB_texture_query_lod, 
    GL_ARB_texture_rectangle, GL_ARB_texture_rg, GL_ARB_texture_rgb10_a2ui, 
    GL_ARB_texture_stencil8, GL_ARB_texture_storage, 
    GL_ARB_texture_storage_multisample, GL_ARB_texture_swizzle, 
    GL_ARB_texture_view, GL_ARB_timer_query, GL_ARB_transform_feedback2, 
    GL_ARB_transform_feedback3, GL_ARB_transform_feedback_instanced, 
    GL_ARB_transform_feedback_overflow_query, GL_ARB_transpose_matrix, 
    GL_ARB_uniform_buffer_object, GL_ARB_vertex_array_bgra, 
    GL_ARB_vertex_array_object, GL_ARB_vertex_attrib_64bit, 
    GL_ARB_vertex_attrib_binding, GL_ARB_vertex_buffer_object, 
    GL_ARB_vertex_program, GL_ARB_vertex_shader, 
    GL_ARB_vertex_type_10f_11f_11f_rev, GL_ARB_vertex_type_2_10_10_10_rev, 
    GL_ARB_viewport_array, GL_ARB_window_pos, GL_ATI_draw_buffers, 
    GL_ATI_texture_float, GL_ATI_texture_mirror_once, 
    GL_EXTX_framebuffer_mixed_formats, GL_EXT_Cg_shader, GL_EXT_abgr, 
    GL_EXT_bgra, GL_EXT_bindable_uniform, GL_EXT_blend_color, 
    GL_EXT_blend_equation_separate, GL_EXT_blend_func_separate, 
    GL_EXT_blend_minmax, GL_EXT_blend_subtract, GL_EXT_compiled_vertex_array, 
    GL_EXT_depth_bounds_test, GL_EXT_direct_state_access, 
    GL_EXT_draw_buffers2, GL_EXT_draw_instanced, GL_EXT_draw_range_elements, 
    GL_EXT_fog_coord, GL_EXT_framebuffer_blit, GL_EXT_framebuffer_multisample, 
    GL_EXT_framebuffer_multisample_blit_scaled, GL_EXT_framebuffer_object, 
    GL_EXT_framebuffer_sRGB, GL_EXT_geometry_shader4, 
    GL_EXT_gpu_program_parameters, GL_EXT_gpu_shader4, 
    GL_EXT_import_sync_object, GL_EXT_multi_draw_arrays, 
    GL_EXT_packed_depth_stencil, GL_EXT_packed_float, GL_EXT_packed_pixels, 
    GL_EXT_pixel_buffer_object, GL_EXT_point_parameters, 
    GL_EXT_polygon_offset_clamp, GL_EXT_provoking_vertex, 
    GL_EXT_rescale_normal, GL_EXT_secondary_color, 
    GL_EXT_separate_shader_objects, GL_EXT_separate_specular_color, 
    GL_EXT_shader_image_load_formatted, GL_EXT_shader_image_load_store, 
    GL_EXT_shader_integer_mix, GL_EXT_shadow_funcs, GL_EXT_stencil_two_side, 
    GL_EXT_stencil_wrap, GL_EXT_texture3D, GL_EXT_texture_array, 
    GL_EXT_texture_buffer_object, GL_EXT_texture_compression_dxt1, 
    GL_EXT_texture_compression_latc, GL_EXT_texture_compression_rgtc, 
    GL_EXT_texture_compression_s3tc, GL_EXT_texture_cube_map, 
    GL_EXT_texture_edge_clamp, GL_EXT_texture_env_add, 
    GL_EXT_texture_env_combine, GL_EXT_texture_env_dot3, 
    GL_EXT_texture_filter_anisotropic, GL_EXT_texture_integer, 
    GL_EXT_texture_lod, GL_EXT_texture_lod_bias, GL_EXT_texture_mirror_clamp, 
    GL_EXT_texture_object, GL_EXT_texture_sRGB, GL_EXT_texture_sRGB_decode, 
    GL_EXT_texture_shared_exponent, GL_EXT_texture_storage, 
    GL_EXT_texture_swizzle, GL_EXT_timer_query, GL_EXT_transform_feedback2, 
    GL_EXT_vertex_array, GL_EXT_vertex_array_bgra, GL_EXT_vertex_attrib_64bit, 
    GL_EXT_window_rectangles, GL_EXT_x11_sync_object, GL_IBM_rasterpos_clip, 
    GL_IBM_texture_mirrored_repeat, GL_KHR_blend_equation_advanced, 
    GL_KHR_blend_equation_advanced_coherent, GL_KHR_context_flush_control, 
    GL_KHR_debug, GL_KHR_no_error, GL_KHR_robust_buffer_access_behavior, 
    GL_KHR_robustness, GL_KTX_buffer_region, GL_NVX_conditional_render, 
    GL_NVX_gpu_memory_info, GL_NVX_nvenc_interop, GL_NV_ES1_1_compatibility, 
    GL_NV_ES3_1_compatibility, GL_NV_alpha_to_coverage_dither_control, 
    GL_NV_bindless_multi_draw_indirect, 
    GL_NV_bindless_multi_draw_indirect_count, GL_NV_bindless_texture, 
    GL_NV_blend_equation_advanced, GL_NV_blend_equation_advanced_coherent, 
    GL_NV_blend_square, GL_NV_command_list, GL_NV_compute_program5, 
    GL_NV_conditional_render, GL_NV_copy_depth_to_color, GL_NV_copy_image, 
    GL_NV_depth_buffer_float, GL_NV_depth_clamp, GL_NV_draw_texture, 
    GL_NV_draw_vulkan_image, GL_NV_explicit_multisample, GL_NV_fence, 
    GL_NV_float_buffer, GL_NV_fog_distance, GL_NV_fragment_program, 
    GL_NV_fragment_program2, GL_NV_fragment_program_option, 
    GL_NV_framebuffer_multisample_coverage, GL_NV_geometry_shader4, 
    GL_NV_gpu_program4, GL_NV_gpu_program4_1, GL_NV_gpu_program5, 
    GL_NV_gpu_program5_mem_extended, GL_NV_gpu_program_fp64, 
    GL_NV_gpu_shader5, GL_NV_half_float, GL_NV_internalformat_sample_query, 
    GL_NV_light_max_exponent, GL_NV_multisample_coverage, 
    GL_NV_multisample_filter_hint, GL_NV_occlusion_query, 
    GL_NV_packed_depth_stencil, GL_NV_parameter_buffer_object, 
    GL_NV_parameter_buffer_object2, GL_NV_path_rendering, 
    GL_NV_pixel_data_range, GL_NV_point_sprite, GL_NV_primitive_restart, 
    GL_NV_register_combiners, GL_NV_register_combiners2, 
    GL_NV_robustness_video_memory_purge, GL_NV_shader_atomic_counters, 
    GL_NV_shader_atomic_float, GL_NV_shader_atomic_int64, 
    GL_NV_shader_buffer_load, GL_NV_shader_storage_buffer_object, 
    GL_NV_shader_thread_group, GL_NV_shader_thread_shuffle, 
    GL_NV_texgen_reflection, GL_NV_texture_barrier, 
    GL_NV_texture_compression_vtc, GL_NV_texture_env_combine4, 
    GL_NV_texture_multisample, GL_NV_texture_rectangle, GL_NV_texture_shader, 
    GL_NV_texture_shader2, GL_NV_texture_shader3, GL_NV_transform_feedback, 
    GL_NV_transform_feedback2, GL_NV_uniform_buffer_unified_memory, 
    GL_NV_vdpau_interop, GL_NV_vertex_array_range, GL_NV_vertex_array_range2, 
    GL_NV_vertex_attrib_integer_64bit, GL_NV_vertex_buffer_unified_memory, 
    GL_NV_vertex_program, GL_NV_vertex_program1_1, GL_NV_vertex_program2, 
    GL_NV_vertex_program2_option, GL_NV_vertex_program3, GL_S3_s3tc, 
    GL_SGIS_generate_mipmap, GL_SGIS_texture_lod, GL_SGIX_depth_texture, 
    GL_SGIX_shadow, GL_SUN_slice_accum

OpenGL version string: 4.5.0 NVIDIA 375.26
OpenGL shading language version string: 4.50 NVIDIA
OpenGL context flags: (none)
OpenGL profile mask: (none)
OpenGL extensions:
    GL_AMD_multi_draw_indirect, GL_AMD_seamless_cubemap_per_texture, 
    GL_ARB_ES2_compatibility, GL_ARB_ES3_1_compatibility, 
    GL_ARB_ES3_2_compatibility, GL_ARB_ES3_compatibility, 
    GL_ARB_arrays_of_arrays, GL_ARB_base_instance, GL_ARB_bindless_texture, 
    GL_ARB_blend_func_extended, GL_ARB_buffer_storage, 
    GL_ARB_clear_buffer_object, GL_ARB_clear_texture, GL_ARB_clip_control, 
    GL_ARB_color_buffer_float, GL_ARB_compatibility, 
    GL_ARB_compressed_texture_pixel_storage, GL_ARB_compute_shader, 
    GL_ARB_compute_variable_group_size, GL_ARB_conditional_render_inverted, 
    GL_ARB_conservative_depth, GL_ARB_copy_buffer, GL_ARB_copy_image, 
    GL_ARB_cull_distance, GL_ARB_debug_output, GL_ARB_depth_buffer_float, 
    GL_ARB_depth_clamp, GL_ARB_depth_texture, GL_ARB_derivative_control, 
    GL_ARB_direct_state_access, GL_ARB_draw_buffers, 
    GL_ARB_draw_buffers_blend, GL_ARB_draw_elements_base_vertex, 
    GL_ARB_draw_indirect, GL_ARB_draw_instanced, GL_ARB_enhanced_layouts, 
    GL_ARB_explicit_attrib_location, GL_ARB_explicit_uniform_location, 
    GL_ARB_fragment_coord_conventions, GL_ARB_fragment_layer_viewport, 
    GL_ARB_fragment_program, GL_ARB_fragment_program_shadow, 
    GL_ARB_fragment_shader, GL_ARB_framebuffer_no_attachments, 
    GL_ARB_framebuffer_object, GL_ARB_framebuffer_sRGB, 
    GL_ARB_geometry_shader4, GL_ARB_get_program_binary, 
    GL_ARB_get_texture_sub_image, GL_ARB_gl_spirv, GL_ARB_gpu_shader5, 
    GL_ARB_gpu_shader_fp64, GL_ARB_gpu_shader_int64, GL_ARB_half_float_pixel, 
    GL_ARB_half_float_vertex, GL_ARB_imaging, GL_ARB_indirect_parameters, 
    GL_ARB_instanced_arrays, GL_ARB_internalformat_query, 
    GL_ARB_internalformat_query2, GL_ARB_invalidate_subdata, 
    GL_ARB_map_buffer_alignment, GL_ARB_map_buffer_range, GL_ARB_multi_bind, 
    GL_ARB_multi_draw_indirect, GL_ARB_multisample, GL_ARB_multitexture, 
    GL_ARB_occlusion_query, GL_ARB_occlusion_query2, 
    GL_ARB_parallel_shader_compile, GL_ARB_pipeline_statistics_query, 
    GL_ARB_pixel_buffer_object, GL_ARB_point_parameters, GL_ARB_point_sprite, 
    GL_ARB_program_interface_query, GL_ARB_provoking_vertex, 
    GL_ARB_query_buffer_object, GL_ARB_robust_buffer_access_behavior, 
    GL_ARB_robustness, GL_ARB_sample_shading, GL_ARB_sampler_objects, 
    GL_ARB_seamless_cube_map, GL_ARB_seamless_cubemap_per_texture, 
    GL_ARB_separate_shader_objects, GL_ARB_shader_atomic_counter_ops, 
    GL_ARB_shader_atomic_counters, GL_ARB_shader_ballot, 
    GL_ARB_shader_bit_encoding, GL_ARB_shader_clock, 
    GL_ARB_shader_draw_parameters, GL_ARB_shader_group_vote, 
    GL_ARB_shader_image_load_store, GL_ARB_shader_image_size, 
    GL_ARB_shader_objects, GL_ARB_shader_precision, 
    GL_ARB_shader_storage_buffer_object, GL_ARB_shader_subroutine, 
    GL_ARB_shader_texture_image_samples, GL_ARB_shader_texture_lod, 
    GL_ARB_shading_language_100, GL_ARB_shading_language_420pack, 
    GL_ARB_shading_language_include, GL_ARB_shading_language_packing, 
    GL_ARB_shadow, GL_ARB_sparse_buffer, GL_ARB_sparse_texture, 
    GL_ARB_stencil_texturing, GL_ARB_sync, GL_ARB_tessellation_shader, 
    GL_ARB_texture_barrier, GL_ARB_texture_border_clamp, 
    GL_ARB_texture_buffer_object, GL_ARB_texture_buffer_object_rgb32, 
    GL_ARB_texture_buffer_range, GL_ARB_texture_compression, 
    GL_ARB_texture_compression_bptc, GL_ARB_texture_compression_rgtc, 
    GL_ARB_texture_cube_map, GL_ARB_texture_cube_map_array, 
    GL_ARB_texture_env_add, GL_ARB_texture_env_combine, 
    GL_ARB_texture_env_crossbar, GL_ARB_texture_env_dot3, 
    GL_ARB_texture_float, GL_ARB_texture_gather, 
    GL_ARB_texture_mirror_clamp_to_edge, GL_ARB_texture_mirrored_repeat, 
    GL_ARB_texture_multisample, GL_ARB_texture_non_power_of_two, 
    GL_ARB_texture_query_levels, GL_ARB_texture_query_lod, 
    GL_ARB_texture_rectangle, GL_ARB_texture_rg, GL_ARB_texture_rgb10_a2ui, 
    GL_ARB_texture_stencil8, GL_ARB_texture_storage, 
    GL_ARB_texture_storage_multisample, GL_ARB_texture_swizzle, 
    GL_ARB_texture_view, GL_ARB_timer_query, GL_ARB_transform_feedback2, 
    GL_ARB_transform_feedback3, GL_ARB_transform_feedback_instanced, 
    GL_ARB_transform_feedback_overflow_query, GL_ARB_transpose_matrix, 
    GL_ARB_uniform_buffer_object, GL_ARB_vertex_array_bgra, 
    GL_ARB_vertex_array_object, GL_ARB_vertex_attrib_64bit, 
    GL_ARB_vertex_attrib_binding, GL_ARB_vertex_buffer_object, 
    GL_ARB_vertex_program, GL_ARB_vertex_shader, 
    GL_ARB_vertex_type_10f_11f_11f_rev, GL_ARB_vertex_type_2_10_10_10_rev, 
    GL_ARB_viewport_array, GL_ARB_window_pos, GL_ATI_draw_buffers, 
    GL_ATI_texture_float, GL_ATI_texture_mirror_once, 
    GL_EXTX_framebuffer_mixed_formats, GL_EXT_Cg_shader, GL_EXT_abgr, 
    GL_EXT_bgra, GL_EXT_bindable_uniform, GL_EXT_blend_color, 
    GL_EXT_blend_equation_separate, GL_EXT_blend_func_separate, 
    GL_EXT_blend_minmax, GL_EXT_blend_subtract, GL_EXT_compiled_vertex_array, 
    GL_EXT_depth_bounds_test, GL_EXT_direct_state_access, 
    GL_EXT_draw_buffers2, GL_EXT_draw_instanced, GL_EXT_draw_range_elements, 
    GL_EXT_fog_coord, GL_EXT_framebuffer_blit, GL_EXT_framebuffer_multisample, 
    GL_EXT_framebuffer_multisample_blit_scaled, GL_EXT_framebuffer_object, 
    GL_EXT_framebuffer_sRGB, GL_EXT_geometry_shader4, 
    GL_EXT_gpu_program_parameters, GL_EXT_gpu_shader4, 
    GL_EXT_import_sync_object, GL_EXT_multi_draw_arrays, 
    GL_EXT_packed_depth_stencil, GL_EXT_packed_float, GL_EXT_packed_pixels, 
    GL_EXT_pixel_buffer_object, GL_EXT_point_parameters, 
    GL_EXT_polygon_offset_clamp, GL_EXT_provoking_vertex, 
    GL_EXT_rescale_normal, GL_EXT_secondary_color, 
    GL_EXT_separate_shader_objects, GL_EXT_separate_specular_color, 
    GL_EXT_shader_image_load_formatted, GL_EXT_shader_image_load_store, 
    GL_EXT_shader_integer_mix, GL_EXT_shadow_funcs, GL_EXT_stencil_two_side, 
    GL_EXT_stencil_wrap, GL_EXT_texture3D, GL_EXT_texture_array, 
    GL_EXT_texture_buffer_object, GL_EXT_texture_compression_dxt1, 
    GL_EXT_texture_compression_latc, GL_EXT_texture_compression_rgtc, 
    GL_EXT_texture_compression_s3tc, GL_EXT_texture_cube_map, 
    GL_EXT_texture_edge_clamp, GL_EXT_texture_env_add, 
    GL_EXT_texture_env_combine, GL_EXT_texture_env_dot3, 
    GL_EXT_texture_filter_anisotropic, GL_EXT_texture_integer, 
    GL_EXT_texture_lod, GL_EXT_texture_lod_bias, GL_EXT_texture_mirror_clamp, 
    GL_EXT_texture_object, GL_EXT_texture_sRGB, GL_EXT_texture_sRGB_decode, 
    GL_EXT_texture_shared_exponent, GL_EXT_texture_storage, 
    GL_EXT_texture_swizzle, GL_EXT_timer_query, GL_EXT_transform_feedback2, 
    GL_EXT_vertex_array, GL_EXT_vertex_array_bgra, GL_EXT_vertex_attrib_64bit, 
    GL_EXT_window_rectangles, GL_EXT_x11_sync_object, GL_IBM_rasterpos_clip, 
    GL_IBM_texture_mirrored_repeat, GL_KHR_blend_equation_advanced, 
    GL_KHR_blend_equation_advanced_coherent, GL_KHR_context_flush_control, 
    GL_KHR_debug, GL_KHR_no_error, GL_KHR_robust_buffer_access_behavior, 
    GL_KHR_robustness, GL_KTX_buffer_region, GL_NVX_conditional_render, 
    GL_NVX_gpu_memory_info, GL_NVX_nvenc_interop, GL_NV_ES1_1_compatibility, 
    GL_NV_ES3_1_compatibility, GL_NV_alpha_to_coverage_dither_control, 
    GL_NV_bindless_multi_draw_indirect, 
    GL_NV_bindless_multi_draw_indirect_count, GL_NV_bindless_texture, 
    GL_NV_blend_equation_advanced, GL_NV_blend_equation_advanced_coherent, 
    GL_NV_blend_square, GL_NV_command_list, GL_NV_compute_program5, 
    GL_NV_conditional_render, GL_NV_copy_depth_to_color, GL_NV_copy_image, 
    GL_NV_depth_buffer_float, GL_NV_depth_clamp, GL_NV_draw_texture, 
    GL_NV_draw_vulkan_image, GL_NV_explicit_multisample, GL_NV_fence, 
    GL_NV_float_buffer, GL_NV_fog_distance, GL_NV_fragment_program, 
    GL_NV_fragment_program2, GL_NV_fragment_program_option, 
    GL_NV_framebuffer_multisample_coverage, GL_NV_geometry_shader4, 
    GL_NV_gpu_program4, GL_NV_gpu_program4_1, GL_NV_gpu_program5, 
    GL_NV_gpu_program5_mem_extended, GL_NV_gpu_program_fp64, 
    GL_NV_gpu_shader5, GL_NV_half_float, GL_NV_internalformat_sample_query, 
    GL_NV_light_max_exponent, GL_NV_multisample_coverage, 
    GL_NV_multisample_filter_hint, GL_NV_occlusion_query, 
    GL_NV_packed_depth_stencil, GL_NV_parameter_buffer_object, 
    GL_NV_parameter_buffer_object2, GL_NV_path_rendering, 
    GL_NV_pixel_data_range, GL_NV_point_sprite, GL_NV_primitive_restart, 
    GL_NV_register_combiners, GL_NV_register_combiners2, 
    GL_NV_robustness_video_memory_purge, GL_NV_shader_atomic_counters, 
    GL_NV_shader_atomic_float, GL_NV_shader_atomic_int64, 
    GL_NV_shader_buffer_load, GL_NV_shader_storage_buffer_object, 
    GL_NV_shader_thread_group, GL_NV_shader_thread_shuffle, 
    GL_NV_texgen_reflection, GL_NV_texture_barrier, 
    GL_NV_texture_compression_vtc, GL_NV_texture_env_combine4, 
    GL_NV_texture_multisample, GL_NV_texture_rectangle, GL_NV_texture_shader, 
    GL_NV_texture_shader2, GL_NV_texture_shader3, GL_NV_transform_feedback, 
    GL_NV_transform_feedback2, GL_NV_uniform_buffer_unified_memory, 
    GL_NV_vdpau_interop, GL_NV_vertex_array_range, GL_NV_vertex_array_range2, 
    GL_NV_vertex_attrib_integer_64bit, GL_NV_vertex_buffer_unified_memory, 
    GL_NV_vertex_program, GL_NV_vertex_program1_1, GL_NV_vertex_program2, 
    GL_NV_vertex_program2_option, GL_NV_vertex_program3, GL_S3_s3tc, 
    GL_SGIS_generate_mipmap, GL_SGIS_texture_lod, GL_SGIX_depth_texture, 
    GL_SGIX_shadow, GL_SUN_slice_accum

40 GLX Visuals
    visual  x   bf lv rg d st  colorbuffer  sr ax dp st accumbuffer  ms  cav
  id dep cl sp  sz l  ci b ro  r  g  b  a F gb bf th cl  r  g  b  a ns b eat
----------------------------------------------------------------------------
0x020 24 tc  0  24  0 r  y .   8  8  8  0 .  .  4 24  8 16 16 16 16  0 0 None
0x021 24 dc  0  24  0 r  y .   8  8  8  0 .  .  4 24  8 16 16 16 16  0 0 None
0x0cd 24 tc  0  24  0 r  y .   8  8  8  0 .  .  4 24  8 16 16 16 16  0 0 None
0x0ce 24 tc  0  24  0 r  y .   8  8  8  0 .  .  4 24  8 16 16 16 16  0 0 None
0x0cf 24 tc  0  24  0 r  y .   8  8  8  0 .  .  4 24  8 16 16 16 16  0 0 None
0x0d0 24 tc  0  24  0 r  y .   8  8  8  0 .  .  4 24  8 16 16 16 16  0 0 None
0x0d1 24 tc  0  24  0 r  y .   8  8  8  0 .  .  4 24  8 16 16 16 16  0 0 None
0x0d2 24 tc  0  24  0 r  y .   8  8  8  0 .  .  4 24  8 16 16 16 16  0 0 None
0x0d3 24 tc  0  24  0 r  y .   8  8  8  0 .  .  4 24  8 16 16 16 16  0 0 None
0x0d4 24 tc  0  24  0 r  y .   8  8  8  0 .  .  4 24  8 16 16 16 16  0 0 None
0x0d5 24 tc  0  24  0 r  y .   8  8  8  0 .  .  4 24  8 16 16 16 16  0 0 None
0x0d6 24 tc  0  24  0 r  y .   8  8  8  0 .  .  4 24  8 16 16 16 16  0 0 None
0x0d7 24 tc  0  24  0 r  y .   8  8  8  0 .  .  4 24  8 16 16 16 16  0 0 None
0x0d8 24 tc  0  24  0 r  y .   8  8  8  0 .  .  4 24  8 16 16 16 16  0 0 None
0x0d9 24 tc  0  24  0 r  y .   8  8  8  0 .  .  4 24  8 16 16 16 16  0 0 None
0x0da 24 tc  0  24  0 r  y .   8  8  8  0 .  .  4 24  8 16 16 16 16  0 0 None
0x0db 24 tc  0  24  0 r  y .   8  8  8  0 .  .  4 24  8 16 16 16 16  0 0 None
0x0dc 24 tc  0  24  0 r  y .   8  8  8  0 .  .  4 24  8 16 16 16 16  0 0 None
0x0dd 24 tc  0  24  0 r  y .   8  8  8  0 .  .  4 24  8 16 16 16 16  0 0 None
0x0de 24 tc  0  24  0 r  y .   8  8  8  0 .  .  4 24  8 16 16 16 16  0 0 None
0x0df 24 dc  0  24  0 r  y .   8  8  8  0 .  .  4 24  8 16 16 16 16  0 0 None
0x0e0 24 dc  0  24  0 r  y .   8  8  8  0 .  .  4 24  8 16 16 16 16  0 0 None
0x0e1 24 dc  0  24  0 r  y .   8  8  8  0 .  .  4 24  8 16 16 16 16  0 0 None
0x0e2 24 dc  0  24  0 r  y .   8  8  8  0 .  .  4 24  8 16 16 16 16  0 0 None
0x0e3 24 dc  0  24  0 r  y .   8  8  8  0 .  .  4 24  8 16 16 16 16  0 0 None
0x0e4 24 dc  0  24  0 r  y .   8  8  8  0 .  .  4 24  8 16 16 16 16  0 0 None
0x0e5 24 dc  0  24  0 r  y .   8  8  8  0 .  .  4 24  8 16 16 16 16  0 0 None
0x0e6 24 dc  0  24  0 r  y .   8  8  8  0 .  .  4 24  8 16 16 16 16  0 0 None
0x0e7 24 dc  0  24  0 r  y .   8  8  8  0 .  .  4 24  8 16 16 16 16  0 0 None
0x0e8 24 dc  0  24  0 r  y .   8  8  8  0 .  .  4 24  8 16 16 16 16  0 0 None
0x0e9 24 dc  0  24  0 r  y .   8  8  8  0 .  .  4 24  8 16 16 16 16  0 0 None
0x0ea 24 dc  0  24  0 r  y .   8  8  8  0 .  .  4 24  8 16 16 16 16  0 0 None
0x0eb 24 dc  0  24  0 r  y .   8  8  8  0 .  .  4 24  8 16 16 16 16  0 0 None
0x0ec 24 dc  0  24  0 r  y .   8  8  8  0 .  .  4 24  8 16 16 16 16  0 0 None
0x0ed 24 dc  0  24  0 r  y .   8  8  8  0 .  .  4 24  8 16 16 16 16  0 0 None
0x0ee 24 dc  0  24  0 r  y .   8  8  8  0 .  .  4 24  8 16 16 16 16  0 0 None
0x0ef 24 dc  0  24  0 r  y .   8  8  8  0 .  .  4 24  8 16 16 16 16  0 0 None
0x0f0 24 dc  0  24  0 r  y .   8  8  8  0 .  .  4 24  8 16 16 16 16  0 0 None
0x0f1 24 dc  0  24  0 r  y .   8  8  8  0 .  .  4 24  8 16 16 16 16  0 0 None
0x08c 32 tc  0  24  0 r  y .   8  8  8  0 .  .  4 24  8 16 16 16 16  0 0 None

215 GLXFBConfigs:
    visual  x   bf lv rg d st  colorbuffer  sr ax dp st accumbuffer  ms  cav
  id dep cl sp  sz l  ci b ro  r  g  b  a F gb bf th cl  r  g  b  a ns b eat
----------------------------------------------------------------------------
0x0a5 32 tc  0  24  0 r  y .   8  8  8  0 .  .  4 24  8 16 16 16 16  0 0 None
0x0a6 24 dc  0  24  0 r  y .   8  8  8  0 .  .  4 24  8 16 16 16 16  0 0 None
0x0a7 24 tc  0  32  0 r  y .   8  8  8  8 .  .  4 24  8 16 16 16 16  0 0 None
0x0a8 24 dc  0  32  0 r  y .   8  8  8  8 .  .  4 24  8 16 16 16 16  0 0 None
0x0a9 24 tc  0  24  0 r  . .   8  8  8  0 .  .  4 24  8 16 16 16 16  0 0 None
0x0aa 24 dc  0  24  0 r  . .   8  8  8  0 .  .  4 24  8 16 16 16 16  0 0 None
0x0ab 24 tc  0  32  0 r  . .   8  8  8  8 .  .  4 24  8 16 16 16 16  0 0 None
0x0ac 24 dc  0  32  0 r  . .   8  8  8  8 .  .  4 24  8 16 16 16 16  0 0 None
0x0ad 24 tc  0  24  0 r  y .   8  8  8  0 .  .  4 24  0 16 16 16 16  0 0 None
0x0ae 24 dc  0  24  0 r  y .   8  8  8  0 .  .  4 24  0 16 16 16 16  0 0 None
0x0af 24 tc  0  32  0 r  y .   8  8  8  8 .  .  4 24  0 16 16 16 16  0 0 None
0x0b0 24 dc  0  32  0 r  y .   8  8  8  8 .  .  4 24  0 16 16 16 16  0 0 None
0x0b1 24 tc  0  24  0 r  . .   8  8  8  0 .  .  4 24  0 16 16 16 16  0 0 None
0x0b2 24 dc  0  24  0 r  . .   8  8  8  0 .  .  4 24  0 16 16 16 16  0 0 None
0x0b3 24 tc  0  32  0 r  . .   8  8  8  8 .  .  4 24  0 16 16 16 16  0 0 None
0x0b4 24 dc  0  32  0 r  . .   8  8  8  8 .  .  4 24  0 16 16 16 16  0 0 None
0x0b5 24 tc  0  24  0 r  y .   8  8  8  0 .  .  4  0  0 16 16 16 16  0 0 None
0x0b6 24 dc  0  24  0 r  y .   8  8  8  0 .  .  4  0  0 16 16 16 16  0 0 None
0x0b7 24 tc  0  32  0 r  y .   8  8  8  8 .  .  4  0  0 16 16 16 16  0 0 None
0x0b8 24 dc  0  32  0 r  y .   8  8  8  8 .  .  4  0  0 16 16 16 16  0 0 None
0x0b9 24 tc  0  24  0 r  . .   8  8  8  0 .  .  4  0  0 16 16 16 16  0 0 None
0x0ba 24 dc  0  24  0 r  . .   8  8  8  0 .  .  4  0  0 16 16 16 16  0 0 None
0x0bb 24 tc  0  32  0 r  . .   8  8  8  8 .  .  4  0  0 16 16 16 16  0 0 None
0x0bc 24 dc  0  32  0 r  . .   8  8  8  8 .  .  4  0  0 16 16 16 16  0 0 None
0x0bd 24 tc  0  24  0 r  y .   8  8  8  0 .  .  4 24  0 16 16 16 16  2 1 Ncon
0x0be 24 dc  0  24  0 r  y .   8  8  8  0 .  .  4 24  0 16 16 16 16  2 1 Ncon
0x0bf 24 tc  0  32  0 r  y .   8  8  8  8 .  .  4 24  0 16 16 16 16  2 1 Ncon
0x0c0 24 dc  0  32  0 r  y .   8  8  8  8 .  .  4 24  0 16 16 16 16  2 1 Ncon
0x0c1 24 tc  0  24  0 r  y .   8  8  8  0 .  .  4 24  0 16 16 16 16  4 1 Ncon
0x0c2 24 dc  0  24  0 r  y .   8  8  8  0 .  .  4 24  0 16 16 16 16  4 1 Ncon
0x0c3 24 tc  0  32  0 r  y .   8  8  8  8 .  .  4 24  0 16 16 16 16  4 1 Ncon
0x0c4 24 dc  0  32  0 r  y .   8  8  8  8 .  .  4 24  0 16 16 16 16  4 1 Ncon
0x0c5 24 tc  0  24  0 r  . .   8  8  8  0 .  .  4 24  0 16 16 16 16  2 1 Ncon
0x0c6 24 dc  0  24  0 r  . .   8  8  8  0 .  .  4 24  0 16 16 16 16  2 1 Ncon
0x0c7 24 tc  0  32  0 r  . .   8  8  8  8 .  .  4 24  0 16 16 16 16  2 1 Ncon
0x0c8 24 dc  0  32  0 r  . .   8  8  8  8 .  .  4 24  0 16 16 16 16  2 1 Ncon
0x0c9 24 tc  0  24  0 r  . .   8  8  8  0 .  .  4 24  0 16 16 16 16  4 1 Ncon
0x0ca 24 dc  0  24  0 r  . .   8  8  8  0 .  .  4 24  0 16 16 16 16  4 1 Ncon
0x0cb 24 tc  0  32  0 r  . .   8  8  8  8 .  .  4 24  0 16 16 16 16  4 1 Ncon
0x0cc 24 dc  0  32  0 r  . .   8  8  8  8 .  .  4 24  0 16 16 16 16  4 1 Ncon
0x0cd 24 tc  0  24  0 r  y .   8  8  8  0 .  .  4 24  8 16 16 16 16  2 1 Ncon
0x0ce 24 dc  0  24  0 r  y .   8  8  8  0 .  .  4 24  8 16 16 16 16  2 1 Ncon
0x0cf 24 tc  0  32  0 r  y .   8  8  8  8 .  .  4 24  8 16 16 16 16  2 1 Ncon
0x0d0 24 dc  0  32  0 r  y .   8  8  8  8 .  .  4 24  8 16 16 16 16  2 1 Ncon
0x0d1 24 tc  0  24  0 r  y .   8  8  8  0 .  .  4 24  8 16 16 16 16  4 1 Ncon
0x0d2 24 dc  0  24  0 r  y .   8  8  8  0 .  .  4 24  8 16 16 16 16  4 1 Ncon
0x0d3 24 tc  0  32  0 r  y .   8  8  8  8 .  .  4 24  8 16 16 16 16  4 1 Ncon
0x0d4 24 dc  0  32  0 r  y .   8  8  8  8 .  .  4 24  8 16 16 16 16  4 1 Ncon
0x0d5 24 tc  0  24  0 r  . .   8  8  8  0 .  .  4 24  8 16 16 16 16  2 1 Ncon
0x0d6 24 dc  0  24  0 r  . .   8  8  8  0 .  .  4 24  8 16 16 16 16  2 1 Ncon
0x0d7 24 tc  0  32  0 r  . .   8  8  8  8 .  .  4 24  8 16 16 16 16  2 1 Ncon
0x0d8 24 dc  0  32  0 r  . .   8  8  8  8 .  .  4 24  8 16 16 16 16  2 1 Ncon
0x0d9 24 tc  0  24  0 r  . .   8  8  8  0 .  .  4 24  8 16 16 16 16  4 1 Ncon
0x0da 24 dc  0  24  0 r  . .   8  8  8  0 .  .  4 24  8 16 16 16 16  4 1 Ncon
0x0db 24 tc  0  32  0 r  . .   8  8  8  8 .  .  4 24  8 16 16 16 16  4 1 Ncon
0x0dc 24 dc  0  32  0 r  . .   8  8  8  8 .  .  4 24  8 16 16 16 16  4 1 Ncon
0x0dd 24 tc  0  24  0 r  y .   8  8  8  0 .  .  4 24  0 16 16 16 16  8 1 Ncon
0x0de 24 dc  0  24  0 r  y .   8  8  8  0 .  .  4 24  0 16 16 16 16  8 1 Ncon
0x0df 24 tc  0  32  0 r  y .   8  8  8  8 .  .  4 24  0 16 16 16 16  8 1 Ncon
0x0e0 24 dc  0  32  0 r  y .   8  8  8  8 .  .  4 24  0 16 16 16 16  8 1 Ncon
0x0e1 24 tc  0  24  0 r  . .   8  8  8  0 .  .  4 24  0 16 16 16 16  8 1 Ncon
0x0e2 24 dc  0  24  0 r  . .   8  8  8  0 .  .  4 24  0 16 16 16 16  8 1 Ncon
0x0e3 24 tc  0  32  0 r  . .   8  8  8  8 .  .  4 24  0 16 16 16 16  8 1 Ncon
0x0e4 24 dc  0  32  0 r  . .   8  8  8  8 .  .  4 24  0 16 16 16 16  8 1 Ncon
0x0e5 24 tc  0  24  0 r  y .   8  8  8  0 .  .  4 24  8 16 16 16 16  8 1 Ncon
0x0e6 24 dc  0  24  0 r  y .   8  8  8  0 .  .  4 24  8 16 16 16 16  8 1 Ncon
0x0e7 24 tc  0  32  0 r  y .   8  8  8  8 .  .  4 24  8 16 16 16 16  8 1 Ncon
0x0e8 24 dc  0  32  0 r  y .   8  8  8  8 .  .  4 24  8 16 16 16 16  8 1 Ncon
0x0e9 24 tc  0  24  0 r  . .   8  8  8  0 .  .  4 24  8 16 16 16 16  8 1 Ncon
0x0ea 24 dc  0  24  0 r  . .   8  8  8  0 .  .  4 24  8 16 16 16 16  8 1 Ncon
0x0eb 24 tc  0  32  0 r  . .   8  8  8  8 .  .  4 24  8 16 16 16 16  8 1 Ncon
0x0ec 24 dc  0  32  0 r  . .   8  8  8  8 .  .  4 24  8 16 16 16 16  8 1 Ncon
0x0ed 24 tc  0  24  0 r  y .   8  8  8  0 .  .  4 24  0 16 16 16 16 16 1 Ncon
0x0ee 24 dc  0  24  0 r  y .   8  8  8  0 .  .  4 24  0 16 16 16 16 16 1 Ncon
0x0ef 24 tc  0  32  0 r  y .   8  8  8  8 .  .  4 24  0 16 16 16 16 16 1 Ncon
0x0f0 24 dc  0  32  0 r  y .   8  8  8  8 .  .  4 24  0 16 16 16 16 16 1 Ncon
0x0f1 24 tc  0  24  0 r  . .   8  8  8  0 .  .  4 24  0 16 16 16 16 16 1 Ncon
0x0f2 24 dc  0  24  0 r  . .   8  8  8  0 .  .  4 24  0 16 16 16 16 16 1 Ncon
0x0f3 24 tc  0  32  0 r  . .   8  8  8  8 .  .  4 24  0 16 16 16 16 16 1 Ncon
0x0f4 24 dc  0  32  0 r  . .   8  8  8  8 .  .  4 24  0 16 16 16 16 16 1 Ncon
0x0f5 24 tc  0  24  0 r  y .   8  8  8  0 .  .  4 24  8 16 16 16 16 16 1 Ncon
0x0f6 24 dc  0  24  0 r  y .   8  8  8  0 .  .  4 24  8 16 16 16 16 16 1 Ncon
0x0f7 24 tc  0  32  0 r  y .   8  8  8  8 .  .  4 24  8 16 16 16 16 16 1 Ncon
0x0f8 24 dc  0  32  0 r  y .   8  8  8  8 .  .  4 24  8 16 16 16 16 16 1 Ncon
0x0f9 24 tc  0  24  0 r  . .   8  8  8  0 .  .  4 24  8 16 16 16 16 16 1 Ncon
0x0fa 24 dc  0  24  0 r  . .   8  8  8  0 .  .  4 24  8 16 16 16 16 16 1 Ncon
0x0fb 24 tc  0  32  0 r  . .   8  8  8  8 .  .  4 24  8 16 16 16 16 16 1 Ncon
0x0fc 24 dc  0  32  0 r  . .   8  8  8  8 .  .  4 24  8 16 16 16 16 16 1 Ncon
0x0fd 32 tc  0  24  0 r  y .   8  8  8  0 .  .  4 24  8 16 16 16 16  0 0 None
0x0fe 32 tc  0  32  0 r  y .   8  8  8  8 .  .  4 24  8 16 16 16 16  0 0 None
0x0ff 32 tc  0  24  0 r  . .   8  8  8  0 .  .  4 24  8 16 16 16 16  0 0 None
0x100 32 tc  0  32  0 r  . .   8  8  8  8 .  .  4 24  8 16 16 16 16  0 0 None
0x101 32 tc  0  24  0 r  y .   8  8  8  0 .  .  4 24  0 16 16 16 16  0 0 None
0x102 32 tc  0  32  0 r  y .   8  8  8  8 .  .  4 24  0 16 16 16 16  0 0 None
0x103 32 tc  0  24  0 r  . .   8  8  8  0 .  .  4 24  0 16 16 16 16  0 0 None
0x104 32 tc  0  32  0 r  . .   8  8  8  8 .  .  4 24  0 16 16 16 16  0 0 None
0x105 32 tc  0  24  0 r  y .   8  8  8  0 .  .  4  0  0 16 16 16 16  0 0 None
0x106 32 tc  0  32  0 r  y .   8  8  8  8 .  .  4  0  0 16 16 16 16  0 0 None
0x107 32 tc  0  24  0 r  . .   8  8  8  0 .  .  4  0  0 16 16 16 16  0 0 None
0x108 32 tc  0  32  0 r  . .   8  8  8  8 .  .  4  0  0 16 16 16 16  0 0 None
0x109 32 tc  0  24  0 r  y .   8  8  8  0 .  .  4 24  0 16 16 16 16  2 1 Ncon
0x10a 32 tc  0  32  0 r  y .   8  8  8  8 .  .  4 24  0 16 16 16 16  2 1 Ncon
0x10b 32 tc  0  24  0 r  y .   8  8  8  0 .  .  4 24  0 16 16 16 16  4 1 Ncon
0x10c 32 tc  0  32  0 r  y .   8  8  8  8 .  .  4 24  0 16 16 16 16  4 1 Ncon
0x10d 32 tc  0  24  0 r  . .   8  8  8  0 .  .  4 24  0 16 16 16 16  2 1 Ncon
0x10e 32 tc  0  32  0 r  . .   8  8  8  8 .  .  4 24  0 16 16 16 16  2 1 Ncon
0x10f 32 tc  0  24  0 r  . .   8  8  8  0 .  .  4 24  0 16 16 16 16  4 1 Ncon
0x110 32 tc  0  32  0 r  . .   8  8  8  8 .  .  4 24  0 16 16 16 16  4 1 Ncon
0x111 32 tc  0  24  0 r  y .   8  8  8  0 .  .  4 24  8 16 16 16 16  2 1 Ncon
0x112 32 tc  0  32  0 r  y .   8  8  8  8 .  .  4 24  8 16 16 16 16  2 1 Ncon
0x113 32 tc  0  24  0 r  y .   8  8  8  0 .  .  4 24  8 16 16 16 16  4 1 Ncon
0x114 32 tc  0  32  0 r  y .   8  8  8  8 .  .  4 24  8 16 16 16 16  4 1 Ncon
0x115 32 tc  0  24  0 r  . .   8  8  8  0 .  .  4 24  8 16 16 16 16  2 1 Ncon
0x116 32 tc  0  32  0 r  . .   8  8  8  8 .  .  4 24  8 16 16 16 16  2 1 Ncon
0x117 32 tc  0  24  0 r  . .   8  8  8  0 .  .  4 24  8 16 16 16 16  4 1 Ncon
0x118 32 tc  0  32  0 r  . .   8  8  8  8 .  .  4 24  8 16 16 16 16  4 1 Ncon
0x119 32 tc  0  24  0 r  y .   8  8  8  0 .  .  4 24  0 16 16 16 16  8 1 Ncon
0x11a 32 tc  0  32  0 r  y .   8  8  8  8 .  .  4 24  0 16 16 16 16  8 1 Ncon
0x11b 32 tc  0  24  0 r  . .   8  8  8  0 .  .  4 24  0 16 16 16 16  8 1 Ncon
0x11c 32 tc  0  32  0 r  . .   8  8  8  8 .  .  4 24  0 16 16 16 16  8 1 Ncon
0x11d 32 tc  0  24  0 r  y .   8  8  8  0 .  .  4 24  8 16 16 16 16  8 1 Ncon
0x11e 32 tc  0  32  0 r  y .   8  8  8  8 .  .  4 24  8 16 16 16 16  8 1 Ncon
0x11f 32 tc  0  24  0 r  . .   8  8  8  0 .  .  4 24  8 16 16 16 16  8 1 Ncon
0x120 32 tc  0  32  0 r  . .   8  8  8  8 .  .  4 24  8 16 16 16 16  8 1 Ncon
0x121 32 tc  0  24  0 r  y .   8  8  8  0 .  .  4 24  0 16 16 16 16 16 1 Ncon
0x122 32 tc  0  32  0 r  y .   8  8  8  8 .  .  4 24  0 16 16 16 16 16 1 Ncon
0x123 32 tc  0  24  0 r  . .   8  8  8  0 .  .  4 24  0 16 16 16 16 16 1 Ncon
0x124 32 tc  0  32  0 r  . .   8  8  8  8 .  .  4 24  0 16 16 16 16 16 1 Ncon
0x125 32 tc  0  24  0 r  y .   8  8  8  0 .  .  4 24  8 16 16 16 16 16 1 Ncon
0x126 32 tc  0  32  0 r  y .   8  8  8  8 .  .  4 24  8 16 16 16 16 16 1 Ncon
0x127 32 tc  0  24  0 r  . .   8  8  8  0 .  .  4 24  8 16 16 16 16 16 1 Ncon
0x128 32 tc  0  32  0 r  . .   8  8  8  8 .  .  4 24  8 16 16 16 16 16 1 Ncon
0x129 24 sg  0  16  0 r  y .   5  6  5  0 .  .  4 16  0 16 16 16 16  0 0 None
0x12a 24 sg  0  16  0 r  . .   5  6  5  0 .  .  4 16  0 16 16 16 16  0 0 None
0x12b 24 sg  0  16  0 r  y .   5  6  5  0 .  .  4 24  0 16 16 16 16  0 0 None
0x12c 24 sg  0  16  0 r  . .   5  6  5  0 .  .  4 24  0 16 16 16 16  0 0 None
0x12d 24 sg  0  16  0 r  y .   5  6  5  0 .  .  4 24  8 16 16 16 16  0 0 None
0x12e 24 sg  0  16  0 r  . .   5  6  5  0 .  .  4 24  8 16 16 16 16  0 0 None
0x12f 24 sg  0  16  0 r  y .   5  6  5  0 .  .  4  0  0 16 16 16 16  0 0 None
0x130 24 sg  0  16  0 r  . .   5  6  5  0 .  .  4  0  0 16 16 16 16  0 0 None
0x131 24 sg  0   0  0 r  . .   0  0  0  0 .  .  4 16  0 16 16 16 16  0 0 None
0x132 24 sg  0   0  0 r  . .   0  0  0  0 .  .  4 24  0 16 16 16 16  0 0 None
0x133 24 sg  0   0  0 r  . .   0  0  0  0 .  .  4 24  8 16 16 16 16  0 0 None
0x134 24 sg  0  32  0 r  . .  16 16  0  0 .  .  4  0  0 16 16 16 16  0 0 None
0x135 24 sg  0  32  0    . .  16 16  0  0 .  .  4  0  0 16 16 16 16  0 0 None
0x136 24 sg  0  32  0 r  y .  16 16  0  0 .  .  4  0  0 16 16 16 16  0 0 None
0x137 24 sg  0  32  0    y .  16 16  0  0 .  .  4  0  0 16 16 16 16  0 0 None
0x138 24 sg  0  32  0 r  . .  32  0  0  0 .  .  4  0  0 16 16 16 16  0 0 None
0x139 24 sg  0  32  0    . .  32  0  0  0 .  .  4  0  0 16 16 16 16  0 0 None
0x13a 24 sg  0  32  0 r  y .  32  0  0  0 .  .  4  0  0 16 16 16 16  0 0 None
0x13b 24 sg  0  32  0    y .  32  0  0  0 .  .  4  0  0 16 16 16 16  0 0 None
0x13c 24 sg  0  64  0 r  . .  16 16 16 16 .  .  4  0  0 16 16 16 16  0 0 None
0x13d 24 sg  0  64  0    . .  16 16 16 16 .  .  4  0  0 16 16 16 16  0 0 None
0x13e 24 sg  0  64  0 r  y .  16 16 16 16 .  .  4  0  0 16 16 16 16  0 0 None
0x13f 24 sg  0  64  0    y .  16 16 16 16 .  .  4  0  0 16 16 16 16  0 0 None
0x140 24 sg  0 128  0 r  . .  32 32 32 32 .  .  4  0  0 16 16 16 16  0 0 None
0x141 24 sg  0 128  0    . .  32 32 32 32 .  .  4  0  0 16 16 16 16  0 0 None
0x142 24 sg  0 128  0 r  y .  32 32 32 32 .  .  4  0  0 16 16 16 16  0 0 None
0x143 24 sg  0 128  0    y .  32 32 32 32 .  .  4  0  0 16 16 16 16  0 0 None
0x144 24 sg  0  32  0 r  . .  16 16  0  0 .  .  4 24  0 16 16 16 16  0 0 None
0x145 24 sg  0  32  0    . .  16 16  0  0 .  .  4 24  0 16 16 16 16  0 0 None
0x146 24 sg  0  32  0 r  y .  16 16  0  0 .  .  4 24  0 16 16 16 16  0 0 None
0x147 24 sg  0  32  0    y .  16 16  0  0 .  .  4 24  0 16 16 16 16  0 0 None
0x148 24 sg  0  32  0 r  . .  16 16  0  0 .  .  4 24  8 16 16 16 16  0 0 None
0x149 24 sg  0  32  0    . .  16 16  0  0 .  .  4 24  8 16 16 16 16  0 0 None
0x14a 24 sg  0  32  0 r  y .  16 16  0  0 .  .  4 24  8 16 16 16 16  0 0 None
0x14b 24 sg  0  32  0    y .  16 16  0  0 .  .  4 24  8 16 16 16 16  0 0 None
0x14c 24 sg  0  32  0 r  . .  32  0  0  0 .  .  4 24  0 16 16 16 16  0 0 None
0x14d 24 sg  0  32  0    . .  32  0  0  0 .  .  4 24  0 16 16 16 16  0 0 None
0x14e 24 sg  0  32  0 r  y .  32  0  0  0 .  .  4 24  0 16 16 16 16  0 0 None
0x14f 24 sg  0  32  0    y .  32  0  0  0 .  .  4 24  0 16 16 16 16  0 0 None
0x150 24 sg  0  32  0 r  . .  32  0  0  0 .  .  4 24  8 16 16 16 16  0 0 None
0x151 24 sg  0  32  0    . .  32  0  0  0 .  .  4 24  8 16 16 16 16  0 0 None
0x152 24 sg  0  32  0 r  y .  32  0  0  0 .  .  4 24  8 16 16 16 16  0 0 None
0x153 24 sg  0  32  0    y .  32  0  0  0 .  .  4 24  8 16 16 16 16  0 0 None
0x154 24 sg  0  64  0 r  . .  16 16 16 16 .  .  4 24  0 16 16 16 16  0 0 None
0x155 24 sg  0  64  0    . .  16 16 16 16 .  .  4 24  0 16 16 16 16  0 0 None
0x156 24 sg  0  64  0 r  y .  16 16 16 16 .  .  4 24  0 16 16 16 16  0 0 None
0x157 24 sg  0  64  0    y .  16 16 16 16 .  .  4 24  0 16 16 16 16  0 0 None
0x158 24 sg  0  64  0 r  . .  16 16 16 16 .  .  4 24  8 16 16 16 16  0 0 None
0x159 24 sg  0  64  0    . .  16 16 16 16 .  .  4 24  8 16 16 16 16  0 0 None
0x15a 24 sg  0  64  0 r  y .  16 16 16 16 .  .  4 24  8 16 16 16 16  0 0 None
0x15b 24 sg  0  64  0    y .  16 16 16 16 .  .  4 24  8 16 16 16 16  0 0 None
0x15c 24 sg  0 128  0 r  . .  32 32 32 32 .  .  4 24  0 16 16 16 16  0 0 None
0x15d 24 sg  0 128  0    . .  32 32 32 32 .  .  4 24  0 16 16 16 16  0 0 None
0x15e 24 sg  0 128  0 r  y .  32 32 32 32 .  .  4 24  0 16 16 16 16  0 0 None
0x15f 24 sg  0 128  0    y .  32 32 32 32 .  .  4 24  0 16 16 16 16  0 0 None
0x160 24 sg  0 128  0 r  . .  32 32 32 32 .  .  4 24  8 16 16 16 16  0 0 None
0x161 24 sg  0 128  0    . .  32 32 32 32 .  .  4 24  8 16 16 16 16  0 0 None
0x162 24 sg  0 128  0 r  y .  32 32 32 32 .  .  4 24  8 16 16 16 16  0 0 None
0x163 24 sg  0 128  0    y .  32 32 32 32 .  .  4 24  8 16 16 16 16  0 0 None
0x164 24 sg  0  16  0 r  . .  16  0  0  0 .  .  4  0  0 16 16 16 16  0 0 None
0x165 24 sg  0  16  0    . .  16  0  0  0 .  .  4  0  0 16 16 16 16  0 0 None
0x166 24 sg  0  16  0 r  y .  16  0  0  0 .  .  4  0  0 16 16 16 16  0 0 None
0x167 24 sg  0  16  0    y .  16  0  0  0 .  .  4  0  0 16 16 16 16  0 0 None
0x168 24 sg  0  64  0 r  . .  32 32  0  0 .  .  4  0  0 16 16 16 16  0 0 None
0x169 24 sg  0  64  0    . .  32 32  0  0 .  .  4  0  0 16 16 16 16  0 0 None
0x16a 24 sg  0  64  0 r  y .  32 32  0  0 .  .  4  0  0 16 16 16 16  0 0 None
0x16b 24 sg  0  64  0    y .  32 32  0  0 .  .  4  0  0 16 16 16 16  0 0 None
0x16c 24 sg  0  16  0 r  . .  16  0  0  0 .  .  4 24  0 16 16 16 16  0 0 None
0x16d 24 sg  0  16  0    . .  16  0  0  0 .  .  4 24  0 16 16 16 16  0 0 None
0x16e 24 sg  0  16  0 r  y .  16  0  0  0 .  .  4 24  0 16 16 16 16  0 0 None
0x16f 24 sg  0  16  0    y .  16  0  0  0 .  .  4 24  0 16 16 16 16  0 0 None
0x170 24 sg  0  16  0 r  . .  16  0  0  0 .  .  4 24  8 16 16 16 16  0 0 None
0x171 24 sg  0  16  0    . .  16  0  0  0 .  .  4 24  8 16 16 16 16  0 0 None
0x172 24 sg  0  16  0 r  y .  16  0  0  0 .  .  4 24  8 16 16 16 16  0 0 None
0x173 24 sg  0  16  0    y .  16  0  0  0 .  .  4 24  8 16 16 16 16  0 0 None
0x174 24 sg  0  64  0 r  . .  32 32  0  0 .  .  4 24  0 16 16 16 16  0 0 None
0x175 24 sg  0  64  0    . .  32 32  0  0 .  .  4 24  0 16 16 16 16  0 0 None
0x176 24 sg  0  64  0 r  y .  32 32  0  0 .  .  4 24  0 16 16 16 16  0 0 None
0x177 24 sg  0  64  0    y .  32 32  0  0 .  .  4 24  0 16 16 16 16  0 0 None
0x178 24 sg  0  64  0 r  . .  32 32  0  0 .  .  4 24  8 16 16 16 16  0 0 None
0x179 24 sg  0  64  0    . .  32 32  0  0 .  .  4 24  8 16 16 16 16  0 0 None
0x17a 24 sg  0  64  0 r  y .  32 32  0  0 .  .  4 24  8 16 16 16 16  0 0 None
0x17b 24 sg  0  64  0    y .  32 32  0  0 .  .  4 24  8 16 16 16 16  0 0 None
@darcien

This comment has been minimized.

Copy link

@darcien darcien commented Jan 8, 2017

Having the same problem on

00:02.0 VGA compatible controller: Intel Corporation Atom Processor D4xx/D5xx/N4xx/N5xx Integrated Graphics Controller (rev 02)

00:02.1 Display controller: Intel Corporation Atom Processor D4xx/D5xx/N4xx/N5xx Integrated Graphics Controller (rev 02)

glxinfo result:

Extended renderer info (GLX_MESA_query_renderer):
    Vendor: Intel Open Source Technology Center (0x8086)
    Device: Mesa DRI Intel(R) Pineview M  (0xa011)
    Version: 13.0.3
    Accelerated: yes
    Video memory: 384MB
    Unified memory: yes
    Preferred profile: compat (0x2)
    Max core profile version: 0.0
    Max compat profile version: 2.1
    Max GLES1 profile version: 1.1
    Max GLES[23] profile version: 2.0
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) Pineview M 
OpenGL version string: 2.1 Mesa 13.0.3
OpenGL shading language version string: 1.20

EDIT: add glxinfo result

@casept

This comment has been minimized.

Copy link

@casept casept commented Jan 8, 2017

Same on a T400 with a GM45 intel GPU.
glxinfo:
https://gist.github.com/casept/576a633eb4f3729e2b4b05c8edfe6ddc

Quite a few laptops of simmilar vintage don't support opengl ES 3.x. Please consider whether you can make this software compatible with those machines. I can't wait to try it out!

@kamalmarhubi

This comment has been minimized.

Copy link

@kamalmarhubi kamalmarhubi commented Jan 12, 2017

@jwilm Any hints of what would need to be done to support GLSL 1.20, say?

@jwilm

This comment has been minimized.

Copy link
Collaborator

@jwilm jwilm commented Jan 12, 2017

@kamalmarhubi haven't looked into it at all, and I'm not that familiar with GL's evolution to know what won't be available. One thing that's for sure is the extension we are using would not be (see build.rs).

@abale

This comment has been minimized.

Copy link

@abale abale commented Jan 25, 2017

Same issue in vmware virtual machines on ubuntu 16.10.

@jmi2k

This comment has been minimized.

Copy link

@jmi2k jmi2k commented Jan 30, 2017

I've looked the sources, and it's quite difficult to make it work with GLSL 120. The vertex shader can easily be translated to 120-compatible code by removing layout qualifiers and assigning them before shader linking, and changing in/out with attribute/varying. The fragment shader is more difficult, because glBindFragDataLocation​ was added in GLSL 150 and glBindFragDataLocationIndexed​ in GLSL 330 (functions which would be required to remove layout qualifiers). I think we could do it step by step, and stop when the benefit isn't worth the effort.

@MagaTailor

This comment has been minimized.

Copy link
Contributor

@MagaTailor MagaTailor commented Jan 30, 2017

Don't forget about the ARM perspective :)

@poppyschmo

This comment has been minimized.

Copy link

@poppyschmo poppyschmo commented Apr 12, 2017

This might be obvious to other users of vendor-supplied drivers, but not keeping tabs on "disputed" files (ones provided by both your dist and the blob installer) can produce this error as a false positive. In my case, these were all shared libs of the libGL* variety. Basically, I'd gotten lazy in updating the "offending-files" manifest needed by my package manager's notification hook. A somewhat related discussion on libglvnd can be found here, though it doesn't focus on the dist-vs-blob clobberfest.

For anyone else potentially affected by this corner case, here's a manicured script(1)-style gist of my attempt at identifying the files and packages involved. BTW, I'm using the latest official Nvidia installer on Fedora 25.

@jcgruenhage

This comment has been minimized.

Copy link

@jcgruenhage jcgruenhage commented Jun 18, 2018

Just want to bump this issue, it's kinda sad not to see any progress on this. @jwilm, do you take donations? Making alacritty compatible with my laptop (Thinkpad X200T) would be worth 50$ to me.

@mirh

This comment has been minimized.

Copy link

@mirh mirh commented Jun 18, 2018

(which should have a GMA 4500MHD thing)
As with the reminder, I think the TL;DR for this feature request is ES2 (which would include just about anything, even the 3rd gen GMAs mentioned above) or desktop 2.1 (which would cut out especially mobile)

p.s. please some mod remove that overly long OT comment

@jedahan

This comment has been minimized.

Copy link
Contributor

@jedahan jedahan commented Jun 30, 2018

On a GTX620/GF119 with the same issue. Launched in April 2012, about 6 years old so maybe I should just get a gtx1030. Would definitely chip in $25 if that would be motivating.

@sirex

This comment has been minimized.

Copy link

@sirex sirex commented Sep 3, 2018

Same here:

> alacritty
Alacritty encountered an unrecoverable error:

	There was an error initializing the shaders: failed compiling shader: 0:14(10): error: GLSL 3.30 is not supported. Supported versions are: 1.10, 1.20, and 1.00 ES

> pacman -Q alacritty 
alacritty-git 0.1.0.809.g1adb5cb-1

> lspci -s $(lspci | grep VGA | cut -d' ' -f1) -vnn
00:02.0 VGA compatible controller [0300]: Intel Corporation Core Processor Integrated Graphics Controller [8086:0046] (rev 02) (prog-if 00 [VGA controller])
	Subsystem: Lenovo Core Processor Integrated Graphics Controller [17aa:215a]
	Flags: bus master, fast devsel, latency 0, IRQ 28
	Memory at f2000000 (64-bit, non-prefetchable) [size=4M]
	Memory at d0000000 (64-bit, prefetchable) [size=256M]
	I/O ports at 1800 [size=8]
	[virtual] Expansion ROM at 000c0000 [disabled] [size=128K]
	Capabilities: <access denied>
	Kernel driver in use: i915
	Kernel modules: i915

> glxinfo -B                                       
name of display: :0
display: :0  screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
    Vendor: Intel Open Source Technology Center (0x8086)
    Device: Mesa DRI Intel(R) Ironlake Mobile  (0x46)
    Version: 18.1.7
    Accelerated: yes
    Video memory: 1536MB
    Unified memory: yes
    Preferred profile: compat (0x2)
    Max core profile version: 0.0
    Max compat profile version: 2.1
    Max GLES1 profile version: 1.1
    Max GLES[23] profile version: 2.0
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) Ironlake Mobile 
OpenGL version string: 2.1 Mesa 18.1.7
OpenGL shading language version string: 1.20

OpenGL ES profile version string: OpenGL ES 2.0 Mesa 18.1.7
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 1.0.16
@mirh

This comment has been minimized.

Copy link

@mirh mirh commented Sep 4, 2018

Ironlake is pretty unfortunate, but with some faking and tinkering here and there you should get in the neighborhood of opengl 3.2/3.3
(information OT to this issue anyway)

@l29ah

This comment has been minimized.

Copy link

@l29ah l29ah commented Oct 11, 2018

What's the earliest Intel GPU that is supported by Alacritty?

@chrisduerr

This comment has been minimized.

Copy link
Collaborator

@chrisduerr chrisduerr commented Oct 11, 2018

@l29ah There isn't any specific lowest GPU target for Alacritty. As far as I'm concerned, I'm only testing on my R9 390, so that would be the lowest GPU I can guarantee that works. But obviously much older GPUs should also work just fine.

As long as the OpenGL features Alacritty uses are supported, the GPU should work. So GLGS 3.30+ support should be present.

@l29ah

This comment has been minimized.

Copy link

@l29ah l29ah commented Oct 13, 2018

FWIW, it seems working on an Ivy Bridge laptop.

@r3boot

This comment has been minimized.

Copy link

@r3boot r3boot commented Nov 16, 2018

This happened to me as well. Running alacritty on a Thinkpad x201 with i915 GPU:

[15:54:57] alita [~] >> alacritty
The `scale_with_dpi` setting has been removed, on X11 the WINIT_HIDPI_FACTOR environment variable can be used instead.
Alacritty encountered an unrecoverable error:

    There was an error initializing the shaders: failed compiling shader: 0:14(10): error: GLSL 3.30 is not supported. Supported versions are: 1.10, 1.20, and 1.00 ES

[15:54:58] alita [~] >> pacman -Q alacritty
alacritty 0.2.3-2
[15:55:14] alita [~] >> lspci -s $(lspci | grep VGA | cut -d' ' -f1) -vnn
00:02.0 VGA compatible controller [0300]: Intel Corporation Core Processor Integrated Graphics Controller [8086:0046] (rev 02) (prog-if 00 [VGA controller])
    Subsystem: Lenovo Core Processor Integrated Graphics Controller [17aa:215a]
    Flags: bus master, fast devsel, latency 0, IRQ 24
    Memory at f2000000 (64-bit, non-prefetchable) [size=4M]
    Memory at d0000000 (64-bit, prefetchable) [size=256M]
    I/O ports at 1800 [size=8]
    [virtual] Expansion ROM at 000c0000 [disabled] [size=128K]
    Capabilities: <access denied>
    Kernel driver in use: i915
    Kernel modules: i915

[15:57:21] alita [~] >> glxinfo -B
name of display: :0
display: :0  screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
    Vendor: Intel Open Source Technology Center (0x8086)
    Device: Mesa DRI Intel(R) Ironlake Mobile  (0x46)
    Version: 18.2.1
    Accelerated: yes
    Video memory: 1536MB
    Unified memory: yes
    Preferred profile: compat (0x2)
    Max core profile version: 0.0
    Max compat profile version: 2.1
    Max GLES1 profile version: 1.1
    Max GLES[23] profile version: 2.0
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) Ironlake Mobile
OpenGL version string: 2.1 Mesa 18.2.1
OpenGL shading language version string: 1.20

OpenGL ES profile version string: OpenGL ES 2.0 Mesa 18.2.1
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 1.0.16

@mirh

This comment has been minimized.

Copy link

@mirh mirh commented Nov 16, 2018

Literally the same gpu posted 4 comments above.

@ghost

This comment has been minimized.

Copy link

@ghost ghost commented Nov 13, 2019

Almost three years later, this is still open... RIP thinkpad

@annacrombie

This comment has been minimized.

Copy link

@annacrombie annacrombie commented Nov 13, 2019

@think88 I've just given up on alacritty. My 2008 thinkpad is still going strong. I use st and performance has never been an issue. When I finally migrate to wayland though... Not to mention it takes about an hour to compile alacritty while st compiles in ~20 seconds

@ghost

This comment has been minimized.

Copy link

@ghost ghost commented Nov 13, 2019

@annacrombie sounds like it's time to revive wterm. I've been looking for a lean pure-wayland terminal for a while, and this seems to be the closest I've found. It does have some bugs though.

@annacrombie

This comment has been minimized.

Copy link

@annacrombie annacrombie commented Nov 13, 2019

@think88 Take a look at https://github.com/michaelforney/st. I haven't had a chance to test it, but its the most promising st fork for wayland I've found.

@NilsIrl

This comment has been minimized.

Copy link

@NilsIrl NilsIrl commented Nov 13, 2019

When I finally migrate to wayland though

yeah I'm pretty sure alacritty is the only terminal emulator with kitty that isn't DE bound and is maintained and has wayland support

@ddevault

This comment has been minimized.

Copy link

@ddevault ddevault commented Dec 10, 2019

Bump. I know that for the alacritty devs, their GPUs support these features, which makes this issue easy to forget about. But a lot of us are on older hardware, ARM boards, etc - and this would really be a boon for us. Please consider looking into this issue.

@chrisduerr

This comment has been minimized.

Copy link
Collaborator

@chrisduerr chrisduerr commented Dec 10, 2019

While I'd love to solve this issue, it's likely one that will take a lot of effort without reaping a ton of benefits.

I don't think I have access to any hardware that doesn't support Alacritty's OpenGL requirements, even my proxmox virtualization on an ancient HP server seems to handle it just fine. So I'd likely have to look into software solutions to try and emulate this, which would likely cause a bunch of work just to try and reproduce this.

The OpenGL code is also something I'm not very familiar with. While I have written some of the shaders and OpenGL code, I have absolutely no clue about the differences between the various OpenGL versions, so after being able to reproduce, it would likely still be a long way out just to identify which of the issues actually causes Alacritty's incompatibility.

In a perfect world, after having identified the problem, we'd just replace one OpenGL call with another and maybe be good to go without much work. But Alacritty uses some OpenGL features which I'd classify as not extremely common, so I think that it would also be possible that this requires a large overhaul of our rendering, plus shaders. Which would of course be a big chunk of work.

Then there's the additional problem of making sure that this doesn't get destroyed in the future. The emoji support for example will require big changes to the rendering and without a system to easily test things on, it's not unlikely that systems with insufficient OpenGL versions will continuously find issues even in our public releases.

Of course none of this is a reason why we wouldn't implement this. These are just the reasons why it would be a lot of work and there are of course a lot of other issues which are less work and provide more benefit to a larger audience of users. I can't even say if Alacritty performs sufficiently well on that old hardware, or if we'd have to write a second non-opengl frontend just because that's faster on ancient GPUs.

Until now, I've mainly been hoping someone else with OpenGL experience would want to pick this up to play around with things, but that hasn't happened in almost three years so I'm not very hopeful that's going to change anytime soon.

@ddevault

This comment has been minimized.

Copy link

@ddevault ddevault commented Dec 11, 2019

I understand. I do have a lot of OpenGL experience, but my plate is incredibly full. I'll add this to my todo list and we'll hope for the best.

@mirh

This comment has been minimized.

Copy link

@mirh mirh commented Dec 11, 2019

  • MESA_GLES_VERSION_OVERRIDE=2.0
  • ...
  • profit?
@ddevault

This comment has been minimized.

Copy link

@ddevault ddevault commented Dec 11, 2019

Nope, alacritty uses GLES 3 features and will have to be patched.

@mirh

This comment has been minimized.

Copy link

@mirh mirh commented Dec 11, 2019

That was my answer to "I don't have old hardware" concerns..

@ddevault

This comment has been minimized.

Copy link

@ddevault ddevault commented Dec 11, 2019

Ah, yes, that would work. I thought you were trying to get past the version check and hope for the best.

@chrisduerr

This comment has been minimized.

Copy link
Collaborator

@chrisduerr chrisduerr commented Dec 11, 2019

Assuming that is an environment variable, it does not prevent Alacritty from launching.

@ddevault

This comment has been minimized.

Copy link

@ddevault ddevault commented Dec 12, 2019

Summary of findings so far:

  • The hardest pill to swallow will be that instanced rendering needs to be refactored out. We need to just draw each cell in a loop on the CPU.
  • VBOs/IBOs have to be removed.
  • Converting the shaders to a lower GLSL version is reasonably easy.
@ddevault

This comment has been minimized.

Copy link

@ddevault ddevault commented Dec 12, 2019

Alternative to drawing every cell in a CPU loop, we could probably arrange the batch as a single triangle strip.

@nixpulvis

This comment has been minimized.

Copy link
Contributor

@nixpulvis nixpulvis commented Dec 12, 2019

After some discussion in IRC, it seems like the best way forward with this issue would be to investigate https://github.com/gfx-rs/gfx, since that advertises OpenGL 2.1 support (probably the right minimum version), and would also give us a path forward to a post OpenGL world.

This is by no means a small task, but could lead to better hardware support overall.

@chrisduerr

This comment has been minimized.

Copy link
Collaborator

@chrisduerr chrisduerr commented Dec 12, 2019

I'd like to add, that there's not an insignificant risk with impacting existing OpenGL 3.2+ systems, which obviously should be completely avoided.

I remember in the past that even minor tweaks to the instance data setup could have noticeable impact, so I'm uncertain if getting rid of that completely is a viable solution or if that will negatively impact performance on existing setups.

@ddevault

This comment has been minimized.

Copy link

@ddevault ddevault commented Dec 13, 2019

A more conservative option would be to fork the renderer entirely, then ship with two renderers - picking the best supported one. Then the GLES2 compatible renderer wouldn't have to impose any limitations on the OpenGL 3.2+ renderer.

@nixpulvis

This comment has been minimized.

Copy link
Contributor

@nixpulvis nixpulvis commented Dec 13, 2019

@ddevault we discussed this a bit as well, and while I may agree for the purposes of prototyping it, it's going to be hard to maintain two separate versions of the renderer. This is why I'm hoping something like gfx could be the solution. If the performance is comparable, and the code isn't too crazy I think it should be.

I suppose I'm assuming that we can't achieve the same level of performance with OpenGL < 3.3 on modern hardware, but I do not have data to support this assumption at this time. Maybe someone else can shed some light on this?

Either way, I think we should start looking into #183 at some point. This issue is good to keep in mind.

@ddevault

This comment has been minimized.

Copy link

@ddevault ddevault commented Dec 13, 2019

I think we can get comparible performance, but only with a total overhaul of the renderer.

@mirh

This comment has been minimized.

Copy link

@mirh mirh commented Dec 13, 2019

Assuming that is an environment variable, it does not prevent Alacritty from launching.

That's because it doesn't affect desktop GL, which I guess alacritty uses by default (or exclusively)?
GLES 2.0 is probably the lowest target one may want to reasonably target though, so testing would find that useful.

@Un1Gfn

This comment has been minimized.

Copy link

@Un1Gfn Un1Gfn commented Feb 19, 2020

Try env LIBGL_ALWAYS_SOFTWARE=1 alacritty
Just don't use hardware acceleration at all 😆
https://www.mesa3d.org/envvars.html

@ddevault

This comment has been minimized.

Copy link

@ddevault ddevault commented Feb 19, 2020

No joke, that's how I use alacritty on some machines.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
You can’t perform that action at this time.