summaryrefslogtreecommitdiff
path: root/shared-core/nv40_graph.c
AgeCommit message (Expand)Author
2008-08-08nouveau: wait for pgraph idle after loading or saving a contextStuart Bennett
2008-03-24nv40: voodoo - not quite.Ben Skeggs
2008-03-24nv40: allocate massive amount of PRAMIN for grctx on all chipsets.Ben Skeggs
2008-01-30nv40: some more nv67 changesBen Skeggs
2007-11-05drm: remove lots of spurious whitespace.Dave Airlie
2007-10-04nouveau: NV47 context switching voodoo + warningMaarten Maathuis
2007-09-07nouveau: Use nv41 ctxprog/vals on nv42.Ben Skeggs
2007-09-04Add context init voodoo and context switch code for NV41.Maarten Maathuis
2007-08-22nouveau/nv40: Preserve other bits in 0x400304/0x400310 like NVIDIA do.Ben Skeggs
2007-08-22nouveau/nv40: Dump extra info on ucode state if ctx switch fails.Ben Skeggs
2007-08-22nouveau: NV4c ctx ucode.Ben Skeggs
2007-08-21nouveau: Add NV44 ctx ucode. Patch from stillunknown.Ben Skeggs
2007-08-08nouveau: enable/disable engine-specific interrupts in _init()/_takedown()Ben Skeggs
2007-08-06nouveau: Pass channel struct around instead of channel id.Ben Skeggs
2007-07-20Remove DRM_ERR OS macro.Eric Anholt
2007-07-13nouveau: nuke internal typedefs, and drm_device_t use.Ben Skeggs
2007-07-09nouveau/nv50: Initial channel/object supportBen Skeggs
2007-07-09nouveau: rewrite gpu object codeBen Skeggs
2007-06-28nouveau: name some regsBen Skeggs
2007-06-25nouveau: NV49/NV4B PGRAPH setup from jb17bsome and stephan_2303Ben Skeggs
2007-06-24nouveau: NV4X PGRAPH engtab functionsBen Skeggs
2007-04-09nouveau: NV46 supportBen Skeggs
2007-04-01nouveau: fix usage of PGRAPH_CTX_CONTROL on nv20+Matthieu Castet
2007-03-26nouveau: move card initialisation into the drmBen Skeggs
2007-03-13nouveau: associate all created objects with a channel + cleanupsBen Skeggs
2007-03-07nouveau: remove a hack that's not needed since the last interface change.Ben Skeggs
2007-02-28nouveau: intrusive drm interface changesBen Skeggs
2007-02-03nouveau: rename registers to their proper names.Stephane Marchesin
2007-01-28nouveau: determine chipset type at startup, instead of every time we use it.Ben Skeggs
2007-01-25nouveau: nv4c default contextBen Skeggs
2007-01-08nouveau: fix nv4a context size.Stephane Marchesin
2007-01-08nouveau: nv4a context support.Stephane Marchesin
2007-01-08nouveau: oopsBen Skeggs
2007-01-08nouveau: nv43 context stuffBen Skeggs
2007-01-06nouveau: get c51 doing glxgears without the binary driver's help.Ben Skeggs
2007-01-06nouveau: Use PMC_BOOT_0 to determine which ctx_voodoo to load.Ben Skeggs
2007-01-02nouveau: Hookup nv40_graph_init.Ben Skeggs
2007-01-02nouveau: Add nv40-specific PGRAPH code, not hooked up yet.Ben Skeggs
class="hl kwc">typedef struct _drmMMListHead { struct _drmMMListHead *prev; struct _drmMMListHead *next; } drmMMListHead; #define DRMINITLISTHEAD(__item) \ do{ \ (__item)->prev = (__item); \ (__item)->next = (__item); \ } while (0) #define DRMLISTADD(__item, __list) \ do { \ (__item)->prev = (__list); \ (__item)->next = (__list)->next; \ (__list)->next->prev = (__item); \ (__list)->next = (__item); \ } while (0) #define DRMLISTADDTAIL(__item, __list) \ do { \ (__item)->next = (__list); \ (__item)->prev = (__list)->prev; \ (__list)->prev->next = (__item); \ (__list)->prev = (__item); \ } while(0) #define DRMLISTDEL(__item) \ do { \ (__item)->prev->next = (__item)->next; \ (__item)->next->prev = (__item)->prev; \ } while(0) #define DRMLISTDELINIT(__item) \ do { \ (__item)->prev->next = (__item)->next; \ (__item)->next->prev = (__item)->prev; \ (__item)->next = (__item); \ (__item)->prev = (__item); \ } while(0) #define DRMLISTENTRY(__type, __item, __field) \ ((__type *)(((char *) (__item)) - offsetof(__type, __field))) typedef struct _drmFence{ unsigned handle; int class; unsigned type; unsigned flags; unsigned signaled; unsigned pad[4]; /* for future expansion */ } drmFence; typedef struct _drmBO{ drm_bo_type_t type; unsigned handle; drm_u64_t mapHandle; unsigned flags; unsigned mask; unsigned mapFlags; unsigned long size; unsigned long offset; unsigned long start; unsigned replyFlags; unsigned fenceFlags; unsigned pageAlignment; void *virtual; void *mapVirtual; int mapCount; unsigned pad[8]; /* for future expansion */ } drmBO; typedef struct _drmBONode { drmMMListHead head; drmBO *buf; drm_bo_arg_t bo_arg; unsigned long arg0; unsigned long arg1; } drmBONode; typedef struct _drmBOList { unsigned numTarget; unsigned numCurrent; unsigned numOnList; drmMMListHead list; drmMMListHead free; } drmBOList; /* Fencing */ extern int drmFenceCreate(int fd, unsigned flags, int class, unsigned type, drmFence *fence); extern int drmFenceDestroy(int fd, const drmFence *fence); extern int drmFenceReference(int fd, unsigned handle, drmFence *fence); extern int drmFenceUnreference(int fd, const drmFence *fence); extern int drmFenceFlush(int fd, drmFence *fence, unsigned flush_type); extern int drmFenceSignaled(int fd, drmFence *fence, unsigned fenceType, int *signaled); extern int drmFenceWait(int fd, unsigned flags, drmFence *fence, unsigned flush_type); extern int drmFenceEmit(int fd, unsigned flags, drmFence *fence, unsigned emit_type); extern int drmFenceBuffers(int fd, unsigned flags, drmFence *fence); /* * Buffer object list functions. */ extern void drmBOFreeList(drmBOList *list); extern int drmBOResetList(drmBOList *list); extern void *drmBOListIterator(drmBOList *list); extern void *drmBOListNext(drmBOList *list, void *iterator); extern drmBO *drmBOListBuf(void *iterator); extern int drmBOCreateList(int numTarget, drmBOList *list); /* * Buffer object functions. */ extern int drmBOCreate(int fd, unsigned long start, unsigned long size, unsigned pageAlignment,void *user_buffer, drm_bo_type_t type, unsigned mask, unsigned hint, drmBO *buf); extern int drmBODestroy(int fd, drmBO *buf); extern int drmBOReference(int fd, unsigned handle, drmBO *buf); extern int drmBOUnReference(int fd, drmBO *buf); extern int drmBOMap(int fd, drmBO *buf, unsigned mapFlags, unsigned mapHint, void **address); extern int drmBOUnmap(int fd, drmBO *buf); extern int drmBOValidate(int fd, drmBO *buf, unsigned flags, unsigned mask, unsigned hint); extern int drmBOFence(int fd, drmBO *buf, unsigned flags, unsigned fenceHandle); extern int drmBOInfo(int fd, drmBO *buf); extern int drmBOBusy(int fd, drmBO *buf, int *busy); extern int drmAddValidateItem(drmBOList *list, drmBO *buf, unsigned flags, unsigned mask, int *newItem); extern int drmBOValidateList(int fd, drmBOList *list); extern int drmBOFenceList(int fd, drmBOList *list, unsigned fenceHandle); extern int drmBOWaitIdle(int fd, drmBO *buf, unsigned hint); /* * Initialization functions. */ extern int drmMMInit(int fd, unsigned long pOffset, unsigned long pSize, unsigned memType); extern int drmMMTakedown(int fd, unsigned memType); extern int drmMMLock(int fd, unsigned memType); extern int drmMMUnlock(int fd, unsigned memType); #endif