Hi.. I'm currently trying to figure out a way to implement the capture code for voodoo3500tv and am in need of some general guidelines. Some background: Voodoo-chip automatically takes care of receiving the picture data from video-decoder and places it in the framebuffer(up to triple-buffering). It can then automatically flip the latest data to an overlay surface and/or generate an interrupt (upon frame completion) for further processing(such as capture). I've implemented a basic read function that use voodoos 2d operations to convert yuv to rgb(16/24) and then copy this to the user. All is nice but a little too slow for any video-capture. Stills work decently, though... So now I want to implement mmap-interface. Basically the code in bttv is a good example of how to do it except for the actual capture part(so different from voodoo w/ all risc code, etc...). So now if I get an interrupt signaling of a frame captured to framebuffer what should I do next? 1) Transfer all of the frame during that interrupt to a separate buffer in main memory (something in my head says moving 640x240x2 during an interrupt is not good). 2) have maybe a kernel thread that takes care of that an have my interrupt handler just wake up the thread? 3) Could I just map parts of the framebuffer memory with mmap to users to skip this extra copying? Setting up, say, 10 buffers in framebuffer and use the onchip 2d-routines to copy/transform data into these. Rather less time consuming then doing it in main memory. There's no way, it seems, to have voodoo-chip transfer data to main memory(3dfx didn't even implement extra texture storage in main memory like they could have according to agp specs) by itself so controlling programs have to take care of that.. Should I take some extra steps to prevent blocking, say, disk i/o during copying large amounts of data? How do I ensure smp-compatibility? - Juha