Features/NouveauModesetting

= Nouveau Kernel Modesetting =

Summary
Currently, modes are initialised by the 2D driver on X server startup. Kernel Modesetting (KMS) moves all of this into the kernel.

Owner

 * Name: BenSkeggs
 * email: bskeggs@redhat.com

Current status

 * Targeted release:
 * Last updated: 2009-04-17
 * Percentage of completion: 100%

The code is in F11, and from the testing received, seems to work almost everywhere the 2D driver modesetting code does, and in some places where the 2D driver doesn't work.

Smooth transitions to gdm, and between virtual consoles and other X servers is very fast.

Detailed Description
With KMS, output setup services move from being the job of the 2D X driver, to being the job of a kernel driver. Historically, the X server was responsible for saving output state when it started up, and then restoring it when it switched back to text mode. Fast user switching was accomplished with a VT switch, so switching away from the first user's X server would blink once to go to text mode, then immediately blink again to go to the second user's session.

With KMS, a simple default policy is loaded into the kernel for initial output setup, which means connected displays should go to their native resolution as early as possible. Graphical display services, like the X server and the new Plymouth boot manager, simply reuse the existing display settings if they match what is desired. This allows for a seamless transition between bootup and login screen. Fast user switching can also take advantage of this; if both users have the same screen resolutions, then there's no need to blink to transition, and even if they're different, the kernel can make the switch exactly once (instead of twice like before).

Finally, since the kernel is aware of which regions of video memory are being displayed, it can print panic messages to the display, which will assist with troubleshooting.

Benefit to Fedora
The feature will provide users of supported NVIDIA hardware a smoother startup sequence, with less flashing caused by multiple display mode changes. Additionally, the speed of switching between X and a console, or multiple X servers (fast user switching) will be greatly improved.

Scope
The primary target for this feature in this release is GeForce 8/9 series chipsets. If there's time before the feature freeze, code for the earlier chipsets may appear.

How To Test
When nouveau.modeset=1 is selected on the kernel commandline on a supported chipset, plymouth should run with a graphical splash screen. Otherwise, plymouth should run in the fallback text mode.

For each configuration, X startup and shutdown needs to work as expected, both when plymouth is enabled and when it is disabled. Additionally, fast user switching must be tested and working.

User Experience
This feature will be disabled by default on release, so there will be no impact to users unless they chose to enable the feature themselves. If a user enables the feature, the immediate change they should notice is a much nicer graphical boot.

Dependencies
None. The required supporting code already exists in Fedora, as used by the Radeon and Intel drivers.

Contingency Plan
None necessary, the non-KMS boot sequence will remain the default for this release.

Documentation
Related links:
 * Features/KernelModesetting

Release Notes
Will need to document how to enable the feature at boot time, as well as any bugs/caveats that the user may experience.

To enable: nouveau.modeset=1 on the kernel commandline

Comments and Discussion

 * See Talk:Features/NouveauModesetting