Sunday, November 05, 2006

Twinview and Xinerama

I've been having a play (in the midst of studying for exams)!

I wasn't really all that sure about the difference between two terms that I had heard banded about with relation to Dual Head displays: Twinview and Xinerama.

It would appear that while an X server can happily support several screens that aren't linked, Xinerama allows a 'virtual' screen that spans both physical screens (or more, if you are particularly lucky) whereas Twinview was originally a workaround created by nvidia in the days before windows managers and X properly supported more than one monitor. That, at least is my limited understanding of the subject.

I had been running 2 19" TFTs at 1280x1024 in Xinerama using an nVidia 6200 DH. Although, not the speediest card in the world, it was managing admirably, but on occasion, was known to stutter and spit at the thought of having to move windows about.

After some reading some interesting posts on the subject of performance, I decided to try and see if Twinview would be more efficient. Helpfully, xorg.conf examples abound and I was able to tweak my xorg.conf file and without too much trouble, switch from xinerama to twinview.

I was surprised by the significant performance improvement. The next test will be trying to install the new beta nvidia drivers and beryl!

xorg.conf below:

# /etc/X11/xorg.conf (xorg X Window System server configuration file)
#
# This file was generated by dexconf, the Debian X Configuration tool, using
# values from the debconf database.
#
# Edit this file with caution, and see the /etc/X11/xorg.conf manual page.
# (Type "man /etc/X11/xorg.conf" at the shell prompt.)
#
# This file is automatically updated on xserver-xorg package upgrades *only*
# if it has not been modified since the last upgrade of the xserver-xorg
# package.
#
# If you have edited this file but would like it to be automatically updated
# again, run the following command:
# sudo dpkg-reconfigure -phigh xserver-xorg

Section "ServerLayout"
Identifier "Single screen"
Screen 0 "Screen" 0 0
InputDevice "Mouse" "CorePointer"
InputDevice "Keyboard" "CoreKeyboard"
EndSection

Section "Files"
FontPath "/usr/share/X11/fonts/truetype"
FontPath "/usr/share/X11/fonts/type1"
FontPath "/usr/share/X11/fonts/X11"
EndSection

Section "Module"
Load "GLcore"
Load "i2c"
Load "bitmap"
Load "ddc"
Load "dri"
Load "extmod"
Load "freetype"
Load "glx"
Load "int10"
Load "type1"
Load "vbe"
EndSection

## I N P U T D E V I C E S ##

Section "InputDevice"
Identifier "Keyboard"
Driver "kbd"
Option "CoreKeyboard"
Option "XkbRules" "xorg"
Option "XkbModel" "pc105"
Option "XkbLayout" "gb"
EndSection

Section "InputDevice"
Identifier "Mouse"
Driver "mouse"
Option "CorePointer"
Option "Device" "/dev/input/mice"
Option "Protocol" "ExplorerPS/2"
Option "ZAxisMapping" "4 5"
Option "Emulate3Buttons" "true"
EndSection

## M O N I T O R S ##

Section "Monitor"
Identifier "F-419-Left"
Option "DPMS"
DisplaySize 386 290
HorizSync 30-82
VertRefresh 40-60
EndSection

Section "Monitor"
Identifier "F-419-Right"
Option "DPMS"
DisplaySize 386 290
HorizSync 30-82
VertRefresh 40-60
EndSection

## D E V I C E S ##

Section "Device"
Identifier "Nvidia6200"
BoardName "GeForce 6200"
BusID "1:0:0"
Driver "nvidia"
VendorName "nVidia"
Option "TwinView" "yes"
Option "TwinViewOrientation" "CRT-1 RightOf CRT-0"
EndSection

## S C R E E N S ##

Section "Screen"
Identifier "Screen"
Device "Nvidia6200"
Monitor "F-419-Right"
DefaultDepth 24
SubSection "Display"
Viewport 0 0
Depth 24
Modes "1280x1024" "1024x768" "800x600" "640x480"
EndSubSection
EndSection

Section "DRI"
Group 0
Mode 0666
EndSection

No comments: