Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

[question/bug] OpenGL 2.1 support? #18191

Closed
k8ieone opened this issue May 26, 2020 · 20 comments
Closed

[question/bug] OpenGL 2.1 support? #18191

k8ieone opened this issue May 26, 2020 · 20 comments

Comments

@k8ieone
Copy link

k8ieone commented May 26, 2020

System Information

  • Operating System: Arch Linux
  • OpenRA Version: release-20200503
  • OpenRA Mod: any
  • Source: Package from Arch repo
  • Mono: 6.4.0

Exception log

OpenRA engine version release-20200503
Date: 2020-05-26 07:49:44Z
Operating System: Linux (Unix 5.6.14.1)
Runtime Version: Mono 6.4.0 (makepkg/fe64a4765e6 Sat 16 May 2020 10:04:29 AM UTC) CLR 4.0.30319.42000
Exception of type `System.InvalidOperationException`: Failed to initialize platform-integration library. Check graphics.log for details.
  at OpenRA.Game.Initialize (OpenRA.Arguments args) [0x00162] in <1f05605ada13413abc2b76cd776f41e0>:0 
  at OpenRA.Game.InitializeAndRun (System.String[] args) [0x00006] in <1f05605ada13413abc2b76cd776f41e0>:0 
  at OpenRA.Program.Main (System.String[] args) [0x00044] in <1f05605ada13413abc2b76cd776f41e0>:0

graphics.log

System.InvalidOperationException: No supported OpenGL profiles were found.
  at OpenRA.Platforms.Default.Sdl2PlatformWindow..ctor (OpenRA.Primitives.Size requestEffectiveWindowSize, OpenRA.WindowMode windowMode, System.Single scaleModifier, System.Int32 batchSize, System.Int32 videoDisplay, OpenRA.GLProfile requestProfile) [0x000c3] in <bfecb5b1fabb47b8a5a5eac40e4dce61>:0 
  at OpenRA.Platforms.Default.DefaultPlatform.CreateWindow (OpenRA.Primitives.Size size, OpenRA.WindowMode windowMode, System.Single scaleModifier, System.Int32 batchSize, System.Int32 videoDisplay, OpenRA.GLProfile profile) [0x00000] in <bfecb5b1fabb47b8a5a5eac40e4dce61>:0 
  at OpenRA.Renderer..ctor (OpenRA.IPlatform platform, OpenRA.GraphicSettings graphicSettings) [0x00057] in <1f05605ada13413abc2b76cd776f41e0>:0 
  at OpenRA.Game.Initialize (OpenRA.Arguments args) [0x00204] in <1f05605ada13413abc2b76cd776f41e0>:0 
System.InvalidOperationException: No supported OpenGL profiles were found.
  at OpenRA.Platforms.Default.Sdl2PlatformWindow..ctor (OpenRA.Primitives.Size requestEffectiveWindowSize, OpenRA.WindowMode windowMode, System.Single scaleModifier, System.Int32 batchSize, System.Int32 videoDisplay, OpenRA.GLProfile requestProfile) [0x000c3] in <bfecb5b1fabb47b8a5a5eac40e4dce61>:0 
  at OpenRA.Platforms.Default.DefaultPlatform.CreateWindow (OpenRA.Primitives.Size size, OpenRA.WindowMode windowMode, System.Single scaleModifier, System.Int32 batchSize, System.Int32 videoDisplay, OpenRA.GLProfile profile) [0x00000] in <bfecb5b1fabb47b8a5a5eac40e4dce61>:0 
  at OpenRA.Renderer..ctor (OpenRA.IPlatform platform, OpenRA.GraphicSettings graphicSettings) [0x00057] in <1f05605ada13413abc2b76cd776f41e0>:0 
  at OpenRA.Game.Initialize (OpenRA.Arguments args) [0x00204] in <1f05605ada13413abc2b76cd776f41e0>:0

Additional information

I've searched through the issues and PRs and from what I understand, this release changed the default renderer to OpenGL 3.0. I also found lots of PRs that said OpenGL 2.1 is replaced by 3.0. #17969 says that OpenGL 2.1 will still work (I assume the used OpenGL version is selected with the OpenGL profile setting under video settings). Yet even if I edit config.yaml by adding GLProfile: Legacy to the Graphics: section, the game still refuses to launch. I'm also attaching the output of glxinfo. The newest OGL supported by my GPU is 2.1. Previous release worked fine. If 2.1 is still supported with the Legacy OGL profile I think it's a bug in OGL version detection.

I would suggest adding something along the lines of minimum requirements. I know it's difficult to estimate requirements of a game that still has such big changes from release to release but at least tell us what OGL version is required. If there are min. requirements somewhere, I couldn't find them.

glxinfo

name of display: :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_no_error, 
    GLX_ARB_create_context_profile, 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_libglvnd, GLX_EXT_no_config_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_make_current_read, 
    GLX_SGI_swap_control
client glx vendor string: Mesa Project and SGI
client glx version string: 1.4
client glx extensions:
    GLX_ARB_context_flush_control, GLX_ARB_create_context, 
    GLX_ARB_create_context_no_error, 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_no_error, 
    GLX_ARB_create_context_profile, 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_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 (ILK) (0x46)
    Version: 20.0.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) HD Graphics (ILK)
OpenGL version string: 2.1 Mesa 20.0.7
OpenGL shading language version string: 1.20
OpenGL extensions:
    GL_3DFX_texture_compression_FXT1, GL_AMD_seamless_cubemap_per_texture, 
    GL_AMD_shader_trinary_minmax, GL_ANGLE_texture_compression_dxt3, 
    GL_ANGLE_texture_compression_dxt5, GL_APPLE_object_purgeable, 
    GL_APPLE_packed_pixels, GL_ARB_ES2_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_copy_buffer, 
    GL_ARB_copy_image, GL_ARB_debug_output, 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_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_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_parallel_shader_compile, 
    GL_ARB_pixel_buffer_object, GL_ARB_point_parameters, GL_ARB_point_sprite, 
    GL_ARB_polygon_offset_clamp, GL_ARB_program_interface_query, 
    GL_ARB_provoking_vertex, GL_ARB_robustness, GL_ARB_sampler_objects, 
    GL_ARB_seamless_cube_map, GL_ARB_seamless_cubemap_per_texture, 
    GL_ARB_separate_shader_objects, GL_ARB_shader_bit_encoding, 
    GL_ARB_shader_draw_parameters, GL_ARB_shader_group_vote, 
    GL_ARB_shader_objects, GL_ARB_shader_texture_lod, 
    GL_ARB_shading_language_100, GL_ARB_shading_language_include, 
    GL_ARB_shading_language_packing, GL_ARB_shadow, GL_ARB_sync, 
    GL_ARB_texture_barrier, 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_filter_anisotropic, 
    GL_ARB_texture_float, GL_ARB_texture_mirror_clamp_to_edge, 
    GL_ARB_texture_mirrored_repeat, GL_ARB_texture_non_power_of_two, 
    GL_ARB_texture_query_lod, GL_ARB_texture_rectangle, GL_ARB_texture_rg, 
    GL_ARB_texture_rgb10_a2ui, GL_ARB_texture_storage, GL_ARB_texture_swizzle, 
    GL_ARB_transpose_matrix, 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_EGL_image_storage, GL_EXT_EGL_sync, 
    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_demote_to_helper_invocation, 
    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_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_clamp, GL_EXT_provoking_vertex, 
    GL_EXT_rescale_normal, GL_EXT_secondary_color, 
    GL_EXT_separate_specular_color, 
    GL_EXT_shader_framebuffer_fetch_non_coherent, 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_R8, GL_EXT_texture_sRGB_decode, 
    GL_EXT_texture_shared_exponent, GL_EXT_texture_snorm, 
    GL_EXT_texture_swizzle, GL_EXT_timer_query, 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_context_flush_control, GL_KHR_debug, GL_KHR_no_error, 
    GL_KHR_parallel_shader_compile, GL_KHR_robustness, GL_MESA_pack_invert, 
    GL_MESA_texture_signed_rgba, GL_MESA_window_pos, GL_NV_blend_square, 
    GL_NV_conditional_render, GL_NV_depth_clamp, GL_NV_fog_distance, 
    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 2.0 Mesa 20.0.7
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 1.0.16
OpenGL ES profile extensions:
    GL_ANGLE_texture_compression_dxt3, GL_ANGLE_texture_compression_dxt5, 
    GL_APPLE_texture_max_level, GL_EXT_blend_minmax, GL_EXT_clip_control, 
    GL_EXT_compressed_ETC1_RGB8_sub_texture, 
    GL_EXT_demote_to_helper_invocation, GL_EXT_depth_clamp, 
    GL_EXT_discard_framebuffer, GL_EXT_draw_buffers, 
    GL_EXT_draw_elements_base_vertex, GL_EXT_frag_depth, 
    GL_EXT_map_buffer_range, GL_EXT_multi_draw_arrays, 
    GL_EXT_occlusion_query_boolean, GL_EXT_polygon_offset_clamp, 
    GL_EXT_read_format_bgra, GL_EXT_robustness, 
    GL_EXT_separate_shader_objects, 
    GL_EXT_shader_framebuffer_fetch_non_coherent, GL_EXT_texture_border_clamp, 
    GL_EXT_texture_compression_dxt1, GL_EXT_texture_compression_s3tc, 
    GL_EXT_texture_compression_s3tc_srgb, GL_EXT_texture_filter_anisotropic, 
    GL_EXT_texture_format_BGRA8888, GL_EXT_texture_rg, 
    GL_EXT_texture_type_2_10_10_10_REV, GL_EXT_unpack_subimage, 
    GL_KHR_blend_equation_advanced, GL_KHR_context_flush_control, 
    GL_KHR_debug, GL_KHR_no_error, GL_KHR_parallel_shader_compile, 
    GL_KHR_robustness, GL_NV_conditional_render, 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_depth24, GL_OES_depth_texture, 
    GL_OES_draw_elements_base_vertex, GL_OES_element_index_uint, 
    GL_OES_fbo_render_mipmap, GL_OES_get_program_binary, GL_OES_mapbuffer, 
    GL_OES_packed_depth_stencil, GL_OES_required_internalformat, 
    GL_OES_rgb8_rgba8, GL_OES_standard_derivatives, GL_OES_stencil8, 
    GL_OES_surfaceless_context, GL_OES_texture_3D, 
    GL_OES_texture_border_clamp, 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_vertex_array_object, GL_OES_vertex_half_float

58 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
0x0a0 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0  0  0  0  0  0  0  0 0 None
0x0a1 24 tc  0  32  0 r  . .   8  8  8  8 .  .  0  0  0  0  0  0  0  0 0 None
0x0a2 24 tc  0  32  0 r  . .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
0x0a3 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0  0  0  0  0  0  0  0 0 None
0x0a4 24 tc  0  24  0 r  . .   8  8  8  0 .  .  0  0  0  0  0  0  0  0 0 None
0x0a5 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0 24  8  0  0  0  0  0 0 None
0x0a6 24 tc  0  24  0 r  . .   8  8  8  0 .  .  0 24  8  0  0  0  0  0 0 None
0x0a7 24 tc  0  32  0 r  y .   8  8  8  8 .  s  0  0  0  0  0  0  0  0 0 None
0x0a8 24 tc  0  32  0 r  . .   8  8  8  8 .  s  0  0  0  0  0  0  0  0 0 None
0x0a9 24 tc  0  32  0 r  y .   8  8  8  8 .  s  0 24  8  0  0  0  0  0 0 None
0x0aa 24 tc  0  32  0 r  . .   8  8  8  8 .  s  0 24  8  0  0  0  0  0 0 None
0x0ab 24 tc  0  24  0 r  y .   8  8  8  0 .  s  0  0  0  0  0  0  0  0 0 None
0x0ac 24 tc  0  24  0 r  . .   8  8  8  0 .  s  0  0  0  0  0  0  0  0 0 None
0x0ad 24 tc  0  24  0 r  y .   8  8  8  0 .  s  0 24  8  0  0  0  0  0 0 None
0x0ae 24 tc  0  24  0 r  . .   8  8  8  0 .  s  0 24  8  0  0  0  0  0 0 None
0x0af 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
0x0b0 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8 16 16 16 16  0 0 Slow
0x0b1 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0 24  8  0  0  0  0  0 0 None
0x0b2 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0 24  8 16 16 16  0  0 0 Slow
0x0b3 24 tc  0  32  0 r  y .   8  8  8  8 .  s  0 24  8  0  0  0  0  0 0 None
0x0b4 24 tc  0  32  0 r  y .   8  8  8  8 .  s  0 24  8 16 16 16 16  0 0 Slow
0x0b5 24 tc  0  24  0 r  y .   8  8  8  0 .  s  0 24  8  0  0  0  0  0 0 None
0x0b6 24 tc  0  24  0 r  y .   8  8  8  0 .  s  0 24  8 16 16 16  0  0 0 Slow
0x0b7 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0  0  0  0  0  0  0  0 0 None
0x0b8 24 dc  0  32  0 r  . .   8  8  8  8 .  .  0  0  0  0  0  0  0  0 0 None
0x0b9 24 dc  0  32  0 r  . .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
0x0ba 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0  0  0  0  0  0  0  0 0 None
0x0bb 24 dc  0  24  0 r  . .   8  8  8  0 .  .  0  0  0  0  0  0  0  0 0 None
0x0bc 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0 24  8  0  0  0  0  0 0 None
0x0bd 24 dc  0  24  0 r  . .   8  8  8  0 .  .  0 24  8  0  0  0  0  0 0 None
0x0be 24 dc  0  32  0 r  y .   8  8  8  8 .  s  0  0  0  0  0  0  0  0 0 None
0x0bf 24 dc  0  32  0 r  . .   8  8  8  8 .  s  0  0  0  0  0  0  0  0 0 None
0x0c0 24 dc  0  32  0 r  y .   8  8  8  8 .  s  0 24  8  0  0  0  0  0 0 None
0x0c1 24 dc  0  32  0 r  . .   8  8  8  8 .  s  0 24  8  0  0  0  0  0 0 None
0x0c2 24 dc  0  24  0 r  y .   8  8  8  0 .  s  0  0  0  0  0  0  0  0 0 None
0x0c3 24 dc  0  24  0 r  . .   8  8  8  0 .  s  0  0  0  0  0  0  0  0 0 None
0x0c4 24 dc  0  24  0 r  y .   8  8  8  0 .  s  0 24  8  0  0  0  0  0 0 None
0x0c5 24 dc  0  24  0 r  . .   8  8  8  0 .  s  0 24  8  0  0  0  0  0 0 None
0x0c6 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
0x0c7 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8 16 16 16 16  0 0 Slow
0x0c8 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0 24  8  0  0  0  0  0 0 None
0x0c9 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0 24  8 16 16 16  0  0 0 Slow
0x0ca 24 dc  0  32  0 r  y .   8  8  8  8 .  s  0 24  8  0  0  0  0  0 0 None
0x0cb 24 dc  0  32  0 r  y .   8  8  8  8 .  s  0 24  8 16 16 16 16  0 0 Slow
0x0cc 24 dc  0  24  0 r  y .   8  8  8  0 .  s  0 24  8  0  0  0  0  0 0 None
0x0cd 24 dc  0  24  0 r  y .   8  8  8  0 .  s  0 24  8 16 16 16  0  0 0 Slow
0x05d 32 tc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
0x0ce 32 tc  0  32  0 r  y .   8  8  8  8 .  .  0  0  0  0  0  0  0  0 0 None
0x0cf 32 tc  0  32  0 r  . .   8  8  8  8 .  .  0  0  0  0  0  0  0  0 0 None
0x0d0 32 tc  0  32  0 r  . .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
0x0d1 32 tc  0  32  0 r  y .   8  8  8  8 .  s  0  0  0  0  0  0  0  0 0 None
0x0d2 32 tc  0  32  0 r  . .   8  8  8  8 .  s  0  0  0  0  0  0  0  0 0 None
0x0d3 32 tc  0  32  0 r  y .   8  8  8  8 .  s  0 24  8  0  0  0  0  0 0 None
0x0d4 32 tc  0  32  0 r  . .   8  8  8  8 .  s  0 24  8  0  0  0  0  0 0 None
0x0d5 32 tc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
0x0d6 32 tc  0  32  0 r  y .   8  8  8  8 .  s  0 24  8  0  0  0  0  0 0 None

66 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
----------------------------------------------------------------------------
0x05e  0 tc  0  16  0 r  y .   5  6  5  0 .  .  0  0  0  0  0  0  0  0 0 None
0x05f  0 tc  0  16  0 r  . .   5  6  5  0 .  .  0  0  0  0  0  0  0  0 0 None
0x060 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0  0  0  0  0  0  0  0 0 None
0x061 24 tc  0  32  0 r  . .   8  8  8  8 .  .  0  0  0  0  0  0  0  0 0 None
0x062 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
0x063 24 tc  0  32  0 r  . .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
0x064 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0  0  0  0  0  0  0  0 0 None
0x065 24 tc  0  24  0 r  . .   8  8  8  0 .  .  0  0  0  0  0  0  0  0 0 None
0x066 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0 24  8  0  0  0  0  0 0 None
0x067 24 tc  0  24  0 r  . .   8  8  8  0 .  .  0 24  8  0  0  0  0  0 0 None
0x068 24 tc  0  32  0 r  y .   8  8  8  8 .  s  0  0  0  0  0  0  0  0 0 None
0x069 24 tc  0  32  0 r  . .   8  8  8  8 .  s  0  0  0  0  0  0  0  0 0 None
0x06a 24 tc  0  32  0 r  y .   8  8  8  8 .  s  0 24  8  0  0  0  0  0 0 None
0x06b 24 tc  0  32  0 r  . .   8  8  8  8 .  s  0 24  8  0  0  0  0  0 0 None
0x06c 24 tc  0  24  0 r  y .   8  8  8  0 .  s  0  0  0  0  0  0  0  0 0 None
0x06d 24 tc  0  24  0 r  . .   8  8  8  0 .  s  0  0  0  0  0  0  0  0 0 None
0x06e 24 tc  0  24  0 r  y .   8  8  8  0 .  s  0 24  8  0  0  0  0  0 0 None
0x06f 24 tc  0  24  0 r  . .   8  8  8  0 .  s  0 24  8  0  0  0  0  0 0 None
0x070  0 tc  0  16  0 r  y .   5  6  5  0 .  .  0  0  0  0  0  0  0  0 0 None
0x071  0 tc  0  16  0 r  y .   5  6  5  0 .  .  0  0  0 16 16 16  0  0 0 Slow
0x072 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
0x073 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8 16 16 16 16  0 0 Slow
0x074 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0 24  8  0  0  0  0  0 0 None
0x075 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0 24  8 16 16 16  0  0 0 Slow
0x076 24 tc  0  32  0 r  y .   8  8  8  8 .  s  0 24  8  0  0  0  0  0 0 None
0x077 24 tc  0  32  0 r  y .   8  8  8  8 .  s  0 24  8 16 16 16 16  0 0 Slow
0x078 24 tc  0  24  0 r  y .   8  8  8  0 .  s  0 24  8  0  0  0  0  0 0 None
0x079 24 tc  0  24  0 r  y .   8  8  8  0 .  s  0 24  8 16 16 16  0  0 0 Slow
0x07a  0 dc  0  16  0 r  y .   5  6  5  0 .  .  0  0  0  0  0  0  0  0 0 None
0x07b  0 dc  0  16  0 r  . .   5  6  5  0 .  .  0  0  0  0  0  0  0  0 0 None
0x07c 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0  0  0  0  0  0  0  0 0 None
0x07d 24 dc  0  32  0 r  . .   8  8  8  8 .  .  0  0  0  0  0  0  0  0 0 None
0x07e 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
0x07f 24 dc  0  32  0 r  . .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
0x080 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0  0  0  0  0  0  0  0 0 None
0x081 24 dc  0  24  0 r  . .   8  8  8  0 .  .  0  0  0  0  0  0  0  0 0 None
0x082 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0 24  8  0  0  0  0  0 0 None
0x083 24 dc  0  24  0 r  . .   8  8  8  0 .  .  0 24  8  0  0  0  0  0 0 None
0x084 24 dc  0  32  0 r  y .   8  8  8  8 .  s  0  0  0  0  0  0  0  0 0 None
0x085 24 dc  0  32  0 r  . .   8  8  8  8 .  s  0  0  0  0  0  0  0  0 0 None
0x086 24 dc  0  32  0 r  y .   8  8  8  8 .  s  0 24  8  0  0  0  0  0 0 None
0x087 24 dc  0  32  0 r  . .   8  8  8  8 .  s  0 24  8  0  0  0  0  0 0 None
0x088 24 dc  0  24  0 r  y .   8  8  8  0 .  s  0  0  0  0  0  0  0  0 0 None
0x089 24 dc  0  24  0 r  . .   8  8  8  0 .  s  0  0  0  0  0  0  0  0 0 None
0x08a 24 dc  0  24  0 r  y .   8  8  8  0 .  s  0 24  8  0  0  0  0  0 0 None
0x08b 24 dc  0  24  0 r  . .   8  8  8  0 .  s  0 24  8  0  0  0  0  0 0 None
0x08c  0 dc  0  16  0 r  y .   5  6  5  0 .  .  0  0  0  0  0  0  0  0 0 None
0x08d  0 dc  0  16  0 r  y .   5  6  5  0 .  .  0  0  0 16 16 16  0  0 0 Slow
0x08e 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
0x08f 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8 16 16 16 16  0 0 Slow
0x090 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0 24  8  0  0  0  0  0 0 None
0x091 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0 24  8 16 16 16  0  0 0 Slow
0x092 24 dc  0  32  0 r  y .   8  8  8  8 .  s  0 24  8  0  0  0  0  0 0 None
0x093 24 dc  0  32  0 r  y .   8  8  8  8 .  s  0 24  8 16 16 16 16  0 0 Slow
0x094 24 dc  0  24  0 r  y .   8  8  8  0 .  s  0 24  8  0  0  0  0  0 0 None
0x095 24 dc  0  24  0 r  y .   8  8  8  0 .  s  0 24  8 16 16 16  0  0 0 Slow
0x096 32 tc  0  32  0 r  y .   8  8  8  8 .  .  0  0  0  0  0  0  0  0 0 None
0x097 32 tc  0  32  0 r  . .   8  8  8  8 .  .  0  0  0  0  0  0  0  0 0 None
0x098 32 tc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
0x099 32 tc  0  32  0 r  . .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
0x09a 32 tc  0  32  0 r  y .   8  8  8  8 .  s  0  0  0  0  0  0  0  0 0 None
0x09b 32 tc  0  32  0 r  . .   8  8  8  8 .  s  0  0  0  0  0  0  0  0 0 None
0x09c 32 tc  0  32  0 r  y .   8  8  8  8 .  s  0 24  8  0  0  0  0  0 0 None
0x09d 32 tc  0  32  0 r  . .   8  8  8  8 .  s  0 24  8  0  0  0  0  0 0 None
0x09e 32 tc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
0x09f 32 tc  0  32  0 r  y .   8  8  8  8 .  s  0 24  8  0  0  0  0  0 0 None
@k8ieone k8ieone added the Crash label May 26, 2020
@abcdefg30
Copy link
Member

Yet even if I edit config.yaml by adding GLProfile: Legacy to the Graphics: section, the game still refuses to launch.

config.yaml? I assume you mean settings.yaml here. Regardless, you can also try setting DisableGLDebugMessageCallback to true. (It is a setting in the Graphics section as well.)

@k8ieone
Copy link
Author

k8ieone commented May 26, 2020

config.yaml? I assume you mean settings.yaml here.

Yes, sorry. That's the file I meant. Even with DisableGLDebugMessageCallback: True the game still refuses to launch.

@anvilvapre
Copy link
Contributor

anvilvapre commented May 26, 2020

The error message is the result of SDL_CreateWindow call failing using only a few common looking SDL GL attributes (set double buffer, set 1 byte for each rgba, set gl version major minor). Perhaps because it tries to create a hidden Window? (SDL_WINDOW_HIDDEN)
For legacy GL version 2.1 is requested/checked.

@pchote
Copy link
Member

pchote commented May 26, 2020

Possibly related to #18061.

@pchote
Copy link
Member

pchote commented May 31, 2020

Can you please test the appimages from https://github.com/pchote/OpenRA/releases/tag/release-20200503-graphicstest1 ?

@k8ieone
Copy link
Author

k8ieone commented Jun 1, 2020

I'll do that later today

@k8ieone
Copy link
Author

k8ieone commented Jun 2, 2020

Ok, tried that and this is the result:

./OpenRA-Tiberian-Dawn-x86_64.AppImage
Platform is Linux
Engine version is release-20200503
Renderer initialization failed. Check graphics.log for details.
Renderer initialization failed. Check graphics.log for details.
Exception of type `System.InvalidOperationException`: Failed to initialize platform-integration library. Check graphics.log for details.
  at OpenRA.Game.Initialize (OpenRA.Arguments args) [0x00162] in <5a005dcb821c4636b0e9287eb3efa701>:0 
  at OpenRA.Game.InitializeAndRun (System.String[] args) [0x00006] in <5a005dcb821c4636b0e9287eb3efa701>:0 
  at OpenRA.Program.Main (System.String[] args) [0x00044] in <5a005dcb821c4636b0e9287eb3efa701>:0 

Bail out! Gtk:ERROR:../gtk/gtk/gtkiconhelper.c:494:ensure_surface_for_gicon: assertion failed (error == NULL): Failed to load /org/gtk/libgtk/icons/48x48/status/image-missing.png: Unrecognised image file format (gdk-pixbuf-error-quark, 3)
/tmp/.mount_OpenRAVcHgEZ/usr/bin/openra-cnc: line 53:  1813 Aborted                 (core dumped) zenity --no-wrap --error --title "Tiberian Dawn" --text "${ERROR_MESSAGE}" 2> /dev/null

And .openra/Logs/graphics.log:

System.InvalidOperationException: No supported OpenGL profiles were found.
  at OpenRA.Platforms.Default.Sdl2PlatformWindow..ctor (OpenRA.Primitives.Size requestEffectiveWindowSize, OpenRA.WindowMode windowMode, System.Single scaleModifier, System.Int32 batchSize, System.Int32 videoDisplay, OpenRA.GLProfile requestProfile) [0x000df] in <e448e97fd76b4030a165acce25395580>:0 
  at OpenRA.Platforms.Default.DefaultPlatform.CreateWindow (OpenRA.Primitives.Size size, OpenRA.WindowMode windowMode, System.Single scaleModifier, System.Int32 batchSize, System.Int32 videoDisplay, OpenRA.GLProfile profile) [0x00000] in <e448e97fd76b4030a165acce25395580>:0 
  at OpenRA.Renderer..ctor (OpenRA.IPlatform platform, OpenRA.GraphicSettings graphicSettings) [0x00057] in <5a005dcb821c4636b0e9287eb3efa701>:0 
  at OpenRA.Game.Initialize (OpenRA.Arguments args) [0x00204] in <5a005dcb821c4636b0e9287eb3efa701>:0 
System.InvalidOperationException: No supported OpenGL profiles were found.
  at OpenRA.Platforms.Default.Sdl2PlatformWindow..ctor (OpenRA.Primitives.Size requestEffectiveWindowSize, OpenRA.WindowMode windowMode, System.Single scaleModifier, System.Int32 batchSize, System.Int32 videoDisplay, OpenRA.GLProfile requestProfile) [0x000df] in <e448e97fd76b4030a165acce25395580>:0 
  at OpenRA.Platforms.Default.DefaultPlatform.CreateWindow (OpenRA.Primitives.Size size, OpenRA.WindowMode windowMode, System.Single scaleModifier, System.Int32 batchSize, System.Int32 videoDisplay, OpenRA.GLProfile profile) [0x00000] in <e448e97fd76b4030a165acce25395580>:0 
  at OpenRA.Renderer..ctor (OpenRA.IPlatform platform, OpenRA.GraphicSettings graphicSettings) [0x00057] in <5a005dcb821c4636b0e9287eb3efa701>:0 
  at OpenRA.Game.Initialize (OpenRA.Arguments args) [0x00204] in <5a005dcb821c4636b0e9287eb3efa701>:0

@k8ieone
Copy link
Author

k8ieone commented Jun 2, 2020

And it still works on my OpenGL 3.3 machine.

@ingvar-lynn
Copy link

Ubuntu 20.04
OpenGL version string: 2.1 Mesa 20.2.6
00:02.0 VGA compatible controller: Intel Corporation Core Processor Integrated Graphics Controller (rev 02)

20200503-release - works fine
20201213-playtest - requires DisableLegacyGL=False workaround

@k8ieone
Copy link
Author

k8ieone commented Mar 7, 2021

I just tested with release-20200503 and it works fine! Great!

@ingvar-lynn Is DisableLegacyGL=False some kind of launch option, config option or build option?

@bggardner
Copy link
Contributor

Is DisableLegacyGL=False some kind of launch option, config option or build option?

It's a new launch/config option. From #18061:

This now requires an additional argument: OpenRA-*.AppImage Graphics.DisableLegacyGL=False (first run only, then it gets saved to settings.yaml). I just added the documentation to the wiki.

@k8ieone
Copy link
Author

k8ieone commented Mar 8, 2021

Nice, thanks @bggardner!

@pchote
Copy link
Member

pchote commented Mar 8, 2021

Please be aware that the DisableLegacyGL flag is one of the last steps in our deprecation process for OpenGL 2.1. We'll be gauging feedback from the playtests and upcoming release (so thanks for commenting here!), but I personally have my fingers crossed that the impact will be limited enough that we can move forwards with dropping support completely.

It feels bad to tell people that their computers are no longer welcome to play OpenRA, but this change has been a long time coming. Working around the missing features in GL2.1 has become a major road block to improving the performance and maintainability of our rendering code. This is really important for the Tiberian Sun and C&C Remastered projects, where poor rendering performance is one of the main issues left to solve before a public release.

@bggardner
Copy link
Contributor

@pchote I don't want to hijack this thread with the discussion, but could you post some rationale for dropping OpenGL 2.1 support, maybe on the wiki or a new issue to collect comments? Would it make sense to fork before the Remastered release?

@pchote
Copy link
Member

pchote commented Mar 8, 2021

In short: GL2.1 has limited support for textures (no texture arrays, can't even query texture size in the shader) and no support at all for non-floating point types. This forces us to maintain an extra layer of manual book-keeping to e.g. split the rendering up into multiple passes that each use no more than 7 textures at a time, emulate our own bitwise operations using floating point maths, and have if-else checks all through the code for GL2 vs modern GL. This adds a lot of overhead in both code complexity and performance. It also means that we have to maintain our own low-level code full of "if gl2 do X else do Y" instead of leveraging a project like veldrid or ANGLE to be able to write code once and rely on the work of GPU experts to translate that to the lower level system APIs in the way that gives best performance and least bugs.

@bggardner
Copy link
Contributor

Thanks, that was very helpful. I'd be curious as to the percentage of users still relying on GL2.1 (do you collect hardware data?). It does seem silly to require "newer" hardware for such an "old" game (I know, I know...it's been updated, remastered, etc.). So, how much of a pain would it be to maintain a GL2.1-only branch (get rid of all the if-elses, but keep all the clever render-splitting magic)? I realize older releases can run on GL2.1, but that would prevent multiplayer with the newer releases.

Side note: The game performs much better on my GL2.1 machine than an RPi 4 B+, so that's not (yet) a better solution than upgrading to a "newer" video card (GeForce 210 on eBay for ~$20). Also, I imagine many GL2.1 users are on laptops (for which OpenRA is probably the only reason they use the laptop) where upgrading the GPU is not an option.

@reaperrr
Copy link
Contributor

reaperrr commented Apr 9, 2021

So, how much of a pain would it be to maintain a GL2.1-only branch (get rid of all the if-elses, but keep all the clever render-splitting magic)?

More of a pain than keeping the if-elses, I'm fairly sure. It wouldn't really reduce the amount of code to maintain, while doubling the branches we'd have to keep up-to-date.

It does seem silly to require "newer" hardware for such an "old" game (I know, I know...it's been updated, remastered, etc.).

We're primarily working towards TS nowadays (and support for RA2 and comparable 3rd-party mods), worst-case continuing to support 2.1 would mean continuing to block render performance improvements and additional render effects required for those to look like they're supposed to and run well enough on slower (but OGL 3[+] compatible) hardware.
Our dev team is small (actually tiny when it comes to people who know their way around rendering).
Just like it used to be with WinXP support, at some point we just have to make the cut to keep things maintainable for us and avoid slowing down or even blocking progress for the vast majority of players (and modders).

@pchote
Copy link
Member

pchote commented Apr 9, 2021

I plan to respond with some real numbers once I have time to look them up, but in the short term you shouldn't need to worry too much. As things currently stand, I expect that the 2.1 support (gated behind DisableLegacyGL) will remain in the next release, and the release or two after that will probably (but no guarantees) remain similar enough for somebody without significant OpenGL knowledge to revert the relevant PRs and restore GL2.1 support for the first gen mods (but almost certainly break the remastered assets and TS).

The real breaking change will come if/when we decide to replace the OpenGL bindings completely with a higher level third party library.

@ell1e
Copy link

ell1e commented Apr 1, 2022

For what it's worth, the PinePhone as a rather new device seems to be one of the likely best selling Linux phones right now and sadly only does OpenGL ES 2.x. With support for external screens and peripherals, it might otherwise be an interesting device to try to play OpenRA on. (Although I imagine it might be plenty laggy...) There is however a PinePhone Pro being worked on with ES 3, but it's pricier (so some people won't get it, especially since I think the base PinePhone will continue to be sold) and as far as I know not as ready on the software side either, at least as of right now.

@PunkPun
Copy link
Member

PunkPun commented Nov 12, 2023

#21143 has deprecated all versions of OpenGL lower than 3.0

@PunkPun PunkPun closed this as completed Nov 12, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

9 participants