mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 15:20:10 +01:00
venus: fix misaligned bo_flags between import and query
For importing an dma_buf fd, export info is not required. Leaving the
bo_flags missing VIRTGPU_BLOB_FLAG_USE_SHAREABLE bit as well as the
VIRTGPU_BLOB_FLAG_USE_CROSS_DEVICE bit. Upon querying fd properties,
DMA_BUF handle type will be specified which generates a new bo_flags
not matching the prior one.
This patch aligns the above 2 bits for the dma_buf import path.
Test: vkGetAndroidHardwareBufferPropertiesANDROID should succeed with
a valid AHB with AHARDWAREBUFFER_FORMAT_BLOB format.
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Chia-I Wu <olvaffe@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11055>
This commit is contained in:
parent
1df4c960c6
commit
ccefcb0baf
3 changed files with 9 additions and 13 deletions
|
|
@ -179,8 +179,6 @@ vn_device_memory_import_dma_buf(struct vn_device *dev,
|
|||
{
|
||||
VkDevice device = vn_device_to_handle(dev);
|
||||
VkDeviceMemory memory = vn_device_memory_to_handle(mem);
|
||||
const VkExportMemoryAllocateInfo *export_info =
|
||||
vk_find_struct_const(alloc_info->pNext, EXPORT_MEMORY_ALLOCATE_INFO);
|
||||
const VkPhysicalDeviceMemoryProperties *mem_props =
|
||||
&dev->physical_device->memory_properties.memoryProperties;
|
||||
const VkMemoryType *mem_type =
|
||||
|
|
@ -188,9 +186,9 @@ vn_device_memory_import_dma_buf(struct vn_device *dev,
|
|||
struct vn_renderer_bo *bo;
|
||||
VkResult result = VK_SUCCESS;
|
||||
|
||||
result = vn_renderer_bo_create_from_dma_buf(
|
||||
dev->renderer, alloc_info->allocationSize, fd, mem_type->propertyFlags,
|
||||
export_info ? export_info->handleTypes : 0, &bo);
|
||||
result = vn_renderer_bo_create_from_dma_buf(dev->renderer,
|
||||
alloc_info->allocationSize, fd,
|
||||
mem_type->propertyFlags, &bo);
|
||||
if (result != VK_SUCCESS)
|
||||
return result;
|
||||
|
||||
|
|
@ -480,8 +478,8 @@ vn_GetMemoryFdPropertiesKHR(VkDevice device,
|
|||
return vn_error(dev->instance, VK_ERROR_INVALID_EXTERNAL_HANDLE);
|
||||
|
||||
struct vn_renderer_bo *bo;
|
||||
VkResult result = vn_renderer_bo_create_from_dma_buf(dev->renderer, 0, fd,
|
||||
0, handleType, &bo);
|
||||
VkResult result =
|
||||
vn_renderer_bo_create_from_dma_buf(dev->renderer, 0, fd, 0, &bo);
|
||||
if (result != VK_SUCCESS)
|
||||
return vn_error(dev->instance, result);
|
||||
vn_instance_roundtrip(dev->instance);
|
||||
|
|
|
|||
|
|
@ -185,7 +185,6 @@ struct vn_renderer_bo_ops {
|
|||
VkDeviceSize size,
|
||||
int fd,
|
||||
VkMemoryPropertyFlags flags,
|
||||
VkExternalMemoryHandleTypeFlags external_handles,
|
||||
struct vn_renderer_bo **out_bo);
|
||||
|
||||
bool (*destroy)(struct vn_renderer *renderer, struct vn_renderer_bo *bo);
|
||||
|
|
@ -349,12 +348,11 @@ vn_renderer_bo_create_from_dma_buf(
|
|||
VkDeviceSize size,
|
||||
int fd,
|
||||
VkMemoryPropertyFlags flags,
|
||||
VkExternalMemoryHandleTypeFlags external_handles,
|
||||
struct vn_renderer_bo **out_bo)
|
||||
{
|
||||
struct vn_renderer_bo *bo;
|
||||
VkResult result = renderer->bo_ops.create_from_dma_buf(
|
||||
renderer, size, fd, flags, external_handles, &bo);
|
||||
VkResult result =
|
||||
renderer->bo_ops.create_from_dma_buf(renderer, size, fd, flags, &bo);
|
||||
if (result != VK_SUCCESS)
|
||||
return result;
|
||||
|
||||
|
|
|
|||
|
|
@ -1148,7 +1148,6 @@ virtgpu_bo_create_from_dma_buf(
|
|||
VkDeviceSize size,
|
||||
int fd,
|
||||
VkMemoryPropertyFlags flags,
|
||||
VkExternalMemoryHandleTypeFlags external_handles,
|
||||
struct vn_renderer_bo **out_bo)
|
||||
{
|
||||
struct virtgpu *gpu = (struct virtgpu *)renderer;
|
||||
|
|
@ -1176,7 +1175,8 @@ virtgpu_bo_create_from_dma_buf(
|
|||
if (info.size < size)
|
||||
goto fail;
|
||||
|
||||
blob_flags = virtgpu_bo_blob_flags(flags, external_handles);
|
||||
blob_flags = virtgpu_bo_blob_flags(
|
||||
flags, VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT);
|
||||
mmap_size = size;
|
||||
} else {
|
||||
/* must be classic resource here
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue