On Fri, 4 Apr 2003, Billy Biggs wrote:

> 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.
> 

   NVIDIA binary drivers use DMA to copy from the framebuffer
for XShmGetImage.  There's no benchmark for XShmGetImage in x11perf
but I get over 100 MB/sec with XGetImage if there's nothing else
going on.  This has been supported on all cards the NVIDIA binary
drivers support for at least a year.


                Mark.


_______________________________________________
XFree86 mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/xfree86

Reply via email to