libdrm: add drm syncobj create/destroy/import/export
Subsystems (2)
Dave Airlie
maintainerPATCH 1/1 libdrm: add drm syncobj create/destroy/import/export
From: Dave Airlie <[email protected]>
These ioctls are now in drm next so add the first set of libdrm APIs.
--- include/drm/drm.h | 26 ++++++++++++++++++ xf86drm.c | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ xf86drm.h | 8 ++++++ 3 files changed, 115 insertions(+)
include/drm/drm.h +26 -0
@@ -642,6 +642,7 @@ struct drm_gem_open {#define DRM_CAP_ADDFB2_MODIFIERS 0x10#define DRM_CAP_PAGE_FLIP_TARGET 0x11#define DRM_CAP_CRTC_IN_VBLANK_EVENT 0x12 +#define DRM_CAP_SYNCOBJ 0x13/** DRM_IOCTL_GET_CAP ioctl argument type */ struct drm_get_cap {
@@ -691,6 +692,26 @@ struct drm_prime_handle {__s32 fd; }; +struct drm_syncobj_create { +__u32 handle; +__u32 flags; +}; + +struct drm_syncobj_destroy { +__u32 handle; +__u32 pad; +}; + +#define DRM_SYNCOBJ_FD_TO_HANDLE_FLAGS_IMPORT_SYNC_FILE (1 << 0) +#define DRM_SYNCOBJ_HANDLE_TO_FD_FLAGS_EXPORT_SYNC_FILE (1 << 0) +struct drm_syncobj_handle { +__u32 handle; +__u32 flags; + +__s32 fd; +__u32 pad; +}; +#if defined(__cplusplus) }#endif
@@ -809,6 +830,11 @@ extern "C" {#define DRM_IOCTL_MODE_CREATEPROPBLOB DRM_IOWR(0xBD, struct drm_mode_create_blob)#define DRM_IOCTL_MODE_DESTROYPROPBLOB DRM_IOWR(0xBE, struct drm_mode_destroy_blob) +#define DRM_IOCTL_SYNCOBJ_CREATE DRM_IOWR(0xBF, struct drm_syncobj_create) +#define DRM_IOCTL_SYNCOBJ_DESTROY DRM_IOWR(0xC0, struct drm_syncobj_destroy) +#define DRM_IOCTL_SYNCOBJ_HANDLE_TO_FD DRM_IOWR(0xC1, struct drm_syncobj_handle) +#define DRM_IOCTL_SYNCOBJ_FD_TO_HANDLE DRM_IOWR(0xC2, struct drm_syncobj_handle) +/** * Device specific ioctls should only be in their respective headers * The device specific ioctl range is from 0x40 to 0x9f.
xf86drm.c +81 -0
84 lines not on this page · raw message
xf86drm.h +8 -0
@@ -853,6 +853,14 @@ extern int drmGetDevices2(uint32_t flags, drmDevicePtr devices[], int max_deviceextern int drmDevicesEqual (drmDevicePtr a,drmDevicePtr b); +extern int drmSyncobjCreate (int fd,uint32_t flags,uint32_t *handle); +extern int drmSyncobjDestroy (int fd,uint32_t handle); +extern int drmSyncobjHandleToFD (int fd,uint32_t handle,int *obj_fd); +extern int drmSyncobjFDToHandle (int fd,int obj_fd,uint32_t *handle); + +extern int drmSyncobjImportSyncFile (int fd,uint32_t handle,int sync_file_fd); +extern int drmSyncobjExportSyncFile (int fd,uint32_t handle,int *sync_file_fd); +#if defined(__cplusplus) }#endif
Signature · 6 lines
2.9.4 _______________________________________________ dri-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/dri-devel
Dave Airlie
maintainerping?
Dave.
Quoted 173 lines · Dave Airlie
From: Dave Airlie <[email protected]>
These ioctls are now in drm next so add the first set of libdrm APIs.
Signed-off-by Dave Airlie <[email protected]>--- include/drm/drm.h | 26 ++++++++++++++++++ xf86drm.c | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ xf86drm.h | 8 ++++++ 3 files changed, 115 insertions(+)include/drm/drm.h +26
-0@@ -642,6 +642,7 @@ struct drm_gem_open {#define DRM_CAP_ADDFB2_MODIFIERS 0x10#define DRM_CAP_PAGE_FLIP_TARGET 0x11#define DRM_CAP_CRTC_IN_VBLANK_EVENT 0x12 +#define DRM_CAP_SYNCOBJ 0x13/** DRM_IOCTL_GET_CAP ioctl argument type */ struct drm_get_cap {@@ -691,6 +692,26 @@ struct drm_prime_handle {__s32 fd; }; +struct drm_syncobj_create { +__u32 handle; +__u32 flags; +}; + +struct drm_syncobj_destroy { +__u32 handle; +__u32 pad; +}; + +#define DRM_SYNCOBJ_FD_TO_HANDLE_FLAGS_IMPORT_SYNC_FILE (1 << 0) +#define DRM_SYNCOBJ_HANDLE_TO_FD_FLAGS_EXPORT_SYNC_FILE (1 << 0) +struct drm_syncobj_handle { +__u32 handle; +__u32 flags; + +__s32 fd; +__u32 pad; +}; +#if defined(__cplusplus) }#endif @@ -809,6 +830,11 @@ extern "C" {#define DRM_IOCTL_MODE_CREATEPROPBLOB DRM_IOWR(0xBD, struct drm_mode_create_blob)#define DRM_IOCTL_MODE_DESTROYPROPBLOB DRM_IOWR(0xBE, struct drm_mode_destroy_blob) +#define DRM_IOCTL_SYNCOBJ_CREATE DRM_IOWR(0xBF, struct drm_syncobj_create) +#define DRM_IOCTL_SYNCOBJ_DESTROY DRM_IOWR(0xC0, struct drm_syncobj_destroy) +#define DRM_IOCTL_SYNCOBJ_HANDLE_TO_FD DRM_IOWR(0xC1, struct drm_syncobj_handle) +#define DRM_IOCTL_SYNCOBJ_FD_TO_HANDLE DRM_IOWR(0xC2, struct drm_syncobj_handle) +/** * Device specific ioctls should only be in their respective headers * The device specific ioctl range is from 0x40 to 0x9f. xf86drm.c +81
-0@@ -4146,3 +4146,84 @@ char *drmGetDeviceNameFromFd2(int fd)return strdup (node);#endif } + +int drmSyncobjCreate (int fd,uint32_t flags,uint32_t *handle) +{ +struct drm_syncobj_create args; +int ret; + +memclear (args); + args.flags = flags; + args.handle =0 ; + ret =drmIoctl (fd,DRM_IOCTL_SYNCOBJ_CREATE , &args); +if (ret) +return ret; + *handle = args.handle; +return 0 ; +} + +int drmSyncobjDestroy (int fd,uint32_t handle) +{ +struct drm_syncobj_destroy args; + +memclear (args); + args.handle = handle; +return drmIoctl (fd,DRM_IOCTL_SYNCOBJ_DESTROY , &args); +} + +int drmSyncobjHandleToFD (int fd,uint32_t handle,int *obj_fd) +{ +struct drm_syncobj_handle args; +int ret; + +memclear (args); + args.fd =-1 ; + args.handle = handle; + ret =drmIoctl (fd,DRM_IOCTL_SYNCOBJ_HANDLE_TO_FD , &args); +if (ret) +return ret; + *obj_fd = args.fd; +return 0 ; +} + +int drmSyncobjFDToHandle (int fd,int obj_fd,uint32_t *handle) +{ +struct drm_syncobj_handle args; +int ret; + +memclear (args); + args.fd = obj_fd; + args.handle =0 ; + ret =drmIoctl (fd,DRM_IOCTL_SYNCOBJ_FD_TO_HANDLE , &args); +if (ret) +return ret; + *handle = args.handle; +return 0 ; +} + +int drmSyncobjImportSyncFile (int fd,uint32_t handle,int sync_file_fd) +{ +struct drm_syncobj_handle args; + +memclear (args); + args.fd = sync_file_fd; + args.handle = handle; + args.flags =DRM_SYNCOBJ_FD_TO_HANDLE_FLAGS_IMPORT_SYNC_FILE ; +return drmIoctl (fd,DRM_IOCTL_SYNCOBJ_FD_TO_HANDLE , &args); +} + +int drmSyncobjExportSyncFile (int fd,uint32_t handle,int *sync_file_fd) +{ +struct drm_syncobj_handle args; +int ret; + +memclear (args); + args.fd =-1 ; + args.handle = handle; + args.flags =DRM_SYNCOBJ_HANDLE_TO_FD_FLAGS_EXPORT_SYNC_FILE ; + ret =drmIoctl (fd,DRM_IOCTL_SYNCOBJ_HANDLE_TO_FD , &args); +if (ret) +return ret; + *sync_file_fd = args.fd; +return 0 ; +}xf86drm.h +8
-1@@ -853,6 +853,14 @@ extern int drmGetDevices2(uint32_t flags, drmDevicePtr devices[], int max_deviceextern int drmDevicesEqual (drmDevicePtr a,drmDevicePtr b); +extern int drmSyncobjCreate (int fd,uint32_t flags,uint32_t *handle); +extern int drmSyncobjDestroy (int fd,uint32_t handle); +extern int drmSyncobjHandleToFD (int fd,uint32_t handle,int *obj_fd); +extern int drmSyncobjFDToHandle (int fd,int obj_fd,uint32_t *handle); + +extern int drmSyncobjImportSyncFile (int fd,uint32_t handle,int sync_file_fd); +extern int drmSyncobjExportSyncFile (int fd,uint32_t handle,int *sync_file_fd); +#if defined(__cplusplus) }#endif --2.9.4
Quoted 4 lines
_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel
_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel
Quoted 5 lines · Dave Airlie
From: Dave Airlie <[email protected]>
These ioctls are now in drm next so add the first set of libdrm APIs.
Signed-off-by Dave Airlie <[email protected]>
It took me a bit of digging to understand the functional difference between drmSyncobjHandleToFD() and drmSyncobjExportSyncFile(), but the wrappers for these ioctls seem fine.
_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel
What's the difference between HandleToFD and ExportSyncFile?
Thanks,
Marek
Quoted 173 lines · Dave Airlie
From: Dave Airlie <[email protected]>
These ioctls are now in drm next so add the first set of libdrm APIs.
Signed-off-by Dave Airlie <[email protected]>--- include/drm/drm.h | 26 ++++++++++++++++++ xf86drm.c | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ xf86drm.h | 8 ++++++ 3 files changed, 115 insertions(+)include/drm/drm.h +26
-0@@ -642,6 +642,7 @@ struct drm_gem_open {#define DRM_CAP_ADDFB2_MODIFIERS 0x10#define DRM_CAP_PAGE_FLIP_TARGET 0x11#define DRM_CAP_CRTC_IN_VBLANK_EVENT 0x12 +#define DRM_CAP_SYNCOBJ 0x13/** DRM_IOCTL_GET_CAP ioctl argument type */ struct drm_get_cap {@@ -691,6 +692,26 @@ struct drm_prime_handle {__s32 fd; }; +struct drm_syncobj_create { +__u32 handle; +__u32 flags; +}; + +struct drm_syncobj_destroy { +__u32 handle; +__u32 pad; +}; + +#define DRM_SYNCOBJ_FD_TO_HANDLE_FLAGS_IMPORT_SYNC_FILE (1 << 0) +#define DRM_SYNCOBJ_HANDLE_TO_FD_FLAGS_EXPORT_SYNC_FILE (1 << 0) +struct drm_syncobj_handle { +__u32 handle; +__u32 flags; + +__s32 fd; +__u32 pad; +}; +#if defined(__cplusplus) }#endif @@ -809,6 +830,11 @@ extern "C" {#define DRM_IOCTL_MODE_CREATEPROPBLOB DRM_IOWR(0xBD, struct drm_mode_create_blob)#define DRM_IOCTL_MODE_DESTROYPROPBLOB DRM_IOWR(0xBE, struct drm_mode_destroy_blob) +#define DRM_IOCTL_SYNCOBJ_CREATE DRM_IOWR(0xBF, struct drm_syncobj_create) +#define DRM_IOCTL_SYNCOBJ_DESTROY DRM_IOWR(0xC0, struct drm_syncobj_destroy) +#define DRM_IOCTL_SYNCOBJ_HANDLE_TO_FD DRM_IOWR(0xC1, struct drm_syncobj_handle) +#define DRM_IOCTL_SYNCOBJ_FD_TO_HANDLE DRM_IOWR(0xC2, struct drm_syncobj_handle) +/** * Device specific ioctls should only be in their respective headers * The device specific ioctl range is from 0x40 to 0x9f. xf86drm.c +81
-0@@ -4146,3 +4146,84 @@ char *drmGetDeviceNameFromFd2(int fd)return strdup (node);#endif } + +int drmSyncobjCreate (int fd,uint32_t flags,uint32_t *handle) +{ +struct drm_syncobj_create args; +int ret; + +memclear (args); + args.flags = flags; + args.handle =0 ; + ret =drmIoctl (fd,DRM_IOCTL_SYNCOBJ_CREATE , &args); +if (ret) +return ret; + *handle = args.handle; +return 0 ; +} + +int drmSyncobjDestroy (int fd,uint32_t handle) +{ +struct drm_syncobj_destroy args; + +memclear (args); + args.handle = handle; +return drmIoctl (fd,DRM_IOCTL_SYNCOBJ_DESTROY , &args); +} + +int drmSyncobjHandleToFD (int fd,uint32_t handle,int *obj_fd) +{ +struct drm_syncobj_handle args; +int ret; + +memclear (args); + args.fd =-1 ; + args.handle = handle; + ret =drmIoctl (fd,DRM_IOCTL_SYNCOBJ_HANDLE_TO_FD , &args); +if (ret) +return ret; + *obj_fd = args.fd; +return 0 ; +} + +int drmSyncobjFDToHandle (int fd,int obj_fd,uint32_t *handle) +{ +struct drm_syncobj_handle args; +int ret; + +memclear (args); + args.fd = obj_fd; + args.handle =0 ; + ret =drmIoctl (fd,DRM_IOCTL_SYNCOBJ_FD_TO_HANDLE , &args); +if (ret) +return ret; + *handle = args.handle; +return 0 ; +} + +int drmSyncobjImportSyncFile (int fd,uint32_t handle,int sync_file_fd) +{ +struct drm_syncobj_handle args; + +memclear (args); + args.fd = sync_file_fd; + args.handle = handle; + args.flags =DRM_SYNCOBJ_FD_TO_HANDLE_FLAGS_IMPORT_SYNC_FILE ; +return drmIoctl (fd,DRM_IOCTL_SYNCOBJ_FD_TO_HANDLE , &args); +} + +int drmSyncobjExportSyncFile (int fd,uint32_t handle,int *sync_file_fd) +{ +struct drm_syncobj_handle args; +int ret; + +memclear (args); + args.fd =-1 ; + args.handle = handle; + args.flags =DRM_SYNCOBJ_HANDLE_TO_FD_FLAGS_EXPORT_SYNC_FILE ; + ret =drmIoctl (fd,DRM_IOCTL_SYNCOBJ_HANDLE_TO_FD , &args); +if (ret) +return ret; + *sync_file_fd = args.fd; +return 0 ; +}xf86drm.h +8
-1@@ -853,6 +853,14 @@ extern int drmGetDevices2(uint32_t flags, drmDevicePtr devices[], int max_deviceextern int drmDevicesEqual (drmDevicePtr a,drmDevicePtr b); +extern int drmSyncobjCreate (int fd,uint32_t flags,uint32_t *handle); +extern int drmSyncobjDestroy (int fd,uint32_t handle); +extern int drmSyncobjHandleToFD (int fd,uint32_t handle,int *obj_fd); +extern int drmSyncobjFDToHandle (int fd,int obj_fd,uint32_t *handle); + +extern int drmSyncobjImportSyncFile (int fd,uint32_t handle,int sync_file_fd); +extern int drmSyncobjExportSyncFile (int fd,uint32_t handle,int *sync_file_fd); +#if defined(__cplusplus) }#endif --2.9.4
Quoted 4 lines
_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel
_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel
Dave Airlie
maintainerOn 9 Sep. 2017 2:30 am, "Marek Olšák" <[email protected]> wrote:
What's the difference between HandleToFD and ExportSyncFile?
One just gives you an FD for sharing the syncobj itself, the other exports the syncobj state into a sync file and you get to do sync file stuff with it.
A) is for process sharing
B) for interop with sync files
Dave.
Thanks,
Marek
Quoted 8 lines · Dave Airlie
From: Dave Airlie <[email protected]>
These ioctls are now in drm next so add the first set of libdrm APIs.
Signed-off-by Dave Airlie <[email protected]>--- include/drm/drm.h | 26 ++++++++++++++++++ xf86drm.c | 81 ++++++++++++++++++++++++++++++
+++++++++++++++++++++++++
Quoted 43 lines
xf86drm.h | 8 ++++++ 3 files changed, 115 insertions(+)include/drm/drm.h +21
-0@@ -642,6 +642,7 @@ struct drm_gem_open {#define DRM_CAP_ADDFB2_MODIFIERS 0x10#define DRM_CAP_PAGE_FLIP_TARGET 0x11#define DRM_CAP_CRTC_IN_VBLANK_EVENT 0x12 +#define DRM_CAP_SYNCOBJ 0x13/** DRM_IOCTL_GET_CAP ioctl argument type */ struct drm_get_cap {@@ -691,6 +692,26 @@ struct drm_prime_handle {__s32 fd; }; +struct drm_syncobj_create { +__u32 handle; +__u32 flags; +}; + +struct drm_syncobj_destroy { +__u32 handle; +__u32 pad; +}; + +#define DRM_SYNCOBJ_FD_TO_HANDLE_FLAGS_IMPORT_SYNC_FILE (1 << 0) +#define DRM_SYNCOBJ_HANDLE_TO_FD_FLAGS_EXPORT_SYNC_FILE (1 << 0) +struct drm_syncobj_handle { +__u32 handle; +__u32 flags; + +__s32 fd; +__u32 pad; +}; +#if defined(__cplusplus) }#endif
include/drm/drm.h extern "C" { · line 830
Quoted 1 line
include/drm/drm.h +0
-0@@ -809,6 +830,11 @@ extern "C" {#define DRM_IOCTL_MODE_CREATEPROPBLOB DRM_IOWR(0xBD, struct
drm_mode_create_blob)
include/drm/drm.h extern "C" { · line 831
Quoted 1 line
include/drm/drm.h +0
-0#define DRM_IOCTL_MODE_DESTROYPROPBLOB DRM_IOWR(0xBE, struct
drm_mode_destroy_blob)
include/drm/drm.h extern "C" { · line 832
Quoted 2 lines
include/drm/drm.h +1
-0+#define DRM_IOCTL_SYNCOBJ_CREATE DRM_IOWR(0xBF, struct
drm_syncobj_create)
include/drm/drm.h extern "C" { · line 833
Quoted 1 line
include/drm/drm.h +1
-0+#define DRM_IOCTL_SYNCOBJ_DESTROY DRM_IOWR(0xC0, struct
drm_syncobj_destroy)
include/drm/drm.h extern "C" { · line 834
Quoted 1 line
include/drm/drm.h +1
-0+#define DRM_IOCTL_SYNCOBJ_HANDLE_TO_FD DRM_IOWR(0xC1, struct
drm_syncobj_handle)
include/drm/drm.h extern "C" { · line 835
Quoted 1 line
include/drm/drm.h +1
-0+#define DRM_IOCTL_SYNCOBJ_FD_TO_HANDLE DRM_IOWR(0xC2, struct
drm_syncobj_handle)
xf86drm.h extern int drmGetDevices2(uint32_t flags,
Quoted 98 lines
include/drm/drm.h +1
-0+/** * Device specific ioctls should only be in their respective headers * The device specific ioctl range is from 0x40 to 0x9f. xf86drm.c +81
-0@@ -4146,3 +4146,84 @@ char *drmGetDeviceNameFromFd2(int fd)return strdup (node);#endif } + +int drmSyncobjCreate (int fd,uint32_t flags,uint32_t *handle) +{ +struct drm_syncobj_create args; +int ret; + +memclear (args); + args.flags = flags; + args.handle =0 ; + ret =drmIoctl (fd,DRM_IOCTL_SYNCOBJ_CREATE , &args); +if (ret) +return ret; + *handle = args.handle; +return 0 ; +} + +int drmSyncobjDestroy (int fd,uint32_t handle) +{ +struct drm_syncobj_destroy args; + +memclear (args); + args.handle = handle; +return drmIoctl (fd,DRM_IOCTL_SYNCOBJ_DESTROY , &args); +} + +int drmSyncobjHandleToFD (int fd,uint32_t handle,int *obj_fd) +{ +struct drm_syncobj_handle args; +int ret; + +memclear (args); + args.fd =-1 ; + args.handle = handle; + ret =drmIoctl (fd,DRM_IOCTL_SYNCOBJ_HANDLE_TO_FD , &args); +if (ret) +return ret; + *obj_fd = args.fd; +return 0 ; +} + +int drmSyncobjFDToHandle (int fd,int obj_fd,uint32_t *handle) +{ +struct drm_syncobj_handle args; +int ret; + +memclear (args); + args.fd = obj_fd; + args.handle =0 ; + ret =drmIoctl (fd,DRM_IOCTL_SYNCOBJ_FD_TO_HANDLE , &args); +if (ret) +return ret; + *handle = args.handle; +return 0 ; +} + +int drmSyncobjImportSyncFile (int fd,uint32_t handle,int sync_file_fd) +{ +struct drm_syncobj_handle args; + +memclear (args); + args.fd = sync_file_fd; + args.handle = handle; + args.flags =DRM_SYNCOBJ_FD_TO_HANDLE_FLAGS_IMPORT_SYNC_FILE ; +return drmIoctl (fd,DRM_IOCTL_SYNCOBJ_FD_TO_HANDLE , &args); +} + +int drmSyncobjExportSyncFile (int fd,uint32_t handle,int *sync_file_fd) +{ +struct drm_syncobj_handle args; +int ret; + +memclear (args); + args.fd =-1 ; + args.handle = handle; + args.flags =DRM_SYNCOBJ_HANDLE_TO_FD_FLAGS_EXPORT_SYNC_FILE ; + ret =drmIoctl (fd,DRM_IOCTL_SYNCOBJ_HANDLE_TO_FD , &args); +if (ret) +return ret; + *sync_file_fd = args.fd; +return 0 ; +}xf86drm.h +0
-0@@ -853,6 +853,14 @@ extern int drmGetDevices2(uint32_t flags,
drmDevicePtr devices[], int max_device
xf86drm.h extern int drmGetDevices2(uint32_t flags, drmDevicePtr devices[], int max_device
Quoted 9 lines
xf86drm.h +6
-0extern int drmDevicesEqual (drmDevicePtr a,drmDevicePtr b); +extern int drmSyncobjCreate (int fd,uint32_t flags,uint32_t *handle); +extern int drmSyncobjDestroy (int fd,uint32_t handle); +extern int drmSyncobjHandleToFD (int fd,uint32_t handle,int *obj_fd); +extern int drmSyncobjFDToHandle (int fd,int obj_fd,uint32_t *handle); + +extern int drmSyncobjImportSyncFile(int fd, uint32_t handle, int
sync_file_fd);
xf86drm.h extern int drmGetDevices2(uint32_t flags, · line 861
Quoted 1 line
xf86drm.h +1
-0+extern int drmSyncobjExportSyncFile(int fd, uint32_t handle, int
*sync_file_fd);
Quoted 11 lines
xf86drm.h +1
-1+#if defined(__cplusplus) }#endif --2.9.4
_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel
_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel
Quoted 7 lines · Dave Airlie
On 9 Sep. 2017 2:30 am, "Marek Olšák" <[email protected]> wrote:
What's the difference between HandleToFD and ExportSyncFile?
Quoted 6 lines
One just gives you an FD for sharing the syncobj itself, the other exports the syncobj state into a sync file and you get to do sync file stuff with it.
A) is for process sharing
B) for interop with sync files
i'm still confused, but If I understand it correctly, we have 4 kinds fences now:
- amdgpu per-ring sequence numbers
- syncobj
- HandleToFD for sharing a syncobj (this is not an Android fence)
- ExportSyncFile, which is an Android fence
Is that right?
Thanks,
Marek
_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel
Dave Airlie
maintainerOn 9 Sep. 2017 10:17 am, "Marek Olšák" <[email protected]> wrote:
Quoted 7 lines · Dave Airlie
On 9 Sep. 2017 2:30 am, "Marek Olšák" <[email protected]> wrote:
What's the difference between HandleToFD and ExportSyncFile?
Quoted 6 lines
One just gives you an FD for sharing the syncobj itself, the other exports the syncobj state into a sync file and you get to do sync file stuff with it.
A) is for process sharing
B) for interop with sync files
i'm still confused, but If I understand it correctly, we have 4 kinds fences now:
- amdgpu per-ring sequence numbers
- syncobj
- HandleToFD for sharing a syncobj (this is not an Android fence)
- ExportSyncFile, which is an Android fence
Yes, syncobj is pretty much Vulkan fence and semaphores semantics, sync file are android fence semantics.
Syncobj FD is just for sharing and getting back the same under lying object whereas sync file has a lot of other semantics that are undesirable when you just want to share between APIs and processes.
Dave.
Is that right?
Thanks,
Marek
_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel