From: Jeff H. <jha...@va...> - 2001-01-30 17:16:14
|
Gareth Hughes wrote: > I *really* want to get this thing rock solid ASAP, so that we can move the rest > of the drivers over to the new DRM architecture. Here's the latest: > > I have the primary DMA stream as stable as you'd like. I can send tens or > hundreds of megabytes of commands at the 256KB ring buffer, made up of just > DMAPADs, state programming commands, clears and/or swaps, and it is stable. No > problems at all. > > However, throw in some secondary DMA (used for vertex buffers, texture uploads > etc), and we begin to get into trouble. I had Mesa/book/double running, only to > fire it up after restarting the X server and it locked after a couple of > seconds. Most other animated apps will lock up as well. I've disabled the > PRIMPTR register (used to write a block of status info into system memory), but > that doesn't seem to help. > > I put this aside for a day or so, but will take another look at it later > tonight. This is mainly directed at Keith and Jeff -- is there anything I > should be careful of regarding secondary DMA? Any tips or tricks you guys know > of? If you overwrite secondary buffers that the card is currently absorbing, your going to hang the card. Thats really the only thing that will cause that sort of problem. Working out buffer aging is probably going to be hard. I'll have a look at the code and see if I can suggest anything. > > > I'm thinking about abandoning the current interrupt-driven architecture > altogether to see if that will help... It will, of course, remove all the > overhead of interrupt handling, but that's another matter... The optimial way of programming the G400 is to only have an interrupt when you wrap the ring. I can detail the logic needed to accomplish this if you want. I would suggest getting the current code going before you try this though (Its a little more complicated then it seems). -Jeff |