mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 15:38:09 +02:00
venus: Make sure that guest allocated blobs from hostmem are mappable
For guest-based blob allocations from hostmem (Host visible memory), to make sure that virtio-gpu driver will send to the host the address (offset in the region) of the allocated blob using RESOURCE_MAP_BLOB command a flag VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT must be set. Otherwise, if the upper layers didn't set it, host can't import memory and guest allocation from Host visible memory region makes no sense. Signed-off-by: Andrew D. Gazizov <andrew.gazizov@opensynergy.com> Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26130>
This commit is contained in:
parent
8929889563
commit
bafc27583c
1 changed files with 10 additions and 1 deletions
|
|
@ -346,9 +346,18 @@ vn_device_memory_alloc_guest_vram(struct vn_device *dev,
|
||||||
const struct vk_device_memory *mem_vk = &mem->base.base;
|
const struct vk_device_memory *mem_vk = &mem->base.base;
|
||||||
const VkMemoryType *mem_type = &dev->physical_device->memory_properties
|
const VkMemoryType *mem_type = &dev->physical_device->memory_properties
|
||||||
.memoryTypes[mem_vk->memory_type_index];
|
.memoryTypes[mem_vk->memory_type_index];
|
||||||
|
VkMemoryPropertyFlags flags = mem_type->propertyFlags;
|
||||||
|
|
||||||
|
/* For external allocation handles, it's possible scenario when requested
|
||||||
|
* non-mappable memory. To make sure that virtio-gpu driver will send to
|
||||||
|
* the host the address of allocated blob using RESOURCE_MAP_BLOB command
|
||||||
|
* a flag VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT must be set.
|
||||||
|
*/
|
||||||
|
if (mem_vk->export_handle_types)
|
||||||
|
flags |= VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT;
|
||||||
|
|
||||||
VkResult result = vn_renderer_bo_create_from_device_memory(
|
VkResult result = vn_renderer_bo_create_from_device_memory(
|
||||||
dev->renderer, mem_vk->size, mem->base.id, mem_type->propertyFlags,
|
dev->renderer, mem_vk->size, mem->base.id, flags,
|
||||||
mem_vk->export_handle_types, &mem->base_bo);
|
mem_vk->export_handle_types, &mem->base_bo);
|
||||||
if (result != VK_SUCCESS) {
|
if (result != VK_SUCCESS) {
|
||||||
return result;
|
return result;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue