jens.hatlak.de / Über mich      
Atari   PHP      
Dreamweaver Manual   Linux / R40 / Debian    
Akronyme   Mozilla   Notebook / Dualhead/DRI  
  SciTE   Samba   MergedFB  
  FASTA-Parser   Archos    
  Ich spreche...   Genius EM700    

SiS 630 Dualhead / DRI

Xinerama Unter SuSE 8.1 und XFree 4.2 ist Dual-Head-Betrieb mit einem SiS 630 mittels Xinerama möglich. SaX2 hat mir dabei nicht sonderlich weitergeholfen: Obwohl 8.1 die erste SuSE-Version ist, die den SiS 630 nicht nur per Framebuffer ansteuern kann, klappte DRI etc. mit der Standardkonfig. nicht.
Ich habe dann viel herum probiert und war manchmal auch schon sicher, dass es nicht ginge. Jetzt läuft es aber: Xinerama 1280x1024/1024x768 (VGA/LCD) auf vt7 und Clone (VGA und LCD 1024x768) auf vt8, so dass ich einfach mit Alt+Ctrl+F8 zu einer Konfiguration schalten kann, in der der Laptop standalone (LCD) oder mit einem externen Monitor laufen kann, der >XGA nicht verträgt.

Noch eine kurze Anmerkung: in XFree 4.3 ist der SiS DRI-Treiber wieder deaktiviert worden, weil er noch nicht an interne Umstellungen des restlichen XFree-Pakets angepasst worden ist. Wer auf XFree 4.3 benutzen, DRI behalten und dabei gleich noch weitere Vorteile genießen will, sollte sich mal MergedFB-Seite ansehen. Alternativ kann man sich auch die aktuelle XFree86-Version holen: Mit XFree86 4.3.99.14 aufwärts und insbesondere XFree 4.4 gibt es wieder DRI-Treiber für SiS' 300er-Linie.

Beim Booten (-> /boot/grub/menu.lst) darf natürlich kein VGA-Framebuffer (vga=xxx) aktiviert werden, weil dann der sis-Framebuffer nicht mehr will.

In der /etc/init.d/boot.local habe ich noch folgende Zeile, die die Systemkonsole (vt1-6) auf einen kleinen Font stellt (so wie vga=791, was man ja nicht benutzen darf, wenn man DRI/Xinerama haben will):

/sbin/modprobe sisfb sis

Passend dazu folgende Zeile in der /etc/modules.conf:

options sisfb mem=12288 mode=1024x768x16

Die relevanten Zeilen für die Koexistenz Xinerama/DRI aus der Xservers (/etc/opt/kde3/share/config/kdm/):

:0 local /usr/X11R6/bin/X :0 vt7
:1 local /usr/X11R6/bin/X -layout Clone :1 vt8

passend zu meiner /etc/X11/XF86Conf, die die beiden Profile zusammen mit deutscher Tastatur, Logitech USB-Scrollmaus (MausMan+) und PS/2-Maus (Touchpad) definiert:

Section "ServerFlags"
    Option "AllowMouseOpenFail"
    Option "noPM"
    Option "BlankTime"   "99999"
    Option "StandbyTime" "99999"
    Option "SuspendTime" "99999"
    Option "OffTime"     "99999"
EndSection

Section "Module"
    Load    "ddc"
    Load    "GLcore"
    Load    "dbe"
    Load    "dri"
    Load    "extmod"
    Load    "glx"
    Load    "record"
    Load    "bitmap"
    Load    "freetype"
    Load    "speedo"
    Load    "type1"
    Load    "vbe"
    Load    "int10"
EndSection

Section "InputDevice"
	Identifier	"Generic Keyboard"
	Driver		"keyboard"
	Option		"CoreKeyboard"
	Option		"XkbRules"	"xfree86"
	Option		"XkbModel"	"pc104"
	Option		"XkbLayout"	"de"
	Option 		"XkbVariant" 	"nodeadkeys"
EndSection

Section "InputDevice"
	Identifier	"Configured Mouse"
	Driver		"mouse"
	Option		"CorePointer"
	Option		"Device"		"/dev/psaux"
	Option		"Protocol"		"PS/2"
	Option		"Emulate3Buttons"	"true"
	Option		"ZAxisMapping"		"4 5"
EndSection

Section "InputDevice"
	Identifier	"USB Mouse"
	Driver		"mouse"
	Option		"SendCoreEvents"	"true"
	Option		"Device"		"/dev/input/mice"
	Option		"Protocol"		"ImPS/2"
	Option		"ZAxisMapping"		"4 5"
EndSection

Section "Monitor"
    Identifier   "Generic VGA"
    VendorName   "NCD"
    ModelName    "Monitor Model"

# VertRefresh & HorizSync:
# These values are used for CRT1 only. They are ignored for CRT2.
    VertRefresh  60-75
    HorizSync    30-90
EndSection

# For dual head mode:
# Supply another Monitor for second head

Section "Monitor"
     Identifier  "Generic LCD"
    VendorName  "Monitor Vendor"
    ModelName   "Monitor Model"
    VertRefresh 60-75
    HorizSync   30-90
EndSection

Section "Device"
        Driver     "sis"
        Identifier "SiS 630-1"
        VendorName "SiS"
    BoardName  "630"
        Option     "SWcursor"
        Option     "HWcursor"

# Option "NoAccel"
# Setting this option will disable 2D/3D accellerators (and Xv).
       #Option     "NoAccel"

# Option "ForceCRT2Type":
# This option selects the CRT2 output device type and is only useful
# on systems containing a video bridge (such as most laptops).
# Available options are:
# "TV"   (if TV connector present),
# "LCD"  (if LCD panel present),
# "VGA"  (don't use this; it is unlikely that you need it because this
#        would require a SECOND VGA connector on your computer; the
#        connector on laptops is CRT1!) or
# "NONE" (this will switch off CRT2). You might want to use "NONE" for
#        using higher resolutions than your LCD panel supports when
#        connected to an external VGA. If using "NONE", adjust the settings
#        in the monitor section above.
    Option "ForceCRT2Type" "LCD"

# Option "ForceCRT1"
# This option can be used to force CRT1 to be switched on (TRUE) or
# off (FALSE). It is only used if a video bridge is detected.
# If you don't set this option, the driver will automatically detect
# if CRT1 is connected or not and use it accordingly. Automatic
# detection, however, requires CRT1 to be connected to the computer
# at boot time. Older monitors might not be detected at all, so you
# will have to set this option to "TRUE" if you want to use such a
# monitor on a machine with a video bridge.
# Normally, you don't need to set this option.
    Option "ForceCRT1" "TRUE"

# Option "MaxXFBMem":
# The option is ignored in dual head mode. DRI is not supported in dual
# head mode.
    Option          "MaxXFBMem" "12288"

# For dual head mode, BusID has to be specified! Check this using lspci!
    BusID        "PCI:1:00:0"

# "Screen" selects the screen number for this device in dual head mode
# Screen 0 is master (always CRT2)
    Screen        0

EndSection

# Dual Head mode:
# Slave head is always CRT1

Section "Device"
    Driver         "sis"
    Identifier     "SiS 630-2"
    Option "ForceCRT1" "TRUE"

# For dual head mode, BusID must be specified!
    BusID        "PCI:1:00:0"

# "Screen" selects the screen number for this device in dual head mode
# Screen 1 is slave (always CRT1 = external VGA)
    Screen         1

EndSection

Section "Screen"
    Identifier "Screen1"
    Device     "SiS 630-1"
    Monitor    "Generic LCD"
    DefaultDepth 16
    SubSection "Display"
        Depth     16
        Modes     "1024x768" "800x600" "640x480"
    EndSubSection
    SubSection "Display"
        Depth     24
        Modes     "1024x768" "800x600" "640x480"
    EndSubSection
EndSection

# For dual head mode:
# DefaultDepth must be identical to master screen if using Xinerama.
# Otherwise, depths can be different.
# A depth of 8 is not supported in dual head mode.
# Resolutions can be different.

Section "Screen"
    Identifier "Screen2"
    Device     "SiS 630-2"
    Monitor    "Generic VGA"
    DefaultDepth 16
    SubSection "Display"
        Depth 16
        Modes "1280x1024" "1024x768" "800x600" "640x480"
    EndSubSection
    SubSection "Display"
        Depth 24
        Modes "1024x768" "800x600" "640x480"
    EndSubSection
EndSection

Section "ServerLayout"
    Identifier    "Multi"
    Screen        "Screen1"
    Screen        "Screen2" LeftOf "Screen1"
    Option        "Xinerama" "on"
    InputDevice    "Generic Keyboard"
    InputDevice    "Configured Mouse"
    InputDevice    "USB Mouse"
EndSection

Section "ServerLayout"
        Identifier      "Clone"
        Screen          "Screen1"
        InputDevice     "Generic Keyboard"
        InputDevice     "Configured Mouse"
        InputDevice     "USB Mouse"
EndSection

Section "DRI"
    Mode    0666
EndSection

# enD of XF86Config

Die InputDevices heißen natürlich bei jedem anders. Bei Xinerama habe ich den externen Monitor links vom LCD platziert, weil das hier auch IRL so ist. Auf den ersten Blick merkwürdig mag erscheinen, dass im "Clone"-Layout nur ein Bildschirm angegeben ist. Tatsache ist aber, dass es bei mir nur so funktioniert, d.h. es wird tatsächlich dasselbe Bild intern und extern ausgegeben!

Valid
  HTML 4.0!
Jens Hatlak
12. Oktober 2003