mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 13:58:04 +02:00
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:
parent
d610f40e17
commit
240e9dc5dc
2 changed files with 39 additions and 0 deletions
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue