Virtio GPU 驱动
从用户态到kernel完整过程如下图
拆开看的话,分成几部分:
- mesa中的用户态驱动:
src/gallium/drivers/virgl
,实现了pipe driver和winsys,但是没实现Vulkan的支持 - guest kernel驱动:
drivers/gpu/drm/virtio
- host用户态QEMU设备模拟:
hw/display/virtio-gpu-3d.c
,用户态再调用libvirglrender.so,直接透传Open GL命令 - host libvirglrender: 这是单独一套代码,也是freedesktop维护,地址在 https://cgit.freedesktop.org/virglrenderer, 它会再调用host上mesa
- host kernel GPU驱动:取决于机器的实际代码,一般在
drivers/gpu/drm/
目录