Xgl
Introduction
Xgl is a new Xserver architecture layered on top of OpenGL. Xgl can perform intricate graphical operations--such as rendering antialiased fonts--noticeably faster than other available Xservers that do not use OpenGL. The current implementation is Xglx but the future implementation of Xgl will be Xegl.
More important than speed alone, Xgl accelerates complex composite operations, making possible new stunning visual effects through on OpenGL-enhanced composition/window managers like Compiz. These visual effects have broad practical use, making Linux more accessible for the visually impaired, and creating a workspace that is easier to comprehend and navigate for less experienced users.
Xgl must be used in combination with a compositor/window manager to expose all of its capabilities. Compiz is the compositor utility that was developed in conjunction with Xgl.
It is possible that future graphics hardware will support only 3D operations, without any 2D core any more. For this reason, Xgl is an important advance for all operating systems that rely on the X.org graphical foundation.
Xgl in Open Source
In early 2006, Xgl maintainer David Reveman submitted his latest enhancements to Xgl and Compiz for inclusion in the freedesktop.org CVS repository. Today, freedesktop.org hosts the source code for the Xgl packages.
Using Xgl/Compiz
For information how to use Xgl on SUSE Linux, please read the Xgl on SUSE advisory. For information about the compositing manager please read the compiz page. If you are running into problems, please have a look at the Xgl troubleshooting page.
Frequently Asked Questions (FAQ)
- Can I use <insert_your_favorite_window_manager_here> with compiz?
No, compiz is a window manager, only one can be run at a time. Though composite manager and window manager are distinct concepts, for many effects these two processes must be integrated tightly, which you get with so-called compositing window managers. compiz is such a compositing window manager. - What is about glxcompmgr.rpm and xglx.rpm then?
glxcompmgr is depricated. So is the xglx package. - Direct rendering does not work when running Xgl, but it does on Xorg. Why are OpenGL applications not accelerated?
Do not intermix hardware acceleration and direct rendering. OpenGL applications will be hardware accelerated on Xgl if the driver supports pBuffers or FBOs, like the nvidia and fglrx drivers do. Direct rendering on the other hand is impossible to implement at the moment, the necessary extensions for implementing that feature are not even specified yet, let alone being implemented.
Direct rendering implies hardware acceleration, but not the other way round. Direct rendering is a bit faster than indirect rendering, but indirect rendering is not as bad as it sounds.
Direct rendering is active if running glxinfo|grep direct on top of Xorg (not Xgl!) shows you "Yes". On top of Xgl this will always show you "No". Unfortunately, for Xorg having direct rendering is a synonym for having accelerated graphics, and it is more difficult to detect whether hardware accleration is available than it is to detect direct rendering. - Can I put desktops on the top and bottom cube faces?
No. That doesn't make sense, as top and bottom layers are squares, while your screen has some aspect ratio. It would also mean that you could select the according destop and get a rotated view of it (compare moving up to moving left and up). You can easily increase the number of side faces by changing the option apps/compiz/general/screen0/options/size. - How do I configure a multiple monitor setup for Xgl?
Xgl and compiz don't support the Xinerama extension at the moment. This is being worked on.
Xgl will, of course, work with merged framebuffer setups, but it will not be aware of the different monitors, e.g. the login screen will be split between the monitors. - Is all of this part of Xorg 7?
No, Xgl is developed inside the Xorg community, but in a different branch. The merge is most likely to happen after Xorg 7.1 has been released. - How do I enable Composite in the configuration file?
You don't. Xgl supports Composite natively, the underlying Xorg does not need to export Composite. This is important e.g. for the nvidia driver, which still has some issues with OpenGL and Composite used at the same time. - How do I get rid of the tearing artifacts?
This is a complex issue that has to be handled separately. Read: this is yet to be explained/written/solved.
Technical Background
Xgl and compiz are both created mainly by David Reveman (Novell) with some additions from Matthias Hopf (SUSE). Dave Arlie, Adam Jackson (Red Hat) and Jon Smirl worked on the stand-alone Xegl, which is not described here, but related to Xgl. Xgl uses the glitz API as an abstraction layer, which has been designed and implemented by David Reveman and Peter Nilsson (UMU).
Xgl is the frontend to several different flavors, with the glx backend (also called Xglx) being the major development driving force at the moment. This backend runs in a window on top of a regular Xserver (comparable to Xnest), which provides for the necessary OpenGL support. There is a -fullscreen switch for creating a single fullscreen window. You also have to provide a display name that is NOT the display name of the original Xserver. Another backend called Xegl allows for running Xgl directly on the framebuffer. However, this backend is currently far from being complete and only works on ATI R200 based graphics cards on Linux.
As Xgl with the glx backend cannot run stand-alone, it will automatically start an Xorg server underneath. SUSE's default configuration uses display :93 for that. Only Xgl will be allowed to talk to this Xorg server, and create display :0 for all other applications.
Hardware Advisory
The following graphics hardware is known to work well or recommended for use with XGL. Please add exceptions if there are any.
- Intel
All intel graphics chips need the newest packages of Xgl and compiz for running flawlessly.- i915, i945
Accelerated XVideo is broken on these cards. See Troubleshooting.
- i915, i945
- NVidia
All NVIDIA cards need the proprietary driver for running Xgl. Currently you will need to uninstall and reinstall the xgl rpm after installing the proprietary NVidia driver.- GeForce 4xxx series
XVideo is not accelerated on these cards. - GeForce FX 5xxx series, Quadro FX series
Accelerated XVideo is hitting a slow path on these cards, it is under investigation. - GeForce 6xxx series
- GeForce 7xxx series
- GeForce 4xxx series
- ATI
- Mobility Radeon 9700 SE: Xgl running with proprietary fglrx driver 8.23
- Radeon X300: Xgl running with proprietary fglrx driver 8.23
If you are not sure what card you are using, you can run the following command (as root): hwinfo --gfxcard
If your card isn't listed then you can check out the Gentoo hardware list as well.
Problematic Hardware
Hardware with known glitches or incompatibilities:
- ATI
- Mobility Radeon M6 LY (7000), Mobility Radeon M9 (9000) and Mobility Radeon M9+ (9200)
Drawing artifacts and occasional flickering. - Radeon 9200
No hardware acceleration using fglrx 8.22.5 driver - Radeon XPRESS 200M 5955 (PCIE), Driver: "fglrx_pci", XGL works but the 2D/3D files will not work propely(2D/3D games,full screen videos, etc.).
- Mobility Radeon M6 LY (7000), Mobility Radeon M9 (9000) and Mobility Radeon M9+ (9200)
- Intel
- i855GM
Works, but effects are overall very slow. - i815, i845
Too old, Xgl works, but compiz will not work. Maybe a compatibility layer is added later.
- i855GM
Links
- Several Xgl videos (UPDATED)
- several cool Xgl/Compiz screenshots
- Wiki page for Xgl on freedesktop.org
- Wiki page for Xgl on Gentoo
- Wikipedia entry for Xgl
- Wiki page for Xegl on freedesktop.org
- CVS browser: Xgl
- CVS browser: glitz
- CVS browser: compiz
- Novell press release with video footage
- Xgl on SUSE 10.1 for Gnome and KDE with NVidia Graphics Cards
- Communication between Xgl and Xorg - For dummies
- German Xgl/Compiz Support