microsoft / WSL

Issues found on WSL
https://docs.microsoft.com/windows/wsl
MIT License
16.89k stars 797 forks source link

Hardware-accelerated vulkan in WSL2 #7790

Open agluszak opened 2 years ago

agluszak commented 2 years ago

Version

Microsoft Windows [Version 10.0.22000.348]

WSL Version

Kernel Version

5.10.60.1

Distro Version

Ubuntu 21.04

Other Software

GPU: AMD Ryzen 7 5800U IGPU

AMD drivers version: https://www.amd.com/en/support/kb/release-notes/rn-rad-win-wsl-support (recommended for use with WSL)

vulkaninfo --summary
WARNING: lavapipe is not a conformant vulkan implementation, testing use only.
==========
VULKANINFO
==========

Vulkan Instance Version: 1.2.162

Instance Extensions: count = 18
-------------------------------
VK_EXT_acquire_xlib_display            : extension revision 1
VK_EXT_debug_report                    : extension revision 10
VK_EXT_debug_utils                     : extension revision 2
VK_EXT_direct_mode_display             : extension revision 1
VK_EXT_display_surface_counter         : extension revision 1
VK_KHR_device_group_creation           : extension revision 1
VK_KHR_display                         : extension revision 23
VK_KHR_external_fence_capabilities     : extension revision 1
VK_KHR_external_memory_capabilities    : extension revision 1
VK_KHR_external_semaphore_capabilities : extension revision 1
VK_KHR_get_display_properties2         : extension revision 1
VK_KHR_get_physical_device_properties2 : extension revision 2
VK_KHR_get_surface_capabilities2       : extension revision 1
VK_KHR_surface                         : extension revision 25
VK_KHR_surface_protected_capabilities  : extension revision 1
VK_KHR_wayland_surface                 : extension revision 6
VK_KHR_xcb_surface                     : extension revision 6
VK_KHR_xlib_surface                    : extension revision 6

Instance Layers: count = 3
--------------------------
VK_LAYER_KHRONOS_validation Khronos Validation Layer     1.2.162  version 1
VK_LAYER_MESA_device_select Linux device selection layer 1.2.73   version 1
VK_LAYER_MESA_overlay       Mesa Overlay layer           1.1.73   version 1

Devices:
========
GPU0:
        apiVersion         = 4202691 (1.2.195)
        driverVersion      = 1 (0x0001)
        vendorID           = 0x10005
        deviceID           = 0x0000
        deviceType         = PHYSICAL_DEVICE_TYPE_CPU
        deviceName         = llvmpipe (LLVM 13.0.0, 256 bits)
        driverID           = DRIVER_ID_MESA_LLVMPIPE
        driverName         = llvmpipe
        driverInfo         = Mesa 21.3.0 - kisak-mesa PPA (LLVM 13.0.0)
        conformanceVersion = 0.0.0.0

Repro Steps

Run vulkaninfo --summary

Expected Behavior

I expect vulkan to use the actual GPU in WSL2

Actual Behavior

It uses lavapipe software emulation

Diagnostic Logs

No response

ghost commented 2 years ago

Nice try 😄

letrhee commented 2 years ago

There don't seem to be any plans to provide Vulkan natively. The links https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12209 https://gitlab.freedesktop.org/bbrezillon/mesa/-/branches/active may help.

engineer1109 commented 2 years ago

llvmpipe is CPU..

GeorgeS2019 commented 2 years ago

Anyone attempting WSL2 Vulkan Nvidia?

Vulkan Driver Support

GeorgeS2019 commented 2 years ago

Problem using WSL2 running Godot4 vulkan using llvmpipe

GeorgeS2019 commented 2 years ago

Version

Microsoft Windows [Version 11.0.22000.556

WSL Version

Distro Version

Ubuntu 20.04

$ vulkaninfo --summary

WARNING: [Loader Message] Code 0 : terminator_CreateInstance: Failed to CreateInstance in ICD 2.  Skipping ICD.
WARNING: lavapipe is not a conformant vulkan implementation, testing use only.
==========
VULKANINFO
==========

Vulkan Instance Version: 1.3.204

Instance Extensions: count = 18
-------------------------------
VK_EXT_acquire_xlib_display            : extension revision 1
VK_EXT_debug_report                    : extension revision 9
VK_EXT_debug_utils                     : extension revision 2
VK_EXT_direct_mode_display             : extension revision 1
VK_EXT_display_surface_counter         : extension revision 1
VK_KHR_device_group_creation           : extension revision 1
VK_KHR_display                         : extension revision 23
VK_KHR_external_fence_capabilities     : extension revision 1
VK_KHR_external_memory_capabilities    : extension revision 1
VK_KHR_external_semaphore_capabilities : extension revision 1
VK_KHR_get_display_properties2         : extension revision 1
VK_KHR_get_physical_device_properties2 : extension revision 1
VK_KHR_get_surface_capabilities2       : extension revision 1
VK_KHR_surface                         : extension revision 25
VK_KHR_surface_protected_capabilities  : extension revision 1
VK_KHR_wayland_surface                 : extension revision 6
VK_KHR_xcb_surface                     : extension revision 6
VK_KHR_xlib_surface                    : extension revision 6

Instance Layers: count = 10
---------------------------
VK_LAYER_KHRONOS_profiles         Khronos Profiles layer                              1.3.204  version 1
VK_LAYER_KHRONOS_synchronization2 Khronos Synchronization2 layer                      1.3.204  version 1
VK_LAYER_KHRONOS_validation       Khronos Validation Layer                            1.3.204  version 1
VK_LAYER_LUNARG_api_dump          LunarG API dump layer                               1.3.204  version 2
VK_LAYER_LUNARG_device_simulation LunarG device simulation layer                      1.3.204  version 1
VK_LAYER_LUNARG_gfxreconstruct    GFXReconstruct Capture Layer Version 0.9.11-unknown 1.3.204  version 36875
VK_LAYER_LUNARG_monitor           Execution Monitoring Layer                          1.3.204  version 1
VK_LAYER_LUNARG_screenshot        LunarG image capture layer                          1.3.204  version 1
VK_LAYER_MESA_device_select       Linux device selection layer                        1.2.73   version 1
VK_LAYER_MESA_overlay             Mesa Overlay layer                                  1.1.73   version 1

Devices:
========
GPU0:
        apiVersion         = 4202691 (1.2.195)
        driverVersion      = 1 (0x0001)
        vendorID           = 0x10005
        deviceID           = 0x0000
        deviceType         = PHYSICAL_DEVICE_TYPE_CPU
        deviceName         = llvmpipe (LLVM 10.0.0, 256 bits)
        driverID           = DRIVER_ID_MESA_LLVMPIPE
        driverName         = llvmpipe
        driverInfo         = Mesa 22.0.0-devel (git-f4c426422b) (LLVM 10.0.0)
        conformanceVersion = 0.0.0.0
        deviceUUID         = 00000000-0000-0000-0000-000000000000
        driverUUID         = 00000000-0000-0000-0000-000000000000
GeorgeS2019 commented 2 years ago

Vulkan through WSLg - Not Yet

GeorgeS2019 commented 2 years ago

@agluszak @procedural @engineer1109 @mortim @therealkenc

The latest WIP hardware-accelerated Vulkan in WSL2 ( through Dozen over Directx12)

GeorgeS2019 commented 1 year ago

hardware accelerated Vulkan now works in WSL2

GeorgeS2019 commented 10 months ago

https://github.com/microsoft/wslg/issues/40#issuecomment-1685123693

Nolram12345 commented 2 months ago

Is there any guide on how to actually install dozen on WSL2 (Ubuntu) ?

GeorgeS2019 commented 2 months ago
sudo add-apt-repository ppa:kisak/kisak-mesa
sudo apt update
sudo apt upgrade

https://github.com/microsoft/wslg/issues/40#issuecomment-2037539322

Nolram12345 commented 2 months ago

Oh wow, that was surprisingly easy. Thank you!

JustLuoxi commented 2 months ago
sudo add-apt-repository ppa:kisak/kisak-mesa
sudo apt update
sudo apt upgrade

microsoft/wslg#40 (comment)

Many thanks! It works! I can finally run the isaamgym in wsl2!!! ❤

Ukua commented 2 months ago
sudo add-apt-repository ppa:kisak/kisak-mesa
sudo apt update
sudo apt upgrade

microsoft/wslg#40 (comment)Microsoft/WSLG#40 (注释)

Many thanks! It works! I can finally run the isaamgym in wsl2!!! ❤非常感谢!它有效!我终于可以在 wsl2 中运行 isaamgym!!❤

How to run isaac sim in wsl2? I tryed the same cmd, isaac sim seems to start up but finally crushed with OUT OF MEMORY error

2024-04-28 04:44:41 [29,267ms] [Warning] [omni.particle.system.core.scripts.extension]
            ATTENTION!: omni.particle.system.core is currently undergoing extensive (breaking) changes.
            Please be aware that systems built with the existing extension will need to be rebuilt in
            the USD Composer 2023.2 release.
[29.299s] [ext: omni.kit.sequencer.core-103.4.0] startup
[29.323s] [ext: omni.anim.widget.timeline-0.1.8] startup
[29.363s] [ext: omni.kit.quicksearch.actions-0.8.11] startup
[29.369s] [ext: omni.kit.converter.cad_core-200.1.0-rc.22] startup
LLVM ERROR: out of memory
2024-04-28 04:44:42 [0ms] [Warn] [carb.crashreporter-breakpad.plugin] [crash] A crash has occurred.  If a debugger should be attached, please set the '/crashreporter/debuggerAttachTimeoutMs' setting to a timeout in milliseconds.  This can be used to allow the crash reporter to wait for up to that long for a debugger to attach before processing or sending the crash report.
prctl(PR_SET_PTRACER, PR_SET_PTRACER_ANY) failed: 22/Invalid argument
prctl(PR_SET_PTRACER, 0) failed: 22[1]    170596 segmentation fault  ./isaac-sim.sh --reset-user
phgandhi02 commented 1 month ago
sudo add-apt-repository ppa:kisak/kisak-mesa
sudo apt update
sudo apt upgrade

microsoft/wslg#40 (comment)

Many thanks! It works! I can finally run the isaamgym in wsl2!!! ❤

Same here. How did you get isaac-gym working in wsl2? I've been trying to get isaac sim working in wsl2 and I keep running into segmentation faults. I tried installing the repository but that didn't do anything. I downloaded vulkan-tools. Please let me know if I have to grab something else.

I ran the following:

vulkaninfo --summary
WARNING: [Loader Message] Code 0 : terminator_CreateInstance: Failed to CreateInstance in ICD 1.  Skipping ICD.
WARNING: dzn is not a conformant Vulkan implementation, testing use only.
==========
VULKANINFO
==========

Vulkan Instance Version: 1.3.204

Instance Extensions: count = 20
-------------------------------
VK_EXT_acquire_drm_display             : extension revision 1
VK_EXT_acquire_xlib_display            : extension revision 1
VK_EXT_debug_report                    : extension revision 10
VK_EXT_debug_utils                     : extension revision 2
VK_EXT_direct_mode_display             : extension revision 1
VK_EXT_display_surface_counter         : extension revision 1
VK_EXT_swapchain_colorspace            : extension revision 4
VK_KHR_device_group_creation           : extension revision 1
VK_KHR_display                         : extension revision 23
VK_KHR_external_fence_capabilities     : extension revision 1
VK_KHR_external_memory_capabilities    : extension revision 1
VK_KHR_external_semaphore_capabilities : extension revision 1
VK_KHR_get_display_properties2         : extension revision 1
VK_KHR_get_physical_device_properties2 : extension revision 2
VK_KHR_get_surface_capabilities2       : extension revision 1
VK_KHR_surface                         : extension revision 25
VK_KHR_surface_protected_capabilities  : extension revision 1
VK_KHR_wayland_surface                 : extension revision 6
VK_KHR_xcb_surface                     : extension revision 6
VK_KHR_xlib_surface                    : extension revision 6

Instance Layers: count = 3
--------------------------
VK_LAYER_INTEL_nullhw       INTEL NULL HW                1.1.73   version 1
VK_LAYER_MESA_device_select Linux device selection layer 1.3.211  version 1
VK_LAYER_MESA_overlay       Mesa Overlay layer           1.3.211  version 1

Devices:
========
GPU0:
        apiVersion         = 4202770 (1.2.274)
        driverVersion      = 100663303 (0x6000007)
        vendorID           = 0x10de
        deviceID           = 0x2523
        deviceType         = PHYSICAL_DEVICE_TYPE_DISCRETE_GPU
        deviceName         = Microsoft Direct3D12 (NVIDIA GeForce RTX 3050 Ti Laptop GPU)
        driverID           = UNKNOWN_VkDriverId_value23
        driverName         = Dozen
        driverInfo         = Mesa 24.0.7 - kisak-mesa PPA
        conformanceVersion = 0.0.0.0
        deviceUUID         = 0a5805bc-e528-f891-fa07-d868b45599ea
        driverUUID         = ba8648b5-dfcb-1cc5-3ce1-236da2853a45
GPU1:
        apiVersion         = 4206866 (1.3.274)
        driverVersion      = 1 (0x0001)
        vendorID           = 0x10005
        deviceID           = 0x0000
        deviceType         = PHYSICAL_DEVICE_TYPE_CPU
        deviceName         = llvmpipe (LLVM 15.0.7, 256 bits)
        driverID           = DRIVER_ID_MESA_LLVMPIPE
        driverName         = llvmpipe
        driverInfo         = Mesa 24.0.7 - kisak-mesa PPA (LLVM 15.0.7)
        conformanceVersion = 1.3.1.1
        deviceUUID         = 6d657361-3234-2e30-2e37-202d206b6900
        driverUUID         = 6c6c766d-7069-7065-5555-494400000000