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

Reply via email to