};
#define PVR_EVENT_SYNC 0x01
+#define PVR_EVENT_FLIP 0x02
/*
* Every buffer used as a render target has a 'PVRSRV_KERNEL_SYNC_INFO'
struct pvr_event_sync {
struct pvr_event base;
const struct PVRSRV_KERNEL_SYNC_INFO *sync_info;
+ __u64 user_data;
__u32 tv_sec;
__u32 tv_usec;
};
+struct pvr_event_flip {
+ struct pvr_event base;
+ __u64 user_data;
+ __u32 tv_sec;
+ __u32 tv_usec;
+ __u32 overlay;
+};
+
/* Event queued up for userspace to read */
struct pvr_pending_event {
struct pvr_event *event;
struct pvr_event_sync event;
};
+struct pvr_pending_flip_event {
+ struct pvr_pending_event base;
+ struct pvr_event_flip event;
+};
+
void pvr_init_events(void);
+void pvr_exit_events(void);
int pvr_sync_event_req(struct PVRSRV_FILE_PRIVATE_DATA *priv,
- const struct PVRSRV_KERNEL_SYNC_INFO *sync_info);
+ const struct PVRSRV_KERNEL_SYNC_INFO *sync_info,
+ u64 user_data);
+int pvr_flip_event_req(struct PVRSRV_FILE_PRIVATE_DATA *priv,
+ unsigned int overlay, u64 user_data);
ssize_t pvr_read(struct file *filp, char __user *buf, size_t count,
loff_t *off);
unsigned int pvr_poll(struct file *filp, struct poll_table_struct *wait);