1 #ifndef __NOUVEAU_CHAN_H__ 2 #define __NOUVEAU_CHAN_H__ 3 4 #include <nvif/object.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 nouveau_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 *object; 41 }; 42 43 44 int nouveau_channel_new(struct nouveau_drm *, struct nvif_device *, 45 u32 handle, u32 arg0, u32 arg1, 46 struct nouveau_channel **); 47 void nouveau_channel_del(struct nouveau_channel **); 48 int nouveau_channel_idle(struct nouveau_channel *); 49 50 extern int nouveau_vram_pushbuf; 51 52 #endif 53