Virtio-GPU Venus fails to render on Nvidia GPU
System information
- Machine: Nvidia Jetson Xavier NX
- OS: Ubuntu 20.04.2 LTS host (AARCH64) and Ubuntu 20.04 LTS armhf chroot
- GPU: NVIDIA Tegra Xavier (nvgpu)/integrated (proprietary driver)
- Kernel version: 4.9.201-tegra
- Mesa version: Mesa 21.3.0-devel (git-3914bd45)
- Xserver version (if applicable): X.Org X Server 1.20.9
- Desktop manager and compositor: Gnome 3.36.8
Describe the issue
I am currently trying to get 3D acceleration to an armhf chroot on my Jetson Xavier NX to emulate some Windows games (using DirectX) with Wine and box86. Since Nvidia doesn't provide armhf GPU drivers for their ARM SBCs, I have to use a solution like virgl. While using virgl vtest works for me, it isn't really fast in terms of performance and with WineD3D being quite slow, most games are just unplayable, so I decided to give venus a try to get better performance.
The problem at the moment is, that I can't get anything to work which requires presentation / rendering. I tried to get some Vulkan demos to work on Wine from GPU Caps Viewer, DirectX 9 games with DXVK and I also tested vkcube but none of those work. I have only managed to get vulkaninfo to work inside the chroot.
When I launch the vtest server with virgl_test_server --venus
and try to launch vkcube in the chroot, the error thrown on the server side is just failed to initialise renderer
. Inside the chroot, the following messages appear:
MESA-VIRTIO: debug: using ICD interface version 5
MESA-VIRTIO: debug: using ICD interface version 5
MESA-VIRTIO: debug: using ICD interface version 5
MESA-VIRTIO: debug: lost connection to rendering server on 8 read -1 104
Aborted (core dumped)
vulkaninfo doesn't work either when just using --venus
for the vtest server.
When launching vtest with virgl_test_server --venus --use-glx
, I get the following for vkcube:
- On the server side:
gl_version 46 - core profile enabled
vtest_client_dispatch_commands: client context created.
client failed: VTEST_CLIENT_ERROR_INPUT_READ
destroying context with a valid instancenvdc: start nvdcEventThread
nvdc: exit nvdcEventThread
X Error of failed request: BadMatch (invalid parameter attributes)
Major opcode of failed request: 151 (GLX)
Minor opcode of failed request: 26 (X_GLXMakeContextCurrent)
Serial number of failed request: 61
Current serial number in output stream: 61
- Inside the chroot:
vkcube
MESA-VIRTIO: debug: using ICD interface version 5
MESA-VIRTIO: debug: using ICD interface version 5
MESA-VIRTIO: debug: using ICD interface version 5
MESA-VIRTIO: debug: connected to renderer
MESA-VIRTIO: debug: wire format version 0
MESA-VIRTIO: debug: vk xml version 1.2.168
MESA-VIRTIO: debug: VK_EXT_command_serialization spec version 0
MESA-VIRTIO: debug: VK_MESA_venus_protocol spec version 100000
MESA-VIRTIO: debug: VkVenusExperimentalFeatures100000MESA is as below:
memoryResourceAllocationSize = 1
globalFencing = 0
MESA-VIRTIO: debug: renderer instance version 1.2.131
Could not find both graphics and present queues
vulkaninfo seems to work though with --venus --use-glx
. I have attached the full output of vulkaninfo below:
venus-vulkaninfo.log