123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- #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;
- spinlock_t peephole_lock;
- };
- struct nouveau_software_chan {
- int (*flip)(void *data);
- void *flip_data;
- struct {
- struct list_head list;
- u32 channel;
- u32 ctxdma;
- u32 offset;
- u32 value;
- u32 head;
- } vblank;
- };
- static inline void
- nouveau_software_context_new(struct nouveau_channel *chan,
- struct nouveau_software_chan *pch)
- {
- pch->flip = nouveau_flip_complete;
- pch->flip_data = chan;
- }
- static inline void
- nouveau_software_create(struct nouveau_software_priv *psw)
- {
- INIT_LIST_HEAD(&psw->vblank);
- spin_lock_init(&psw->peephole_lock);
- }
- static inline u16
- nouveau_software_class(struct drm_device *dev)
- {
- struct drm_nouveau_private *dev_priv = dev->dev_private;
- if (dev_priv->card_type <= NV_04)
- return 0x006e;
- if (dev_priv->card_type <= NV_40)
- return 0x016e;
- if (dev_priv->card_type <= NV_50)
- return 0x506e;
- if (dev_priv->card_type <= NV_E0)
- return 0x906e;
- return 0x0000;
- }
- int nv04_software_create(struct drm_device *);
- int nv50_software_create(struct drm_device *);
- int nvc0_software_create(struct drm_device *);
- #endif
|