Going on the assumption that the ring buffer is under the control of
the kernel and/or a privileged process that will follow a strict set
of rules, I have an idea.

Usually, processes will request access to the ring buffer via IOCTL,
which inserts into the ring buffer an indirect DMA request to execute
commands in another set of buffers.  That means that the memory
management of the ring buffer is under centralized software control. 
That means that that software can do whatever it wants, right?

Ok, how about this idea:  When the kernel code determines that a given
ring-buffer page is about to fill, it automatically inserts into that
buffer a command that directs the DMA engine to fetch from a different
physical address.  This 'link' would then allow the kernel to 'chain'
physical pages indefinitely.

The only disadvantage I can see is that it would be more complex to
determine where the GPU 'read pointer' is so as to know which pages
are no longer in use.  But it's really not THAT complicated, and there
are numerous advantages, such as being able to dynamically grow/shrink
the ring buffer and reuse consumed pages in random order.

There are still some kinks to work out, but what do you think?
_______________________________________________
Open-graphics mailing list
[email protected]
http://lists.duskglow.com/mailman/listinfo/open-graphics
List service provided by Duskglow Consulting, LLC (www.duskglow.com)

Reply via email to