Archived

This topic is now archived and is closed to further replies.

Kjell Andersson

DirectDraw FIFO-Buffer execution

Recommended Posts

A Direct Draw question: If I have a graphics-card with FIFO-buffer for BLT operations, how do I tell the card to start processing this buffer? The thing is that I at a specific point in the program want to tell the card to process these BLT operations so that I can work simulaneously with the CPU doing other things while the graphic card also works.

Share this post


Link to post
Share on other sites
It doesn''t seem to happend for me when I use Blt. When I time a series of BLT-calls they take much less time than they really take if I check the visual performance. If I for example use Lock() Unlock() after each BLT I get a totaly different figure more matching the visual performance (a figure in the order of 100-1000 times more than before). This indicates that when locking the buffer, the BLT operation is performed but otherwise the BLT is just queued for later execution.

What I want to do is start the execution of the BLT-queue at a point in the code much like the Lock() does, but I don''t want the CPU to wait (as Lock() does) at that point.

Share this post


Link to post
Share on other sites
When you call flip at the end of your loop it will wait for all Blt operations to finish. Why do you want to finish all Blt operations at a specific time? The idea is when you call Blt the calls get stacked up and executed immediately. If you just make one call to Blt there will be no stacking and it will execute immediately. If there are three Blt calls and they overalap in time then they will be queued and as soon as you make the first Blt call the Blt will start execution. The second Blt will wait for the first Blt to finish before being executed by the card.



Please state the nature of the debugging emergency.


sharewaregames.20m.com

Share this post


Link to post
Share on other sites