# Copyright BenoitÃ-Pierre DEMAINE # benoit@demaine.info # # This configuration file is a all in one multiconf. # # My hardware is: # - one integrated RS880 [Radeon HD 4200] in my motherboard # - two RV710 [Radeon HD 4350] in PCI-E slots # Each one of these three cards have two "usable" outputs. # All have VGA + DVI + HDMI. The 4350 use DVI-I (integram analog + digital) # the HD 4200 is DVI-D (digital only). I don't know the number of channels # for DVI digital. # # 4350 can always let use the DVI plug; but HDMI is concurrent with VGA. # 4200, only two outputs are usable; I can use DVI-D + VGA, but I forgot # with which plug the HDMI is concurrent. # # Some layouts can be used together; other ones are concurrents and/or complementary # # # This configuration works for me with kernel 2.6.34-xen from Gentoo # =sys-kernel/xen-sources-2.6.34 and X 1.8 =x11-base/xorg-server-1.8.1.902 # plus =media-libs/mesa-7.8.2 # The Radeon driver is the GPL one, called in Gentoo =x11-drivers/xf86-video-ati-6.13.0 # and it requires the firmware for the chipset =x11-drivers/radeon-ucode-1.5-r3 # I will not list here my kernel configuration, but in short, I have Xen support for dom0 # and DRI managed in kernel. Also ... =x11-apps/xrandr-1.3.2 # # # As of today, 9th jul 2010, the first two layouts work with, or # without SuroundView activated in the BIOS. # # # The xorg.conf.d is an additional folder where users can store adjustments to Xorg's configuraion without touching the main xorg.conf itself. # # The order of inheritance is quite simple. If present, xorg.conf be loaded, # then the xorg.conf.d/**.conf files will be parsed next, in ASCII # alphabetical order (so numbers will be first). # ############################################################################# # # Servers Section "ServerFlags" Option "DefaultServerLayout" "Seat_Xinerama" # Option "AllowMouseOpenFail" "true" # Option "AutoAddDevices" "false" # Disable VT Switching # Option "DontVTSwitch" "yes" # This disallows the use of the Ctrl+Alt+Backspace sequence # Option "DontZap" "yes" # Disable xinerama # Option "Xinerama" "0" EndSection Section "ServerLayout" # works with and without SurroundView # 6 monitors with aceleration only on #0 # (have fun starting glxgears and move it around all monitors) # or 6 monitors with full software rendering when # declaring LIBGL_ALWAYS_SOFTWARE=1 # declared on command line, or as env var. # # Xinerama lets me move, resize, and strech any window over any place I want, including # spreading a movie over all 6 monitors together. Identifier "Seat_Xinerama" Screen 0 "Screen_xi_1-V" 0 0 # acer Screen 1 "Screen_xi_1-D" RightOf "Screen_xi_1-V" # compaq Screen 2 "Screen_xi_2-V" Below "Screen_xi_2-D" # iiyama Screen 3 "Screen_xi_2-D" LeftOf "Screen_xi_1-V" # formac Screen 4 "Screen_xi_3-V" Relative "Screen_xi_1-D" 1280 256 # hp Screen 5 "Screen_xi_3-D" Above "Screen_xi_3-V" # ibm # InputDevice "Mouse_mouse" "CorePointer" # InputDevice "Keyboard_kbd" "CoreKeyboard" Option "Xinerama" "true" # Xinerama flag *should* be in ServerFlags, but this is not possible in my multi-conf file EndSection Section "ServerLayout" # works with and without SurroundView # 3 monitors, all accelerated. Can become 6 when spliting heads with xrandr. # Run this seat with command (theoreticaly) # $ /usr/bin/Xorg -layout Seat_Xrandr_tri_mono # $ startx -- :1 -layout Seat_Xrandr_tri_mono # $ xinit -- :1 -layout Seat_Xrandr_tri_mono # the -layout part is to select this layout instead of the default one # the :1 part is to let you launch the accelerated server at the same time as the Xinerama one # To use the Xrandr only conf, either change the default server in the ServerFlags section # or try this command (untested for now) # $ startx -- -layout Seat_Xrandr_tri_mono # $ startx -- :0 -layout Seat_Xrandr_tri_mono # TODO UNTESTED # # You can split the outputs with this command: # $ xrandr --output VGA-0 --auto --left-of DVI-0 # # of, more in details with this: # $ xrandr --output DVI-0 --mode 1280x1024 --output VGA-0 --mode 1280x1024 --left-of DVI-0 # # change gamma: # $ e1=1 ; e2=1 ; xrandr --output DVI-0 --mode 1280x1024 --gamma $e1:$e1:$e1 --output VGA-0 --mode 1280x1024 --left-of DVI-0 --gamma $e2:$e2:$e2 # # In order to split all cards from the same script: # DISPLAY=":0.0" $ xrandr --output DVI-0 --mode 1280x1024 --output VGA-0 --mode 1280x1024 --left-of DVI-0 # DISPLAY=":0.1" $ xrandr --output DVI-0 --mode 1280x1024 --output VGA-1 --mode 1280x1024 --left-of DVI-0 # DISPLAY=":0.2" $ xrandr --output DVI-1 --mode 1280x1024 --output VGA-2 --mode 1280x1024 --left-of DVI-1 # TODO UNTESTED # # Xrandr provides me accelerated layer. I can play any 3D game on any chipset. If output have been # splited, starting a game will close the second head, and shut it down (not even miror mode). # Xrandr can let me strech, move, resize any window the way I want on one, or two monitors # on the same chipset, but, only the mouse cursor can move from a chipset to an other. # # I am said that since xrandr 1.3, drag and drog of windows should work; # check the "GPU object support" in the window manager; as of today, using Enlightenment-DR17 from git, # E17 does not let me do this. kwin (KDE), metacity (Gnome), awesome xfwm4 may support this. # Xrandr 1.4 may support "merging screens across GPUs". Maybe, hopefully, so that # we can at last forget about Xinerama. Identifier "Seat_Xrandr_tri_mono" Screen 0 "Screen_xr_1" 0 0 Screen 1 "Screen_xr_2" LeftOf "Screen_xr_1" Screen 2 "Screen_xr_3" RightOf "Screen_xr_1" EndSection Section "ServerLayout" Identifier "Seat_Xrandr_mono_mono" Screen 0 "Screen_xr_1" 0 0 EndSection Section "ServerLayout" Identifier "Seat_Xrandr_mono_dual" Screen 0 "Screen_xr_1v2" 0 0 EndSection Section "ServerLayout" # seperate monitors from the conf, so that we don't need to run # "xrandr --output VGA-0 --auto --left-of DVI-0" . Identifier "Seat_Xrandr_tri_dual" # startx -- :1 -layout Seat_Xrandr_tri_dual Screen 0 "Screen_xr_1v2" 0 0 Screen 1 "Screen_xr_2v2" LeftOf "Screen_xr_1v2" Screen 2 "Screen_xr_3v2" RightOf "Screen_xr_1v2" # Key points for split at X start are: http://wiki.debian.org/XStrikeForce/HowToRandR12 # in Device: # Option "monitor-VGA-0" "Monitor0" # Option "monitor-DVI-0" "Monitor123" # In one monitor: # Option "Position" "1280 0" # # Small bug: when I move the mouse from Screen 0 to 1 or 1 to 0, the cursor # jumps to the middle of screen (edge between monitors); does not happen # between screens 0 and 2. Inverting the monitor layout may help. EndSection Section "ServerLayout" # X -nolisten tcp -novtswitch -sharevts -r -config xorg.conf.multiseat -layout seat0 # X -retro -nolisten tcp -novtswitch -sharevts -r -layout Seat_multi_1 tty13 # X -retro -nolisten tcp -novtswitch -sharevts -r -layout Seat_multi_2 tty13 # X :1 -retro -nolisten tcp -novtswitch -sharevts -r -layout Seat_multi_1 tty13 # X :1 -retro -nolisten tcp -novtswitch -sharevts -r -layout Seat_multi_3 tty13 # # { { sleep 5 ; DISPLAY=":1.0" e16 ; } & } ; X :1 -nolisten tcp -novtswitch -sharevts -r -layout Seat_multi_1 tty13 # sleep 5 ; { { sleep 5 ; DISPLAY=":3.0" enlightenment_start ; } & } ; X :3 -nolisten tcp -novtswitch -sharevts -r -layout Seat_multi_3 tty13 # # This is the "manual" way to set-up multi-seat. It has the advantage that you can easily # keep 3D, *OR* activate xinerama. Xephyr wuld cut 3D down. # # For now, my does not respect the last argument tty13; it is an issue, because # even if mice can be disabled by killing gpm, all keyboards will output keystrokes # in the same console; and if not using chvt, that console # is likely to be tty1. So, all keystrokes will be sent to tty1, what is not nice. # This can have a positive advantage: after finer tuning, it could be possible # to start an X server on secondary cards with extra mouse+kbd # while staying in framebuffered console with the main keyboard. If we can tell # GPM to not use the extra mouse, and the consoles to not use the extra kbd, # this can be very interesting. # # In other cases, for now, this is ennoyinhg. # Identifier "Seat_multi_1" Screen 0 "Screen_xr_1v2" 0 0 InputDevice "Mouse_L_RP" "CorePointer" InputDevice "Keyboard_MS_evdev" "CoreKeyboard" Option "AllowMouseOpenFail" "true" Option "AutoAddDevices" "false" EndSection Section "ServerLayout" Identifier "Seat_multi_3" Screen 0 "Screen_xr_2v2" 0 0 Screen 1 "Screen_xr_3v2" RightOf "Screen_xr_2v2" InputDevice "Mouse_L_MX" "CorePointer" InputDevice "Keyboard_L_evdev" "CoreKeyboard" Option "AllowMouseOpenFail" "true" Option "AutoAddDevices" "false" EndSection # Side notes: # - google: xorg multi seat # - xnest xephyr xdmx # - zaphoeads # - xdriinfo | grep -i render # - glxinfo | grep -i rend # - xdpyinfo -ext XINERAMA # # 5 4 = 1.25 # 1280 1024 # Acer # Compaq # # 4 3 = 1.333 # 1024 768 # 1280 960 # 1400 1050 # 1600 1200 # IBM # HP # Formac # IIyama # # http://en.wikipedia.org/wiki/File:Vector_Video_Standards2.svg # accelerated: # uranus ~ # xdriinfo # Screen 0: r600 # Screen 1: r600 # Screen 2: r600 # uranus ~ # glxinfo | grep -i rend # direct rendering: Yes # OpenGL renderer string: Mesa DRI R600 (RS880 9710) 20090101 TCL DRI2 # direct rendering: Yes # OpenGL renderer string: Mesa DRI R600 (RV710 954F) 20090101 TCL DRI2 # direct rendering: Yes # OpenGL renderer string: Mesa DRI R600 (RV710 954F) 20090101 TCL DRI2 # # # xinerama normal # dhp@uranus ~ $ xdriinfo # Screen 0: r600 # dhp@uranus ~ $ glxinfo | grep -i rend # direct rendering: Yes # OpenGL renderer string: Mesa DRI R600 (RS880 9710) 20090101 TCL DRI2 # dhp@uranus ~ $ # # Xinerama with forced soft render # dhp@uranus ~ $ xdriinfo # Screen 0: r600 # dhp@uranus ~ $ glxinfo | grep -i rend # direct rendering: Yes # OpenGL renderer string: Software Rasterizer # GL_NV_conditional_render, GL_NV_depth_clamp, GL_NV_fragment_program, ############################################################################# # # Options # Section "Files" ModulePath "/usr/lib/xorg/modules" FontPath "/usr/share/fonts/misc/" FontPath "/usr/share/fonts/TTF/" FontPath "/usr/share/fonts/OTF/" FontPath "/usr/share/fonts/Type1/" FontPath "/usr/share/fonts/100dpi/" FontPath "/usr/share/fonts/75dpi/" EndSection Section "Module" Load "dbe" # Double-Buffering Extension Load "dri" Load "dri2" Load "extmod" Load "freetype" # uncompatible with Xinerama ? Load "glx" Load "record" Load "v4l" # Video for Linux # uncompatible with Xinerama ? EndSection Section "Extensions" # Option "Composite" "Disable" # Option "RENDER" "Enable" EndSection #TODO search more modules to load, like speedo ? ############################################################################# # # Inputs # Section "InputDevice" # DOES NOT WORK : AllowEmptyInput is on by default. Turn it off to use this section. # This may not work ... because driver kbd is not compatible with AllowEmptyInput which seems on by default # [ 4775.901] (WW) AllowEmptyInput is on, devices using drivers 'kbd', 'mouse' or 'vmmouse' will be disabled. Identifier "Keyboard_kbd" Driver "kbd" # Driver "keyboard" Option "XkbLayout" "fr" EndSection Section "InputDevice" # DOES NOT WORK : i can not use the Device line with my stupid MS board Identifier "Keyboard_evdev" Driver "evdev" # The star may induce issues if have twice the same board (in multi seat) # but the board name seem to contain an invalid char ... # Option "Device" "/dev/input/by-id/usb-Microsoft_Microsoft\*_Digital_Media_Keyboard_3000-event-kbd" # star does not work # Models are listed in /usr/share/X11/xkb/ # Option "xkbmodel" "lenovo-3000" # Option "xkbmodel" "pc105" # Option "xkbrules" "xorg" Option "XkbLayout" "fr" # cat /proc/bus/input/devices | grep -B 5 kbd # cat /proc/bus/input/devices | grep -B 5 mouse EndSection Section "InputDevice" Identifier "Keyboard_MS_evdev" Driver "evdev" Option "Device" "/dev/input/by-path/pci-0000:00:12.0-usb-0:2:1.0-event-kbd" # Option "Device" "/dev/input/by-path/pci-0000:00:12.0-usb-0:2:1.1-event-kbd" Option "XkbLayout" "fr" EndSection Section "InputDevice" Identifier "Keyboard_L_evdev" Driver "evdev" Option "Device" "/dev/input/by-path/pci-0000:00:13.1-usb-0:2:1.0-event-kbd" Option "XkbLayout" "fr" EndSection Section "InputClass" # from #radeon: 14:40 < jcristau> the Match* keywords go in InputClass sections. # http://fedoraproject.org/wiki/Input_device_configuration Identifier "keyboard-all" # for match: /dev/input/by-id/usb-Microsoft_Microsoft\*_Digital_Media_Keyboard_3000-event-kbd # Vendor is the first part: Microsoft_MicrosoftR # Product is the later one: Digital_Media_Keyboard_3000 # MatchProduct "Digital_Media_Keyboard_3000" # MatchVendor "?" # http://www.gentoo.org/proj/en/desktop/x/x11/xorg-server-1.8-upgrade-guide.xml # Driver "evdev" # Option "XkbLayout" "us,cz" Option "XkbLayout" "fr" # Option "XkbVariant" ",qwerty" # Option "XkbOptions" "grp:alt_shift_toggle,grp:switch,compose:rwin,terminate:ctrl_alt_bksp" MatchIsKeyboard "on" EndSection Section "InputDevice" Identifier "Mouse_mouse" Driver "mouse" # if it gets disabled, see the keyboard section, and, use maybe the evdev driver ? Option "Protocol" "auto" Option "Device" "/dev/input/mice" Option "ZAxisMapping" "4 5 6 7" EndSection Section "InputDevice" Identifier "Mouse_L_RP" Driver "evdev" Option "Protocol" "auto" Option "Device" "/dev/input/by-id/usb-Logitech_USB_Receiver-event-mouse" EndSection Section "InputDevice" Identifier "Mouse_L_MX" Driver "evdev" Option "Protocol" "auto" Option "Device" "/dev/input/by-id/usb-Logitech_USB-PS_2_Optical_Mouse-event-mouse" EndSection ############################################################################# # # Screens # # Xinerama Section "Screen" Identifier "Screen_xi_1-V" Device "Card_1-V" Monitor "Monitor_Acer" SubSection "Display" Depth 24 EndSubSection EndSection Section "Screen" Identifier "Screen_xi_1-D" Device "Card_1-D" Monitor "Monitor_Compaq" SubSection "Display" Depth 24 EndSubSection EndSection Section "Screen" Identifier "Screen_xi_2-V" Device "Card_2-V" Monitor "Monitor_iiyama" SubSection "Display" Depth 24 EndSubSection EndSection Section "Screen" Identifier "Screen_xi_2-D" Device "Card_2-D" Monitor "Monitor_Formac" SubSection "Display" Depth 24 EndSubSection EndSection Section "Screen" Identifier "Screen_xi_3-V" Device "Card_3-V" Monitor "Monitor_HP" SubSection "Display" Depth 24 EndSubSection EndSection Section "Screen" Identifier "Screen_xi_3-D" Device "Card_3-D" Monitor "Monitor_IBM" SubSection "Display" Depth 24 EndSubSection EndSection # Xrandr Section "Screen" Identifier "Screen_xr_1" Device "Card_1" Monitor "Monitor0" SubSection "Display" Depth 24 EndSubSection EndSection Section "Screen" Identifier "Screen_xr_2" Device "Card_2" Monitor "Monitor0" SubSection "Display" Depth 24 EndSubSection EndSection Section "Screen" Identifier "Screen_xr_3" Device "Card_3" Monitor "Monitor0" SubSection "Display" Depth 24 EndSubSection EndSection Section "Screen" Identifier "Screen_xr_1v2" Device "Card_1_dual" SubSection "Display" Depth 24 Virtual 2560 1024 ViewPort 0 0 EndSubSection EndSection Section "Screen" Identifier "Screen_xr_2v2" Device "Card_2_dual" SubSection "Display" Depth 24 EndSubSection EndSection Section "Screen" Identifier "Screen_xr_3v2" Device "Card_3_dual" SubSection "Display" Depth 24 EndSubSection EndSection ############################################################################# # # Devices # # Xinerama Section "Device" Option "ZaphodHeads" "VGA-0" Identifier "Card_1-V" Driver "radeon" VendorName "ATI Technologies Inc" BoardName "RS880 [Radeon HD 4200]" BusID "PCI:1:5:0" Screen 0 EndSection Section "Device" Option "ZaphodHeads" "DVI-0" Identifier "Card_1-D" Driver "radeon" VendorName "ATI Technologies Inc" BoardName "RS880 [Radeon HD 4200]" BusID "PCI:1:5:0" Screen 1 EndSection Section "Device" Option "ZaphodHeads" "VGA-1" Identifier "Card_2-V" Driver "radeon" VendorName "ATI Technologies Inc" BoardName "RV710 [Radeon HD 4350]" BusID "PCI:2:0:0" Screen 0 EndSection Section "Device" Option "ZaphodHeads" "DVI-0" Identifier "Card_2-D" Driver "radeon" VendorName "ATI Technologies Inc" BoardName "RV710 [Radeon HD 4350]" BusID "PCI:2:0:0" Screen 1 EndSection Section "Device" Option "ZaphodHeads" "VGA-2" Identifier "Card_3-V" Driver "radeon" VendorName "ATI Technologies Inc" BoardName "RV710 [Radeon HD 4350]" BusID "PCI:3:0:0" Screen 0 EndSection Section "Device" Option "ZaphodHeads" "DVI-1" Identifier "Card_3-D" Driver "radeon" VendorName "ATI Technologies Inc" BoardName "RV710 [Radeon HD 4350]" BusID "PCI:3:0:0" Screen 1 EndSection # Xrandr Section "Device" Identifier "Card_1" Driver "radeon" VendorName "ATI Technologies Inc" BoardName "RS880 [Radeon HD 4200]" BusID "PCI:1:5:0" EndSection Section "Device" Identifier "Card_2" Driver "radeon" VendorName "ATI Technologies Inc" BoardName "RV710 [Radeon HD 4350]" BusID "PCI:2:0:0" EndSection Section "Device" Identifier "Card_3" Driver "radeon" VendorName "ATI Technologies Inc" BoardName "RV710 [Radeon HD 4350]" BusID "PCI:3:0:0" EndSection Section "Device" Identifier "Card_1_dual" Driver "radeon" VendorName "ATI Technologies Inc" BoardName "RS880 [Radeon HD 4200]" BusID "PCI:1:5:0" # Option "VGAAccess" "false" # Option "XAANoOffscreenPixmaps" "true" Option "AccelMethod" "EXA" # Is this Zaphoheads syntax ? Option "monitor-VGA-0" "Monitor0" Option "monitor-DVI-0" "MonitorRight" EndSection Section "Device" Identifier "Card_2_dual" Driver "radeon" VendorName "ATI Technologies Inc" BoardName "RV710 [Radeon HD 4350]" BusID "PCI:2:0:0" Option "monitor-VGA-1" "Monitor0" Option "monitor-DVI-0" "MonitorRight" EndSection Section "Device" Identifier "Card_3_dual" Driver "radeon" VendorName "ATI Technologies Inc" BoardName "RV710 [Radeon HD 4350]" BusID "PCI:3:0:0" Option "monitor-VGA-2" "Monitor0" Option "monitor-DVI-1" "MonitorRight" EndSection ############################################################################# # # Monitors # Section "Monitor" Identifier "Monitor_Compaq" # Real name VendorName "CPQ" # grep "EDID vendor" /var/log/Xorg.0.log, or grep "Manufacturer" /var/log/Xorg.0.log ModelName "CPQ TFT7010" # grep "Monitor name" /var/log/Xorg.0.log # HorizSync 31.0 - 80.0 # VertRefresh 58.0 - 85.0 Option "DPMS" DisplaySize 330 270 # mm # grep "Display dimensions" /var/log/Xorg.0.log # EDID vendor "CPQ", prod id 5001 # Manufacturer: CPQ Model: 1389 Serial#: 1093874992 Gamma 1.0 EndSection Section "Monitor" Identifier "Monitor_Acer" VendorName "ACR" ModelName "Acer AL1711" Option "DPMS" DisplaySize 330 270 # EDID vendor "ACR", prod id 44306 # Manufacturer: ACR Model: ad12 Serial#: 1080035235 Gamma 1.0 EndSection Section "Monitor" Identifier "Monitor_HP" VendorName "HWP" ModelName "hp L1502" Option "DPMS" DisplaySize 300 220 # EDID vendor "HWP", prod id 9728 # Manufacturer: HWP Model: 2600 Serial#: 0 Gamma 1.0 EndSection Section "Monitor" Identifier "Monitor_IBM" VendorName "IBM" ModelName "IBM T56A" Option "DPMS" DisplaySize 310 230 # EDID vendor "IBM", prod id 9493 # Manufacturer: IBM Model: 2515 Serial#: 16843009 # Rotate work fine with xrandr, but produces horrible black stripes with Xinerama # Option "Rotate" "Left" # Option "Rotate" "Right" # Option "Rotate" "inverted" # ok sans bande noire # Option "Position" "1280 0" EndSection Section "Monitor" # Formac, ProNitron 21/800 Identifier "Monitor_Formac" VendorName "SNY" ModelName "GDM-5402" Option "DPMS" DisplaySize 400 300 # EDID vendor "SNY", prod id 442 # Manufacturer: SNY Model: 1ba Serial#: 16843009 Gamma 1.3 EndSection Section "Monitor" # iiyama, Vision Master Pro 410 Identifier "Monitor_iiyama" VendorName "IVM" ModelName "" Option "DPMS" DisplaySize 320 320 # EDID vendor "IVM", prod id 5952 # Manufacturer: IVM Model: 1740 Serial#: 0 EndSection Section "Monitor" Identifier "MonitorRight" VendorName "Monitor Vendor" ModelName "Monitor Model" Option "Position" "1280 0" EndSection # # END # ############################################################################# #