diff options
author | Ben Skeggs <bskeggs@redhat.com> | 2012-07-22 01:55:54 (GMT) |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2012-10-03 03:12:55 (GMT) |
commit | f589be88caf32501a734e531180d5df5d6089ef3 (patch) | |
tree | c6653b5d6aa47aade8abc79c0bb73462f82eef01 /drivers/gpu/drm/nouveau/nouveau_software.h | |
parent | bc9e7b9a61e9e92ddb58920cb2cb5c2e2825ca8a (diff) | |
download | linux-f589be88caf32501a734e531180d5df5d6089ef3.tar.xz |
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_software.h')
-rw-r--r-- | drivers/gpu/drm/nouveau/nouveau_software.h | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_software.h b/drivers/gpu/drm/nouveau/nouveau_software.h index 709e5ac..2105a9e 100644 --- a/drivers/gpu/drm/nouveau/nouveau_software.h +++ b/drivers/gpu/drm/nouveau/nouveau_software.h @@ -1,6 +1,8 @@ #ifndef __NOUVEAU_SOFTWARE_H__ #define __NOUVEAU_SOFTWARE_H__ +#include "nouveau_fence.h" + struct nouveau_software_priv { struct nouveau_exec_engine base; struct list_head vblank; @@ -8,7 +10,9 @@ struct nouveau_software_priv { }; struct nouveau_software_chan { - struct list_head flip; + int (*flip)(void *data); + void *flip_data; + struct { struct list_head list; u32 channel; @@ -20,10 +24,11 @@ struct nouveau_software_chan { }; static inline void -nouveau_software_context_new(struct nouveau_software_chan *pch) +nouveau_software_context_new(struct nouveau_channel *chan, + struct nouveau_software_chan *pch) { - INIT_LIST_HEAD(&pch->flip); - INIT_LIST_HEAD(&pch->vblank.list); + pch->flip = nouveau_flip_complete; + pch->flip_data = chan; } static inline void @@ -51,6 +56,5 @@ nouveau_software_class(struct drm_device *dev) int nv04_software_create(struct drm_device *); int nv50_software_create(struct drm_device *); int nvc0_software_create(struct drm_device *); -u64 nvc0_software_crtc(struct nouveau_channel *, int crtc); #endif |