Skip to content

Instantly share code, notes, and snippets.

@peppergrayxyz
Last active November 10, 2025 16:06
Show Gist options
  • Save peppergrayxyz/fdc9042760273d137dddd3e97034385f to your computer and use it in GitHub Desktop.
Save peppergrayxyz/fdc9042760273d137dddd3e97034385f to your computer and use it in GitHub Desktop.
QEMU with VirtIO GPU Vulkan Support

QEMU with VirtIO GPU Vulkan Support

With its latest reales qemu added the Venus patches so that virtio-gpu now support venus encapsulation for vulkan. This is one more piece to the puzzle towards full Vulkan support.

An outdated blog post on clollabora described in 2021 how to enable 3D acceleration of Vulkan applications in QEMU through the Venus experimental Vulkan driver for VirtIO-GPU with a local development environment. Following up on the outdated write up, this is how its done today.

Definitions

Let's start with the brief description of the projects mentioned in the post & extend them:

  • QEMU is a machine emulator
  • VirGL is an OpenGL driver for VirtIO-GPU, available in Mesa.
  • Venus is an experimental Vulkan driver for VirtIO-GPU, also available in Mesa.
  • Virglrenderer is a library that enables hardware acceleration to VM guests, effectively translating commands from the two drivers just mentioned to either OpenGL or Vulkan.
  • libvirt is an API for managing platform virtualization
  • virt-manager is a desktop user interface for managing virtual machines through libvirt

Merged Patches:

Work in progress:

Prerequisites

Make sure you have the proper version installed on the host:

  • linux kernel >= 6.13 built with CONFIG_UDMABUF
  • working Vulkan and kvm setup
  • qemu >= 9.2.0
  • virglrenderer with enabled venus support
  • mesa >= 24.2.0

You can verify this like so:

$ uname -r
6.13.0
$ ls /dev/udmabuf
/dev/udmabuf
$ ls /dev/kvm
/dev/kvm
$ qemu-system-x86_64 --version
QEMU emulator version 9.2.0
Copyright (c) 2003-2024 Fabrice Bellard and the QEMU Project developers

Check your distros package sources how they build virglrenderer.

For Vulkan to work you need the proper drivers to be installed for your graphics card.

To verfiy your setup, install vulkan-tools. Make sure mesa >= 24.2.0 and test vkcube:

$ vulkaninfo --summary | grep driverInfo
	driverInfo         = Mesa 24.2.3-1ubuntu1
	driverInfo         = Mesa 24.2.3-1ubuntu1 (LLVM 19.1.0)
...
$ vkcube
Selected GPU x: ..., type: ...

Building qemu

If your distro doesn't (yet) ship and updated version of qemu, you can build it yourself from source:

wget https://download.qemu.org/qemu-9.2.0.tar.xz
tar xvJf qemu-9.2.0.tar.xz
cd qemu-9.2.0
mkdir build && cd build
../configure --target-list=x86_64-softmmu  \
  --enable-kvm                 \
  --enable-opengl              \
  --enable-virglrenderer       \
  --enable-gtk                 \
  --enable-sdl
make -j4

The configuration step will throgh errors if packages are missing. Check the qemu wiki for further info what to install: https://wiki.qemu.org/Hosts/Linux

Create and run an image for QEMU

Create an image & fetch the distro of your choice:

Host

ISO=ubuntu-24.10-desktop-amd64.iso  
wget https://releases.ubuntu.com/oracular/ubuntu-24.10-desktop-amd64.iso  

IMG=ubuntu-24-10.qcow2
qemu-img create -f qcow2 $IMG 16G

Run a live version or install the distro

qemu-system-x86_64                                               \
    -enable-kvm                                                  \
    -M q35                                                       \
    -smp 4                                                       \
    -m 4G                                                        \
    -cpu host                                                    \
    -net nic,model=virtio                                        \
    -net user,hostfwd=tcp::2222-:22                              \
    -device virtio-vga-gl,hostmem=4G,blob=true,venus=true        \
    -vga none                                                    \
    -display gtk,gl=on,show-cursor=on                            \
    -usb -device usb-tablet                                      \
    -object memory-backend-memfd,id=mem1,size=4G                 \
    -machine memory-backend=mem1                                 \
    -hda $IMG                                                    \
    -cdrom $ISO                                                  

Adjust the parameters accordingly:

  • smp: number of cpu cores
  • m: RAM
  • hostmem,size: VRAM

Guest

Install mesa-utilites and vulkan-tools to test the setup:

$ glxinfo -B
$ vkcube
Selected GPU x: ..., type: ...

If the deive is llvmpipe somehting is wrong. The device should be virgl (...).

Troubleshooting

  • (host) add -d guest_errors to show error messages from the guest
  • (guest) try installing vulkan virtio drivers and mesa
  • check the original blog post

Ubuntu 24.10

This is how you do it on Ubuntu

kernel

Install mainline: https://github.com/bkw777/mainline

sudo add-apt-repository ppa:cappelikan/ppa
sudo apt update
sudo apt install mainline

find the latest kernel (>= 6.13), at the time of writing 6.13 is a release candidate, so include those:

$ mainline check --include-rc

Install kernel:

$ sudo mainline install 6.13-rc1

Verfify installed kernels:

$ mainline list-installed
mainline 1.4.10
Installed Kernels:
linux-image-6.11.0-13-generic
linux-image-generic-hwe-24.04
linux-image-unsigned-6.13.0-061300rc1-generic
mainline: done

reboot into new kernel

verify running kernel

$ uname -r
6.13.0-061300rc1-generic

virglrenderer

the ubuntu package is not compiled with the proper flags.

If installed remove it: $ sudo apt-get remove libvirglrenderer-dev

download, build & install from source with venus enabled

wget    https://gitlab.freedesktop.org/virgl/virglrenderer/-/archive/1.1.0/virglrenderer-1.1.0.tar.gz
sudo apt-get install python3-full ninja-build libvulkan-dev libva-dev
python3 -m venv venv
venv/bin/pip install meson
venv/bin/meson build -Dvideo=true -Dvenus=true
ninja -C build
ninja install

qemu

install qemu >= 9.2.0, at the time of writing ubuntu has not yet packaged it

Install build depdencies: https://wiki.qemu.org/Hosts/Linux

sudo apt-get install build-essential pip libslirp-dev slirp
sudo apt-get install git libglib2.0-dev libfdt-dev libpixman-1-dev zlib1g-dev ninja-build
sudo apt-get install git-email
sudo apt-get install libaio-dev libbluetooth-dev libcapstone-dev libbrlapi-dev libbz2-dev
sudo apt-get install libcap-ng-dev libcurl4-gnutls-dev libgtk-3-dev
sudo apt-get install libibverbs-dev libjpeg8-dev libncurses5-dev libnuma-dev
sudo apt-get install librbd-dev librdmacm-dev
sudo apt-get install libsasl2-dev libsdl2-dev libseccomp-dev libsnappy-dev libssh-dev
sudo apt-get install libvde-dev libvdeplug-dev libvte-2.91-dev libxen-dev liblzo2-dev
sudo apt-get install valgrind xfslibs-dev 
sudo apt-get install libnfs-dev libiscsi-dev

build and run as described

virt-manager

-- work in progress --

Currently this is work in progress, so there is no option to add vulkan support in virt-manager. There are no fields to configure this. Also xml doesnt work, because libvirt doesn't know about these options either, so xml validation fails. There is however an option for QEMU command-line passthrough which bypasses the validation.

If you setup a default machine with 4G of memory, you can do this:

  <qemu:commandline>
    <qemu:arg value="-device"/>
    <qemu:arg value="virtio-vga-gl,hostmem=4G,blob=true,venus=true"/>
    <qemu:arg value="-object"/>
    <qemu:arg value="memory-backend-memfd,id=mem1,size=4G"/>
    <qemu:arg value="-machine"/>
    <qemu:arg value="memory-backend=mem1"/>
    <qemu:arg value="-vga"/>
    <qemu:arg value="none"/>
  </qemu:commandline>

Which gives this error:

qemu-system-x86_64: virgl could not be initialized: -1

Changing the number from 4G to 4194304k (same as memory) leds to this error:

qemu-system-x86_64: Spice: ../spice-0.15.2/server/red-qxl.cpp:435:spice_qxl_gl_scanout: condition `qxl_state->gl_draw_cookie == GL_DRAW_COOKIE_INVALID' failed

to be further investigated.

@zzyiwei
Copy link

zzyiwei commented Aug 15, 2025

The culprit is https://lore.kernel.org/all/[email protected]/, which falsely validates the host visible region length before the struct being filled.

Upstream revert is in progress (in linux-next already): https://lore.kernel.org/all/[email protected]/

6.17-rc4 pull has picked up the revert: https://lore.kernel.org/all/[email protected]/

6.16.5-rc1 picks it: https://lore.kernel.org/all/[email protected]/

6.16.5 has the revert: https://lore.kernel.org/all/2025090457-unsubtle-pulverize-1855@gregkh/

@nuqleo
Copy link

nuqleo commented Sep 1, 2025

Works again with 6.17.0-0.rc4.

@zzyiwei
Copy link

zzyiwei commented Sep 3, 2025

Recently there was a report for venus not working on Nvidia Tesla P4 (NVIDIA Driver Version: 570.133.20 (Tesla P4)), and we've bottomed out the issue being the Nvidia proprietary driver not supporting Vulkan icd preloading (Zygote). The trigger could be bits established between NV's instance creation and the out-of-process runtime (e.g. nvidia-smi), or less likely being a Tesla P4 special case.

Anyway. the virglrenderer side fix has landed a week ago. In case you need it before the distro has picked it up: https://gitlab.freedesktop.org/virgl/virglrenderer/-/merge_requests/1557

Ps: all infos about the 6.16 kernel regression have been updated in-place in the previous comment.

@fzadikian
Copy link

fzadikian commented Sep 15, 2025

Hello, does it happen to anybody that venus through X11 is extremely slow (kinda fixes itself if I hover the mouse over the vkgears window) while it's buttery smooth when native wayland? I also tried using venus_implicit_fencing=true but it didn't really improve things. I'm on virglrenderer 1.2.0, qemu 10.0.4 and linux 6.14. Using NVIDIA driver 580.82.07 in host and Mesa driver 25.2.2 in guest.

For example, on vkcube, xcb and xlib wsi options render extremely slowly, while wayland option is smooth.

@fzadikian
Copy link

fzadikian commented Sep 20, 2025

I installed Artix (Arch-based) both as host and guest, host with NVIDIA and guest with mesa. Still, I notice the same symptoms: screencast.webm. Apparently the problem with vkgears also happens in the host, so maybe ignore that.
This is the command I use to launch qemu:

export PULSE_SERVER=unix:/run/user/1000/pulse/native
export SDL_AUDIODRIVER=pulseaudio
export SDL_VIDEODRIVER=wayland
sudo -E /usr/bin/qemu-system-x86_64 \
-drive if=pflash,format=raw,readonly=on,file=/usr/share/OVMF/x64/OVMF_CODE.4m.fd \
-drive if=pflash,format=raw,file=/usr/share/OVMF/x64/OVMF_VARS.4m.fd \
-hda /home/fran/Downloads/artix.qcow2 \
-cdrom /home/fran/Downloads/artix-plasma-openrc-20250915-x86_64.iso \
-machine q35 -enable-kvm -daemonize \
-smp 16,sockets=1,cores=16,maxcpus=16 -cpu host,+kvm_pv_eoi,+kvm_pv_unhalt \
-m 16384 -rtc base=localtime \
-device usb-ehci,id=ehci \
-device usb-tablet,id=tablet,bus=ehci.0,port=1 \
-chardev socket,path=/var/lib/qemu-ga.sock,server=on,wait=off,id=qga0 \
-device virtio-serial,id=qga0,bus=pcie.0,addr=0x8 \
-device virtserialport,chardev=qga0,name=org.qemu.guest_agent.0 \
-vga none -device virtio-vga-gl,hostmem=8G,blob=true,venus=true -display sdl,gl=on,window-close=off \
-audio sdl,model=virtio

Could this be a regression of some kind, maybe within the NVIDIA 580 branch, @zzyiwei? Thanks in advance.

@myrslint
Copy link

Could this be a regression of some kind, maybe within the NVIDIA 580 branch, @zzyiwei? Thanks in advance.

If you have not patched the kernel on the host as indicated above I'm surprised Vulkan test applications (vkcube and vkgears) are showing you anything at all with an NVIDIA card.

@fzadikian
Copy link

fzadikian commented Sep 20, 2025

If you have not patched the kernel on the host as indicated above I'm surprised Vulkan test applications (vkcube and vkgears) are showing you anything at all with an NVIDIA card.

@myrslint On kernel 6.16.7? I undestood that it was reverted on 6.16.5. Maybe I wasn't clear, now I've changed my host. Now I am on these versions: virglrenderer 1.2.0, qemu 10.1.0, linux 6.16.5, NVIDIA driver 580.82.09. My guest is still on mesa 25.2.2.

@myrslint
Copy link

If you have not patched the kernel on the host as indicated above I'm surprised Vulkan test applications (vkcube and vkgears) are showing you anything at all with an NVIDIA card.

@myrslint On kernel 6.16.7? I undestood that it was reverted on 6.16.5. Maybe I wasn't clear, now I've changed my host. Now I am on these versions: virglrenderer 1.2.0, qemu 10.1.0, linux 6.16.5, NVIDIA driver 580.82.09. My guest is still on mesa 25.2.2.

I watched your screen recording now and realized you have an AMD CPU. That should not require the kernel patch I mentioned. Apologies for the incorrect information I provided earlier.

@zzyiwei
Copy link

zzyiwei commented Sep 21, 2025

I installed Artix (Arch-based) both as host and guest, host with NVIDIA and guest with mesa. Still, I notice the same symptoms: screencast.webm. Apparently the problem with vkgears also happens in the host, so maybe ignore that. This is the command I use to launch qemu: ...

@fzadikian Hi, I'm unable to repro locally, but I don't have a NV gpu either. However, from your linked video + the fact that wsi via wayland works while not with x11, it looks to me that your desktop environment has a low refresh rate cap for some reason.

Something to try:

  1. different external monitors
  2. use gtk display instead of sdl (though prior comments said it didn't work on NV)
  3. rolling back host nv driver

@adokacey
Copy link

adokacey commented Sep 22, 2025

I need help!

Host CPU: Ryzen 7 2700

Host Graphics Card: GeForce RTX 2060 Super 8GB

Host Graphics Driver: nvidia-open-driver-G06-signed-kmp-default-580.82.07_k6.16.7_1-2.1
(At some point I've removed this driver and tried enabling Venus with Nouveau too)

Host OS: OpenSUSE Tumbleweed with KDE (Wayland)
(I've installed the "KVM/QEMU/libvirt/virt-manager" stack by enabling "KVM server" and "KVM tools" via YasT Control Center.)

Guest OS: CachyOS with KDE and systemd-boot


What happened:

  1. I've managed to enable & run "Virtio-GPU + Virgl" successfully.
  2. I've been trying to enable & run "Virtio-GPU + Venus" for the past week. I've tried so many different things but the result is always same: Guest hangs at " :: Triggering uevents..." line. With "blob=false,venus=false" it'll boot properly. When I enable blob and venus " :: Triggering uevents..." problem starts.

Important bits from logs:
I got this from host /var/log/libvirt/qemu/.log
virgl could not be initialized: -1

I got this from guest via virsh console
[20.165762] [drm:virtio_gpu_init [virtio_gpu]] *ERROR* timed out waiting for cap set 0

I got this from host /var/log/virgl_test_server.log
pci id for fd 13: 10de:1f06, driver (null)
kmsro: driver missing


Important parts from XML:

<memoryBacking>
  <source type="memfd"/>
  <access mode="shared"/>
</memoryBacking>

<graphics type="spice">
  <listen type="none"/>
  <image compression="off"/>
  <gl enable="no"/>
</graphics>

<graphics type="egl-headless">
  <gl rendernode="/dev/dri/renderD128"/>
</graphics>

<video>
  <model type="none"/>
</video>

<qemu:commandline>
  <qemu:arg value="-device"/>
  <qemu:arg value="virtio-vga-gl,hostmem=4G,blob=true,venus=true"/>
</qemu:commandline>

@myrslint
Copy link

What is the Mesa version on your host?

This message:

pci id for fd 13: 10de:1f06, driver (null)
kmsro: driver missing

And subsequent failure of some Vulkan test apps e.g., vkgears, was present with closed NVIDIA proprietary driver up to 580.82.07 and Mesa up to 25.2.2. I reported it here at FDO's GitLab but received no feedback.

As of closed NVIDIA proprietary driver 580.82.09 and Mesa 25.2.3, on Arch Linux, with GTX 1060, the problem no longer appears and vkgears seems to run normally again.

For a test you can run QEMU from the command line and see if anything differs. A command line similar to the following might be useful:

qemu-system-x86_64 -cpu host -smp 8 -m 16G -enable-kvm -vga none -device virtio-vga-gl,hostmem=8G,blob=true,venus=true -display gtk,gl=es -object memory-backend-memfd,id=vm_mem,size=16G,share=on -machine q35,memory-backend=vm_mem -drive file=vm.qcow2,format=qcow2 -usb -device usb-tablet -netdev user,id=vm_net -device virtio-net,netdev=vm_net -drive if=pflash,format=raw,readonly=on,file=/usr/share/edk2-ovmf/x64/OVMF_CODE.4m.fd -drive if=pflash,format=raw,file=vm.OVMF_VARS.4m.fd -device virtio-sound-pci,audiodev=snd0 -audiodev pipewire,id=snd0

You can adjust the switches to your needs, of course. For example, the VM disk image might have a different name and/or be located elsewhere in the filesystem.

@adokacey
Copy link

Both vkcube and vkgears work on my host. Also:

vulkaninfo --summary | grep driverInfo
driverInfo = 580.82.07
driverInfo = Mesa 25.2.2 (LLVM 21.1.0)

@fzadikian
Copy link

fzadikian commented Sep 22, 2025

Hi, I'm unable to repro locally, but I don't have a NV gpu either. However, from your linked video + the fact that wsi via wayland works while not with x11, it looks to me that your desktop environment has a low refresh rate cap for some reason.

Something to try:

1. different external monitors

2. use gtk display instead of sdl (though prior comments said it didn't work on NV)

3. rolling back host nv driver

@zzyiwei Wow, I downgraded from 580.82.07 to 570.172.08 on my Debian host and all problems went away. 580.82.09 was also trouble on Arch host. For me at least, 580 branch regressions are not over. Not sure how to take this up with upstream, but I'm happy it even works. Thanks!

PS: My virtual display is at 75hz, is there a way to modify this? (I have 180hz and 75hz monitors).

@adokacey
Copy link

adokacey commented Sep 22, 2025

This time I've started the VM directly with qemu by running this command:

sudo qemu-system-x86_64 \
  -name CachyOS \
  -cpu host \
  -smp 6 \
  -m 6G \
  -enable-kvm \
  -object memory-backend-memfd,id=vm_mem,size=6G,share=on \
  -machine pc-q35-10.0,memory-backend=vm_mem \
  -drive file=/var/lib/libvirt/images/CachyOS.1758453592,format=qcow2,if=virtio \
  -device virtio-serial-pci \
  -device qemu-xhci,id=xhci \
  -device usb-kbd,bus=xhci.0,port=1 \
  -device usb-tablet,bus=xhci.0,port=2 \
  -netdev user,id=vm_net -device virtio-net-pci,netdev=vm_net \
  -device virtio-vga-gl,hostmem=4G,blob=true,venus=true \
  -display egl-headless,rendernode=/dev/dri/renderD128 \
  -drive if=pflash,format=raw,readonly=on,file=/usr/share/qemu/ovmf-x86_64-code.bin \
  -drive if=pflash,format=raw,file=/var/lib/libvirt/qemu/nvram/CachyOS_VARS.fd \
  -monitor unix:/tmp/qemu-monitor.sock,server,nowait \
  -vga none

And I got this error:

pci id for fd 11: 10de:1f06, driver (null)
kmsro: driver missing

Also there was no GUI window.

Earlier I tried -display gtk,gl=es \ and got this error: qemu-system-x86_64: OpenGL is not supported by display backend 'gtk'

So I used -display egl-headless

qemu-system-x86_64 -display help prints this:

Available display backend types: 
none
gtk
egl-headless
curses
spice-app

@myrslint
Copy link

myrslint commented Sep 22, 2025

I assume you have the relevant virglrenderer package installed on your host OS (SuSE Tumbleweed).

That error message about the GTK UI not supporting OpenGL is a serious problem. Relevant OpenGL libraries should have been present at compile time when QEMU was packaged for your distro by its respective maintainers for them to be picked up by QEMU's build system and linked against for future use.

The egl-headless backend was recommended in the past for achieving hardware acceleration with QEMU on NVIDIA GPUs. That is no longer required. Even if Venus (Vulkan encapsulation) does not work you should at least be able to get GLES acceleration in the guest via virglrenderer.

It is worth taking a step back and seeing if you can get at least EGL/GLES acceleration in your guest. For a test, you can drop the Venus-related options and just run QEMU with GTK or SDL UI and run a test application such as eglgears_x11 or eglgears_wayland in your guest. Both the GTK and SDL UI should support the gl=es option. Otherwise, I think all bets are off regarding getting any hardware graphics acceleration for the guest out of QEMU, whether it's through VirGL or through Venus. When running eglgears you should be seeing the QEMU process as a Graphics type accelerated application in your GPU monitoring software (nvidia-smi or nvtop).

@adokacey
Copy link

I've installed QEMU by enabling "KVM server" and "KVM tools" options via YaST Control Center. I don't know what packages are installed exactly and how are these packages compiled by the maintainers.

I had to use egl-headless while enabling only VirGL too. I guess there is more problem with my setup. I don't know what to do. Do I need to compile these projects myself? Should I remove the current stuff?

I'm not a virtualization expert. I only know launching virt-manager app and going through "Create a new virtual machine" wizard. Also copy/pasting some XML stuff. But I want to enable Venus. What projects I should look into? How do I find the upstream, wiki, manual, reference etc.? Can you help me? I guess the freedesktop/mesa link you provided earlier is one of the important places.

@myrslint
Copy link

I've installed QEMU by enabling "KVM server" and "KVM tools" options via YaST Control Center. I don't know what packages are installed exactly and how are these packages compiled by the maintainers.

I had to use egl-headless while enabling only VirGL too. I guess there is more problem with my setup. I don't know what to do. Do I need to compile these projects myself? Should I remove the current stuff?

I'm not a virtualization expert. I only know launching virt-manager app and going through "Create a new virtual machine" wizard. Also copy/pasting some XML stuff. But I want to enable Venus. What projects I should look into? How do I find the upstream, wiki, manual, reference etc.? Can you help me? I guess the freedesktop/mesa link you provided earlier is one of the important places.

You will need a deeper familiarity with your Linux distribution. That can help with troubleshooting. I'm not familiar with SuSE enough to help with its package manager but a first place to look for help can be the resources listed on the sidebar of openSUSE subreddit. They list a support portal, user forums, and chat rooms.

In general, it may help with debugging QEMU/KVM if you start from a QEMU command line before bringing in more details via libvirt and virt-manager. Take a step-by-step approach and add the items you need to the command line one by one, ensuring each one works as expected before moving on to adding another one. This should tell you which feature is not working or is interacting poorly with other features.

That's as much advice as I can offer without more details on the software you are using.

@zhando
Copy link

zhando commented Sep 29, 2025

hello, this mailing list of sorts has been very helpful on my own qemu journey of trying out curated linux distros like omakub (ubuntu-based) and omarchy (arch linux based). Both of the preceding work very well with the configurations discussed here with my host system of an AMD Zen3 processor and nvidia 3060ti gpu card running under Arch Linux. Wasn't always that way though. Guest displays seemed a bit unstable and the quality lacked a bit. But I've returned to this recently with updated host kernel and nvidia drivers and things have improved enormously.

However, it just occurred to me that I can use these guest os configs as vpn clients so as not to interfere with a network app I run on my host. I thought the best way to go about this was to created a bridged network config on the host so the guest gets its own ip from the router. This seems to work just fine, to a point. I noticed that updating the os software on the guest over the bridged interface was dog slow, so slow as to be unusable. And YET, when I switched on the vpn, it was as quick as could be.

So vpn OFF, on the guest, youtube is unusable, software update unusable, smaller things are ok.. VPN ON, on the guest, everything good save for my local access (which is fixable I guess). Anyone have any ideas about this?

I'm using pretty well documented bridge configs for qemu like:

-netdev bridge,id=hn0                                       \
-device virtio-net-pci,netdev=hn0,id=nic1                   \

coupled with the qemu-bridge-helper.

@richardm1
Copy link

richardm1 commented Sep 29, 2025

-netdev bridge,id=hn0
-device virtio-net-pci,netdev=hn0,id=nic1 \

This comment is on a Windows-related thread but I've found these host offloads to be generally useful.

@zhando
Copy link

zhando commented Sep 29, 2025

This comment is on a Windows-related thread but I've found these host offloads to be generally useful.

I see the "bingo" moment in that thread but it's not clear to me what to do on both the host and guest sides. I don't use libvirt. I've seen vhost turned on for tap devices but I don't have an idea how to integrate vhost into my bridge config and configure vhost as described in lowjoel's comment.

@fzadikian
Copy link

Hello, does anybody know why performance under wine/dxvk is sluggish, while native vulkan is not? Is there something I'm missing?

@SpookySkeletons
Copy link

@fzadikian Using any special settings on anything in particular?

@fzadikian
Copy link

@SpookySkeletons Apart from being cursed by NVIDIA (as I've mentioned before), not really. I've tried both Lutris and Steam (proton).

@adokacey
Copy link

adokacey commented Oct 4, 2025

Hello all, I'm still trying to solve the problem. I'll provide the diagnostic info again.

CPU: Ryzen 7 2700
GPU: GeForce RTX 2060 Super 8 GB
Guest OS: CachyOS with KDE + Wayland
Host OS: OpenSUSE Tumbleweed with KDE + Wayland
Virtualization Stack: KVM / QEMU / libvirt / virt-manager installed via YaST Control Center by enabling "KVM server" and "KVM tools"

(Host) QEMU Version: 10.1.0-2.1
(Host) libvirglrenderer1: 1.1.1-1.1
(Host) Kernel Version: 6.17.0-1-default
(Host) GPU Driver Name & Version: nvidia-open-driver-G06-signed-kmp-default 580.95.05_k6.17.0_1-1.1

(Host) vulkaninfo --summary | grep driverInfo

driverInfo         = 580.95.05
driverInfo         = Mesa 25.2.4 (LLVM 21.1.2)

I'm starting the VM with this:

Problem 1: IF I TRY TO RUN THIS WITH sudo I GET THIS ERROR:
qemu-system-x86_64: OpenGL is not supported by display backend 'gtk'

SO THIS ONLY WORKS WITHOUT SUDO
By the way, both my login user and qemu user are already added to these groups: kvm, libvirt, render, video

/usr/bin/qemu-system-x86_64 \
-drive if=pflash,format=raw,readonly=on,file=/usr/share/qemu/ovmf-x86_64-code.bin \
-drive if=pflash,format=raw,file=/home/$USER/CachyOS_VARS.fd \
-drive file=/home/$USER/CachyOS-test.qcow2,if=virtio,format=qcow2 \
-machine pc-q35-10.0,memory-backend=vm_mem \
-enable-kvm \
-cpu host \
-smp 6,sockets=1,cores=6,maxcpus=6 \
-m 6G \
-object memory-backend-memfd,id=vm_mem,size=6G,share=on \
-device virtio-serial-pci \
-device qemu-xhci,id=xhci \
-device usb-kbd,bus=xhci.0,port=1 \
-device usb-tablet,bus=xhci.0,port=2 \
-netdev user,id=vm_net \
-device virtio-net-pci,netdev=vm_net \
-vga none \
-device virtio-vga-gl,hostmem=4G,blob=true,venus=true \
-display gtk,gl=on

Problem 2: Inside the guest when I try to run vkcube I get this output:

Selected WSI platform: wayland
Cannot find a compatible Vulkan installable client driver (ICD).
Please look at the Getting Started guide for additional information.

Problem 2a: Again, inside the guest when I try to run vulkaninfo --summary | grep driverInfo I get this output:

WARNING: [Loader Message] Code : terminator_CreateInstance: 
Received return code -6 from call to vkCreateInstance in ICD /usr/lib/libvulkan_virtio.so. Skipping this driver. 
ERROR: [Loader Message] Code : terminator_CreateInstance: Found no drivers! Cannot create Vulkan instance. 
This problem is often caused by a faulty installation of the Vulkan driver 
or attempting to use a GPU that does not support Vulkan.
ERROR at /usr/src/debug/vulkan-tools/Vulkan-Tools/vulkaninfo/./vulkaninfo.h:573:vkCreateInstance failed with 
ERROR INCOMPATIBLE_DRIVER

@myrslint
Copy link

myrslint commented Oct 5, 2025

Do you have Xwayland disabled on your host KDE, @adokacey?

@adokacey
Copy link

adokacey commented Oct 5, 2025

I solved "Problem 1" by using sudo -E instead of sudo.

Unfortunately "Problem 2" and "Problem 2a" are still continuing.

@myrslint both xwayland and xwaylandvideobridge are installed and running on the host.

@myrslint
Copy link

myrslint commented Oct 5, 2025

It is not a good idea to run QEMU with sudo, as root.

About the presence of Xwayland, I asked the question because I had only seen vulkaninfo fail with that error in the guest when the host had Xwayland disabled. It seems Venus can only use Xlib or XCB WSI on the host.

@adokacey
Copy link

adokacey commented Oct 5, 2025

I tried running these inside guest:
vkcube --wsi wayland
vkcube --wsi xcb
vkcube --wsi xlib

all are printing this same error:

Cannot find a compatible Vulkan installable client driver (ICD).
Please look at the Getting Started guide for additional information.

Also I've tried running vkgears too which is showing this output:
Failed to create Vulkan instance.

Only glxgears works inside the guest.

@adokacey
Copy link

I have tried everything. Even the chatbot got baffled:

I am going to be very direct. You have done everything perfectly. The commands you are running are correct. 
The host configuration is now immaculate—drivers are clean, permissions are set, IOMMU is configured, 
security policies are disabled.

The fact that you still see ERROR_INCOMPATIBLE_DRIVER means we have exhausted every possible configuration error.

I've completely uninstalled nvidia drivers and reinstalled. I've changed nvidia repo too. (It was wrongfully MicroOS before switched to Tumbleweed now).

I've disabled SELinux with sudo setenforce 0

I gave my user all the permissions: sudo setfacl -m u:$USER:rw /dev/dri/renderD128 /dev/nvidia0 /dev/nvidiactl /dev/nvidia-modeset /dev/null /dev/full /dev/zero /dev/random /dev/urandom /dev/ptmx /dev/kvm

Added my user to all relevant groups: kvm, render, video etc.

I'm running qemu with this command:

qemu-system-x86_64 \
  -enable-kvm \
  -m 8G \
  -cpu host \
  -smp 4 \
  -vga none \
  -device virtio-vga-gl,blob=true,venus=true,hostmem=4G \
  -display gtk,gl=on \
  -drive if=pflash,format=raw,readonly=on,file=/usr/share/qemu/ovmf-x86_64-code.bin \
  -drive if=pflash,format=raw,file=/home/$USER/ovmf-x86_64-vars.bin \
  -device virtio-net-pci,netdev=net0 \
  -netdev user,id=net0 \
  -device virtio-blk-pci,drive=disk0 \
  -drive if=none,id=disk0,format=qcow2,file=/home/$USER/test1.qcow2 \
  -device virtio-scsi-pci,id=scsi0 \
  -device virtio-mouse-pci \
  -device virtio-keyboard-pci

And I still get these same errors inside guest:

vkcube
Selected WSI platform: wayland
Cannot find a compatible Vulkan installable client driver (ICD).

Please look at the Getting Started guide for additional information.
vulkaninfo
WARNING: [Loader Message] Code 0 : terminator_CreateInstance: Received return code -6 from call to vkCreateInstance in ICD /usr/lib/libvulkan_virtio.so. Skipping this driver.
ERROR: [Loader Message] Code 0 : terminator_CreateInstance: Found no drivers!
Cannot create Vulkan instance.
This problem is often caused by a faulty installation of the Vulkan driver or attempting to use a GPU that does not support Vulkan.
ERROR at /usr/src/debug/vulkan-tools/Vulkan-Tools/vulkaninfo/./vulkaninfo.h:573:vkCreateInstance failed with ERROR_INCOMPATIBLE_DRIVER
VK_LOADER_DEBUG=all vulkaninfo
[Vulkan Loader] INFO:           Vulkan Loader Version 1.4.328
[Vulkan Loader] INFO:           No valid vk_loader_settings.json file found, no loader settings will be active
[Vulkan Loader] LAYER:          Searching for implicit layer manifest files
[Vulkan Loader] LAYER:             In following locations:
[Vulkan Loader] LAYER:                /home/$USER/.config/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:                /home/$USER/.config/kdedefaults/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:                /etc/xdg/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:                /etc/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:                /home/$USER/.local/share/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:                /usr/local/share/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:                /usr/share/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:             Found the following files:
[Vulkan Loader] LAYER:                /usr/share/vulkan/implicit_layer.d/VkLayer_MESA_device_select.json
[Vulkan Loader] INFO:           Found manifest file /usr/share/vulkan/implicit_layer.d/VkLayer_MESA_device_select.json (file version 1.0.0)
[Vulkan Loader] INFO:           No valid vk_loader_settings.json file found, no loader settings will be active
[Vulkan Loader] LAYER:          Searching for implicit layer manifest files
[Vulkan Loader] LAYER:             In following locations:
[Vulkan Loader] LAYER:                /home/$USER/.config/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:                /home/$USER/.config/kdedefaults/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:                /etc/xdg/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:                /etc/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:                /home/$USER/.local/share/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:                /usr/local/share/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:                /usr/share/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:             Found the following files:
[Vulkan Loader] LAYER:                /usr/share/vulkan/implicit_layer.d/VkLayer_MESA_device_select.json
[Vulkan Loader] INFO:           Found manifest file /usr/share/vulkan/implicit_layer.d/VkLayer_MESA_device_select.json (file version 1.0.0)
[Vulkan Loader] LAYER:          Searching for implicit layer manifest files
[Vulkan Loader] LAYER:             In following locations:
[Vulkan Loader] LAYER:                /home/$USER/.config/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:                /home/$USER/.config/kdedefaults/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:                /etc/xdg/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:                /etc/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:                /home/$USER/.local/share/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:                /usr/local/share/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:                /usr/share/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:             Found the following files:
[Vulkan Loader] LAYER:                /usr/share/vulkan/implicit_layer.d/VkLayer_MESA_device_select.json
[Vulkan Loader] INFO:           Found manifest file /usr/share/vulkan/implicit_layer.d/VkLayer_MESA_device_select.json (file version 1.0.0)
[Vulkan Loader] LAYER:          Searching for explicit layer manifest files
[Vulkan Loader] LAYER:             In following locations:
[Vulkan Loader] LAYER:                /home/$USER/.config/vulkan/explicit_layer.d
[Vulkan Loader] LAYER:                /home/$USER/.config/kdedefaults/vulkan/explicit_layer.d
[Vulkan Loader] LAYER:                /etc/xdg/vulkan/explicit_layer.d
[Vulkan Loader] LAYER:                /etc/vulkan/explicit_layer.d
[Vulkan Loader] LAYER:                /home/$USER/.local/share/vulkan/explicit_layer.d
[Vulkan Loader] LAYER:                /usr/local/share/vulkan/explicit_layer.d
[Vulkan Loader] LAYER:                /usr/share/vulkan/explicit_layer.d
[Vulkan Loader] LAYER:             Found no files
[Vulkan Loader] INFO:           No valid vk_loader_settings.json file found, no loader settings will be active
[Vulkan Loader] LAYER:          Searching for implicit layer manifest files
[Vulkan Loader] LAYER:             In following locations:
[Vulkan Loader] LAYER:                /home/$USER/.config/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:                /home/$USER/.config/kdedefaults/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:                /etc/xdg/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:                /etc/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:                /home/$USER/.local/share/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:                /usr/local/share/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:                /usr/share/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:             Found the following files:
[Vulkan Loader] LAYER:                /usr/share/vulkan/implicit_layer.d/VkLayer_MESA_device_select.json
[Vulkan Loader] INFO:           Found manifest file /usr/share/vulkan/implicit_layer.d/VkLayer_MESA_device_select.json (file version 1.0.0)
[Vulkan Loader] LAYER:          Searching for implicit layer manifest files
[Vulkan Loader] LAYER:             In following locations:
[Vulkan Loader] LAYER:                /home/$USER/.config/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:                /home/$USER/.config/kdedefaults/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:                /etc/xdg/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:                /etc/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:                /home/$USER/.local/share/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:                /usr/local/share/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:                /usr/share/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:             Found the following files:
[Vulkan Loader] LAYER:                /usr/share/vulkan/implicit_layer.d/VkLayer_MESA_device_select.json
[Vulkan Loader] INFO:           Found manifest file /usr/share/vulkan/implicit_layer.d/VkLayer_MESA_device_select.json (file version 1.0.0)
[Vulkan Loader] LAYER:          Searching for explicit layer manifest files
[Vulkan Loader] LAYER:             In following locations:
[Vulkan Loader] LAYER:                /home/$USER/.config/vulkan/explicit_layer.d
[Vulkan Loader] LAYER:                /home/$USER/.config/kdedefaults/vulkan/explicit_layer.d
[Vulkan Loader] LAYER:                /etc/xdg/vulkan/explicit_layer.d
[Vulkan Loader] LAYER:                /etc/vulkan/explicit_layer.d
[Vulkan Loader] LAYER:                /home/$USER/.local/share/vulkan/explicit_layer.d
[Vulkan Loader] LAYER:                /usr/local/share/vulkan/explicit_layer.d
[Vulkan Loader] LAYER:                /usr/share/vulkan/explicit_layer.d
[Vulkan Loader] LAYER:             Found no files
[Vulkan Loader] INFO:           No valid vk_loader_settings.json file found, no loader settings will be active
[Vulkan Loader] LAYER:          Searching for implicit layer manifest files
[Vulkan Loader] LAYER:             In following locations:
[Vulkan Loader] LAYER:                /home/$USER/.config/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:                /home/$USER/.config/kdedefaults/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:                /etc/xdg/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:                /etc/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:                /home/$USER/.local/share/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:                /usr/local/share/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:                /usr/share/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:             Found the following files:
[Vulkan Loader] LAYER:                /usr/share/vulkan/implicit_layer.d/VkLayer_MESA_device_select.json
[Vulkan Loader] INFO:           Found manifest file /usr/share/vulkan/implicit_layer.d/VkLayer_MESA_device_select.json (file version 1.0.0)
[Vulkan Loader] DRIVER:         Searching for driver manifest files
[Vulkan Loader] DRIVER:            In following locations:
[Vulkan Loader] DRIVER:               /home/$USER/.config/vulkan/icd.d
[Vulkan Loader] DRIVER:               /home/$USER/.config/kdedefaults/vulkan/icd.d
[Vulkan Loader] DRIVER:               /etc/xdg/vulkan/icd.d
[Vulkan Loader] DRIVER:               /etc/vulkan/icd.d
[Vulkan Loader] DRIVER:               /home/$USER/.local/share/vulkan/icd.d
[Vulkan Loader] DRIVER:               /usr/local/share/vulkan/icd.d
[Vulkan Loader] DRIVER:               /usr/share/vulkan/icd.d
[Vulkan Loader] DRIVER:            Found the following files:
[Vulkan Loader] DRIVER:               /usr/share/vulkan/icd.d/virtio_icd.x86_64.json
[Vulkan Loader] DRIVER:         Found ICD manifest file /usr/share/vulkan/icd.d/virtio_icd.x86_64.json, version 1.0.1
[Vulkan Loader] DEBUG | DRIVER: Searching for ICD drivers named /usr/lib/libvulkan_virtio.so
[Vulkan Loader] DRIVER:         Searching for driver manifest files
[Vulkan Loader] DRIVER:            In following locations:
[Vulkan Loader] DRIVER:               /home/$USER/.config/vulkan/icd.d
[Vulkan Loader] DRIVER:               /home/$USER/.config/kdedefaults/vulkan/icd.d
[Vulkan Loader] DRIVER:               /etc/xdg/vulkan/icd.d
[Vulkan Loader] DRIVER:               /etc/vulkan/icd.d
[Vulkan Loader] DRIVER:               /home/$USER/.local/share/vulkan/icd.d
[Vulkan Loader] DRIVER:               /usr/local/share/vulkan/icd.d
[Vulkan Loader] DRIVER:               /usr/share/vulkan/icd.d
[Vulkan Loader] DRIVER:            Found the following files:
[Vulkan Loader] DRIVER:               /usr/share/vulkan/icd.d/virtio_icd.x86_64.json
[Vulkan Loader] DRIVER:         Found ICD manifest file /usr/share/vulkan/icd.d/virtio_icd.x86_64.json, version 1.0.1
[Vulkan Loader] DEBUG | DRIVER: Searching for ICD drivers named /usr/lib/libvulkan_virtio.so
[Vulkan Loader] LAYER:          Searching for implicit layer manifest files
[Vulkan Loader] LAYER:             In following locations:
[Vulkan Loader] LAYER:                /home/$USER/.config/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:                /home/$USER/.config/kdedefaults/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:                /etc/xdg/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:                /etc/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:                /home/$USER/.local/share/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:                /usr/local/share/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:                /usr/share/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:             Found the following files:
[Vulkan Loader] LAYER:                /usr/share/vulkan/implicit_layer.d/VkLayer_MESA_device_select.json
[Vulkan Loader] INFO:           Found manifest file /usr/share/vulkan/implicit_layer.d/VkLayer_MESA_device_select.json (file version 1.0.0)
[Vulkan Loader] INFO:           No valid vk_loader_settings.json file found, no loader settings will be active
[Vulkan Loader] INFO:           Portability enumeration bit was set, enumerating portability drivers.
[Vulkan Loader] LAYER:          Searching for implicit layer manifest files
[Vulkan Loader] LAYER:             In following locations:
[Vulkan Loader] LAYER:                /home/$USER/.config/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:                /home/$USER/.config/kdedefaults/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:                /etc/xdg/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:                /etc/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:                /home/$USER/.local/share/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:                /usr/local/share/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:                /usr/share/vulkan/implicit_layer.d
[Vulkan Loader] LAYER:             Found the following files:
[Vulkan Loader] LAYER:                /usr/share/vulkan/implicit_layer.d/VkLayer_MESA_device_select.json
[Vulkan Loader] INFO:           Found manifest file /usr/share/vulkan/implicit_layer.d/VkLayer_MESA_device_select.json (file version 1.0.0)
[Vulkan Loader] LAYER:          Searching for explicit layer manifest files
[Vulkan Loader] LAYER:             In following locations:
[Vulkan Loader] LAYER:                /home/$USER/.config/vulkan/explicit_layer.d
[Vulkan Loader] LAYER:                /home/$USER/.config/kdedefaults/vulkan/explicit_layer.d
[Vulkan Loader] LAYER:                /etc/xdg/vulkan/explicit_layer.d
[Vulkan Loader] LAYER:                /etc/vulkan/explicit_layer.d
[Vulkan Loader] LAYER:                /home/$USER/.local/share/vulkan/explicit_layer.d
[Vulkan Loader] LAYER:                /usr/local/share/vulkan/explicit_layer.d
[Vulkan Loader] LAYER:                /usr/share/vulkan/explicit_layer.d
[Vulkan Loader] LAYER:             Found no files
[Vulkan Loader] DRIVER:         Searching for driver manifest files
[Vulkan Loader] DRIVER:            In following locations:
[Vulkan Loader] DRIVER:               /home/$USER/.config/vulkan/icd.d
[Vulkan Loader] DRIVER:               /home/$USER/.config/kdedefaults/vulkan/icd.d
[Vulkan Loader] DRIVER:               /etc/xdg/vulkan/icd.d
[Vulkan Loader] DRIVER:               /etc/vulkan/icd.d
[Vulkan Loader] DRIVER:               /home/$USER/.local/share/vulkan/icd.d
[Vulkan Loader] DRIVER:               /usr/local/share/vulkan/icd.d
[Vulkan Loader] DRIVER:               /usr/share/vulkan/icd.d
[Vulkan Loader] DRIVER:            Found the following files:
[Vulkan Loader] DRIVER:               /usr/share/vulkan/icd.d/virtio_icd.x86_64.json
[Vulkan Loader] DRIVER:         Found ICD manifest file /usr/share/vulkan/icd.d/virtio_icd.x86_64.json, version 1.0.1
[Vulkan Loader] DEBUG | DRIVER: Searching for ICD drivers named /usr/lib/libvulkan_virtio.so
[Vulkan Loader] DEBUG | LAYER:  Loading layer library libVkLayer_MESA_device_select.so
[Vulkan Loader] INFO | LAYER:   Insert instance layer "VK_LAYER_MESA_device_select" (/usr/lib/libVkLayer_MESA_device_select.so)
[Vulkan Loader] LAYER:          vkCreateInstance layer callstack setup to:
[Vulkan Loader] LAYER:             <Application>
[Vulkan Loader] LAYER:               ||
[Vulkan Loader] LAYER:             <Loader>
[Vulkan Loader] LAYER:               ||
[Vulkan Loader] LAYER:             VK_LAYER_MESA_device_select
[Vulkan Loader] LAYER:                     Type: Implicit
[Vulkan Loader] LAYER:                     Enabled By: Implicit Layer
[Vulkan Loader] LAYER:                         Disable Env Var:  NODEVICE_SELECT
[Vulkan Loader] LAYER:                     Manifest: /usr/share/vulkan/implicit_layer.d/VkLayer_MESA_device_select.json
[Vulkan Loader] LAYER:                     Library:  /usr/lib/libVkLayer_MESA_device_select.so
[Vulkan Loader] LAYER:               ||
[Vulkan Loader] LAYER:             <Drivers>
WARNING: [Loader Message] Code 0 : terminator_CreateInstance: Received return code -6 from call to vkCreateInstance in ICD /usr/lib/libvulkan_virtio.so. Skipping this driver.
[Vulkan Loader] WARNING:        terminator_CreateInstance: Received return code -6 from call to vkCreateInstance in ICD /usr/lib/libvulkan_virtio.so. Skipping this driver.
ERROR: [Loader Message] Code 0 : terminator_CreateInstance: Found no drivers!
[Vulkan Loader] ERROR | DRIVER: terminator_CreateInstance: Found no drivers!
[Vulkan Loader] DEBUG | LAYER:  Unloading layer library /usr/lib/libVkLayer_MESA_device_select.so
Cannot create Vulkan instance.
This problem is often caused by a faulty installation of the Vulkan driver or attempting to use a GPU that does not support Vulkan.
ERROR at /usr/src/debug/vulkan-tools/Vulkan-Tools/vulkaninfo/./vulkaninfo.h:573:vkCreateInstance failed with ERROR_INCOMPATIBLE_DRIVER

Host OS: Tumbleweed with KDE + Wayland (All up-to-date)
Guest OS: CachyOS with KDE + Wayland (All up-to-date)
GPU: RTX 2060 Super 8 GB
CPU: Ryzen 7 2700
SVM, IOMMU enabled
KVM / Qemu / libvirt / virt-manager stack installed
Qemu Version: 10.1.0-2.1
libvirglrenderer1 version: 1.1.1-1.1
Installed graphics driver package: nvidia-driver-G06-kmp-meta

vulkaninfo | grep driverVersion
        driverVersion     = 580.95.5.0
        driverVersion     = 25.2.4

@zzyiwei
Copy link

zzyiwei commented Oct 12, 2025

@adokacey On the guest side, see if VN_DEBUG=all vulkaninfo tells anything useful.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment