vkdt on ubuntu 22.10 with 2x Geforce GTX 1080i: "no WSI support "

Greetings,

just read this fascinating article about vkdt on linux-community.de and as an ambitious “semi-pro photographer” who already uses darktable and rawtherapee (ART) I was eager to give vkdt a try :slight_smile:

→ Compiled it, but while running it it says always “[ERR] no WSI support on physical device”:

> ./vkdt -d all 
[gui] glfwGetVersionString() : 3.3.8 X11 GLX EGL OSMesa clock_gettime evdev shared
[gui] monitor [0] DP-0 at 0 0
[gui] vk extension required by GLFW:
[gui]   VK_KHR_surface
[gui]   VK_KHR_xcb_surface
[qvk] validation layer: Copying old device 0 into new device 0
[qvk] validation layer: Copying old device 1 into new device 1
[qvk] validation layer: Copying old device 2 into new device 2
[qvk] validation layer: Copying old device 0 into new device 0
[qvk] validation layer: Copying old device 1 into new device 1
[qvk] validation layer: Copying old device 2 into new device 2
[qvk] validation layer: Copying old device 0 into new device 0
[qvk] validation layer: Copying old device 1 into new device 1
[qvk] validation layer: Copying old device 2 into new device 2
[qvk] dev 0: vendorid 0x10de
[qvk] dev 0: NVIDIA GeForce GTX 1080 Ti
[qvk] max number of allocations -1
[qvk] max image allocation size 32768 x 32768
[qvk] max uniform buffer range 65536
[qvk] dev 1: vendorid 0x10de
[qvk] dev 1: NVIDIA GeForce GTX 1080 Ti
[qvk] max number of allocations -1
[qvk] max image allocation size 32768 x 32768
[qvk] max uniform buffer range 65536
[qvk] dev 2: vendorid 0x10005
[qvk] dev 2: llvmpipe (LLVM 15.0.2, 256 bits)
[qvk] max number of allocations -1
[qvk] max image allocation size 16384 x 16384
[qvk] max uniform buffer range 65536
[qvk] num queue families: 3
[qvk] picked device 1 without ray tracing and with float atomics support
[qvk] validation layer: Loading layer library libVkLayer_MESA_device_select.so
[ERR] no WSI support on physical device
[ERR] failed to init gui/swapchain

I already tried pinning the NVIDIA in “~/.config/vkdt/config.rc”:

strqvk/device_name:NVIDIA GeForce GTX 1080 Ti

No sucess :frowning:

Also tried the .deb binaries: same behaviour.

I am Running X11 with NVIDIA driver 525.89.02.

Vulkaninfo says

> vulkaninfo --summary
==========
VULKANINFO
==========

Vulkan Instance Version: 1.3.224


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_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_portability_enumeration         : 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 = 8
--------------------------
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
VK_LAYER_NV_optimus               NVIDIA Optimus layer         1.3.224  version 1
VK_LAYER_VALVE_steam_fossilize_32 Steam Pipeline Caching Layer 1.3.207  version 1
VK_LAYER_VALVE_steam_fossilize_64 Steam Pipeline Caching Layer 1.3.207  version 1
VK_LAYER_VALVE_steam_overlay_32   Steam Overlay Layer          1.3.207  version 1
VK_LAYER_VALVE_steam_overlay_64   Steam Overlay Layer          1.3.207  version 1

Devices:
========
GPU0:
        apiVersion         = 4206816 (1.3.224)
        driverVersion      = 2203467904 (0x83564080)
        vendorID           = 0x10de
        deviceID           = 0x1b06
        deviceType         = PHYSICAL_DEVICE_TYPE_DISCRETE_GPU
        deviceName         = NVIDIA GeForce GTX 1080 Ti
        driverID           = DRIVER_ID_NVIDIA_PROPRIETARY
        driverName         = NVIDIA
        driverInfo         = 525.89.02
        conformanceVersion = 1.3.3.1
        deviceUUID         = 5892061c-932d-d4da-5a51-0651e2c9f363
        driverUUID         = 5f84013f-2322-5221-9dc0-81d43e19382b
GPU1:
        apiVersion         = 4206816 (1.3.224)
        driverVersion      = 2203467904 (0x83564080)
        vendorID           = 0x10de
        deviceID           = 0x1b06
        deviceType         = PHYSICAL_DEVICE_TYPE_DISCRETE_GPU
        deviceName         = NVIDIA GeForce GTX 1080 Ti
        driverID           = DRIVER_ID_NVIDIA_PROPRIETARY
        driverName         = NVIDIA
        driverInfo         = 525.89.02
        conformanceVersion = 1.3.3.1
        deviceUUID         = e4223ba7-cf8f-cbf4-1e44-61d01c3ff577
        driverUUID         = 5f84013f-2322-5221-9dc0-81d43e19382b
GPU2:
        apiVersion         = 4206816 (1.3.224)
        driverVersion      = 1 (0x0001)
        vendorID           = 0x10005
        deviceID           = 0x0000
        deviceType         = PHYSICAL_DEVICE_TYPE_CPU
        deviceName         = llvmpipe (LLVM 15.0.2, 256 bits)
        driverID           = DRIVER_ID_MESA_LLVMPIPE
        driverName         = llvmpipe
        driverInfo         = Mesa 22.2.5 (LLVM 15.0.2)
        conformanceVersion = 1.3.1.1
        deviceUUID         = 6d657361-3232-2e32-2e35-000000000000
        driverUUID         = 6c6c766d-7069-7065-5555-494400000000

Any ideas why it fails on WSI support?

Best regards,
Helmut

heya, did you try to set ‘device_id’ instead of ‘device_name’? since you have two identical cards the name check will pick one more or less at random but you need the one with the display cable…

Hi,

Good point,

but in “vulkaninfo” output both NVIDIA GPUs (GPU0 and GPU1) were listed with the exactly same id “0x1b06”.

→ Anyway, tried forcing the id with:

strqvk/device_id:0x1b06

No success :frowning:

Maybe I am using the wrong GPU ID?

Regards,
Helmut

yes use the id as vkdt counts in the log, 0 1 2 etc… sorry on mobile scrolling here is hard… iirc it selects 1 and the other was 0.

Thank you,

yes, you were right, it selected always id “1”.
But it seems to ignore the “device_id” parameters in .config.

I ended up hardcoding

 gpu_id = 0;

in gui.c just before calling “qvk_init()”

And now it works :-)))

(Sorry for the poor hack: it was a loooong time since I last edited something in a sourcecode :wink: )

Anyway, First Impression:
Wow! The speed of the GPU-Rendering is absolute impressive! Editing a 45MP Raw File never went so smooth! Ok, the GUI is some kind of "puristic, but this project has definitely potential!

Will evaluate it further the next days!

Thanks for your help to get it started :slight_smile:

Helmut

2 Likes

do you still have the gpu device_name in the config file? i think it takes precedence over the device_id. i would really like this to work because it seems a requirement to getting stuff working at all.

btw i did try to autodetect the cable state thing… but it was more than 5 lines of code because it seems this is only possible after constructing the whole device and then i got distracted. i think this would profit a lot from more robust autodetection though.

Hey,

Found it :slight_smile:

After first time running vkdt the .config file gets filled with some more data/value-pairs.

There I finally found my mistake:

I had to use

intqvk/device_id:0

but was using

strqvk/device_id:0

all the time.

Just use “intqvk/device_id:0” and it runs out of the box :slight_smile:

Regards,
Helmut

1 Like