Tuesday, 31 May 2005


David Reveman just demoed his latest Xgl work (an X server based on Glitz). It's incredibly impressive. He has virtual desktops as the faces of a cube, so you can switch desktops by rotating the cube. Then he played a movie in a translucent window, crossing a virtual desktop boundary so it wraps around the cube. Of course it keeps playing while he rotates the cube. All very smooth and pretty. Amazing.

It looks like on Linux the preferred hardware acceleration story for rich apps like Mozilla/Firefox will be to run the Xgl X server, and have Cairo talk to Xgl via Xrender. Xgl implements the Xrender calls using GL so we get the same sort of hardware acceleration we'd get if we used Glitz directly. With only Xgl talking to the GL drivers, we avoid the problem that the vendor GL drivers aren't very good at handling multiple processes banging on them simultaneously. The only downside is that Xrender doesn't support some of the operations we need accelerated --- e.g., gradients, non-affine transformations, and SVG-style filters. We'll just have to fix that :-).

The story on Windows remains a bit less clear...


  1. Is there some online demo of this ?
    And how'd you implement this on OS X?
    On 10.4 at least, I guess you could rely on the CoreImages stuff that is build in.

  2. Robert O'Callahan31 May 2005 at 12:50

    I think on OSX we're going to use Quartz as much as possible and hope Apple does the right thing.
    I don't know if there's any Xgl demo screenshots online.

  3. The XGL demo shown at Novell Brainshare is available for streaming.
    Its near the end. :)

  4. I hope we have Enlightenment DR17 in a near future... I mean, before MS-Longhorn...

  5. Lars Knoll just implemented gradients to Xrender, hasn't been applied though.

  6. Roc: Could you go into more details on what issues are coming up for windows?
    While I use Linux, I'm also on Windows a fair share of my time.

  7. Google?
    I think this is a really cool advancment. I wonder if Longhorn will jump at the last moment and try to mimic this effect...
    Hah- Imagine having a two-moniter system and being able to have eight possible screens... or for web development, have html editing on one side, css editing on another, photoshop or the gimp in another, and the page you are preiviewing all on diffrent sides. And being able to look at angle so you could edit the html and then refresh the page and see both the code and screen in full screen... that'd be awesome.

  8. "The only downside is that Xrender doesn't support some of the operations we need accelerated --- e.g., gradients, non-affine transformations, and SVG-style filters. We'll just have to fix that :-)."
    lol, that's the best turnaround time for a request I have ever seen! :-) 17 minutes!?!?

  9. Robert O'Callahan1 June 2005 at 08:00

    Cool! That's great news about gradients. And Owen Taylor informed me that Xrender already supports warping (non-affine) picture transformations (albeit non-accelerated). Two down, one to go!
    Jed: Hopefully at some point soon, Linux users will be able to install Xgl and get accelerated rendering of cairo-using applications such as Firefox. But that obviously won't work for Windows. We can have an OpenGL or Direct3D backend for cairo but on non-Longhorn systems, we'll run into the issue that D3D and OpenGL drivers probably won't behave well when multiple applications are trying to use them at the same time. If Firefox is the only application running that's using the drivers, that might be OK, but suppose the user starts Firefox and Thunderbird... I can imagine we might want to special "cairo acceleration server" that runs on Windows, accepts Xrender-like commands over a pipe and sends the results back to the applications via DIBs in shared memory.

  10. Robert O'Callahan1 June 2005 at 08:02

    There's also the question of how Avalon on Windows XP is going to work, which could affect what we should do when that is present on the user's machine. Of course we will run on Win2K and other places where Avalon won't be.

  11. Robert, why should there be a problem with two applications using hardware-accelerated OpenGL ?
    Shouldn't the drivers handle requests from multiple applications? Because if what you say is true, this means that I cannot run two 3d rendering applications at once (if they both use opengl).

  12. Robert O'Callahan2 June 2005 at 07:55

    Caleb: you can run 2 3D apps, but it doesn't work well. On my Linux machine one app will run for one second while the others are blocked, then the other will run for a second, etc. Apparently it's similar on Windows.

  13. I didnt see any mention about Guadec on here or on any xorg related sites.
    I was really surprised to see both you and David Reveman in the Guadec "Lightning Talks". You should link people to it. :)