GPUs that support TwinView (Chapter 12, Configuring Multiple Display Devices on One X Screen) 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 (e.g.: 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 (e.g.: depth, root window size, etc).
Hardware that can only be used on one display at a time (e.g.: video overlays and hardware accelerated RGB overlays on certain older GPUs), 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.
TwinView is a fairly new feature. X has historically used one screen per display device.
To configure two separate X screens to share one graphics card, 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 and 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, refer to the XF86Config(5x) or xorg.conf(5x) man pages.