Skip to content

Meshes do not display with WSLg on NVIDIA graphics #1748

@jorolf

Description

@jorolf

The RobotModel is invisible even though there are no visible errors:
RobotModel
Adding a TF display shows the frames of the robot correctly:
TF
I tried both the panda and the fanuc robot and neither displayed the robot mesh

Your environment

  • OS Version: Windows 11 Pro 21H2 (22000.675) running WSL2 with Ubuntu 20.04

  • ROS Distro: Noetic

  • RViz, Qt, OGRE, OpenGl version as printed by rviz:

    rviz version 1.14.14
    compiled against Qt version 5.12.8
    compiled against OGRE version 1.9.0 (Ghadamon)
    Forcing OpenGl version 0.
    Stereo is NOT SUPPORTED
    OpenGL device: D3D12 (NVIDIA GeForce GTX 1050)
    OpenGl version: 3.1 (GLSL 1.4).
    
  • echo "$LANG, $LC_NUMERIC" prints C.UTF-8
    Using LANG=C rviz does not help

  • Running glxinfo prints this:

    Click to expand
    direct rendering: Yes
    server glx vendor string: SGI
    server glx version string: 1.4
    server glx extensions:
        GLX_ARB_context_flush_control, 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_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
    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_ATI_pixel_format_float, 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_no_config_context, GLX_EXT_swap_control,
        GLX_EXT_swap_control_tear, 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_NV_float_buffer,
        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_context_flush_control, 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_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_no_config_context,
        GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info, GLX_EXT_visual_rating,
        GLX_MESA_copy_sub_buffer, GLX_MESA_query_renderer, GLX_OML_swap_method,
        GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer,
        GLX_SGIX_visual_select_group, GLX_SGI_make_current_read
    Extended renderer info (GLX_MESA_query_renderer):
        Vendor: Microsoft Corporation (0xffffffff)
        Device: D3D12 (NVIDIA GeForce GTX 1050) (0xffffffff)
        Version: 21.2.6
        Accelerated: yes
        Video memory: 6012MB
        Unified memory: no
        Preferred profile: core (0x1)
        Max core profile version: 3.3
        Max compat profile version: 3.1
        Max GLES1 profile version: 1.1
        Max GLES[23] profile version: 3.0
    OpenGL vendor string: Microsoft Corporation
    OpenGL renderer string: D3D12 (NVIDIA GeForce GTX 1050)
    OpenGL core profile version string: 3.3 (Core Profile) Mesa 21.2.6
    OpenGL core profile shading language version string: 3.30
    OpenGL core profile context flags: (none)
    OpenGL core profile profile mask: core profile
    OpenGL core profile extensions:
        GL_AMD_conservative_depth, GL_AMD_draw_buffers_blend,
        GL_AMD_shader_trinary_minmax, GL_ANGLE_texture_compression_dxt3,
        GL_ANGLE_texture_compression_dxt5, GL_ARB_ES2_compatibility,
        GL_ARB_ES3_compatibility, GL_ARB_arrays_of_arrays,
        GL_ARB_blend_func_extended, GL_ARB_clear_buffer_object,
        GL_ARB_compressed_texture_pixel_storage, GL_ARB_conservative_depth,
        GL_ARB_copy_buffer, GL_ARB_debug_output, GL_ARB_depth_buffer_float,
        GL_ARB_depth_clamp, GL_ARB_direct_state_access, 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_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_occlusion_query2,
        GL_ARB_parallel_shader_compile, GL_ARB_pixel_buffer_object,
        GL_ARB_point_sprite, GL_ARB_program_interface_query,
        GL_ARB_provoking_vertex, GL_ARB_robustness, GL_ARB_sampler_objects,
        GL_ARB_seamless_cube_map, GL_ARB_separate_shader_objects,
        GL_ARB_shader_bit_encoding, GL_ARB_shader_objects,
        GL_ARB_shader_subroutine, GL_ARB_shader_texture_lod,
        GL_ARB_shading_language_420pack, GL_ARB_shading_language_include,
        GL_ARB_shading_language_packing, GL_ARB_stencil_texturing, GL_ARB_sync,
        GL_ARB_texture_buffer_object, GL_ARB_texture_buffer_object_rgb32,
        GL_ARB_texture_buffer_range, GL_ARB_texture_compression_rgtc,
        GL_ARB_texture_filter_anisotropic, GL_ARB_texture_float,
        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_timer_query, 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_shader, GL_ARB_vertex_type_10f_11f_11f_rev,
        GL_ARB_vertex_type_2_10_10_10_rev, GL_ATI_blend_equation_separate,
        GL_ATI_texture_float, GL_EXT_EGL_image_storage, GL_EXT_EGL_sync,
        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_object, GL_EXT_framebuffer_sRGB,
        GL_EXT_packed_depth_stencil, GL_EXT_packed_float,
        GL_EXT_pixel_buffer_object, GL_EXT_provoking_vertex,
        GL_EXT_shader_integer_mix, 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_context_flush_control, GL_KHR_debug, GL_KHR_no_error,
        GL_KHR_parallel_shader_compile, 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_copy_image, GL_NV_depth_clamp,
        GL_NV_packed_depth_stencil, GL_OES_EGL_image, GL_S3_s3tc
    
    OpenGL version string: 3.1 Mesa 21.2.6
    OpenGL shading language version string: 1.40
    OpenGL context flags: (none)
    OpenGL extensions:
        GL_AMD_conservative_depth, GL_AMD_draw_buffers_blend,
        GL_AMD_shader_trinary_minmax, GL_ANGLE_texture_compression_dxt3,
        GL_ANGLE_texture_compression_dxt5, GL_APPLE_packed_pixels,
        GL_ARB_ES2_compatibility, GL_ARB_ES3_compatibility,
        GL_ARB_arrays_of_arrays, GL_ARB_blend_func_extended,
        GL_ARB_clear_buffer_object, GL_ARB_color_buffer_float,
        GL_ARB_compatibility, GL_ARB_compressed_texture_pixel_storage,
        GL_ARB_conservative_depth, GL_ARB_copy_buffer, GL_ARB_debug_output,
        GL_ARB_depth_buffer_float, GL_ARB_depth_clamp, GL_ARB_depth_texture,
        GL_ARB_direct_state_access, 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_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_program_interface_query, GL_ARB_provoking_vertex,
        GL_ARB_robustness, GL_ARB_sampler_objects, GL_ARB_seamless_cube_map,
        GL_ARB_separate_shader_objects, GL_ARB_shader_bit_encoding,
        GL_ARB_shader_objects, GL_ARB_shader_subroutine,
        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_stencil_texturing,
        GL_ARB_sync, 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_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_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_timer_query, 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_fragment_shader, 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_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_gpu_program_parameters, GL_EXT_gpu_shader4,
        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_provoking_vertex, GL_EXT_rescale_normal,
        GL_EXT_secondary_color, GL_EXT_separate_specular_color,
        GL_EXT_shader_integer_mix, 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_buffer_object,
        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_context_flush_control, GL_KHR_debug, GL_KHR_no_error,
        GL_KHR_parallel_shader_compile, 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_copy_depth_to_color, GL_NV_copy_image, GL_NV_depth_clamp,
        GL_NV_fog_distance, GL_NV_half_float, GL_NV_light_max_exponent,
        GL_NV_packed_depth_stencil, GL_NV_primitive_restart,
        GL_NV_texgen_reflection, 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.0 Mesa 21.2.6
    OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.00
    OpenGL ES profile extensions:
        GL_ANGLE_pack_reverse_row_order, GL_ANGLE_texture_compression_dxt3,
        GL_ANGLE_texture_compression_dxt5, GL_APPLE_texture_max_level,
        GL_EXT_EGL_image_storage, GL_EXT_blend_func_extended, GL_EXT_blend_minmax,
        GL_EXT_color_buffer_float, GL_EXT_compressed_ETC1_RGB8_sub_texture,
        GL_EXT_depth_clamp, GL_EXT_discard_framebuffer,
        GL_EXT_disjoint_timer_query, GL_EXT_draw_buffers,
        GL_EXT_draw_buffers_indexed, GL_EXT_draw_elements_base_vertex,
        GL_EXT_draw_instanced, GL_EXT_float_blend, GL_EXT_frag_depth,
        GL_EXT_map_buffer_range, GL_EXT_multi_draw_arrays,
        GL_EXT_occlusion_query_boolean, GL_EXT_read_format_bgra,
        GL_EXT_sRGB_write_control, GL_EXT_separate_shader_objects,
        GL_EXT_shader_integer_mix, GL_EXT_texture_border_clamp,
        GL_EXT_texture_compression_dxt1, GL_EXT_texture_compression_rgtc,
        GL_EXT_texture_compression_s3tc, GL_EXT_texture_compression_s3tc_srgb,
        GL_EXT_texture_filter_anisotropic, GL_EXT_texture_format_BGRA8888,
        GL_EXT_texture_query_lod, GL_EXT_texture_rg, GL_EXT_texture_sRGB_decode,
        GL_EXT_texture_type_2_10_10_10_REV, GL_EXT_unpack_subimage,
        GL_KHR_context_flush_control, GL_KHR_debug, GL_KHR_no_error,
        GL_KHR_parallel_shader_compile, GL_KHR_texture_compression_astc_ldr,
        GL_KHR_texture_compression_astc_sliced_3d, GL_MESA_bgra,
        GL_MESA_framebuffer_flip_y, GL_MESA_shader_integer_functions,
        GL_NV_conditional_render, GL_NV_draw_buffers, GL_NV_fbo_color_attachments,
        GL_NV_pixel_buffer_object, 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_image_external_essl3,
        GL_OES_EGL_sync, GL_OES_compressed_ETC1_RGB8_texture, 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_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_texture_stencil8, GL_OES_vertex_array_object,
        GL_OES_vertex_half_float
    

How to reproduce

Setup Ubuntu VM:
Inside Powershell or Cmd run

wsl --install -d Ubuntu-20.04

and follow the instructions.

After installation run sudo apt update and sudo apt upgrade.
Then follow this tutorial until step 1.4 where ros-noetic-desktop-full should be installed.
Finally install ros-noetic-moveit and ros-noetic-moveit-resources and run:

roslaunch moveit_resources_panda_moveit_config test_environment.launch &
rviz

It used to work a few weeks ago, I'm not exactly sure what broke it. (Maybe apt upgrade?)
It could be something related to the shader considering that it's a rendering only bug?
I'm also not sure if this is a local problem since I only have a single Windows 11 machine to test this on. (which supports WSLg)

If there's anything I have missed or I should try let me know.

Metadata

Metadata

Assignees

No one assigned

    Labels

    openglwslWindows Subsystem for Linux

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions