.. | .. |
---|
50 | 50 | |
---|
51 | 51 | #else /* One of the BSDs */ |
---|
52 | 52 | |
---|
| 53 | +#include <stdint.h> |
---|
53 | 54 | #include <sys/ioccom.h> |
---|
54 | 55 | #include <sys/types.h> |
---|
55 | 56 | typedef int8_t __s8; |
---|
.. | .. |
---|
649 | 650 | #define DRM_CAP_PAGE_FLIP_TARGET 0x11 |
---|
650 | 651 | #define DRM_CAP_CRTC_IN_VBLANK_EVENT 0x12 |
---|
651 | 652 | #define DRM_CAP_SYNCOBJ 0x13 |
---|
| 653 | +#define DRM_CAP_SYNCOBJ_TIMELINE 0x14 |
---|
652 | 654 | |
---|
653 | 655 | /** DRM_IOCTL_GET_CAP ioctl argument type */ |
---|
654 | 656 | struct drm_get_cap { |
---|
.. | .. |
---|
696 | 698 | */ |
---|
697 | 699 | #define DRM_CLIENT_CAP_WRITEBACK_CONNECTORS 5 |
---|
698 | 700 | |
---|
699 | | -/* |
---|
700 | | - * DRM_CLIENT_CAP_SHARE_PLANES |
---|
701 | | - * |
---|
702 | | - * this is only used to compatibility with old hwc code. |
---|
703 | | - */ |
---|
704 | | -#define DRM_CLIENT_CAP_SHARE_PLANES 6 |
---|
705 | | - |
---|
706 | 701 | /** DRM_IOCTL_SET_CLIENT_CAP ioctl argument type */ |
---|
707 | 702 | struct drm_set_client_cap { |
---|
708 | 703 | __u64 capability; |
---|
.. | .. |
---|
742 | 737 | __u32 pad; |
---|
743 | 738 | }; |
---|
744 | 739 | |
---|
| 740 | +struct drm_syncobj_transfer { |
---|
| 741 | + __u32 src_handle; |
---|
| 742 | + __u32 dst_handle; |
---|
| 743 | + __u64 src_point; |
---|
| 744 | + __u64 dst_point; |
---|
| 745 | + __u32 flags; |
---|
| 746 | + __u32 pad; |
---|
| 747 | +}; |
---|
| 748 | + |
---|
745 | 749 | #define DRM_SYNCOBJ_WAIT_FLAGS_WAIT_ALL (1 << 0) |
---|
746 | 750 | #define DRM_SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT (1 << 1) |
---|
| 751 | +#define DRM_SYNCOBJ_WAIT_FLAGS_WAIT_AVAILABLE (1 << 2) /* wait for time point to become available */ |
---|
747 | 752 | struct drm_syncobj_wait { |
---|
748 | 753 | __u64 handles; |
---|
749 | 754 | /* absolute timeout */ |
---|
.. | .. |
---|
754 | 759 | __u32 pad; |
---|
755 | 760 | }; |
---|
756 | 761 | |
---|
| 762 | +struct drm_syncobj_timeline_wait { |
---|
| 763 | + __u64 handles; |
---|
| 764 | + /* wait on specific timeline point for every handles*/ |
---|
| 765 | + __u64 points; |
---|
| 766 | + /* absolute timeout */ |
---|
| 767 | + __s64 timeout_nsec; |
---|
| 768 | + __u32 count_handles; |
---|
| 769 | + __u32 flags; |
---|
| 770 | + __u32 first_signaled; /* only valid when not waiting all */ |
---|
| 771 | + __u32 pad; |
---|
| 772 | +}; |
---|
| 773 | + |
---|
| 774 | + |
---|
757 | 775 | struct drm_syncobj_array { |
---|
758 | 776 | __u64 handles; |
---|
759 | 777 | __u32 count_handles; |
---|
760 | 778 | __u32 pad; |
---|
761 | 779 | }; |
---|
| 780 | + |
---|
| 781 | +#define DRM_SYNCOBJ_QUERY_FLAGS_LAST_SUBMITTED (1 << 0) /* last available point on timeline syncobj */ |
---|
| 782 | +struct drm_syncobj_timeline_array { |
---|
| 783 | + __u64 handles; |
---|
| 784 | + __u64 points; |
---|
| 785 | + __u32 count_handles; |
---|
| 786 | + __u32 flags; |
---|
| 787 | +}; |
---|
| 788 | + |
---|
762 | 789 | |
---|
763 | 790 | /* Query current scanout sequence number */ |
---|
764 | 791 | struct drm_crtc_get_sequence { |
---|
.. | .. |
---|
916 | 943 | #define DRM_IOCTL_MODE_GET_LEASE DRM_IOWR(0xC8, struct drm_mode_get_lease) |
---|
917 | 944 | #define DRM_IOCTL_MODE_REVOKE_LEASE DRM_IOWR(0xC9, struct drm_mode_revoke_lease) |
---|
918 | 945 | |
---|
| 946 | +#define DRM_IOCTL_SYNCOBJ_TIMELINE_WAIT DRM_IOWR(0xCA, struct drm_syncobj_timeline_wait) |
---|
| 947 | +#define DRM_IOCTL_SYNCOBJ_QUERY DRM_IOWR(0xCB, struct drm_syncobj_timeline_array) |
---|
| 948 | +#define DRM_IOCTL_SYNCOBJ_TRANSFER DRM_IOWR(0xCC, struct drm_syncobj_transfer) |
---|
| 949 | +#define DRM_IOCTL_SYNCOBJ_TIMELINE_SIGNAL DRM_IOWR(0xCD, struct drm_syncobj_timeline_array) |
---|
| 950 | + |
---|
| 951 | +#define DRM_IOCTL_MODE_GETFB2 DRM_IOWR(0xCE, struct drm_mode_fb_cmd2) |
---|
| 952 | + |
---|
919 | 953 | /** |
---|
920 | 954 | * Device specific ioctls should only be in their respective headers |
---|
921 | 955 | * The device specific ioctl range is from 0x40 to 0x9f. |
---|