vkr: Add support of GUEST_VRAM type of mem blob
This is dedicated heap memory allocations approach.
This type of blob should be used in the following way:
- Guest virtio-gpu driver on start checks for dedicated memory region.
- On create_blob drm ioctl guest driver reserves chunk of required memory and send it to host using sg list. Heap is managed on guest.
- Device creates dmabuf fd from this sg entry and sends it to virglrenderer on create_blob virtio-gpu command. Blob is created using virgl_renderer_resource_import_blob call.
- On next vkAllocateMemory call from mesa, virglrenderer will allocate vk memory handle from this dmabuf fd. It will receive resource id in VK_STRUCTURE_TYPE_IMPORT_MEMORY_RESOURCE_INFO_MESA vkAllocateMemory structure.
The flow is opposite to the way it's done for HOST_3D types of blob, where vkAllocateMemory is called first, vk memory is allocated from random host place. Then create_blob is called, where dmabuf fd is exported from VkDeviceMemory.
Mesa MR mesa/mesa!14536 (merged)
Kernel virtio-gpu-next MR drm-misc-next!11
v2: Use virgl_renderer_resource_import_blob instead of virgl_renderer_resource_create_blob.
/cc @olv @gurchetansingh
Edited by Andrii Pauk