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.
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.
@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.
@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
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
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!
@jwilm Any hints of what would need to be done to support GLSL 1.20, say?
@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).
Same issue in vmware virtual machines on ubuntu 16.10.
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.
Don't forget about the ARM perspective :)
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.
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.
(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
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.
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
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)
What's the earliest Intel GPU that is supported by Alacritty?
@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.
FWIW, it seems working on an Ivy Bridge laptop.
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
Literally the same gpu posted 4 comments above.
I'm not completely sure it's worth it. I have an old 2011 MacBook Air with an Intel HD 3000 supporting OpenGL 3.3 according to to this, and alacritty is unusably slow.
This video shows how it can render at usable speeds with a tiny window, and quickly degrades when you run it near full screen. This is just holding j in vim and you can see that the slowness is there without scrolling the whole screen. It's every keypress.
This might be a regression - I remember it working okay-ish with a build from maybe 6 months ago. Plus, ":syntax off | colorscheme default" brings it back to roughly that okay-ish performance level.
Edit: relevant glxinfo parts
OpenGL vendor string: Intel Inc.
OpenGL renderer string: Intel HD Graphics 3000 OpenGL Engine
OpenGL version string: 2.1 INTEL-10.4.14
OpenGL shading language version string: 1.20
OpenGL extensions:
GL_APPLE_aux_depth_stencil, GL_APPLE_client_storage,
GL_APPLE_element_array, GL_APPLE_fence, GL_APPLE_float_pixels,
GL_APPLE_flush_buffer_range, GL_APPLE_flush_render,
GL_APPLE_object_purgeable, GL_APPLE_packed_pixels, GL_APPLE_pixel_buffer,
GL_APPLE_rgb_422, GL_APPLE_row_bytes, GL_APPLE_specular_vector,
GL_APPLE_texture_range, GL_APPLE_transform_hint,
GL_APPLE_vertex_array_object, GL_APPLE_vertex_array_range,
GL_APPLE_vertex_point_size, GL_APPLE_vertex_program_evaluators,
GL_APPLE_ycbcr_422, GL_ARB_color_buffer_float, GL_ARB_depth_buffer_float,
GL_ARB_depth_clamp, GL_ARB_depth_texture, GL_ARB_draw_buffers,
GL_ARB_draw_elements_base_vertex, GL_ARB_draw_instanced,
GL_ARB_fragment_program, GL_ARB_fragment_program_shadow,
GL_ARB_fragment_shader, GL_ARB_framebuffer_object,
GL_ARB_framebuffer_sRGB, GL_ARB_half_float_pixel,
GL_ARB_half_float_vertex, GL_ARB_instanced_arrays, GL_ARB_multisample,
GL_ARB_multitexture, GL_ARB_occlusion_query, GL_ARB_pixel_buffer_object,
GL_ARB_point_parameters, GL_ARB_point_sprite, GL_ARB_provoking_vertex,
GL_ARB_seamless_cube_map, GL_ARB_shader_objects,
GL_ARB_shader_texture_lod, GL_ARB_shading_language_100, GL_ARB_shadow,
GL_ARB_sync, GL_ARB_texture_border_clamp, GL_ARB_texture_compression,
GL_ARB_texture_compression_rgtc, GL_ARB_texture_cube_map,
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_mirrored_repeat,
GL_ARB_texture_non_power_of_two, GL_ARB_texture_rectangle,
GL_ARB_texture_rg, GL_ARB_transpose_matrix, GL_ARB_vertex_array_bgra,
GL_ARB_vertex_blend, GL_ARB_vertex_buffer_object, GL_ARB_vertex_program,
GL_ARB_vertex_shader, GL_ARB_window_pos, GL_ATI_separate_stencil,
GL_ATI_texture_env_combine3, GL_ATI_texture_float,
GL_ATI_texture_mirror_once, 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_clip_volume_hint,
GL_EXT_debug_label, GL_EXT_debug_marker, GL_EXT_draw_buffers2,
GL_EXT_draw_range_elements, GL_EXT_fog_coord, GL_EXT_framebuffer_blit,
GL_EXT_framebuffer_multisample, GL_EXT_framebuffer_object,
GL_EXT_framebuffer_sRGB, GL_EXT_geometry_shader4,
GL_EXT_gpu_program_parameters, GL_EXT_gpu_shader4,
GL_EXT_multi_draw_arrays, GL_EXT_packed_depth_stencil,
GL_EXT_packed_float, GL_EXT_provoking_vertex, GL_EXT_rescale_normal,
GL_EXT_secondary_color, GL_EXT_separate_specular_color,
GL_EXT_shadow_funcs, GL_EXT_stencil_two_side, GL_EXT_stencil_wrap,
GL_EXT_texture_array, GL_EXT_texture_compression_dxt1,
GL_EXT_texture_compression_s3tc, GL_EXT_texture_env_add,
GL_EXT_texture_filter_anisotropic, GL_EXT_texture_integer,
GL_EXT_texture_lod_bias, GL_EXT_texture_rectangle, GL_EXT_texture_sRGB,
GL_EXT_texture_sRGB_decode, GL_EXT_texture_shared_exponent,
GL_EXT_timer_query, GL_EXT_transform_feedback, GL_EXT_vertex_array_bgra,
GL_IBM_rasterpos_clip, GL_NV_blend_square, GL_NV_conditional_render,
GL_NV_depth_clamp, GL_NV_fog_distance, GL_NV_light_max_exponent,
GL_NV_texgen_reflection, GL_NV_texture_barrier, GL_SGIS_generate_mipmap,
GL_SGIS_texture_edge_clamp, GL_SGIS_texture_lo
OSX is bugged to hell with opengl. There isn't much to say.
If you think it would help, I could bisect on master and find a commit that made it worse, but I could also just throw the laptop off a cliff and we would all be better off.
You could also install linux or even windows and get >2x performance effortlessly.
I'm not a dev then, so I'm not sure how much they would care of others bugs.
Same problem here. I wish alacritty would support old machines :(
While it would be nice to support older machines, I don't think there's broad interest from most of the folks contributing today to invest there.
It will likely take someone who cares a lot about this feature to implement it themselves.
If I recall correctly, this was the issue that prevented me from using Alacritty on a Raspberry Pi I own. IDK if things are different now, or with the newer Pis, but this may be a motivating platform.
I know bumping this is kinda useless but I'd just like to express my desire for older GL and GLES support as well. I'd like to have some smooth terminal for my Raspberry Pi 4 :smiley:
Just because the raspberry pi has been mentioned here multiple times, I wouldn't guarantee that its tiny GPU can keep up with what Alacritty expects to have to redraw at a sufficient framerate. So even if we do support this, it might be possible that performance isn't ideal.
I think support for earlier OpenGL and GLSL versions should be tracked in #128 though, so all further comments on that are likely better posted on this more specific issue.
As requested in https://github.com/jwilm/alacritty/issues/2773...
There has been a long standing issue (#128) about supporting lower OpenGL versions and I think it might be very beneficial to support at least a few more years of old GPUs
Great! For the record it isn't just about expanding in the direction of "oldness" but also in the direction of "mobileness/embeddedness". Non-desktop GPUs generally aim for OpenGL ES and have no aspirations of supporting all of OpenGL Core.
The commit which introduced this (eac9747) doesn't shed a lot of light on things
Thanks for pointing that out, though. Is @jwilm no longer following alacritty development?
I'm not very familiar with OpenGL myself
Me neither, although I have experience with extremely-low-level non-graphics GPU programming, but that's not always helpful graphics applications that can only talk to the GPU through a large and complicated OpenGL layer.
I'm not very familiar with OpenGL myself and haven't written this code, but it seems like this separate alpha blend mask is necessary for the OpenGL blend function extension in use by Alacritty.
If you take a look at c70acba
Thanks for pointing to that, really useful to see what the shader looked like before it used Dual source blending -- that's the feature that I had to remove from the fragment shader in order to make it work on OpenGL ES. It has only been in OpenGL core since 3.3 and has never been part of OpenGL ES; not clear if it ever will be.
Basically it looks like the author of c70acba previously had a hand-written shader and found a way to make one of the advanced blending modes in OpenGL Core 3.3+ do the same thing his hand-written shader was doing. So the shader went from being 7 lines of code to 2 lines of code at the expense of only working on desktop GPUs.
Would it be a maintainability nightmare to have two sets of shaders? If not, I can prepare a patch which will basically amount to restoring the old shader within an "if OPENGL_ES { ... }" block.
Is @jwilm no longer following alacritty development?
At the moment only very, very intermittently. So I wouldn't expect any response.
Would it be a maintainability nightmare to have two sets of shaders? If not, I can prepare a patch which will basically amount to restoring the old shader within an "if OPENGL_ES { ... }" block.
I think multiple shaders would significantly impact maintainability especially if one of them is rarely ever used. If you've already had trouble understanding what our two shaders were used for, having three isn't going to make anything better.
Restoring the old shader would also undo all the benefits we gained from it, which were not only the removal of a few lines of code. So I'm unsure if we want to make a gimped version of Alacritty available for older platforms.
Almost three years later, this is still open... RIP thinkpad
@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
@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.
@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.
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
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.
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.
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.
MESA_GLES_VERSION_OVERRIDE=2.0Nope, alacritty uses GLES 3 features and will have to be patched.
That was my answer to "I don't have old hardware" concerns..
Ah, yes, that would work. I thought you were trying to get past the version check and hope for the best.
Assuming that is an environment variable, it does not prevent Alacritty from launching.
Summary of findings so far:
Alternative to drawing every cell in a CPU loop, we could probably arrange the batch as a single triangle strip.
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.
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.
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.
@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.
I think we can get comparible performance, but only with a total overhaul of the renderer.
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.
Try env LIBGL_ALWAYS_SOFTWARE=1 alacritty
Just don't use hardware acceleration at all :laughing:
https://www.mesa3d.org/envvars.html
No joke, that's how I use alacritty on some machines.
Looks like there's some hope for users of ARM Midgard (and newer) GPUs with the upstream Panfrost Mesa driver. They just experimentally opened debug access to GLES 3.0 spec on Panfrost. GLES 3.0 uses GLES shader level 3.00 which is based on GLSL 3.30!:
https://www.collabora.com/news-and-blog/blog/2020/02/27/experimental-panfrost-gles-3-support-has-landed/
I immediately tried to run alacritty after compiling and setting the requisite environment variable to expose the GLES 3.0 bits and alacritty crashed. No doubt the crash is caused by the panfrost driver since it's still experimental and hasn't got all the bugs worked out yet (they also may still be implementing core features.) But when their ES3.0 is ready for primetime, we may have low power boards capable of running alacritty!
For anyone interested, I threw together a quick port to GLES2. It's working okay on my X200. Branch is here: cyclopsian/alacritty#gles2.
@cyclopsian Thanks a lot for your work. Your fork runs on the RPi 4, in sway, as smoothly as konsole (my second-favorite terminal because it feels more responsive than gnome/lx/xfce-terminals). Not quite full framerate, but much better than all my other options. This at least proves that support for low-end devices would benefit some users (I don't want to use konsole because it's slower to start up and needs qt). Also I doubt the Raspberry Pi 4's GPU drivers are fully optimized yet, so the future for alacritty on the Pi is looking good.
@gustafla The Raspberry Pi 4 actually supports GLES3 so it's not necessary to use the GLES2 branch for that. The only thing that needs to be removed there is the multisampling. I have an older GLES3 branch that was quickly hacked to work, but I never bothered fixing the colored emojis for it: cyclopsian/alacritty#gles3.
FYI colored emojis rendering is also broken on master. (you need dark backgrounds for them to look better).
I just built and tested this on my i.MX8M machine that has a GC7000 GPU driven by etnaviv. It can do only GLES2. And it works fine so far! Many thanks!
Thanks for your work @cyclopsian. Even though the ideal way to fix this as far as I'm concerned would probably be to make use of gfx-rs, it seems like your patch is fairly straight-forward.
If this helps with compatibility, I'm curious if there's a way we could make use of this to support older platforms on our master.
It would be interesting to see how performance of this compares to Alacritty's renderer on machines that support GLSL 3.30+. Would be nice to have feedback for different platforms too, since OpenGL support is very different between platforms.
If someone is interested in testing this, it should be compared to HEAD~1 on that branch, since master might have changed performance in other ways.
Can you be specific (in terms of shas) as to which commits should be compared for performance differences?
The latest version of cyclopsian's branch (https://github.com/cyclopsian/alacritty/commit/2e15b476ea1125c6fa6c0a694e8a911079577da7) should be compared to its parent (https://github.com/cyclopsian/alacritty/commit/d20051b5e5a8ee3c8dcd75a87d375ac7611a9d2d).
I've run it on my machine and I haven't been able to notice any utterly devastating performance regressions, though I would need to reboot to get reliable performance results which I unfortunately cannot do today.
But I think feedback from multiple parties with different backend and GPUs would be useful anyways, especially since platforms like macOS have shown in the past that even relatively minor tweaks to the renderer could lead to major performance fluctuations for some.
My biggest concerns are probably the additional InstanceData fields, since that has shown in the past to be very size sensitive.
Also in case someone interested in testing isn't familiar with benchmarking Alacritty, it should be documented in the https://github.com/alacritty/vtebench repository.
I think the only relevant benchmark here is alt-screen-random-write, since the others mostly stress things unrelated to rendering itself.
One more note, is also to compare render_timer during benchmarks, since parser shouldn't slow down much if you start drawing slower, but the actual rendering times could become slower. But looking in render_timer seems like a nice idea here in general.
Yeah that's a great point, on fast platforms that do not struggle with rendering at all, the render timer is probably more useful than just timing the command. Though I'd like to know about both since platforms that do have a ton of headroom for rendering anyways might be able to take a bit of a hit without any actual performance impact.
For a realistic shot at merging my branch, the changes should be put behind runtime conditionals to test for GL version and extensions. The way it is now (GLES2 with no extensions) is only good for achieving maximum compatibility.
Yeah that sounds about like what I'd expect.
Have you actually tested which of your changes affect performance most @cyclopsian?
Also would you be willing to look into this? Even though exploring gfx-rs is probably the most beneficial solution long-term, I'd be fine with exploring simpler solutions.
I haven't benchmarked, this was just a hack to get it to work on my X200 because I was impatient :smiley: It's not even ideal for this hardware because the supports the necessary extensions in GL 2.1. Maybe I can look more into this later but it's working for me now just to get the program running at least.
I don't know the full implications of gfx-rs on performance with older hardware, but ~it does appear to have some of the necessary checks, such as here: src/backend/gl/src/queue.rs#L384.~ Edit: That check errors out when instancing isn't supported, so either way an additional render path will need to be present in alacritty if older hardware is intended to be supported.
For what it's worth: @cyclopsian's gles3 branch already runs with the latest panfrost, via PAN_MESA_DEBUG=gles3 alacritty. Haven't tested, but it feels snappy. Startup is about 80ms slower than termite, however. This is with a MALI T-860, pinebook pro.
I've tested @cyclopsian gles2 branch on my system with AMD Rx 570, and it's 2x slower on average in terms of rendering performance: 4ms(gles2) vs 2ms(master) on ASRW benchmark - so it's a huge hit to our rendering performance. Anyway, I feel like supporting minimum version of OpenGL that gfx-rs supports(it should be OpenGL 2.1 AFAICS) could make more sense for us, since we should move to this crate either directly or to wgpu at some point.
Just wanted to add that the GLES2 impl works great on pinebook (aarch64). It may be slower than gles3/later opengl but it's seemingly infinitely faster than CPU solutions on arm architecture. I didn't try the gles3 impl because I haven't tried to build a custom kernel yet.
I'm using the GLES2 alacritty as my main terminal for now.
@gleachkr How did you get that 80ms figure? Just a guess but it could be the texture atlas that is causing the slow startup. It could be sped up by caching that to disk once it's built. No way to know for sure though without more precise benchmarking.
@cyclopsian Nothing fancy, just time alacritty -e exit vs time termite -e exit. Sorry if this is misleading, I've switched over to your gles3 branch and I'm enjoying it quite a bit. Checking now, it's about 270-300ms for termite, 300-350ms for alacritty.
Noticed that folks have gotten some working patches -- any plan to merge into master? Would love to get this working on pinebook.
I'm using the patched alacritty with pinebook pro and it works great! Much more snappy than any of the CPU based rendered terminal emulators. Would be great to get it merged. I think that there are challenges integrating the patch, making sure that newer GL versions are used if available, with the patch as a fallback.
Those patches are both broken (text is being blended with 'wallpaper'/background, not all things are supported, that our rendering does now) and slow (2-3x slower than master). So there's no way such things could be upstream without proper rework and perf fixes.
I would generally recommend prioritizing workitude over performance. Doesn't matter how fast it goes if it just drives straight into a wall on startup. Merge the patch which improves workitude, then work on incrementally improving the performance again.
FYI I don't think anyone actually cares about alacritty's performance above a certain threshold, it's just rendering text. So long as it can meet the monitor's refresh rate it's doing a good job, and hell, even well below it, it's fine. I'm here becasue it's lightweight, easy to configure, and has the features I want.
Doesn't matter how fast it goes if it just drives straight into a wall on startup.
Yeah, but if you merge poor solutions to a problems into your codebase it's very hard to get rid of them. It's true in general, not only to that particular problem, that's likely why it takes a lot of time to implement certain things in alacritty.
You can always maintain your own branches and rebase them from time to time.
Merge the patch which improves workitude, then work on incrementally improving the performance again.
Yeah, but they doesn't work as we know.
FYI I don't think anyone actually cares about alacritty's performance above a certain threshold
So long as it can meet the monitor's refresh rate it's doing a good job, and hell, even well below it, it's fine.
Yeah, and those patches will break it. Like I'm +- fine if our rendering is below 7ms. However those patches make my laptop render in ~20ms, instead of 5-6ms, which is hard to use tbqh, so they can't even make it in 16ms anymore.
Supporting older version of OpenGL is something that we'd like to have, but we'd like to have proper solution that is also maintainable and doesn't break current certain users' experience, not halfly working workarounds.
Yeah, but they doesn't work as we know.
Yeah, agreed, they need fixin, but my point was that if performance were the only problem then that should be sufficient unless it's egregious.
Yeah, and those patches will break it. Like I'm +- fine if our rendering is below 7ms. However those patches make my laptop render in ~20ms, instead of 5-6ms, which is hard to use tbqh, so they can't even make it in 16ms anymore.
I don't want to be That Guy and I know this is Your Thing, but these performance numbers are still pretty good and entirely acceptable for almost everyone. To the point where you may be suffering from the placebo effect. It's a terminal emulator.
Even so, it would be good to have two render paths to take best advantage of the hardware capabilities as possible. But be aware that the status quo freaking sucks right now. Half of my computers can't use alacritty at all without LIBGL_ALWAYS_SOFTWARE=1, and if you think your laptop performance is bad then you should try swrast on for size and see how that feels.
A condition of merging the patch in any form would be that it did not regress performance for those who can use the newer GL.
I'd love to help get the patch over the line, but I don't have the bandwidth RN. I'll revisit if this issue is still open when I do.
Even so, it would be good to have two render paths to take best advantage of the hardware capabilities as possible. But be aware that the status quo freaking sucks right now.
The current problem is that barely no one bothered to write proper solutions to that problem (I don't even have hardware with OpenGL less than 3.3 and never had). It's not true that we reject all the patches that are being send to us to that problem due to their perf problems, it's more like we've got ~zero patches to solve that problem. And the only patch right now is the one @cyclopsian posted here, which wasn't send to us directly to start/make review of and doesn't work at all, since it was purely to make thing start and work on one particular setup.
So long as it can meet the monitor's refresh rate it's doing a good job
Fyi I haven't found a single other terminal emulator that can match my monitor's refresh rate of 144Hz at whatever I throw at it. Sure, 144Hz might be a bit much, but most can't even get to 60 with reasonable input (last I tested throughput, Kitty sat at ~40 for me for example).
Even if these patches were working 100%, there is no way I would merge them if the performance was that bad. A performance regression of that magnitude is far more than just a slight performance hit, it's like directly removing a feature. So the performance regression alone is a reason why these patches aren't working properly.
Really, this is mostly like supporting another platform. Currently we do not have support for previous OpenGL versions at all and that is intentional. There is no desire to ever support these if they regress master that badly. Adding them as a new platform is just something we're interested in investigating if it does not cause too many troubles.
Saying that adding a new platform is more important than keeping the old platforms working is a bit inflammatory and I don't think that approach would get us anywhere. Alacritty isn't broken, it just doesn't support these platforms by design.
It won't even be an issue for pinebooks for ever, since gles3 drivers are in development. It would however be a nice project for someone who wanted to learn more about GPU development.
I just want to note that I have successfully compiled this branch based on cyclopsian's patch on my Pinebook Pro: https://github.com/nuumio/alacritty/tree/cyclopsian-gles2-nuumio
It runs great, at least as fast as Konsole when both are using gles2 to my untrained eye, i.e. not enough latency for me to notice. I'm not familiar enough with benchmarking to scientifically measure the difference. I'm not necessarily saying that you should support this platform, I too am eagerly looking forward to gles3 support.
I just don't quite understand what people mean when they say it doesn't work, it looks like it works to me. This patch made the difference between me using alacritty or not, and it helps with running e.g. sway or other wayland desktop environments that like alacritty for the terminal emulator.
Just fyi speaking of rendering, so folks stop asking 'what is not working'.
left is gles2 branch, right is master. You can see that left is pink and doesn't render certain things.

So, I'm honestly a bit stuck on what to do here. The GLES 2 branch isn't mergeable as-is because it forces everyone to use GLES 2, but we still can't use master on hardware that doesn't support GLES 3.
Maybe the right step here is to start by updating the code to detect the what GLES version is available ahead of time and then use that to select the proper renderer? And maybe some refactoring work to start that working. An added bonus of this is we could use similar code in the future to implement a Vulkan version while not also breaking folks who don't have Vulkan-aware drivers.
Not 100% sure if I'll have the time to help out but would like to at least try to start the ball rolling for this. Although in the case of the Pinebook Pro eventually we'll have GLES 3 and Vulkan support, I think that the best plan would be to support GLES 2 as there will always be hardware that requires it IMHO.
Yes I think the solution would be to move the gles2 somewhere separate, and have the code fall back to using it if a more modern api isn't available. And also fix the visual artifacts above.
As of a recent series of merges to mesa master, alacritty is now working for me on the panfrost driver! This is on a Pinebook Pro, with the Mali T860 MP4 GPU. I've been using it all day, and it seems smooth and stable. I'm running it in sway (wayland), in case that's relevant.
Setting PAN_MESA_DEBUG=gl3 is necessary, as some of the GL 3.3 functionality is not yet implemented. Note that PAN_MESA_DEBUG=gles3,gl3 is unnecessary, as the gles3-flagged behavior has now been enabled by default in master.
(Apologies if this is off-topic, but it seemed like a major recent driver of this request was ARM GPUs.)
Hi, so i found this thread because I see the same error that the op had. I run Arch linux. Does anyone else still have this issue? The workarounds mentioned in the thread did not help me...
Yes. I cannot use it on Centos 7 since the new version of nvidia drivers.
None of the workaround worked for me neither.
Wanted to add that I'm getting this on FreeBSD 12.1 when I have i915kms loaded and the Intel Xorg video driver package installed. Thinkpad T400.
Alacritty encountered an unrecoverable error:
There was an error initializing the shaders: Failed compiling shader at /usr/ports/x11/alacritty/work/alacritty-0.4.3/alacritty/../res/text.v.glsl: 0:14(10): error: GLSL 3.30 is not supported. Supported versions are: 1.10, and 1.20
@teran-mckinney seems like your GPU (Intel GMA 4500MHD) doesn't support OpenGL 3.x. Unless I've looked up the wrong parts.
I think you are right. I guess I thought it was the other way around, that makes more sense. I see Intel GM45 in dmesg. So does Alacritty only supports newer shaders then.
FWIW I've been working on a new renderer (which ended up being an almost complete rewrite), that makes supporting OpenGL ES2.0 w/ GLSL ES1.00 rather straightforward. There will be a PR in a few days. (it's also up to 20x faster in some conditions, and is never slower).
Wip gles3 branch https://github.com/alacritty/alacritty/pull/4373
Most helpful comment
FWIW I've been working on a new renderer (which ended up being an almost complete rewrite), that makes supporting OpenGL ES2.0 w/ GLSL ES1.00 rather straightforward. There will be a PR in a few days. (it's also up to 20x faster in some conditions, and is never slower).