El Sun, 20 Aug 2006 06:59:47 -0400 "Timothy Miller" <[EMAIL PROTECTED]> escribio:
[...] > Here's an example: Many drawing engines have an "I am completely > done" interrupt. DMA hardware and software use that to set up the > transfer for the next block of commands. In the mean time, the GPU is > IDLE. Just sitting there wasting time. What if we wanted an > interrupt that said "I'm nearly done; go ahead and set me up for some > more commands"? The only drawing engine I know of that does this is > the one I designed for Tech Source. If you were to base your API > around existing GPU designs, you would be forever unable to take > advantage of this unusual feature, and you'd lose out on a potentially > significant performance boost. [...] About this DMAs usually have a pair of registers(address, count) that you can read or write and between this and the bus the counters that generate addresses for the transfer and stop transfer when zero. In the comodore amiga you can program audio(and others i think) DMAs so that when the count end it reload counters from registers and generate an interrupt. So you do: - Get a pair of buffers - Fill the buffers - Program DMA with one buffer - Start the transfer - Program DMA with other buffer without stop transfer in progress(simply wrote address and count without touching control reg) - Wait for the interrupt When you get the interrupt you known that the DMA is transfering the second buffer and the first is transfered and empty so you: - Reuse the empty buffer - Program DMA with not in use buffer whitout stop transfer in progress In this way you do not get idle sound(in amiga case) and the procesor do the minimum work possible. Can this be applied here? Is it used by someone? sorry i am one amiga fan :P Diego
pgpbGRCUWFef3.pgp
Description: PGP signature
_______________________________________________ Open-graphics mailing list [email protected] http://lists.duskglow.com/mailman/listinfo/open-graphics List service provided by Duskglow Consulting, LLC (www.duskglow.com)
