Features/NouveauAsDefault

= Replace xf86-video-nv with xf86-video-nouveau as default for NVIDIA GPUs =

Summary
Make Nouveau the default driver for NVIDIA graphics chipsets.

Owner

 * Name: Ben Skeggs
 * email: skeggsb@gmail.com

Current status

 * Targeted release: Fedora 11
 * Last updated: 2009-03-06
 * Percentage of completion: 100%

The latest upstream nouveau code has been merged into rawhide.

nouveau has been made the default driver for Nvidia hardware now.

Detailed Description
Nv is an open-source driver maintained by NVIDIA. While this driver has some measure of support from the manufacturer itself, it is very limited in terms of the features it supports.

Nouveau is an effort by the community to produce an alternative open-source NVIDIA driver which can provide the features that are required for a modern desktop experience.

Benefit to Fedora
The major benefits nouveau currently provides over nv are:
 * Supports a few chipsets that nv does not.
 * RANDR 1.2 support available across all card families.
 * Accelerated XRENDER supported from NV10 (GeForce 3) onwards
 * NV40 onwards (Geforce 6/7/8/9) accelerate the majority of XRENDER that is exposed by EXA
 * Textured video supported on all chipsets from NV30 onwards.
 * Nv doesn't support any form accelerated XVIDEO on G80 and above

Scope

 * Modify xserver autoconfiguration code to select nouveau on supported chipsets before trying nv.
 * nv for NV03 (RIVA 128) series
 * vesa for a couple of known not-working chipsets (in both nouveau and nv), until support appears
 * nouveau for everything else
 * Ensure nouveau is functional across all supported card families.
 * Make sure performance on earlier cards is adequate for desktop use.
 * Ensure manpage is accurate and up-to-date
 * If kernel module initialisation fails (ie. chipsets missing ctxprog), fallback to shadowfb
 * See about implementing multi-master support in the nouveau kernel module, to enable the use of fast user switching features.
 * Note that kernel modesetting is outside the scope of this feature - see Features/NouveauModesetting for that.

How To Test
Testing will occur on at least the following chipsets: (will fill in missing details once the cards arrive)
 * 10de:002d: TNT2              - NV05
 * 10de:0171: GeForce 4 MX440   - NV17
 * 10de:0281: GeForce 4 Ti4280  - NV28
 * 10de:0330: GeForce 5900 Ultra - NV35
 * 10de:0309: Quadro FX 1000    - NV30GL
 * 10de:XXXX: GeForce 7600(GT?) - G7x   (NV4B)
 * 10de:0191: GeForce 8800GTX   - G80   (NV50)
 * 10de:0402: GeForce 8600GT    - G84   (NV84)
 * 10de:040c: Quadro FX 570M    - G84GL (NV84GL)

Procedure:
 * Verify that X starts
 * Verify that rendercheck passes, which should show up a lot of potential misrendering issues that may otherwise go unnoticed immediately.
 * Verify that rendering is as expected across a variety of applications
 * Verify that XVideo is operational on all provided adaptors
 * Verify that all supported outputs, and combinations of outputs are operational
 * Including outputs that haven't been initialised previously by the VBIOS
 * Verify that performance in general desktop tasks is acceptable
 * Verify that X will successfully shutdown and restart
 * Verify that the GPU doesn't report any errors to the kernel module during the above tests.


 * Procedure details and reports: QA/Test Days/2009-03-26

User Experience
Users should have a more responsive desktop, due to more operations being accelerated on the GPU. GeForce 8/9 users will gain XVIDEO support out of the box. People on earlier chipsets will gain proper multi-monitor support.

Limitations

 * xf86-video-nv supports all chipsets from NV03 onwards. Nouveau only supports from NV04 as previous chipsets are vastly different and beyond the scope of what nouveau aimed to support. xf86-video-nv will still need to be used here.
 * From GeForce 6 onwards NVIDIA GPUs require a small program to be uploaded to the GPU in order to control multiple hardware contexts. Nouveau cannot operate without this information, and limitations in the current understanding of this program prevent us from being able to write our own. As such, this information is currently extracted from traces provided by users of the NVIDIA binary driver initialisation.
 * GeForce 8200/8300 unsupported, this is also the case with nv
 * 3D support will not be provided, it's not ready for end-users on any chipset.

Dependencies

 * None.

Contingency Plan

 * Revert to xf86-video-nv

Documentation
Nouveau Wiki

Release Notes

 * draft: The xf86-video-nv driver is replaced by the xf86-video-nouveau as the default graphics driver for NVIDIA video cards. TODO: explain how to switch back to nv in case nouveau doesn't work.

Comments and Discussion

 * See Talk:Features/NouveauAsDefault