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

Meshes do not display with WSLg on NVIDIA graphics #1748

Open
jorolf opened this issue May 23, 2022 · 3 comments
Open

Meshes do not display with WSLg on NVIDIA graphics #1748

jorolf opened this issue May 23, 2022 · 3 comments
Labels
opengl wsl Windows Subsystem for Linux

Comments

@jorolf
Copy link

jorolf commented May 23, 2022

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.

@rhaschke
Copy link
Contributor

I can confirm this issue on another WSLg installation, also employing an NVIDIA card.
I filed an issue upstream: microsoft/wslg#744

@rhaschke
Copy link
Contributor

A laptop with an Intel GPU only, doesn't exhibit this issue. It seems to be related to Microsoft's D3D12 renderer.

@rhaschke rhaschke changed the title Invisible robot model meshes (in WSL?) Meshes do not display with WSLg on NVIDIA graphics May 26, 2022
@rhaschke
Copy link
Contributor

As a workaround, you can set the environment variable LIBGL_ALWAYS_SOFTWARE=true, thus disabling accelerated rendering and instead enabling software rendering via llvmpipe.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
opengl wsl Windows Subsystem for Linux
Projects
None yet
Development

No branches or pull requests

2 participants