Commit 645ee9f8 authored by's avatar
Browse files

try to explain the multi-monitor situation

= Multi-monitor desktop with Nouveau =
If you have a single GPU with multiple heads, it should all just work for you with RANDR. This page describes the situation for multiple GPUs, which considers both multiple cards and multi-GPU cards.
A multi-head card is normally managed as a single X protocol screen (SCREEN), controlled via RANDR extension (the command {{{xrandr}}}). The default configuration is cloned views. There exists an experimental configuration option {{{ZaphodHeads}}} with which you can configure a dual-head card to expose two (more than one) SCREENs.
Separate graphics cards are normally configured as separate SCREENs. Each SCREEN is independent, and can have its own color depth. They are distinguished in the DISPLAY environment variable, which specifies for applications which X server and SCREEN to use. Generally, windows cannot be moved from one SCREEN to another. For now, there is no way to configure separate cards as a single, uniform desktop via RANDR.
== Xinerama ==
Xinerama is many things: a library, an X extension, a protocol. The Xinerama protocol (used via the Xinerama library) allows an application to query the monitor configuration and is useful especially when one SCREEN spans more than one monitor.
The Xinerama X server feature allows to combine what otherwise would be several SCREENs, into a single SCREEN, in theory offering a uniform desktop. However, it fits poorly to modern graphics. Xinerama sets up a shadow framebuffer, which is large enough to contain all monitors in the specified configuration. The shadow framebuffer is in system RAM, and when it changes, the changes are copied to the VRAM of the proper graphics cards. In other words, graphics cannot be accelerated by a GPU at all.
== Multiple cards and dual-head cards in Xinerama ==
For each dual-head card, RANDR joins the heads into a single SCREEN. With Xinerama, you could in theory join multiple cards (SCREENs) into a uniform desktop. The problem is, there are two levels of joins: RANDR and Xinerama. Only Xinerama information will be delegated to the window manager via the Xinerama protocol, which means you can have windows popping up in the middle of two monitors, fullscreen windows spanning not one, and not all monitors, but just some of them, and other funny effects.
You may try to use {{{ZaphodHeads}}} to split a dual-head card into separate SCREENs and then join them and other cards with Xinerama, but there will probably be bugs. It may not work, or it may have annoying features. In any case, you will have no acceleration on any monitor.
== The future ==
Xinerama X server feature will be replaced by something, that allows to join several cards into a uniform desktop, with acceleration. It will take time, and is mostly not Nouveau specific.
''What is the progress? Links?''
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment