Silicon Graphics Prism and Onyx4 systems require a number of system-specific X configuration settings for various configurations. Using the following topics, this appendix provides information about customizing the XF86Config file for Silicon Graphics Prism systems:
For Onyx4 systems, refer to the Silicon Graphics Onyx4 UltimateVision User's Guide and the Silicon Graphics UltimateVision Graphics Porting Guide. In general, for ongoing enhancements in X configuration, refer to the most recent user's guide for your platform.
This section describes how to configure a system to display stereo images.
Stereo sync is supported only on systems using ImageSync boards.
Note: Simultaneously running stereo and full-scene antialiasing can require more graphics-card memory than is available, and thus may not always work correctly. |
Create a copy of the XF86Config file to be customized for stereo:
# cp /etc/X11/XF86Config /etc/X11/XF86Config.Stereo |
Edit the XF86Config.Stereo file to include the following line at the end of each “Device” section:
Option "Stereo" "1" Option "StereoSyncEnable" "1" |
(see the “Example “Device” Section for Stereo”).
Edit the XF86Config.Stereo file to include the appropriate stereo modes in the “Monitor” section:
Create an appropriate mode (see “Sample Stereo Mode Entries”).
Add that mode to the “Monitor” section of your XF86Config.Stereo file (see the “Example “Monitor” Section for Stereo”).
Note: “Mode” and “Modeline” are two alternative formats used to present the same information. |
Ensure that the monitor supports the high horizontal sync rate setting. Refer to the documentation for the monitor to determine the horizontal sync rate. Modify the HorizSync setting in the “Monitor” section of the XF86Config.Stereo file. For example:
HorizSync 22-105 |
Modify the “Screen” section so that you use the appropriate mode setting. For example:
Modes "1280x1024@96" (see the “Example “Screen” Section for Stereo”).
Create a new /etc/X11/xdm/Xservers.Stereo file containing the following line:
:0 secure /usr/bin/X11/X :0 -xf86config /etc/X11/XF86Config.Stereo |
Edit the /etc/X11/xdm/xdm-config file to point to the new X servers file:
Replace the line:
DisplayManager.servers: /etc/X11/xdm/Xservers |
with:
DisplayManager.servers: /etc/X11/xdm/Xservers.Stereo |
Save the file and reboot the system to restart graphics in stereo mode:
Note that a stereo sync signal will not be present until you run a stereo application. One such application is ivview. If your system has ivview installed, you can use it to test the stereo configuration by running:
ivview /usr/share/data/models/X29.iv
and right click to activate the stereo setting on the preferences panel.
Section "Device" Identifier "SGI SG-0" Driver "fglrx" BusId "PCI:2:0:0" # === QBS Management === Option "Stereo" "1" Option "StereoSyncEnable" "1" EndSection |
Modeline "1024x768@96" 103.5 1024 1050 1154 1336 768 771 774 807 Modeline "1280x1024@96" 163.28 1280 1300 1460 1600 1024 1027 1033 1063 Modeline "1024x768@100" 113.309 1024 1096 1208 1392 768 769 772 814 Modeline "1024x768@120" 139.054 1024 1104 1216 1408 768 769 772 823 +hsync +vsync Modeline "1280x1024@100" 190.960 1280 1376 1520 1760 1024 1025 1028 1085 +hsync +vsync Mode "1280x1024_96s_mirage" DotClock 152.928 HTimings 1280 1330 1390 1500 VTimings 1024 1026 1030 1062 EndMode |
Section "Monitor" Identifier "Stereo Monitor" HorizSync 30-96 # multisync VertRefresh 50-160 # multisync Modeline "1024x768@96" 103.5 1024 1050 1154 1336 768 771 774 807 EndSection |
This section describes how to configure a system for global or per-window full-scene antialiasing.
Note: Simultaneously running stereo and full-scene antialiasing can require more graphics-card memory than is available, and thus may not work correctly. |
Create a copy of the XF86Config file to be customized for full-scene antialiasing:
# cp /etc/X11/XF86Config /etc/X11/XF86Config.AntiAlias |
Note: Automatically generated XF86Config files should contain the customized multi-sample positions shown in “Example “Device” Section for Full-Scene Antialiasing”. If these values are not already present, adding them will significantly improve the quality of your output. |
Edit the XF86Config.AntiAlias file to include the following line at the end of each “Device” section:
Option "FSAAScale" “X” |
where X is 1, 2, 4, or 6 (see the example “Device” section“Example “Device” Section for Full-Scene Antialiasing”).
Note: Per-window full-scene antialiasing is accomplished by setting “FSAAScale” to 1. The antialiasing level may then be set by the appropriate selection of visuals. Global antialiasing is accomplished by setting “FSAAScale” to 2, 4, or 6. In this case, the setting will apply to all OpenGL windows, regardless of the visual being displayed. |
Create a new /etc/X11/xdm/Xservers.AntiAlias file containing the following (all on one line):
:0 secure /usr/bin/X11/X :0 -xf86config /etc/X11/XF86Config.AntiAlias |
Edit the /etc/X11/xdm/xdm-config file to point to the new X servers file:
Replace the line:
DisplayManager.servers: /etc/X11/xdm/Xservers |
with:
DisplayManager.servers: /etc/X11/xdm/Xservers.AntiAlias |
Stop the system graphics from the X-terminal:
# <CTRL> <ALT> <BKSPC>
Restart graphics:
# /usr/bin/X11/startx
Section "Device" Identifier "SGI SG-0" Driver "fglrx" BusId "PCI:2:0:0" # === FSAA Management === Option "FSAAScale" "1" Option "FSAADisableGamma" "no" Option "FSAACustomizeMSPos" "yes" Option "FSAAMSPosX0" "0.250000" Option "FSAAMSPosY0" "0.416666" Option "FSAAMSPosX1" "0.083333" Option "FSAAMSPosY1" "0.083333" Option "FSAAMSPosX2" "0.416666" Option "FSAAMSPosY2" "0.750000" Option "FSAAMSPosX3" "0.750000" Option "FSAAMSPosY3" "0.916666" Option "FSAAMSPosX4" "0.583333" Option "FSAAMSPosY4" "0.250000" Option "FSAAMSPosX5" "0.916666" Option "FSAAMSPosY5" "0.583333" EndSection |
To configure a system for dual-channel operation, follow the steps in this section.
Note: If any pipes managed by an X server have their second channel enabled, then every pipe managed by that X server must have its second channel enabled. |
Note: Both channels on a pipe must have the same display resolution. |
Create a copy of the XF86Config file to be customized for dual-channel operation:
# cp /etc/X11/XF86Config /etc/X11/XF86Config.DualChannel |
Edit the XF86Config.DualChannel file to include the following line at the end of each “Device” section:
Option "DesktopSetup" mode |
where mode is one of the following:
"0x00000100" [this mode clones the managed area] "0x00000200" [this mode scales the managed area by 2 horizontally] "0x00000300" [this mode scales the managed area by 2 vertically] |
(see the example “Device” section“Example “Device” Section for Dual Channel”).
Note: All pipes managed by the same X server must be set to the same mode. |
When using monitors or monitor cables which do not conform to the VESA Display Data Channel (DDC) standard, append the following entry in the “Device” section to enable proper display configuration:
Option "NoDDC" "on" |
Create a new /etc/X11/xdm/Xservers.DualChannel file containing the following line:
:0 secure /usr/bin/X11/X :0 -xf86config /etc/X11/XF86Config.DualChannel |
Edit the /etc/X11/xdm/xdm-config file to point to the new X servers file:
Replace the line:
DisplayManager.servers: /etc/X11/xdm/Xservers |
with:
DisplayManager.servers: /etc/X11/xdm/Xservers.DualChannel |
Stop the system graphics from the X-terminal:
# <CTRL> <ALT> <BKSPC>
Restart graphics:
# /usr/bin/X11/startx
To enable overlay planes, follow these steps:
Edit the /etc/X11/XF86Config file to include the following line in each “Device” section for which you want overlay planes enabled:
Option "OpenGLOverlay" "On" |
Log out from the desktop, then log back on.
External genlock and framelock may be used on systems with at least one optional ImageSync board.
To configure your system to receive an external genlock or framelock signal you must run the setmon command with the appropriate options.
Before running setmon, use printenv DISPLAY to ensure that the DISPLAY environment variable is set to the local system (for example, :0.0). If it is not, use setenv DISPLAY :0.0 to change it (substituting other numbers for :0.0 if appropriate).
To set the system for genlock, execute the following command:
# setmon -ppipenumber -g graphicsformat |
where pipenumber is the pipe to which this setting should be applied, and
graphicsformat is one of the timings (modes) listed in the “Monitor” section of the /etc/X11/XF86Config file.
To set the system for framelock, execute the following command:
# setmon -ppipenumber -Lvideoformat graphicsformat |
where pipenumber is the pipe to which this setting should be applied,
videoformat is the input video format to be used as a framelock source, and
graphicsformat is one of the framelock-certified timings (modes) listed in the “Monitor” section of the /etc/X11/XF86Config file that is compatible with the chosen input video format (Table D-1 provides a list of compatible formats).
Note: The default behavior of setmon is to load the new format for the current session only and to prompt for input to determine if the format should be saved as the default. To save the new format as the default you must be logged in as root. |
For more information about the setmon command, see the setmon man page (man setmon).
Note: Framelock-certified timings will include an “f” appended to their name (that is, “1280x1024_5994f” is certified for NTSC (525 line) video timing). |
Table D-1. Input Video Formats (Framelock)
Input Video Format (Framelock Source) | Format Name | Compatible Graphics Formats |
---|---|---|
525 line at 59.94Hz (NTSC) | 525 | 1280x1024_5994f |
625 line at 50Hz (PAL) | 625 | 1280x1024_50f |
720-line progressive-scan at 59.94Hz | 720p_5994 | 1920x1154_5994f |
720-line progressive-scan at 60Hz | 720p_60 | 1280x1024_60f |
1080-line progressive-scan at 25Hz | 1080p_25 | 1280x1024_50f |
1080-line interlaced at 25Hz | 1080i_25 | 1280x1024_50f |
1080-line progressive-scan at 29.97Hz | 1080p_2997 | 1920x1154_5994f |
1080-line interlaced at 29.97Hz | 1080i_2997 | 1920x1154_5994f |
1080-line progressive-scan at 30Hz | 1080p_30 | 1280x1024_60f |
1080-line interlaced at 30Hz | 1080i_30 | 1280x1024_60f |
When an X-Server is managing multiple monitors, it needs to know their relative positions in order to properly handle cursor cross-over locations.
The monitor positions are specified in the “ServerLayout” section of the /etc/X11/XF86Config file as follows:
Each screen is listed, followed by a list of the screens above, below, to the left, and to the right of it (in that order). Figure D-1 and the following subsection show an example of four monitors arranged in a line.
Programs started by clicking on an icon appear on the screen from which you invoked them. Note that once a program has been launched, it is not possible to move it from one screen to another.
Section "ServerLayout" Identifier "Four-in-a-Line" Screen "Screen SG-0" "" "" "" "Screen SG-1" Screen "Screen SG-1" "" "" "Screen SG-0" "Screen SG-2" Screen "Screen SG-2" "" "" "Screen SG-1" "Screen SG-3" Screen "Screen SG-3" "" "" "Screen SG-2" "" InputDevice "Mouse1" "CorePointer" InputDevice "Keyboard1" "CoreKeyboard" EndSection |
Figure D-2 and the subsection following it show an example of four monitors arranged in a square.
Section "ServerLayout" Identifier "Four-in-a-Square" Screen "Screen SG-0" "" "Screen SG-2" "" "Screen SG-1" Screen "Screen SG-1" "" "Screen SG-3" "Screen SG-0" "" Screen "Screen SG-2" "Screen SG-0" "" "" "Screen SG-3" Screen "Screen SG-3" "Screen SG-1" "" "Screen SG-2" "" InputDevice "Mouse1" "CorePointer" InputDevice "Keyboard1" "CoreKeyboard" EndSection |
The system graphics cards support both analog and digital monitors. The type of monitor connected to each graphics card is specified in the “Device” sections of the /etc/X11/XF86Config file.
Table D-2 lists the allowable options for the MonitorLayout line. If the line is not present, both channels default to AUTO.
Table D-2. Options for Monitor Layout
Monitor Type | Meaning |
---|---|
AUTO | Automatically select monitor type (default) |
TMDS | Digital monitor |
CRT | Analog monitor |
NONE | No monitor |
The format is:
Option "MonitorLayout" "channel1type, channel2type" |
where channel1type is the type (AUTO, TMDS, CRT or NONE) of monitor attached to channel 1 (the left DVI-I connector) for this pipe, and
channel2type is the type (AUTO, TMDS, CRT or NONE) of monitor attached to channel 2 (the right DVI-I connector) for this pipe.
Multiple X servers allows specific subsets of the keyboards, pointing devices, and monitors attached to a Silicon Graphics Prism system to each be managed by a different X server.
Note: The use of multiple X servers requires SGI ProPack 3, Service Pack 4 or a later release of the software. |
This section describes a relatively simple configuration. Much more complex configurations are possible, however, and may be accomplished by extending the instructions provided here.
Note: When configuring multiple seats, the best method is to first attach all devices (keyboards, pointing devices, and monitors) and configure the system with a single X server. Once this is done, the configuration may be modified to assign individual subsets of these devices to be managed by separate X servers. |
Configuring a system for multi-seat operation involves the following steps, each described in a separate subsection below:
Identify the correct event devices (that is, keyboards and pointing devices) for each seat.
Create and edit an XF86Config-N server file for the desired configuration.
Point X to the newly-created XF86Config-N server file.
An “event device” is a keyboard or pointing device. All event devices connected to the system are listed at boot time on lines beginning with the string “input.” These boot messages may be displayed at a Linux command prompt using the dmesg command. The output from the dmesg command can be quite long, and therefore is usually filtered with a grep command. For example:
# dmesg | grep ^input input0: USB HID v1.10 Keyboard [NOVATEK Generic USB Keyboard] on usb1:4.0 input1: USB HID v1.00 Mouse [Logitech N43] on usb1:5.0 input2: USB HID v1.00 Mouse [Logitech N43] on usb1:6.0 input3: USB HID v1.10 Keyboard [NOVATEK Generic USB Keyboard] on usb1:7.0 input4: USB HID v1.00 Keyboard [SILITEK USB Keyboard and Mouse] on usb1:9.0 input5: USB HID v1.00 Mouse [SILITEK USB Keyboard and Mouse] on usb1:9.1 input6: USB HID v1.00 Mouse [Logitech N43] on usb1:10.0 |
All input devices detected during boot-up will have device nodes created for them in the /dev/input directory as follows:
Each keyboard will have an associated event* device node.
Each pointing device will have both an associated event* device node and an associated mouse* device node.
The mapping of devices to nodes is by number (that is, input0 maps to event0, input1 maps to event1, and so on). The first input that is a pointing device gets mapped to mouse0, the next input that is a pointing device gets mapped to mouse1, and so on.
The dmesg output shown above would therefore create the following mapping:
input0: event0 input1: event1, mouse0 input2: event2, mouse1 input3: event3 input4: event4 input5: event5, mouse2 input6: event6, mouse3 |
This mapping can then be used to edit the XF86Config-N server file, as described in the next subsection, “Creating a Multi-Seat XF86Config File”.
A multiple-X server configuration requires a customized XF86Config file containing a separate ServerLayout section for each X server you will be running.
Note: The original ServerLayout section (always identified as “Main Layout”) is typically left unchanged, allowing the system to easily be reconfigured as a single-X server system. |
Start out by creating a new XF86Config file. The easiest way to do this is to simply make a copy of the system's regular XF86Config file, as follows:
# cp /etc/X11/XF86Config /etc/X11/XF86Config-Nservers |
N is the number of servers you will be configuring.
Next, configure the input devices as follows:
Copy the section beginning:
Section "InputDevice" Identifier "Keyboard1" |
and insert a duplicate copy (or copies) below the existing section, until there is one copy for each keyboard (including the original copy in this count).
Edit all the keyboard InputDevice sections, in each one changing the driver from “keyboard” to “evdev” and adding an Option line identifying the appropriate event device (in this example, “/dev/input/event0”). The resulting InputDevice sections will look something like the following:
Section "InputDevice" Identifier "Keyboard1" Driver "evdev" Option "Device" "/dev/input/event0" # ... EndSection |
Note: See “Identifying Event Devices” for instructions on how to determine the appropriate event device for each section. |
Note: You may assign any number of keyboards to a single X server, but no keyboard may be assigned to more than one X server. |
Copy the section beginning:
Section "InputDevice" Identifier "Mouse1" |
and insert a duplicate copy (or copies) below the existing section, until there is one copy for each pointing device (including the original copy in this count).
Edit all the mouse InputDevice sections, changing the Option “Device” line from the default “/dev/input/mice” to one identifying the appropriate event device (in this example, “/dev/input/mouse0”). The resulting InputDevice sections will look something like the following:
Section "InputDevice" Identifier "Mouse1" Driver "mouse" Option "Device" "/dev/input/mouse0" # ... EndSection |
Note: See “Identifying Event Devices” for instructions on how to determine the appropriate event device. |
Note: You may assign any number of pointing devices to a single X server, but no pointing device may be assigned to more than one X server. |
In this new XF86Config-Nservers file, perform the following steps:
Copy the section beginning:
Section “ServerLayout” Identifier “Main Layout” |
and insert a duplicate copy (or copies) below the existing section, until there is one copy for each X server you will have (do NOT include the original “Main Layout” copy in this count).
While leaving the original ServerLayout section identified as “MainLayout,” give each new ServerLayout section a new name. For example, the first server might be named “Layout0”:
Identifier “Layout0” |
the next “Layout1,” and so on.
Within each new Server Layout section, disable (delete or comment out) every screen that will not be used in that layout:
Screen "Screen SG-0" "" "" "" "Screen SG-1" # Screen "Screen SG-1" "" "" "Screen SG-0" "" |
Note: You may assign any number of screens to a single X server, but no screen may be assigned to more than one X server. |
Edit each Server Layout section to make sure than no remaining uncommented screen lists as adjacent another screen that will be managed by a different X server:
Screen "Screen SG-0" "" "" "" "" # Screen "Screen SG-1" "" "" "Screen SG-0" "" |
Within each Server Layout section, change the input devices to the correct ones for that X server. For example, the first X server might use:
InputDevice “Mouse1” “CorePointer” InputDevice “Keyboard1” “CoreKeyboard” |
Save the XF86Config-Nservers file.
For an example ServerLayout section from an XF86Config-3server file, see “Example “ServerLayout” Sections for Three X Servers”. In this example, the first two X servers manage one screen each, while the third X server manages two screens.
# ********************************************************************** # ServerLayout sections. # ********************************************************************** Section "ServerLayout" Identifier "Main Layout" Screen "Screen SG-0" "" "" "" "Screen SG-1" Screen "Screen SG-1" "" "" "Screen SG-0" "Screen SG-2" Screen "Screen SG-2" "" "" "Screen SG-1" "Screen SG-3" Screen "Screen SG-3" "" "" "Screen SG-2" "" InputDevice "Mouse1" "CorePointer" InputDevice "Keyboard1" "CoreKeyboard" EndSection Section "ServerLayout" Identifier "Layout0" Screen "Screen SG-0" "" "" "" "" InputDevice "Mouse1" "CorePointer" InputDevice "Keyboard1" "CoreKeyboard" EndSection Section "ServerLayout" Identifier "Layout1" Screen "Screen SG-1" "" "" "" "" InputDevice "Mouse2" "CorePointer" InputDevice "Keyboard2" "CoreKeyboard" EndSection Section "ServerLayout" Identifier "Layout2" Screen "Screen SG-2" "" "" "" "Screen SG-3" Screen "Screen SG-3" "" "" "Screen SG-2" "" InputDevice "Mouse3" "CorePointer" InputDevice "Keyboard3" "CoreKeyboard" EndSection |
Once you have created the new XF86Config-Nserver file, the last step is to tell X to use the new layouts it contains, rather than the default server layout. To do so, perform the following steps:
Make a backup copy of the default single server /etc/X11/xdm/gdm.conf file:
# cp /etc/X11/gdm/gdm.conf /etc/X11/gdm/gdm.conf-old |
Edit the /etc/X11/gdm/gdm.conf file to use the new server layouts you defined in the XF86Config file:
In the [servers] section, comment out the standard server, then add the new server layouts you will be using:
#0=Standard 0=Layout0 1=Layout1 2=Layout2 |
Define each new server layout. For example:
[server-Layout0] name=Layout0 server command=/usr/X11R6/bin/X :0 -xf86config /etc/X11/XF86Config.3server -layout Layout0 flexible=true |
For an example of a multi-X-server [servers] section, see “Example /etc/X11/xdm/gdm.conf Servers Section for Three X Servers”.
Save the file and reboot the system.
[servers] #0=Standard 0=Layout0 1=Layout1 2=Layout2 [server-Standard] name=Standard server command=/usr/X11R6/bin/X flexible=true [server-Layout0] name=Layout0 server command=/usr/X11R6/bin/X :0 -xf86config /etc/X11/XF86Config.3server -layout Layout0 flexible=true [server-Layout1] name=Layout1 server command=/usr/X11R6/bin/X :1 -xf86config /etc/X11/XF86Config.3server -layout Layout1 flexible=true [server-Layout2] name=Layout2 server command=/usr/X11R6/bin/X :2 -xf86config /etc/X11/XF86Config.3server -layout Layout2 flexible=true |