Re: [PATCH] drm/virtio: add ARGB8888 support for primary planes

From: Thomas Zimmermann

Date: Thu Oct 01 2026 - 09:45:31 EST




Am 30.09.26 um 18:12 schrieb Dorinda Bassey:
Hi Thomas,

But does the host also support ARGB on the primary plane? We usually
don't export formats that are not available in (virtual) hardware.


If you're asking about the hypervisor side providing the Virtual GPU,
Yes the host supports ARGB on primary plane. QEMU's virtio-gpu

Ok, thanks.

Reviewed-by: Thomas Zimmermann <tzimmermann@xxxxxxx>


supports this see qemu's include/hw/virtio/virtio-gpu-pixman.h:26
libkrun's virtio-gpu includes `B8G8R8A8_UNORM` in its
ResourceFormat enum and maps it to display backend formats.
Virglrenderer, which vhost-device-gpu also uses, maps
`GBM_FORMAT_ARGB8888` to `VIRGL_FORMAT_B8G8R8A8_UNORM`.
Other VMMs I've tested also support this format.

Also I see the cursor plane in the virtio-gpu driver already exposes
`DRM_FORMAT_HOST_ARGB8888`, confirming existing ARGB support
in backends. I tested this with the vhost-user-gpu backend from -
https://github.com/rust-vmm/vhost-device/tree/main/vhost-device-gpu
and the libkrun guest, glmark2-drm renders correctly with it.

BR,
Dorinda.


On Wed, Sep 30, 2026 at 5:04 PM Thomas Zimmermann <tzimmermann@xxxxxxx> wrote:

Hi

Am 30.09.26 um 15:27 schrieb Dorinda Bassey:
> Add DRM_FORMAT_HOST_ARGB8888 to the list of supported formats for
> virtio-gpu primary planes. Without this, glmark2-drm fails at
> startup because it selects ARGB visual configs by default, which
> don't match the XRGB-only plane capabilities. This causes
> drmModeSetCrtc to fail with EINVAL.

But does the host also support ARGB on the primary plane? We usually
don't export formats that are not available in (virtual) hardware.

Best regards
Thomas

>
> The virtio_gpu_translate_format() function already handles
> ARGB8888 translation to VIRTIO_GPU_FORMAT_B8G8R8A8_UNORM,
> so this just exposes the existing capability to userspace.
>
> Signed-off-by: Dorinda Bassey <dbassey@xxxxxxxxxx>
> ---
>   drivers/gpu/drm/virtio/virtgpu_plane.c | 1 +
>   1 file changed, 1 insertion(+)
>
> diff --git a/drivers/gpu/drm/virtio/virtgpu_plane.c
b/drivers/gpu/drm/virtio/virtgpu_plane.c
> index b422eba42a5f..5f0bc1b1931b 100644
> --- a/drivers/gpu/drm/virtio/virtgpu_plane.c
> +++ b/drivers/gpu/drm/virtio/virtgpu_plane.c
> @@ -37,6 +37,7 @@
>
>   static const uint32_t virtio_gpu_formats[] = {
>       DRM_FORMAT_HOST_XRGB8888,
> +     DRM_FORMAT_HOST_ARGB8888,
>   };
>
>   static const uint32_t virtio_gpu_cursor_formats[] = {

-- --
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstr. 146, 90461 Nürnberg, Germany, www.suse.com
<http://www.suse.com>
GF: Stefan Gaiser, Jochen Jaser, Abhinav Puri, (HRB 36809, AG
Nürnberg)



--
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstr. 146, 90461 Nürnberg, Germany, www.suse.com
GF: Stefan Gaiser, Jochen Jaser, Abhinav Puri, (HRB 36809, AG Nürnberg)