Nouveau

Summary

The open source -nv driver is deprecated in favor of the -nouveau driver since it has better feature support. Alsa nVidia stop supporting of nv and new nVidia GPU not supported by nv.

Rationale

At installation, Ubuntu sets up an open source driver for Nvidia hardware (the user typically will then change this to -nvidia using Jockey post-install). Previously, we've used -nv as the default open source driver; going forward we will switch to the -nouveau driver, which provides equivalent 2D functionality across the same range of chipsets, and also provides 3D and KMS for a certain subset of chips.

The -nv driver has an obfuscated codebase and thus has generally not received development attention from the open source X.org community. Nvidia has made fixes and updates to the driver, but has not done feature development. The open source community used -nv as a starting point / reference, and has undertaken a rigorous reverse-engineering effort to develop features including xrandr, 3D, kernel mode-setting, and so on. This effort is still very much a work-in-progress, but has been sufficiently successful that it can now serve as a suitable replacement for -nv.

We anticipate most users will continue to use the binary -nvidia driver, and this spec has no change to that use case; this spec is relevant only for the subset of users who wish to use open source drivers on Nvidia hardware.

Use Cases

  • Leon installs ubuntu on a computer with an Nvidia graphics card. He is pleasantly surprised to see Ubuntu come up supporting Compositing and Kernel mode-setting, but ultimately decides to install the -nvidia binary driver since it provides better performance and stability.
  • Chris is a steadfast open source proponent, and previously has manually installed the -nouveau driver instead of running the feature-poor -nv driver. He is pleased to see with Karmic that -nouveau is now used automatically by default when -nvidia is not installed.

Scope

Affects the default driver selection for Nvidia hardware (i.e., when the user hasn't explicitly chosen to use the binary driver).

Design

Essentially, we update the xserver to use "nouveau" instead of "nv".

There is kernel and mesa code available for 3D (DRI) and kernel mode-setting, however this may require backporting from branches. While these are desirable features, they may not be sufficiently mature yet. Our principle objective is the 2D capabilities on all chipsets; additional features beyond this will be brought in once sufficient testing has been done to ensure they present low risk.

Some users will have the "nv" driver specified in their xorg.conf. For now, we will not force a transition to -nouveau for them. The reasoning is that there may prove to be cases where -nv works but -nouveau is bugged, so this will provide a workaround. In a later Ubuntu release, we may drop -nv entirely and transition users by making "nv" an alias to "nouveau", but we'll see how things go.

Implementation

  • File Main Inclusion Request to move -nouveau from universe to main
  • Update the -nouveau launchpad page with bug directions
  • Patch xserver to prefer "nouveau" instead of "nv"
  • Determine status of kernel patches for nouveau and identify which bits need pulled (timg needs this info)
  • Set up xorg-edgers PPA with kernel, mesa, -nouveau, libdrm, etc. bits for doing KMS, 3D, and other features not yet available in an official release.
    • Update with new snapshots as feasible
    • Solicit testing of these components
    • As pieces are proven to work well and not severely impact the stability of the 2D functionality, pull them into Karmic
  • Test switching between -nouveau and -nvidia and back. Document the process, especially any differences from -nv<->-nvidia. Provide a X/Troubleshooting/ page for dealing with transition issues.

  • Determine what changes need to be made to accomidate the kernel module renaming with the lbm packages. nouveau and all the relevant drm/ttm modules were renamed lbm-* to not interfere with other drivers.
  • Draft release notes itemizing the functionality -nouveau provides over -nv, and for which chipsets
  • File bugs to the nouveau project

Reversion

Should it become necessary to revert our addition of -nouveau as the default driver for nvidia hardware, the following steps should be taken to disable it:

  • Disable patch 106_nouveau_autodetect.patch so nv will be preferred
  • Disable inclusion of the nouveau kernel linux-backports-modules module from installation on the livecd
  • Revert adding nouveau to xserver-xorg-video-all in the xorg package
  • Remove mention of nouveau from the release notes

Additionally, the plymouth, udev, and libdrm changes should be backed out when we move to a 2.6.33 or newer kernel in lucid+1 as they are only relevant with the lbm-* module renaming.

Outstanding Issues

None

BoF agenda and discussion

Discussed at UDS. All comments are incorporated into the above specification.


CategorySpec

X/Nouveau (last edited 2010-03-29 03:08:21 by russianneuromancer)