On Fri, 2009-08-21 at 11:45 +0200, Tom Cooksey wrote:
> 
> When using glX, we have no guarantee over what state the back buffer will be 
> in 
> after swap buffers. So, whenever an application needs to update, it must re-
> render the entire window. This makes things slow (we have to invoke every 
> child widget's paint event). To overcome this, we try to use a 3rd buffer as 
> a 
> back buffer, usually a multi-sampled FBO or PBuffer. We direct rendering to 
> the 
> FBO/PBuffer, bind it as a texture (after blitting it to a non multi-sampled 
> FBO 
> if needed), draw the whole buffer to the window's back buffer then call swap 
> buffers. Eughhh! But at least the PBuffer/FBO contents aren't destroyed. What 
> would be really nice is to be able to have an EGL_SWAP_BEHAVIOR == 
> EGL_BUFFER_PRESERVED equivalent on glX.

There's the GLX_OML_swap_method extension, but I'm not sure how well
it's supported by our drivers at this point. Any issues there might not
be hard to fix up though.


> I think I can work around this by making a glx context current on a GLXPixamp 
> (from a XPixmap). Pixmaps are single buffered and so don't get destroyed on 
> swap buffers (in fact I don't even call swap buffers). I can then post 
> updates 
> using XCopyArea which will also cause the Xserver to generate an appropriate 
> XDamage region for the compositor. The only down side is that I have to 
> glFinish before calling XCopyArea.

Actually you should only need glXWaitGL(), assuming the implementation
of that meets the requirements of the GLX spec.

> While I have this working, it seems a little hacky and isn't widely
> supported (I have it working on 1 driver build for 1 bit of hardware).

If you mean rendering to pixmaps isn't widely supported, that should be
getting better with DRI2.


-- 
Earthling Michel Dänzer           |                http://www.vmware.com
Libre software enthusiast         |          Debian, X and DRI developer

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with 
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
--
_______________________________________________
Dri-devel mailing list
Dri-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dri-devel

Reply via email to