From: Dominik Csapak <d.csapak@proxmox.com>
To: Markus Frank <m.frank@proxmox.com>, pve-devel@lists.proxmox.com
Subject: Re: [PATCH qemu-server v3 1/2] virtio-vga-gl: add OpenGL 4.6 and Vulkan (Venus) support
Date: Fri, 3 Jul 2026 13:52:46 +0200 [thread overview]
Message-ID: <47bae53c-0373-43de-832a-636de767e79b@proxmox.com> (raw)
In-Reply-To: <20260626141044.311778-2-m.frank@proxmox.com>
a few comments inline
On 6/26/26 4:12 PM, Markus Frank wrote:
> Adding the 'blob=on,hostmem=<size>' parameters to the 'virtio-gpu-gl'
> device allows the VM to use OpenGL 4.6. By default virtio-gpu-gl only
> supports up to OpenGL 4.3.
>
> If Vulkan support is needed, the 'venus=on' parameter is added to the
> 'virtio-gpu-gl' device, in addition to the two parameters required for
> OpenGL 4.6.
>
> The Venus protocol facilitates the translation of Vulkan API calls via
> the virglrenderer. To use it, the virgl-server package must be installed
> on the host.
>
> Set the default VirGL memory window to 2048 MiB, as having less could
> lead to instability inside the VM.
>
> Signed-off-by: Markus Frank <m.frank@proxmox.com>
> ---
> src/PVE/QemuServer.pm | 34 +++++++++++++++++++++++++++++++++-
> 1 file changed, 33 insertions(+), 1 deletion(-)
>
> diff --git a/src/PVE/QemuServer.pm b/src/PVE/QemuServer.pm
> index 55e9f520..30d08f32 100644
> --- a/src/PVE/QemuServer.pm
> +++ b/src/PVE/QemuServer.pm
> @@ -170,6 +170,20 @@ my $vga_fmt = {
> qw(cirrus qxl qxl2 qxl3 qxl4 none serial0 serial1 serial2 serial3 std virtio virtio-gl vmware)
> ],
> },
> + 'virgl-features' => {
> + description => 'Enable support for OpenGL 4.6 and Vulkan with the VirGL GPU.',
nit: fine for now, but as soon as we get more options here this
description needs an update, i'd maybe let it be more generic like:
'Enable additional features on VirGL GPU'.
not a must fix though
> + type => 'string',
> + optional => 1,
> + enum => ['opengl4.6', 'opengl4.6+vulkan'],
> + },
> + 'virgl-memory-window' => {
> + description => 'Set the VirGL host memory window. This option allocates'
> + . ' host memory to act as VRAM in the VM.',
> + type => 'string',
> + default => '2048',
> + optional => 1,
> + enum => ['512', '1024', '2048', '4096', '8192'],
> + },
not sure if i mentioned it offline to you already, but would't it be
possible to reuse the 'memory' property (just below) ?
(we could then enforce the 512/1024, etc. limits in the code instead of
the api)
i guess it'll be confusing for the users why there are multiple
'memory' settings for the gpu.
if we don't reuse it we should probably explain the difference (e.g. in
the docs)
> memory => {
> description => "Sets the VGA memory (in MiB). Has no effect with serial display.",
> type => 'integer',
> @@ -1524,6 +1538,21 @@ sub print_vga_device {
> $pciaddr = print_pci_addr($vgaid, $bridges, $arch);
> }
>
> + my $virgl_param = "";
> + my $virgl_mode = $vga->{'virgl-features'};
> + if ($virgl_mode) {
> + my $virgl_memory_window = $vga->{'virgl-memory-window'}
> + // $vga_fmt->{'virgl-memory-window'}->{'default'};
> + $virgl_param = ",hostmem=${virgl_memory_window}M,blob=on";
does the hostmem parameter anything on it's own?
if yes, we should maybe set that independently of the virgl-features flags
if no we should also check if it's set without the virgl-features and
cancel, otherwise some users might set it altough it does not have any
effect..
> +
> + if ($virgl_mode eq 'opengl4.6+vulkan') {
> + $virgl_param .= ",venus=on";
> + log_warn(
> + "missing virgl render server for Vulkan (Venus) support! Please install 'virgl-server'.\n"
> + ) if !-e "/usr/libexec/virgl_render_server";
> + }
> + }
> +
> if ($vga->{type} eq 'virtio-gl') {
> my $base = '/usr/lib/x86_64-linux-gnu/lib';
> die "missing libraries for '$vga->{type}' detected! Please install 'libgl1' and 'libegl1'\n"
> @@ -1532,9 +1561,12 @@ sub print_vga_device {
> die
> "no DRM render node detected (/dev/dri/renderD*), no GPU? - needed for '$vga->{type}' display\n"
> if !PVE::Tools::dir_glob_regex('/dev/dri/', "renderD.*");
> +
> + } elsif ($virgl_mode) {
> + die "You need to use virtio-gl to enable OpenGL 4.6 or Vulkan support!\n";
> }
>
> - return "$type,id=${vgaid}${memory}${max_outputs}${pciaddr}${edidoff}";
> + return "$type,id=${vgaid}${memory}${max_outputs}${pciaddr}${edidoff}${virgl_param}";
> }
>
> sub vm_is_volid_owner {
next prev parent reply other threads:[~2026-07-03 11:52 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-26 14:07 [PATCH qemu-server/pve-manager v3 0/2] add virtio-vga-gl OpenGL 4.6 & Vulkan (venus) support Markus Frank
2026-06-26 14:07 ` [PATCH qemu-server v3 1/2] virtio-vga-gl: add OpenGL 4.6 and Vulkan (Venus) support Markus Frank
2026-07-03 11:52 ` Dominik Csapak [this message]
2026-06-26 14:07 ` [PATCH pve-manager v3 2/2] ui: qemu: add VirGl feature selection in DisplayEdit Markus Frank
2026-07-03 11:57 ` Dominik Csapak
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=47bae53c-0373-43de-832a-636de767e79b@proxmox.com \
--to=d.csapak@proxmox.com \
--cc=m.frank@proxmox.com \
--cc=pve-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.