1 #ifndef __NOUVEAU_CHAN_H__ 2 #define __NOUVEAU_CHAN_H__ 3 #include <nvif/object.h> 4 #include <nvif/notify.h> 5 struct nvif_device; 6 7 struct nouveau_channel { 8 struct nvif_device *device; 9 struct nouveau_drm *drm; 10 11 int chid; 12 13 struct nvif_object vram; 14 struct nvif_object gart; 15 struct nvif_object nvsw; 16 17 struct { 18 struct nouveau_bo *buffer; 19 struct nvkm_vma vma; 20 struct nvif_object ctxdma; 21 } push; 22 23 /* TODO: this will be reworked in the near future */ 24 bool accel_done; 25 void *fence; 26 struct { 27 int max; 28 int free; 29 int cur; 30 int put; 31 int ib_base; 32 int ib_max; 33 int ib_free; 34 int ib_put; 35 } dma; 36 u32 user_get_hi; 37 u32 user_get; 38 u32 user_put; 39 40 struct nvif_object user; 41 42 struct nvif_notify kill; 43 atomic_t killed; 44 }; 45 46 47 int nouveau_channel_new(struct nouveau_drm *, struct nvif_device *, 48 u32 arg0, u32 arg1, struct nouveau_channel **); 49 void nouveau_channel_del(struct nouveau_channel **); 50 int nouveau_channel_idle(struct nouveau_channel *); 51 52 extern int nouveau_vram_pushbuf; 53 54 #endif 55