Please do not modify this specification directly but instead, add your comment to the Comments page, linked at the end of this Specification. Otherwise, feel free to contact the assignee or other knowledgeable person via email, or IRC.
Launchpad entry: https://features.launchpad.net/distros/ubuntu/+spec/accelerated-x
Source Packages affected: discover1-data, xorg, xorg-server, mesa, libdrm, linux-restricted-modules, xserver-xorg-video-*
Summary
To enable X.Org 3D acceleration by default on all supported video boards, on Ubuntu Feisty. There are two basic use cases for this: either the video board is automatically supported, without any extra options added to the X.Org configuration file, or this support needs to be explicitly enabled, via extra options, in a whitelist of video boards.
In addition to the statement above, all video boards which are known for having problems with either Composite or 3D acceleration will have 3D support explicitly disabled, via a blacklist.
More details about how the white and black lists work can be obtained on the Design section of this Specification.
On a final note, this Specification is not particularly related to the automatic usage of Composite Window Managers, such as Beryl or Compiz. There is an specification for this purpose, it is Composite by Default.
Rationale
Currently, Ubuntu does little to enable 3D acceleration on cards that support these features. Composite support is enabled by default on X.Org since Ubuntu Edgy, but various video boards need specific options to support either Composite or 3D acceleration correctly, or have them explicitly disabled, in case these technologies are not supported.
On the bright side, accelerated X platforms are much easier to make accessible (screen magnification for example is easier).
Use cases
- Joe uses Google Earth on his windows machine and wants to switch to Ubuntu. He goes through a whole bunch of trouble to find, download, and install this third-party program, and doesn't want to get an error message about hardware acceleration when the program starts.
- Cindy has read about fancy new eye candy on Linux, and doesn't want to be disappointed when she installs ubuntu.
- Vernor thinks that, while transparency and wobbly windows aren't much use, compositing features like window preview and smart magnification actually improve his workflow.
- Doreen designs video games and would like to work directly on her ubuntu-based laptop.
Scope & Design
Proprietary Video Drivers
PLEASE read the Open Source Video Drivers section below, specifically regarding the information about the ATI and NVIDIA open source drivers, before adding comments regarding the usage of Proprietary versus Open Source drivers.
Both NVIDIA and ATI proprietary drivers will be installed by default, on Ubuntu Feisty. That does NOT mean they will be enabled for all video boards, but, instead, they will be enabled on a per-board case, as explained below
Various non-technical aspects of this approach are handled on a separate Specification, called Educating users about binary drivers
- The NVIDIA driver works correctly, and 3D acceleration will be enabled for all users with supported boards. discover1-data will be modified to recommend the proprietary NVIDIA driver by default. NVIDIA provides a list of supported boards for the 'nvidia'. This list will be used for the update of discover1-data
- The NVIDIA Legacy driver works correctly (regarding 3D acceleration), but has issues with suspend and resume on various boards. This driver will be installed by default, but won't be enabled. Instead, discover1-data will keep choosing the 'nv' open source driver for users of the -legacy driver
- Official ATI representatives state the ATI proprietary doesn't support Composite, and thus this driver will only be enabled by default for users whose video boards are not supported by the open source 'ati' video driver. For these users, 3D acceleration will be supported, but Composite will be explicitly disabled in the X.Org configuration file
- As feisty development progresses (but before Beta Freeze is announced) a final decision will be made on whether Composite will effectively be disabled for ATI modern video boards (the ones which are only supported via the proprietary driver), or if this decision can be reversed. Please note that this decision will be made based on purely technical aspects, and specifically speaking, the level of functionality of the ATI proprietary driver. The current problems this driver has are:
- No support, or limited support for Composite
- Driver instability after suspend/resume cycle
Open Source Video Drivers
- The opensource 'nv' driver does not support 3D acceleration or Composite, but will be installed by default, and used on the following use cases:
- NVIDIA users with current video boards (supported via the 'nvidia' driver) will have the chance to use this driver as an alternative to the proprietary driver
- NVIDIA users with legacy video boards (supported via the 'nvidia_legacy' driver) will have the 'nv' driver enabled by default, due to limited support of the legacy proprietary driver
The 'nv' open source has no Composite or 3D acceleration support, and thus, the experimental Nouveau 2D/3D driver (http://nouveau.freedesktop.org/wiki/) will be offered as a third alternative for users with NVIDIA boards. This driver is currently considered under development, and will be offered on a best-effort basis. It is considered functional for various use cases, though. The Nouveau driver *will* also be considered as an alternative as default NVIDIA driver for Feisty+1, in case it is stable enough in six months from now. (The users that have installed the proprietary driver can help the development of Nouveau, by sending information about their cards, see http://nouveau.freedesktop.org/wiki/REnouveauDumps.) The "nv" driver for nVidia cards is obfuscated (see http://dri.freedesktop.org/wiki/NVIDIA or http://www.manchicken.com/2007/ranting/on-ubuntu.html#comment-294) and thus is de facto proprietary, even if it is formally free and open source, and should hence be replaced.
- The Open Source 'ATI' driver will be enabled by default for any ati video board it supports (this excludes the newest X1300-X1950, but all others should work, 2D and 3D, except for possible bugs or required special options)
- Specific options for all open source video drivers will be researched during development period, and will be enabled as required during xorg.conf creation (this is explained in detail on the "Implementation/Code" section below)
General Scope and Design issues
- A decision has been made during Edgy development, on which Ubuntu decided to ship AIGLX enabled by default (as is the case with X.Org 7.1 onwards)
- XGL is considered unsupported for all versions of Ubuntu (including Feisty), but a XGL X.Org server is available on the 'universe' repository. Please note that, again, this server is completely unsupported, and needs to be manually enabled to be useful
- A whitelist will be created during the feisty development cycle, for boards that are recognized as "3D capable". The postinst section of the 'xorg' package, responsible for xorg.conf generation shall take this list into consideration, and accordingly, enable acceleration for these boards
Implementation
Packaging
- X.Org will be updated to version 7.2 on feisty, with addition of the 'autoconfig-for-7.2' branch. This branch makes X.Org capable of detecting the most common options for drivers and input devices, and simplifies configuration immensely. It is worth of note that this branch is already present on the X.Org packages of Fedora Core 6
- Proprietary and open source video drivers will be updated to the latest available versions, at the time of Feature Freeze
- Mesa and libdrm will be updated to the latest available version, by the time of Feature Freeze
- discover1-data will be constantly updated, during Feisty development cycle. A first effort will be made to synchronize the correct video drivers for each video board, according to the strategy described above, and updates will be released on an as-needed based, based on feedback from bug reports, mailing lists, irc and other media
Code
- the 'configure' and 'postinst' sections of the package 'xorg' will be greatly improved, using the following rationale:
- due to the landing of the 'autoconfig-for-7.2' X.Org branch
- to allow the automatic configuration of Composite and 3D support on all supported boards
- to take in consideration the above mentioned 'whitelist' and 'blacklist'
Data preservation and migration
Users upgrading from previous versions of Ubuntu shall have their xorg.conf unmodified, and thus, potentially won't be able to use X.Org acceleration "by default". On the other hand, Feisty will provide users upgrading their installation an option to have their config files regenerated, so they can take use of the new shiny accelerated stuff.
Please note that this "regeneration" of the config file is only offered if xorg.conf was not manually modified, and in this case, should *not* be considered more harmful than a simple install (on which xorg.conf has to be newly created).
Unresolved issues
Please note that the unresolved issues are not a blocker for the the Approval or implementation of this Specification, and are here for completeness reasons.
- Status of the ATI proprietary driver, including
- Support for texture-from-pixmap
- Stability of the driver after suspend/resume cycles
- Status of the NVIDIA Legacy driver, after suspend/resume cycles
- Monitor and input hotplug for X.Org 7.3
Power usage
See http://www.lesswatts.org/projects/display-and-graphics/ Some modules, including fglrx, radeon, nvidia are known to be the most power-consuming, see http://www.lesswatts.org/projects/powertop/faq.php
Comments
Comments have been moved to the comments page.
Please note that this move has been done to ease the reading of this specification by Reviewers, and generally speaking, anyone interested on the subject. All comments are important for specification approval, and are being considered.
See also
http://www.phoronix.com/scan.php?page=article&item=924&num=2 The usage share of the various drivers.