David N. ([EMAIL PROTECTED]): > The other part of my problem is that I'm trying to grab complete > images off of the screen using XShmGetImage(). Despite synchronizing > on with vertical refresh like you suggested, I'm finding that the > buffers that I capture with XShmGetImage() have tearing in them - i.e. > it looks like the next frame is getting drawn into X's buffer before > XShmGetImage is done retrieving them. > > In these cases I notice that XShmGetImage is taking longer than 13.3ms > to complete. Do you have any ideas on a quicker way to get a copy of > X's output buffer?
I am not an expert in this area, but I can tell you that reading from video memory is extremely slow for most, if not all, consumer video cards. The path is not optimized and can take well longer than a frame to grab a copy of the framebuffer. Rumor has it that some cards, like newer nVidia cards, can use their DMA engine to transfer from video memory back into system memory, which would be useful for many applications which want to, say, render 3D graphics in realtime for some other purpose than display on the screen (like hardware accellerated raytracing). However, I do not believe that this is currently implemented in the nVidia binary drivers for XShmGetImage, or anywhere else by anyone else for that matter. I'd love to be proved wrong. -Billy -- Billy Biggs [EMAIL PROTECTED] _______________________________________________ XFree86 mailing list [EMAIL PROTECTED] http://XFree86.Org/mailman/listinfo/xfree86

