1 #ifndef __NOUVEAU_FENCE_H__
2 #define __NOUVEAU_FENCE_H__
10 struct nouveau_channel
*channel
;
11 unsigned long timeout
;
14 void (*work
)(void *priv
, bool signalled
);
18 int nouveau_fence_new(struct nouveau_channel
*, struct nouveau_fence
**);
19 struct nouveau_fence
*
20 nouveau_fence_ref(struct nouveau_fence
*);
21 void nouveau_fence_unref(struct nouveau_fence
**);
23 int nouveau_fence_emit(struct nouveau_fence
*, struct nouveau_channel
*);
24 bool nouveau_fence_done(struct nouveau_fence
*);
25 int nouveau_fence_wait(struct nouveau_fence
*, bool lazy
, bool intr
);
26 int nouveau_fence_sync(struct nouveau_fence
*, struct nouveau_channel
*);
28 struct nouveau_fence_chan
{
29 struct list_head pending
;
30 struct list_head flip
;
36 struct nouveau_fence_priv
{
37 void (*dtor
)(struct nouveau_drm
*);
38 bool (*suspend
)(struct nouveau_drm
*);
39 void (*resume
)(struct nouveau_drm
*);
40 int (*context_new
)(struct nouveau_channel
*);
41 void (*context_del
)(struct nouveau_channel
*);
42 int (*emit
)(struct nouveau_fence
*);
43 int (*sync
)(struct nouveau_fence
*, struct nouveau_channel
*,
44 struct nouveau_channel
*);
45 u32 (*read
)(struct nouveau_channel
*);
48 #define nouveau_fence(drm) ((struct nouveau_fence_priv *)(drm)->fence)
50 void nouveau_fence_context_new(struct nouveau_fence_chan
*);
51 void nouveau_fence_context_del(struct nouveau_fence_chan
*);
53 int nv04_fence_create(struct nouveau_drm
*);
54 int nv04_fence_mthd(struct nouveau_channel
*, u32
, u32
, u32
);
56 int nv10_fence_emit(struct nouveau_fence
*);
57 int nv17_fence_sync(struct nouveau_fence
*, struct nouveau_channel
*,
58 struct nouveau_channel
*);
59 u32
nv10_fence_read(struct nouveau_channel
*);
60 void nv10_fence_context_del(struct nouveau_channel
*);
61 void nv10_fence_destroy(struct nouveau_drm
*);
62 int nv10_fence_create(struct nouveau_drm
*);
64 int nv50_fence_create(struct nouveau_drm
*);
65 int nv84_fence_create(struct nouveau_drm
*);
66 int nvc0_fence_create(struct nouveau_drm
*);
67 u64
nvc0_fence_crtc(struct nouveau_channel
*, int crtc
);
69 int nouveau_flip_complete(void *chan
);