[PATCH v4] tests/drm_virtgpu: Add functional coverage for core VirtIO-GPU ioctls
Erico Nunes
ernunes at redhat.com
Wed Jun 11 16:10:52 UTC 2025
Hello,
On 6/10/25 6:30 PM, Dorinda Bassey wrote:
> This test suite adds coverage for multiple DRM ioctls specific
> to the VirtIO-GPU driver, verifying functionality such as
> resource creation, memory mapping, 3D transfers, context
> initialization, and parameter querying.
> Each test validates a key ioctl to ensure correct behavior from
> user space and backend implementations. Each subtest is
> self-contained and can be executed independently.
>
> Included subtests:
> - drm-virtgpu-map
> - drm-virtgpu-execbuffer
> - drm-virtgpu-resource-info
> - drm-virtgpu-3d-transfer-to-host
> - drm-virtgpu-3d-transfer-from-host
> - drm-virtgpu-3d-wait
> - drm-virtgpu-resource-create-blob
> - drm-virtgpu-get-caps
> - drm-virtgpu-context-init
> - drm-virtgpu-getparam
>
> How to Test with QEMU virtio-vga-gl or rustvmm vhost-device-gpu
>
> 1. Launch a QEMU guest with virtio-vga-gl
> ./build/qemu-system-x86_64 \
> -enable-kvm \
> -cpu host \
> -m 4096 \
> -machine q35 \
> -display gtk,gl=on \
> -vga none \
> -device virtio-vga-gl \
> -drive file=image.qcow2,format=qcow2 \
> -netdev user,id=n0,hostfwd=tcp::2222-:22 \
> -device virtio-net-pci,netdev=n0
>
> ssh into the guest and run the tests.
>
> 2. Start the vhost-device-gpu backend and Launch a QEMU
> guest with vhost-user-gpu-pci or vhost-user-vga, see guide on:
> https://crates.io/crates/vhost-device-gpu
Overall this looks quite good to me. Thanks for doing this initial batch
of tests for virtio-gpu. I think it is a good start to build upon and
start enabling some more DRM tests in CIs especially since this can
astract hardware details.
I have a couple of comments below, to consider if you will do another
respin:
>
> tests/drm_virtgpu.c | 425 ++++++++++++++++++++++++++++++++++++++++++++
> tests/meson.build | 1 +
> 2 files changed, 426 insertions(+)
> create mode 100644 tests/drm_virtgpu.c
Would it make sense for this to live in its own subdirectory? Since it
is testing "device-specific" commands (for virtio-gpu being the device).
I see that some of the other drivers have their own directory, and
currently this one is bundled together with some fairly generic DRM or
KMS API tests in meson.build.
But I'm not sure if there is a policy for this so I'd leave it to the
igt maintainers.
> +#define VIRTGPU_DEVICE "/dev/dri/card0"
VIRTGPU_DEVICE is unused since an earlier revision, so it can be removed.
> +static const struct {
> + const char *name;
> + uint64_t id;
> +} params[] = {
> + {"3D_FEATURES", VIRTGPU_PARAM_3D_FEATURES},
> + {"CAPSET_QUERY_FIX", VIRTGPU_PARAM_CAPSET_QUERY_FIX},
> + {"RESOURCE_BLOB", VIRTGPU_PARAM_RESOURCE_BLOB},
> + {"HOST_VISIBLE", VIRTGPU_PARAM_HOST_VISIBLE},
> + {"CROSS_DEVICE", VIRTGPU_PARAM_CROSS_DEVICE},
> + {"CONTEXT_INIT", VIRTGPU_PARAM_CONTEXT_INIT},
> + {"SUPPORTED_CAPSET_IDs", VIRTGPU_PARAM_SUPPORTED_CAPSET_IDs},
> + {"EXPLICIT_DEBUG_NAME", VIRTGPU_PARAM_EXPLICIT_DEBUG_NAME},
> +};
Might make sense to move this params array to the "drm-virtgpu-getparam"
subtest since it is only used there.
Considering these you can add my:
Reviewed-by: Erico Nunes <ernunes at redhat.com>
Thanks
Erico
More information about the igt-dev
mailing list