mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-04-24 05:00:48 +02:00
venus: fix opaque fd re-import
dEQP-VK.api.external.memory.opaque_fd.* re-imports and fails because
external_handles was VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT on
allocation and is VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT on
re-import.
Fixes: ccefcb0baf ("venus: fix misaligned bo_flags between import and query")
Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11154>
This commit is contained in:
parent
4bd7a3829e
commit
9814cd8153
2 changed files with 20 additions and 20 deletions
|
|
@ -180,12 +180,11 @@ struct vn_renderer_bo_ops {
|
|||
VkExternalMemoryHandleTypeFlags external_handles,
|
||||
struct vn_renderer_bo **out_bo);
|
||||
|
||||
VkResult (*create_from_dma_buf)(
|
||||
struct vn_renderer *renderer,
|
||||
VkDeviceSize size,
|
||||
int fd,
|
||||
VkMemoryPropertyFlags flags,
|
||||
struct vn_renderer_bo **out_bo);
|
||||
VkResult (*create_from_dma_buf)(struct vn_renderer *renderer,
|
||||
VkDeviceSize size,
|
||||
int fd,
|
||||
VkMemoryPropertyFlags flags,
|
||||
struct vn_renderer_bo **out_bo);
|
||||
|
||||
bool (*destroy)(struct vn_renderer *renderer, struct vn_renderer_bo *bo);
|
||||
|
||||
|
|
@ -343,12 +342,11 @@ vn_renderer_bo_create_from_device_memory(
|
|||
}
|
||||
|
||||
static inline VkResult
|
||||
vn_renderer_bo_create_from_dma_buf(
|
||||
struct vn_renderer *renderer,
|
||||
VkDeviceSize size,
|
||||
int fd,
|
||||
VkMemoryPropertyFlags flags,
|
||||
struct vn_renderer_bo **out_bo)
|
||||
vn_renderer_bo_create_from_dma_buf(struct vn_renderer *renderer,
|
||||
VkDeviceSize size,
|
||||
int fd,
|
||||
VkMemoryPropertyFlags flags,
|
||||
struct vn_renderer_bo **out_bo)
|
||||
{
|
||||
struct vn_renderer_bo *bo;
|
||||
VkResult result =
|
||||
|
|
|
|||
|
|
@ -1143,12 +1143,11 @@ virtgpu_bo_blob_flags(VkMemoryPropertyFlags flags,
|
|||
}
|
||||
|
||||
static VkResult
|
||||
virtgpu_bo_create_from_dma_buf(
|
||||
struct vn_renderer *renderer,
|
||||
VkDeviceSize size,
|
||||
int fd,
|
||||
VkMemoryPropertyFlags flags,
|
||||
struct vn_renderer_bo **out_bo)
|
||||
virtgpu_bo_create_from_dma_buf(struct vn_renderer *renderer,
|
||||
VkDeviceSize size,
|
||||
int fd,
|
||||
VkMemoryPropertyFlags flags,
|
||||
struct vn_renderer_bo **out_bo)
|
||||
{
|
||||
struct virtgpu *gpu = (struct virtgpu *)renderer;
|
||||
struct drm_virtgpu_resource_info info;
|
||||
|
|
@ -1175,8 +1174,11 @@ virtgpu_bo_create_from_dma_buf(
|
|||
if (info.size < size)
|
||||
goto fail;
|
||||
|
||||
blob_flags = virtgpu_bo_blob_flags(
|
||||
flags, VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT);
|
||||
/* blob_flags is not passed to the kernel and is only for internal use
|
||||
* on imports. Set it to what works best for us.
|
||||
*/
|
||||
blob_flags = virtgpu_bo_blob_flags(flags, 0);
|
||||
blob_flags |= VIRTGPU_BLOB_FLAG_USE_SHAREABLE;
|
||||
mmap_size = size;
|
||||
} else {
|
||||
/* must be classic resource here
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue