Let's set the record slightly straighter about this bug.
Compiz is a compositor, it tells applications to render offscreen and then composites (blends, combines, whatever) into an image and presents it to the screen. The application is still told where it is on the screen, it is just that most 2D clients render to the offscreen pixmap.
The direct clients of the current driver (OpenGL and Video) render directly to the framebuffer (the screen). Compiz (as an OpenGL application) renders to the framebuffer. The "flickering" that people are talking about is actually two openGL clients rendering to the same part of the screen.
The COMPOSITE extension is an all or nothing option, the compositor assumes that all windows are compositable, and there is no way for the driver to say that the window shouldn't be composited. I am hoping that COMPOSITE can be extended to provide hints to the compositor that for whatever reason (overlay, etc), an application can't render offscreen and so the compositor should provide all the details needed for the rendering to occur properly. Currently we can't do that.
To solve this completely, *ALL* clients must support the COMPOSITE extension fully. The NVidia drivers support this currently, some xV clients support this as well. None of the DRI based 3D drivers support this. DRI2 is adding infrastructure to support COMPOSITE fully (through the so-called Redirected Direct Rendering), but that is at least 6-9 months away from the next XOrg release.
I am not providing a timeline as to when full COMPOSITE support will be added to the driver, but I wanted to allow people to understand what is happening rather than making unfounded comments.
Other compositors (like metacity) do not try to re-render the whole screen with OpenGL, and so the behaviour is a lot less noticable - but you can still see that the OpenGL applications are not given clipping information, so will overwrite windows that pass infront of the application.
Reply With Quote