Dmitry Osipenko <dmitry.osipe...@collabora.com> writes: > This patchset adds DRM native context support to VirtIO-GPU on Qemu. > > Contarary to Virgl and Venus contexts that mediates high level GFX APIs, > DRM native context [1] mediates lower level kernel driver UAPI, which > reflects in a less CPU overhead and less/simpler code needed to support it. > DRM context consists of a host and guest parts that have to be implemented > for each GPU driver. On a guest side, DRM context presents a virtual GPU as > a real/native host GPU device for GL/VK applications. > <snip>
So first the good news. I can now get this up and running (x86/kvm guest with Intel graphics) and as far as I can tell the native context mode is working. With Dongwon Kim's patch the mirroring/corruption I was seeing is gone. I can successfully run glmark2-wayland (although see bellow) but vkmark completely fails to start reporting: MESA: info: virtgpu backend not enabling VIRTGPU_PARAM_CREATE_FENCE_PASSING MESA: info: virtgpu backend not enabling VIRTGPU_PARAM_CREATE_GUEST_HANDLE MESA: error: DRM_IOCTL_VIRTGPU_GET_CAPS failed with Invalid argument MESA: error: DRM_IOCTL_VIRTGPU_CONTEXT_INIT failed with Invalid argument, continuing without context... MESA: error: DRM_VIRTGPU_RESOURCE_CREATE_BLOB failed with No space left on device MESA: error: Failed to create virtgpu AddressSpaceStream MESA: error: vulkan: Failed to get host connection MESA: error: DRM_VIRTGPU_RESOURCE_CREATE_BLOB failed with No space left on device MESA: error: Failed to create virtgpu AddressSpaceStream MESA: error: vulkan: Failed to get host connection MESA: error: DRM_VIRTGPU_RESOURCE_CREATE_BLOB failed with No space left on device MESA: error: Failed to create virtgpu AddressSpaceStream MESA: error: vulkan: Failed to get host connection MESA: warning: ../src/gfxstream/guest/vulkan/gfxstream_vk_device.cpp:681: VK_ERROR_DEVICE_LOST MESA: error: DRM_VIRTGPU_RESOURCE_CREATE_BLOB failed with No space left on device MESA: error: Failed to create virtgpu AddressSpaceStream MESA: error: vulkan: Failed to get host connection MESA: warning: ../src/gfxstream/guest/vulkan/gfxstream_vk_device.cpp:332: VK_ERROR_DEVICE_LOST === Physical Device 0 === Vendor ID: 0x8086 Device ID: 0xA780 Device Name: Intel(R) Graphics (RPL-S) Driver Version: 101068899 Device UUID: b39e1cf39b101489e3c6039406f78d6c I was booting with 4G of shared memory. Later versions of vkmark (2025.01) fail due to missing the VK_KHR_display extension required as of https://github.com/vkmark/vkmark/commit/7c3189c6482cb84c3c0e69d6dabb9d80e0c0092a > # Note about known performance problem in Qemu: > > DRM contexts are mapping host blobs extensively and these mapping > operations work slowly in Qemu. Exact reason is unknown. Mappings work > fast on Crosvm For DRM contexts this problem is more visible than for > Venus/Virgl. And how! With drm_native I get a lot of stutter while running and barely 100FPS (compared to ~8000 on pure venus). IMHO we need to figure out why there is such a discrepancy before merging because currently it makes more sense to use Venus. <snip> I'll do some more testing with my AMD/Aarch64 rig next week. -- Alex Bennée Virtualisation Tech Lead @ Linaro