<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/venus-on-qemu-enabling-the-new-virtual-vulkan-driver-vxkjrsyir" -->

---
title: Venus on QEMU: Enabling the new virtual Vulkan driver
description: Venus is an experimental Vulkan driver for VirtIO-GPU that enables hardware-accelerated Vulkan inside QEMU virtual machines. This guide walks through the full...
canonical: https://daily.dev/posts/venus-on-qemu-enabling-the-new-virtual-vulkan-driver-vxkjrsyir
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Venus on QEMU: Enabling the new virtual Vulkan driver | daily.dev
og:description: Venus is an experimental Vulkan driver for VirtIO-GPU that enables hardware-accelerated Vulkan inside QEMU virtual machines. This guide walks through the full...
og:url: https://daily.dev/posts/venus-on-qemu-enabling-the-new-virtual-vulkan-driver-vxkjrsyir
og:image: https://api.daily.dev/og/posts/vXKJRSyiR.png
og:image:alt: Venus on QEMU: Enabling the new virtual Vulkan driver
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Venus on QEMU: Enabling the new virtual Vulkan driver

**[Collabora Blog](https://daily.dev/sources/collabora)** · 7 min read · 0 upvotes · 0 comments

## Summary

Venus is an experimental Vulkan driver for VirtIO-GPU that enables hardware-accelerated Vulkan inside QEMU virtual machines. This guide walks through the full setup: building virglrenderer from the res-sharing branch, compiling QEMU from the venus-dev branch, building a Linux kernel (v5.16-rc1+) with CONFIG_UDMABUF and VirtIO-GPU support, and compiling Mesa 21.1+ with the virtio-experimental Vulkan driver. It covers creating a QEMU disk image, running QEMU with the virtio-vga-gl device and BLOB resource support, building Mesa inside the guest, and testing with vkcube. Troubleshooting tips include GDB kernel debugging, VSCode debug integration, and handling segfaults in libvulkan. The feature is still experimental with upstream work pending in both virglrenderer and QEMU.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://www.collabora.com/news-and-blog/blog/2021/11/26/venus-on-qemu-enabling-new-virtual-vulkan-driver>

## Questions this post answers

### What kernel version and config options are needed to run the Venus Vulkan driver in QEMU with VirtIO-GPU?

Linux kernel v5.16-rc1 or later is required, and the kernel must be built with CONFIG_UDMABUF enabled since /dev/udmabuf is needed for BLOB resource support in QEMU. The default Debian kernel does not include this option. A custom kernel config enabling VirtIO-GPU and DRM with debug info is also recommended for development.

_Developers building graphics virtualization stacks track kernel and Mesa requirements like these on daily.dev._

### How do I configure Mesa to build the virtio experimental Vulkan driver for Venus inside a QEMU guest?

Mesa 21.1 or later must be built with the meson option -Dvulkan-drivers=virtio-experimental. Inside the guest, clone the qemu-venus branch of Mesa and configure it with gallium-drivers=swrast,virgl and vulkan-drivers=swrast,virtio-experimental. After installation, set VK_ICD_FILENAMES=/usr/shared/vulkan/icd.d/virtio_icd.x86_64.json when running Vulkan applications.

_Teams shipping Vulkan virtualization support find Mesa build nuances like this covered on daily.dev._

### Why does QEMU show a GTK assertion error when using virtio-vga-gl and how do I fix it?

The GTK assertion failure in gtk_widget_get_realized() occurs because QEMU creates two scanouts — one for the default VGA device and one for virtio-vga-gl. The fix is to pass -vga none on the QEMU command line, which disables the default VGA device and leaves only the virtio-vga-gl scanout active.

_Developers debugging QEMU graphics device conflicts find targeted fixes like this on daily.dev._

## Similar posts on daily.dev

- [Venus Vulkan Driver Lands Mesh Shader Support In Mesa 26.0](https://daily.dev/posts/venus-vulkan-driver-lands-mesh-shader-support-in-mesa-26-0-m4wzjlmka) · Phoronix · 0 upvotes · 0 comments
- [Flatpak Exploring GPU Virtualization To Ease Driver Challenges](https://daily.dev/posts/flatpak-exploring-gpu-virtualization-to-ease-driver-challenges-0irfkmyja) · Phoronix · 1 upvotes · 0 comments
- [Igniting the GPU: From Kernel Plumbing to 3D Rendering on RISC-V](https://daily.dev/posts/igniting-the-gpu-from-kernel-plumbing-to-3d-rendering-on-risc-v-n3d4nu797) · Hacker News · 1 upvotes · 0 comments

---

Tags: [#vulkan](https://daily.dev/tags/vulkan), [#mesa](https://daily.dev/tags/mesa)

[View this post on daily.dev](https://daily.dev/posts/venus-on-qemu-enabling-the-new-virtual-vulkan-driver-vxkjrsyir)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Venus on QEMU: Enabling the new virtual Vulkan driver","url":"https://daily.dev/posts/venus-on-qemu-enabling-the-new-virtual-vulkan-driver-vxkjrsyir","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/venus-on-qemu-enabling-the-new-virtual-vulkan-driver-vxkjrsyir"},"datePublished":"2026-08-11T08:56:10.383Z","dateModified":"2026-08-11T09:29:48.659Z","description":"Venus is an experimental Vulkan driver for VirtIO-GPU that enables hardware-accelerated Vulkan inside QEMU virtual machines. This guide walks through the full...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/9e473c2f4a5de4a07cf16f5291deceea?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/9e473c2f4a5de4a07cf16f5291deceea?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Collabora Blog","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Collabora Blog","logo":"https://media.daily.dev/image/upload/s--ZGZ0FjqS--/f_auto,q_auto/v1786438306/logos/collabora?_a=BAMAMicg0","url":"https://daily.dev/sources/collabora"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/venus-on-qemu-enabling-the-new-virtual-vulkan-driver-vxkjrsyir","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"vulkan,mesa","timeRequired":"PT7M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Collabora Blog","item":"https://daily.dev/sources/collabora"},{"@type":"ListItem","position":3,"name":"Venus on QEMU: Enabling the new virtual Vulkan driver"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/venus-on-qemu-enabling-the-new-virtual-vulkan-driver-vxkjrsyir#faq","mainEntity":[{"@type":"Question","name":"What kernel version and config options are needed to run the Venus Vulkan driver in QEMU with VirtIO-GPU?","acceptedAnswer":{"@type":"Answer","text":"Linux kernel v5.16-rc1 or later is required, and the kernel must be built with CONFIG_UDMABUF enabled since /dev/udmabuf is needed for BLOB resource support in QEMU. The default Debian kernel does not include this option. A custom kernel config enabling VirtIO-GPU and DRM with debug info is also recommended for development. Developers building graphics virtualization stacks track kernel and Mesa requirements like these on daily.dev."}},{"@type":"Question","name":"How do I configure Mesa to build the virtio experimental Vulkan driver for Venus inside a QEMU guest?","acceptedAnswer":{"@type":"Answer","text":"Mesa 21.1 or later must be built with the meson option -Dvulkan-drivers=virtio-experimental. Inside the guest, clone the qemu-venus branch of Mesa and configure it with gallium-drivers=swrast,virgl and vulkan-drivers=swrast,virtio-experimental. After installation, set VK_ICD_FILENAMES=/usr/shared/vulkan/icd.d/virtio_icd.x86_64.json when running Vulkan applications. Teams shipping Vulkan virtualization support find Mesa build nuances like this covered on daily.dev."}},{"@type":"Question","name":"Why does QEMU show a GTK assertion error when using virtio-vga-gl and how do I fix it?","acceptedAnswer":{"@type":"Answer","text":"The GTK assertion failure in gtk_widget_get_realized() occurs because QEMU creates two scanouts — one for the default VGA device and one for virtio-vga-gl. The fix is to pass -vga none on the QEMU command line, which disables the default VGA device and leaves only the virtio-vga-gl scanout active. Developers debugging QEMU graphics device conflicts find targeted fixes like this on daily.dev."}}]}
```

