Tim Smith wrote: > On Friday 31 May 2002 2:00 pm, Keith Whitwell scribed numinously:" > >>Tim Smith wrote: >> >>>I conclude from this that writing the ring tail register causes the >>>card to fetch all the commands up until that point and feed them to its >>>FIFO, which may fill it... It's certainly possible for the FIFO to go >>>from 64 slots free to 0 in one ioctl... >>> >>I can't believe this. The ring is there specifically so that you don't >>have to worry about the fifo. It's a big buffer between you & the >>hardware - the hardware drains the ring at it's pace & you fill it at >>yours. >> >>Also note that you can tell the ring to fire off a big (64k or more) >>buffer of commands sitting elsewhere in agp space. That might be tens of >>thousands of fifo slots for a single write to the ring tail register. >> > > I was being unclear. What I mean is that you can fire off a big chunk of > commands via (e.g.) radeon_cp_cmdbuf, and when you COMMIT_RING() the FIFO > is empty (64 slots free), but a few microseconds later when you com back to > do your do_cp_idle(), the card has fetched a load of stuff to work on and > the FIFO is full. This is obviously true and I don't expect it to be news > :-) > > I seem to be observing the behaviour that if, on entry to do_cp_idle() the > FIFO is not empty already, it never will be empty and the whole thing goes > pear shaped. Thus, if a big collection of commands is just followed by more > commands this doesn't seem to cause a problem, but if a big collection of > commands is followed very quickly by a cp_idle(), it goes funny. This may > of course be Yet Another Symptom, of which I seem to have chased many :-)
OK, but the three commands you mention RADEON_PURGE_CACHE(); RADEON_PURGE_ZCACHE(); RADEON_WAIT_UNTIL_IDLE(); all emit stuff to the ring, rather than writing to registers. If there is a culprit, I don't think it's these three. > Me too. Could this be a locking problem? There seem to be two contexts owned > by the same PID in this case, and the LOCK_TEST_WITH_RETURN() macro only > tests that the PID is the same as the currently holding PID, not the > context. Oh, that's interesting... Keith _______________________________________________________________ Don't miss the 2002 Sprint PCS Application Developer's Conference August 25-28 in Las Vegas -- http://devcon.sprintpcs.com/adp/index.cfm _______________________________________________ Dri-devel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/dri-devel