1 #ifndef __NOUVEAU_FENCE_H__
2 #define __NOUVEAU_FENCE_H__
8 struct nouveau_channel
*channel
;
12 void (*work
)(void *priv
, bool signalled
);
16 int nouveau_fence_new(struct nouveau_channel
*, struct nouveau_fence
**);
17 struct nouveau_fence
*
18 nouveau_fence_ref(struct nouveau_fence
*);
19 void nouveau_fence_unref(struct nouveau_fence
**);
21 int nouveau_fence_emit(struct nouveau_fence
*, struct nouveau_channel
*);
22 bool nouveau_fence_done(struct nouveau_fence
*);
23 int nouveau_fence_wait(struct nouveau_fence
*, bool lazy
, bool intr
);
24 int nouveau_fence_sync(struct nouveau_fence
*, struct nouveau_channel
*);
25 void nouveau_fence_idle(struct nouveau_channel
*);
26 void nouveau_fence_update(struct nouveau_channel
*);
28 struct nouveau_fence_chan
{
29 struct list_head pending
;
34 struct nouveau_fence_priv
{
35 void (*dtor
)(struct drm_device
*);
36 bool (*suspend
)(struct drm_device
*);
37 void (*resume
)(struct drm_device
*);
38 int (*context_new
)(struct nouveau_channel
*);
39 void (*context_del
)(struct nouveau_channel
*);
40 int (*emit
)(struct nouveau_fence
*);
41 int (*sync
)(struct nouveau_fence
*, struct nouveau_channel
*,
42 struct nouveau_channel
*);
43 u32 (*read
)(struct nouveau_channel
*);
46 void nouveau_fence_context_new(struct nouveau_fence_chan
*);
47 void nouveau_fence_context_del(struct nouveau_fence_chan
*);
49 int nv04_fence_create(struct drm_device
*dev
);
50 int nv04_fence_mthd(struct nouveau_channel
*, u32
, u32
, u32
);
52 int nv10_fence_create(struct drm_device
*dev
);
53 int nv84_fence_create(struct drm_device
*dev
);
54 int nvc0_fence_create(struct drm_device
*dev
);