diff options
author | Ben Skeggs <bskeggs@redhat.com> | 2012-07-22 11:55:54 +1000 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2012-10-03 13:12:55 +1000 |
commit | f589be88caf32501a734e531180d5df5d6089ef3 (patch) | |
tree | c6653b5d6aa47aade8abc79c0bb73462f82eef01 /drivers/gpu/drm/nouveau/nouveau_fence.h | |
parent | bc9e7b9a61e9e92ddb58920cb2cb5c2e2825ca8a (diff) | |
download | linux-f589be88caf32501a734e531180d5df5d6089ef3.tar.bz2 |
drm/nouveau/pageflip: kick flip handling out of engsw and into fence
This is all very much a policy thing, and hence will not belong in SW
after the rework.
engsw now only handles receiving the event to say "can flip now" and makes
a callback to perform the actual work.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/nouveau/nouveau_fence.h')
-rw-r--r-- | drivers/gpu/drm/nouveau/nouveau_fence.h | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_fence.h b/drivers/gpu/drm/nouveau/nouveau_fence.h index 690f46536a70..8ee65758f24f 100644 --- a/drivers/gpu/drm/nouveau/nouveau_fence.h +++ b/drivers/gpu/drm/nouveau/nouveau_fence.h @@ -27,6 +27,8 @@ void nouveau_fence_update(struct nouveau_channel *); struct nouveau_fence_chan { struct list_head pending; + struct list_head flip; + spinlock_t lock; u32 sequence; }; @@ -49,8 +51,19 @@ void nouveau_fence_context_del(struct nouveau_fence_chan *); int nv04_fence_create(struct drm_device *dev); int nv04_fence_mthd(struct nouveau_channel *, u32, u32, u32); -int nv10_fence_create(struct drm_device *dev); +int nv10_fence_emit(struct nouveau_fence *); +int nv17_fence_sync(struct nouveau_fence *, struct nouveau_channel *, + struct nouveau_channel *); +u32 nv10_fence_read(struct nouveau_channel *); +void nv10_fence_context_del(struct nouveau_channel *); +void nv10_fence_destroy(struct drm_device *); +int nv10_fence_create(struct drm_device *dev); + +int nv50_fence_create(struct drm_device *dev); int nv84_fence_create(struct drm_device *dev); int nvc0_fence_create(struct drm_device *dev); +u64 nvc0_fence_crtc(struct nouveau_channel *, int crtc); + +int nouveau_flip_complete(void *chan); #endif |