Dan:
Both. We have a high level dirty rect type approach that can eliminate large areas. However, we also do a pixel by pixel approach on the other areas as we found that it actually still makes an improvement. Basically, writting to video memory is just that slow.
Digby and others:
I download the MediaQ docs and found them quite straightforward. Except for the fact that they neglected to cover the FIFO register definitions, everything you need is in there. I was able to setup a system memory to display memory BitBlt and bang the pixels into the FIFO. Unfortunately, since the BitBlt requires you to send the data to the FIFO, this is actually slower than just writting to the display memory. My test program runs at 45fps when writting to display memory and about 33fps when banging the FIFO for the BitBlt. I imagine that if I setup a chained DMA to write to the FIFO, that this would probably speed things up. Unfortunately, the FIFO depth is only 64 bytes, so there will be a good bit of overhead in any method writting to the FIFO. I'll try this next.
I did do some display memory to display memory BLTs and I found them to be wicked fast (like nearly free). The BLT function support full ROP and transparency (not blending, just yes or no) so there is probably something useful that can be done with this. I can imagine keeping some static object just offscreen and BLT them onscreen as needed. Since a 320x240 screen only takes about 60% of the available RAM, there could be some interesting potential here (given that nothing *else* is using that RAM).
What I don't understand is why the Window's BLT is so slow. If the MediaQ will do a BLT using chained DMA to the FIFO, then it should be much faster. There are only two possibilities in my mind... 1) The display driver doesn't use the MediaQ features, or 2) Chained DMA to the FIFO is slow. I honestly can't imagine that the display driver isn't optimized for the chip since MediaQ provides a reference driver. In addition, I have a hard time believing that the DMA/FIFO method would be slow. Of course, experience tells me not to be surprised by anything.
I would be interested in putting a small test program out that does nothing but BLT a screen using direct write to display memory (memcpy). It would be interesting to get some fps numbers from different devices. The only two devices I have both have the MediaQ 1132... so I'd like to see what some device do that either don't have a external video controller or that have a different one.
Thanks for all the input. This looks like a great forum. If noone minds, I think I'll stick around.
Cheers,
rcp