Linux - Configuring multiple x screens on one card

Updated 09/29/2021 09:52 AM

Configuring multiple x screens on one card


Graphics chips that support TwinView (see the article titled "Linux - Configuring Twinview") can also be configured to treat each connected display device as a separate X screen.

While there are several disadvantages to this approach as compared to TwinView (eg: windows cannot be dragged between X screens, hardware accelerated OpenGL cannot span the two X screens), it does offer several advantages over TwinView:

  • If each display device is a separate X screen, then properties that may vary between X screens may vary between displays (eg: depth, root window size, etc).

  • Hardware that can only be used on one display at a time (eg: video overlays, hardware accelerated RGB overlays), and which consequently cannot be used at all when in TwinView, can be exposed on the first X screen when each display is a separate X screen.

  • The 1-to-1 association of display devices to X screens is more historically in line with X.

To configure two separate X screens to share one graphics chip, here is what you will need to do:

First, create two separate Device sections, each listing the BusID of the graphics card to be shared, each listing the driver as "nvidia", and assign each a separate screen:

Section "Device"

Identifier "nvidia0"

Driver "nvidia"

# Edit the BusID with the location of your graphics card

BusID "PCI:2:0:0"

Screen 0

EndSection

Section "Device"

Identifier "nvidia1"

Driver "nvidia"

# Edit the BusID with the location of your graphics card

BusID "PCI:2:0:0"

Screen 1

EndSection

Then, create two Screen sections, each using one of the Device sections:

Section "Screen"

Identifier "Screen0"

Device "nvidia0"

Monitor"Monitor0"

DefaultDepth 24

Subsection "Display"

Depth 24

Modes "1600x1200" "1024x768" "800x600" "640x480"

EndSubsection

EndSection


Section "Screen"

Identifier "Screen1"

Device "nvidia1"

Monitor"Monitor1"

DefaultDepth 24

Subsection "Display"

Depth 24

Modes "1600x1200" "1024x768" "800x600" "640x480"

EndSubsection

EndSection

(note: you'll also need to create a second Monitor section)

Finally, update the ServerLayout section to use and position both Screen sections:

Section "ServerLayout"

...

Screen 0 "Screen0"

Screen 1 "Screen1" leftOf "Screen0"

...

EndSection

For further details, please refer to the XF86Config(5x) or xorg.conf(5x) manpages.

Is this answer helpful?

Live Chat

Chat online with one of our support agents

CHAT NOW

ASK US A QUESTION

Contact Support for assistance

Ask a Question