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