galister / wlx-overlay-s

Access your Wayland/X11 desktop from Monado/WiVRn/SteamVR. Now with Vulkan!
GNU General Public License v3.0
100 stars 18 forks source link

Vulkan error creating Vulkan device: ERROR_EXTENSION_NOT_PRESENT #32

Closed mnjm97 closed 2 months ago

mnjm97 commented 2 months ago

I am sure I am doing something wrong but I can't figure it out. I tried the appimage as well as building from source.

RUST_BACKTRACE=full ./wlx-overlay-s Logging to: /tmp/wlx.log INFO [wlx_overlay_s] Welcome to wlx-overlay-s version 0.3.2! INFO [wlx_overlay_s] It is Sun Apr 14 13:55:28 2024. LOG in xrCreateInstance: Instance created createInfo->applicationInfo.applicationName: wlx-overlay-s createInfo->applicationInfo.applicationVersion: 0 createInfo->applicationInfo.engineName: wlx-overlay-s createInfo->applicationInfo.engineVersion: 0 appinfo.detected.engine.name: (null) appinfo.detected.engine.version: 0.0.0 quirks.disable_vulkan_format_depth_stencil: false quirks.no_validation_error_in_create_ref_space: true LOG in xrCreateInstance: Selected devices Head: 'Nreal Air Glasses' Eyes: '' Left: '' Right: '' Gamepad: '' Hand-Tracking Left: '' Hand-Tracking Right: '' INFO [wlx_overlay_s::backend::openxr::helpers] Using OpenXR runtime: Monado(XRT) by Collabora et al 'v21.0.0-4304-g084dae3c' 21.0.0 INFO [wlx_overlay_s::backend::openxr] Using environment blend mode: OPAQUE LOG in xrCreateVulkanInstanceKHR: Creation of VkInstance: result: VK_SUCCESS vulkanInstance: 0x55a47b798f30 extensions: VK_KHR_external_fence_capabilities VK_KHR_external_memory_capabilities VK_KHR_external_semaphore_capabilities VK_KHR_get_physical_device_properties2 VK_EXT_debug_utils INFO [wlx_overlay_s::graphics] Using vkPhysicalDevice: NVIDIA GeForce RTX 2060 SUPER LOG in xrGetVulkanGraphicsDeviceKHR: Creation of VkDevice: result: VK_ERROR_EXTENSION_NOT_PRESENT vulkanDevice: 0x0 vulkanInstance: 0x55a47b798f30 external_fence_fd: true external_semaphore_fd: true timelineSemaphore: true extensions: VK_KHR_dedicated_allocation VK_KHR_external_fence VK_KHR_external_memory VK_KHR_external_semaphore VK_KHR_get_memory_requirements2 VK_KHR_external_memory_fd VK_KHR_swapchain VK_EXT_external_memory_dma_buf VK_EXT_image_drm_format_modifier VK_KHR_external_semaphore_fd VK_KHR_external_fence_fd VK_KHR_image_format_list VK_KHR_timeline_semaphore thread 'main' panicked at src/graphics.rs:301:18: Vulkan error creating Vulkan device: ERROR_EXTENSION_NOT_PRESENT stack backtrace: 0: 0x55a47a41dda6 - ::fmt::h410d4c66be4e37f9 1: 0x55a47a44b3b0 - core::fmt::write::he40921d4802ce2ac 2: 0x55a47a41ac1f - std::io::Write::write_fmt::h5de5a4e7037c9b20 3: 0x55a47a41db84 - std::sys_common::backtrace::print::h11c067a88e3bdb22 4: 0x55a47a41f257 - std::panicking::default_hook::{{closure}}::h8c832ecb03fde8ea 5: 0x55a47a41efb9 - std::panicking::default_hook::h1633e272b4150cf3 6: 0x55a47a41f6e8 - std::panicking::rust_panic_with_hook::hb164d19c0c1e71d4 7: 0x55a47a41f5c2 - std::panicking::begin_panic_handler::{{closure}}::h0369088c533c20e9 8: 0x55a47a41e2a6 - std::sys_common::backtrace::rust_end_short_backtrace::hc11d910daf35ac2e 9: 0x55a47a41f314 - rust_begin_unwind 10: 0x55a479ec76b5 - core::panicking::panic_fmt::ha6effc2775a0749c 11: 0x55a479ec7c03 - core::result::unwrap_failed::ha188096f98826595 12: 0x55a479f85fde - wlx_overlay_s::graphics::WlxGraphics::new_openxr::ha73114b6348ea252 13: 0x55a479f3351e - wlx_overlay_s::backend::openxr::openxr_run::h4c3d414342664b27 14: 0x55a479f0fea9 - wlx_overlay_s::main::h2af73d2c044a2635 15: 0x55a479f9d3f3 - std::sys_common::backtrace::rust_begin_short_backtrace::h91d6d1877081b7c7 16: 0x55a479f121a9 - std::rt::lang_start::{{closure}}::ha277efd1681ca73e 17: 0x55a47a412411 - std::rt::lang_start_internal::h4d236095b69a230b 18: 0x55a479f11ef5 - main 19: 0x7fa8c9ed824a - 20: 0x7fa8c9ed8305 - __libc_start_main 21: 0x55a479ec7f01 - _start 22: 0x0 -

galister commented 2 months ago

Hi, you can get a list of requested extensions using RUST_LOG=debug. Then check against the extensions listed by Vulkan (in the log you posted above) to find out what's missing.

What kind of driver are you using? I've seen similar from people trying to use NVK.

mnjm97 commented 2 months ago

running with RUST_LOG=debug gives exact same output. I am on debian 12, xfce4 using the non-free Nvidia driver 550.54.15 on a rtx 2060s.

I am running monado with 'monado-service' in a terminal, when I try to launch wlx-overlay-s this is what I get in the monado terminal:

INFO [ipc_handle_instance_describe_client] Client info: id: 3 application_name: 'wlx-overlay-s' pid: 22353 extensions: ext_hand_tracking_enabled: false ext_eye_gaze_interaction_enabled: false ext_hand_interaction_enabled: false INFO [client_loop] Client disconnected.

galister commented 2 months ago

try apply this on latest main:

diff --git a/src/graphics.rs b/src/graphics.rs
index cffe3bd..c619622 100644
--- a/src/graphics.rs
+++ b/src/graphics.rs
@@ -243,14 +243,7 @@ impl WlxGraphics {
             .position(|(_, q)| q.queue_flags.intersects(QueueFlags::GRAPHICS))
             .expect("Vulkan device has no graphics queue") as u32;

-        let device_extensions = DeviceExtensions {
-            khr_swapchain: true,
-            khr_external_memory: true,
-            khr_external_memory_fd: true,
-            ext_external_memory_dma_buf: true,
-            ext_image_drm_format_modifier: true,
-            ..DeviceExtensions::empty()
-        };
+        let device_extensions = DeviceExtensions::empty();

         let device_extensions_raw = device_extensions
             .into_iter()
mnjm97 commented 2 months ago

OK, that seems to work now. however, all I get is a black screen.

galister commented 2 months ago

check wrist for watch: https://github.com/galister/wlx-overlay-s?tab=readme-ov-file#the-watch

or double-tap b or y on left controller

mnjm97 commented 2 months ago

oh, I don't have a watch or controllers. just keyboard, mouse and xreal glasses.

galister commented 2 months ago

not sure if it'll be much value for you, then. when i tried with the xreal, i ended up just using my real monitor, since the glasses are transparent and all.

mnjm97 commented 2 months ago

ah, so sorry. I misunderstood what this was for. I thought that it would project my desktop into the glasses in a vr environment.

galister commented 2 months ago

ironically the best experience i had with the xreal was plugging it in and using as a monitor. the fov is sadly way too small for practical vr use. but you can try run vrchat on it or such.

mnjm97 commented 2 months ago

nah, not really that into the vr stuff. I was mostly looking for a gimicky desktop.