
Originally Posted by
allquixotic
I think the consequences of unredirecting are too much of an engineering headache to make it worth the performance gain. When you unredirect a window, you either have to disable compositing entirely, or else figure out a way to work around the limitations of unredirecting. For instance, what do you do if a modal dialog window pops up in front of the fullscreen app? Plenty of "fullscreen" applications would want this; for instance, for generating a dropdown menu in many widget toolkits, they create a new XWindow.
No. Unredirection gives me headaches just thinking about it. The point of a compositor is that everything is redirected. What we need is to work on reducing the overhead of the compositor, both on the driver side and the compositor side. If the redirection can be made cheaper, we'll be in good shape.
Look at how Windows handles it. Their equivalent of "redirection" in Aero is essentially uninterrupted, even when playing a full-screen 3d game. But the overhead isn't enough that you would get noticeably higher FPS if you disable Aero. So most games just let Aero run. There's too much flickering and flashing when enabling/disabling the compositor anyway (and that goes for Windows and Linux desktops alike).
Unredirection is a kludge that works around a present-day perceived performance hit by going back to the old days of non-redirected windows. Mixing and matching redirected and unredirected windows is nasty. And if we'd just give our software and hardware some time to mature, the performance issue will disappear, and we'll look back in hindsight and wonder why we cared about that unredirection crap anyway, and wish we could eliminate it.
In the not-too-distant future, R900-class hardware will be as old as R300 looks today. Let's plan for that by figuring out a way to make everybody happy with redirection, rather than trying to workaround a bottleneck in present-day hardware and software paths.