Comment 2 for bug 1080947

Revision history for this message
Sam Spilsbury (smspillaz) wrote :

Hmm, would you accept a fix to this if it worked in the normal case, but had a slight feedback loop in the case where GLX_EXT_buffer_age was supported ?

The best way to handle this problem is to add support for geometry clipping to nux (eg, give nux a list of rectangles, and when it draws textures, it will determine the correct vertices + texcoords for the drawn textures to remain within those rectangles). However, adding support for geometry clipping to nux is not trivial. Worth doing if we can, but we need to talk with the relevant people about that.

Currently, my approach is to give nux the damage region, and have it determine which BaseWindows need to be presented to the screen. We also get back that list, and ensure that the damage region covers that area too (to prevent overdraw). However, that approach is slightly flawed when the backbuffer is partially defined, as we have to mark the nux areas as damaged, and then that feeds back into the next time we redraw, when we just re-present the nux windows again because their area was damaged on a previous frame.

(Sorry, I can't make that any more terse, its a complicated problem and I've been looking into it for days).