Here are a few things to keep in mind when developing effects plugins for MidiVid GPU:
- Do as much as possible on the graphics card
- MidiVid GPU was designed to run with good graphics hardware, and graphics hardware doesn't like to share. If you want the CPU to do work on an image, it may mean pulling it down from the graphics card over the AGP back channel. This is not good, as it generally runs at AGP 1X speed or even less, depending on the hardware. In general, most animating device-based video sources will use AGP memory, so they're already in system RAM. This includes the AVI player, capture cards, and the video sampler. The framebuffer loopback device uses video RAM, so doing CPU processing of that source will be very time consuming.
- Clean up after yourself
- MidiVid GPU expects you to leave the GPU the way you found it. Thins means resetting all state information on the device to their defaults after you render. If you leave the device in an unknown state, other plugins that expect it to be left a certain way may malfunction. I could write policing code to ensure you do your job, but that would slow everything down. Try to play nice.
- Free resources as soon as possible
- Try not to hold texture memory or other shared resources longer than necessary. Most cards these days have a lot of memory, but you never know what other plugins the user may be running, so minimize your load on the system wherever possible.
- Optimize your shaders
- Not everyone has the latest video hardware. Making your shaders as fast as possible means users with older hardware can play too, and users with new cards can run more than just your plugin. Both NVidia and ATI have excellent white papers available on shader optimization techniques.