diff --git a/src/virtio/virtio-gpu/venus_hw.h b/src/virtio/virtio-gpu/venus_hw.h index 18bd1964002..66b1007597d 100644 --- a/src/virtio/virtio-gpu/venus_hw.h +++ b/src/virtio/virtio-gpu/venus_hw.h @@ -64,6 +64,12 @@ struct virgl_renderer_capset_venus { * the associated renderer submission. */ uint32_t supports_multiple_timelines; + + /* This flag indicates to the guest that hypervisor does not support memory + * pages injections and blob allocations must be done by guest from the + * dedicated heap (Host visible memory). + */ + uint32_t use_guest_vram; }; #endif diff --git a/src/virtio/vulkan/vn_renderer_virtgpu.c b/src/virtio/vulkan/vn_renderer_virtgpu.c index 8c26d86f43e..57be16888b1 100644 --- a/src/virtio/vulkan/vn_renderer_virtgpu.c +++ b/src/virtio/vulkan/vn_renderer_virtgpu.c @@ -1396,6 +1396,10 @@ virtgpu_init_renderer_info(struct virtgpu *gpu) if (gpu->bo_blob_mem == VIRTGPU_BLOB_MEM_GUEST_VRAM) info->has_guest_vram = true; + + /* Use guest blob allocations from dedicated heap (Host visible memory) */ + if (gpu->bo_blob_mem == VIRTGPU_BLOB_MEM_HOST3D && capset->use_guest_vram) + info->has_guest_vram = true; } static void