Xgl Troubleshooting
Xgl is still very new code, and has only been tested thoroughly on a handful of hardware platforms. We are working on making it easy to install and bug-free, but it is not perfect yet.
If you were sent to this page by the "Desktop Effects" control panel while trying to enable Xgl, look through the Table of Contents to the right or skim through the page looking for information that might be relevant to your problem. There is also a page containing detailed information about setting up Xgl on SUSE 10.1 and SLED 10, including the steps needed to enable 3D Acceleration on different cards.
You can also visit #Xgl at irc.freenode.org for more support.
Known Bugs in SLED 10
- If you have previously used the "Save current setup" option when logging out of GNOME, then when you switch to Xgl, you will not automatically be switched from metacity to compiz. The easiest fix for this is to remove the file .gnome2/session in your home directory, and then log out and log back in.
- If you have multiple video cards, or a disabled onboard video chip plus a video card, Desktop Effects may not be able to configure/detect them correctly.
- If you have an Intel video chipset, and don't enable 3D support at install time, Desktop Effects will not be able to enable it. You can fix this by running SaX2 manually (click "Graphics Card and Monitor" in the Control Center) and clicking the checkbox in the lower left to enable 3D acceleration. Then restart Desktop Effects and it should be able to complete the process
Known Bugs in SLED 10 RC2
- The code to automatically install ATI and NVIDIA drivers may not work. The Xgl on SUSE page discusses how to set this up if it does not work for you.
- After installing the NVIDIA driver on 64-bit (x86_64) platforms, the Desktop Effects tool might still claim that you have not enabled 3D Acceleration. This is a bug in the detection code; you can override it by holding down the Shift key and double-clicking on the word "Disabled" next to "3D Acceleration". It will then allow you to enable Xgl. Do not do this until after you have installed the NVIDIA driver.
- In some cases with ATI cards, it may allow you to enable Xgl even if you have not installed the driver. You can use the command "gnome-xgl-switch --disable-xgl" from the console to revert back to the traditional X server if you enable Xgl and then find that you can no longer log in.
- Some java applications (such as the cross-platform GroupWise client) will not draw their window contents, but will instead just show a blank gray window.
Problems using specific software packages under Xgl
- Some software (for example, the Eagle CAD package) may have partially or completely transparent windows (you will see the titlebar and window frame, but the window will be either blank white, hollow, or some combination).
Insert into the command line 'export XLIB_SKIP_ARGB_VISUALS=1' before launching the application to remove the transparency. This is a temporary fix.
Problems using Compiz with KDE
- "Window Specific Settings" and various other kwin-specific bits of functionality do not work. (However, the devilspie package provides a window-manager-agnostic add-on utility that provides some of the same functionality.)
- There is no KDE-specific way to configure compiz; you must use the compiz "gconf" plugin, along with the GNOME-based "Desktop Effects" tool and/or gconf-editor.
- Compiz adjusts window frames to match the GNOME theme, but not the KDE theme.
Several KDE-specific bugs were also fixed between RC2 and RC3 (the tasklist and pager not showing windows, and the "Show Desktop" button not working.)
Configuration Problems
These mostly apply to people trying to configure Xgl by hand, with older versions of SUSE, or with unsupported video cards.
Common configuration errors
- Xgl does not need the Composite extension enabled in xorg.conf - in fact this is counter-productive, as e.g. the NVIDIA driver disables OpenGL by default when Composite is enabled. The Composite extension is provided by Xgl itself, without the need to configure anything.
If you get an error about missing Composite extension when starting compiz, you probably tried to start it on the base Xorg server (which shouldn't be used for any program any more except for starting Xgl itself) and not on the Xgl server. Set your DISPLAY variable accordingly. - If you are getting a "BadLength (poly request too large or internal Xlib length error)" message when starting Xgl, the Mesa library compiz was linked again does not match the software rasterizer the Xserver is linked again. In practice, this typically means that you do not have 3D acceleration enabled. Call sax2 to activate 3D acceleration. It is active if running glxinfo|grep direct on top of Xorg (not Xgl!) shows you "Yes". See also the frequently asked questions.
General hardware dependent issues
- XVideo will be very slow if hardware acceleration (pixel shaders) is not available. If using a composite manager, it will only be fast if FBOs or pBuffers are available and activated, or for fully opaque fullscreen windows (turn on option apps/compiz/general/screen0/options/unredirect_fullscreen_windows).
ATI / open source driver "radeon"
- Driver has neither pBuffer nor FBO support. When using a composite manager all windows are rendered in software and only compositing is hardware accelerated. Astonishingly, this works well enough for most use cases.
- R300 and R400 support is experimental at the moment, some cards may work, others won't.
- There might be issues with the radeon driver, as it is untested to a large extend. Please file bug reports for R100 and R200 based cards, and comment on the front Xgl page whether R300 and R400 based cards are working.
ATI / proprietary driver "fglrx"
- Make sure you are using fglrx veresion 8.25.18 or later. Earlier versions have various bugs when used with Xgl.
- X300, X600, and X700 work only if the undocumented Option "KernelModuleParm" "agplock=0" is included in /etc/X11/xorg.conf (see openSUSE bugzilla entry #161247). If you enable Xgl with the Desktop Effects tool, it will add this option by default.
- When no composite manager (e.g. compiz) is running, the driver can be pretty slow. Do not use Xgl without a composite manager.
Intel / open source driver "i810"
- Driver has neither pBuffer nor FBO support. When using a composite manager all windows are rendered in software and only compositing is hardware accelerated. Astonishingly, this works well enough for most use cases. FBO support is supposed to be added to the driver in the near future.
- XVideo YV12 surfaces are hardware accelerated (when no composite manager is used or for fullscreen unredirected windows), but due to a bug in the driver the video will miss one of the color channels, leading to false greenish/purple colors. This has to be investigated.
NVIDIA / open source driver "nv"
- Does not support 3D acceleration at all. Xgl will not work well with software emulation, refrain from using this combination.
NVIDIA / proprietary driver "nvidia"
- OpenGL acceleration does not work well with Composite being active. This option in /etc/X11/xorg.conf should be disabled if it had been enabled before. Note: Xgl supports Composite anyway, even if it is disabled in xorg.conf. FBO's can be used with this driver instead of pbuffers for XVideo acceleration. Enable this by changing
DISPLAYMANAGER_XGL_OPTS="-accel glx:pbuffer -accel xv:pbuffer" to
DISPLAYMANAGER_XGL_OPTS="-accel glx:pbuffer -accel xv:fbo" in /etc/sysconfig/displaymanager. (The Desktop Effects tool sets this option by default.)
Glossary
- Composite Extension
- This extension to X causes an entire sub-tree of the window hierarchy to be rendered to an off-screen buffer. Applications can then take the contents of that buffer and do whatever they like. The off-screen buffer can be automatically merged into the parent window or merged by external programs, called compositing managers.
- FBO
- Frame Buffer Object (FBO) is an OpenGL extension that defines a simple interface for drawing to rendering destinations other than the buffers provided to the GL by the window system. This interface is newer and cleaner than pBuffers, but considered less stable at the moment.
- pBuffer
- Pixel buffers (pBuffers for short) are additional non-visible rendering buffers for an OpenGL renderer.