asahi: Add APIs for DMA-BUF sync file import/export

These are generic ioctls, so it is safe to add them now.

Signed-off-by: Asahi Lina <lina@asahilina.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21662>
This commit is contained in:
Asahi Lina 2023-03-01 18:04:12 +09:00 committed by Marge Bot
parent d610f40e17
commit 240e9dc5dc
2 changed files with 39 additions and 0 deletions

View file

@ -338,3 +338,39 @@ agx_submit_single(struct agx_device *dev, enum drm_asahi_cmd_type cmd_type,
{
unreachable("Linux UAPI not yet upstream");
}
int
agx_import_sync_file(struct agx_device *dev, struct agx_bo *bo, int fd)
{
struct dma_buf_import_sync_file import_sync_file_ioctl = {
.flags = DMA_BUF_SYNC_WRITE,
.fd = fd,
};
assert(fd >= 0);
assert(bo->prime_fd != -1);
int ret = drmIoctl(bo->prime_fd, DMA_BUF_IOCTL_IMPORT_SYNC_FILE,
&import_sync_file_ioctl);
assert(ret >= 0);
return ret;
}
int
agx_export_sync_file(struct agx_device *dev, struct agx_bo *bo)
{
struct dma_buf_export_sync_file export_sync_file_ioctl = {
.flags = DMA_BUF_SYNC_RW,
.fd = -1,
};
assert(bo->prime_fd != -1);
int ret = drmIoctl(bo->prime_fd, DMA_BUF_IOCTL_EXPORT_SYNC_FILE,
&export_sync_file_ioctl);
assert(ret >= 0);
assert(export_sync_file_ioctl.fd >= 0);
return ret >= 0 ? export_sync_file_ioctl.fd : ret;
}

View file

@ -140,4 +140,7 @@ int agx_submit_single(struct agx_device *dev, enum drm_asahi_cmd_type cmd_type,
uint32_t result_handle, uint32_t result_off,
uint32_t result_size);
int agx_import_sync_file(struct agx_device *dev, struct agx_bo *bo, int fd);
int agx_export_sync_file(struct agx_device *dev, struct agx_bo *bo);
#endif