Adam Jackson wrote:
On Monday 06 February 2006 07:58, David Reveman wrote:

Hey,

here's the latest version of the texture from pixmap spec that Xgl will
be supporting. It's not fully implemented in Xgl yet, just so much of it
that you can get an indirect rendering compositing manager running using
it.


Regarding issue 5 (rebinding and texturing directly from the pixmap image), I've suspected for a while now that we need some form of protocol whereby apps can signal to the compositing manager that they've rendered a frame to a given pixmap and therefore that it should be rendered from quickly. Others have proposed using sync counters as an even/odd toggle indicating whether the pixmap is "baked" or not. I think we want the ability to specify live updates to the pixmap as an (optional) attribute to BindTexImage to accomodate for this sort of handshaking in the future.

I think there's some implicit and explicit clues to indicate when drawing to a pixmap is completed.

With OpenGL rendering, the glFlush/glFinish() commands are used to force any buffered rendering commands to be completed (with the implication is the results are to be displayed immediately). The SwapBuffers function does an implicit glFlush.

With Xlib rendering, any buffered rendering commands are supposed to be completed when any Xevent-getting function is called, or an explicit XFlush() or XSync() is used.

These would seem to be the signals to "push" rendering to the screen. There's other times when the window system wants to "pull" images to repaint the screen. In that case I think it's OK to get pixmap images that aren't completely rendered. Sure, you may get some glitches/artifacts, but we've been living with that for many years. If the pixmap is _copied_ to a texture, though, you kind of get double buffering automatically.


Other than that it's been fairly easy to hook this - well, "this" when it was still called EXT_texture_from_drawable - up in the GLX implementation in the xfree86 DDX, and we've been pretty pleased with the results so far. I don't see anything in this revision that will make life any harder in the xfree86 DDX.

Currently we're just doing TexImage2D to dump the bits from the pixmap to the texture, which is suboptimal but works surprisingly well as long as your pixmaps are in host memory (thank you, XaaNoOffscreenPixmaps). In the future there's probably some integration to be done with the GetImage path for accelerated downloads, or with on-card copies from pixmap storage to texture storage, or live updates as mentioned above. Also in the medium-to-long term we should look into unifying the GLX code between the xgl and xfree86 DDX's. I haven't had the chance to look at the xgl side in too much detail, but I expect there's some common themes.

-Brian


-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems?  Stop!  Download the new AJAX search engine that makes
searching your log files as easy as surfing the  web.  DOWNLOAD SPLUNK!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=103432&bid=230486&dat=121642
_______________________________________________
Mesa3d-dev mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev

Reply via email to