------------------------------------------------------------------------------ Graphics Accelerators: ATI Radeon 8500, 9100, 9200, 9500, 9600, 9700, 9800, M9, M9+, M10 ATI FireGL 8700, 8800, E1, E2, X1, X2, Z1 Video Driver for Linux: Driver Version 4.1.0-3.2.5 Driver Version 4.2.0-3.2.5 Driver Version 4.3.0-3.2.5 ------------------------------------------------------------------------------ Please read the entire contents of this document. Information in this file may not appear in printed documentation or online help. This READ-ME file contains the following information: 1. GENERAL INFORMATION 1.1 Requirements 1.2 List of Download files 2. INSTALLING THE VIDEO DRIVER 2.1 How to get the correct binary distribution package 2.2 Installing the driver using the rpm utility program 2.3 Generating a kernel with ISSE support (Kernel 2.2.x) 2.4 Generating a customized kernel module 2.5 Enabling AGP support 3. MONITOR CONFIGURATION 3.1 Changing the monitor configuration 4. CONFIGURATION FEATURES AND INFORMATION 5. USING THE CONTROL PANEL APPLICATION 5.1 How to Launch the Control Panel Application 5.2 --- spare --- 5.3 Gamma Correction Adjustment 6. NOTES, TROUBLESHOOTING AND LIMITATIONS 7. LIST OF SUPPORTED MODES 8. SERVICE, SUPPORT AND SOFTWARE UPDATES 1. GENERAL INFORMATION ---------------------- This driver is based on the xfree86 version mentioned in the document header. (see http://www.xfree86.org/4.0/ for documentation) You must install this version of xfree86 before installing the drivers for the ATI FireGL 8700/8800. If your Linux distribution does not provide the XFree86 version that is supported by the current driver version, you must download and install the respective xfree86 binaries from 'ftp://ftp.xfree86.org/pub/XFree86/4.1.0/binaries/' or from 'ftp://ftp.xfree86.org/pub/XFree86/4.2.0/binaries/'. or from 'ftp://ftp.xfree86.org/pub/XFree86/4.3.0/binaries/'. 1.1 Requirements ---------------- 1. Any Linux/x86 system that does provide a glibc 2.2 (=libc 6.2) compatible environment is supported. If your system does have a glibc 2.3 then this condition is nicley fullfiled due to the lib's backward compatibility. 2. XFree86 Version 4.1.0, 4.2.0 or X4.3.0 must be installed beforehand. 3. The OpenGL implementation that comes with the driver can of use the ISSE commandset extensions of some current x86 cpus. So you should run a Linux kernel that can handle the respective register extensions at the task switches to make use of them. (ISSE: Internet Streaming Single-Instruction, Multiple-Data Extensions; an extension of the IA-32 instruction set in the Intel Pentium III, the Intel Pentium 4 and recent AMD Athlon processors.) Most current Linux distributions do already support ISSE and provide an i686-optimized version of kernel 2.4.xx as systems base. You can add ISSE support to your Linux kernel, if required follows: - apply a patch to the kernel (see 2.3) - recompile the kernel - install the recompiled kernel. NOTE: The OpenGL driver can use AMD 3DNow! enhanced opcodes as well and - due to design - does not need a kernel patch for AMD 3DNow!. 4. To generate your own kernel modules for your local workstation where the modules match your kernel setup, you need a full tree of configured kernel sources on your local workstation. 1.2 List of Download files -------------------------- fileinfo.txt - Download and quickstart installation guide. Check.sh - Helper script for determining libc and XFree86 version. readme.txt - This document. fglrx-glc22-4.1.0-1.2.0.i586.rpm - Driver package for ix86 systems with libc6.2 (=glibc2.2) and XFree86 4.1.0 in rpm format. fglrx-glc22-4.2.0-1.2.0.i586.rpm - Driver package for ix86 systems with libc6.2 (=glibc2.2) and XFree86 4.2.0 in rpm format. fglrx-glc22-4.3.0-1.2.0.i586.rpm - Driver package for ix86 systems with libc6.2 (=glibc2.2) and XFree86 4.3.0 in rpm format. 2. INSTALLING THE VIDEO DRIVER ------------------------------ 2.1 How to get the correct binary distribution package ------------------------------------------------------ Determine which binary distribution you need for your system: Download the script 'Install.sh' or 'Check.sh' and run it like this: sh Install.sh -check or sh Check.sh This will provide information on suitable binary distributions for your system. NOTE: Getting the correct binary distribution information may prevent you from wasting time by downloading the wrong distribution. 2.2 Installing the driver using the rpm utility program ------------------------------------------------------- Download the rpm that fits to your system and store the package to a temporary folder where you can create, delete, and modify files and directories. You'll need at least 5 MB of diskspace available. Get super user (root) privileges and change (cd) to this directory. Start the rpm program: rpm -Uhv .rpm In case you do spot any problems try this command line: rpm -i --force .rpm Since the rpm program does check any sort of dependencies to system libraries you might observe that you are requested to install certain revisions (or compatible versions) of other packages in order to install the driver package. Advanced administrators can decide to override specific dependencies by the "--nodeps" switch as described in the RPM manual pages, but in general those dependencies should be fullfilled. E.g. you might be prompted for QT 2.x.x in order to install the driver. In this case you just have to install the appropiate version of the lib and then repeat the installation. If you dont have or dont want to install that particular version of QT lib, you can override this by adding "--nodeps" to your commandline. Since the QT lib is only required for the FGL panels the panels will just not launch. You can instead compile the panels from the provided sources against your QT lib version or install the QT libs later. Note for RedHat 8.0 users: RedHat 8.0 installations often include a specific version of the libGL component. (For example, provided by the rpm package XFree86-Mesa-libGL-4.2.0-72). Installing the ATI Linux driver package causes a conflict because the ATI Linux drivers include a custom-built libGL version providing extra pbuffer support. The ATI libGL is backward compatible to the respective XFree86 libGL version. Install the ATI Linux driver package and replace the existing libGL installation as follows: - Force RPM to use the replacement file of the ATI driver package: rpm -i --force .rpm NOTE: This includes overriding the rpm warning or - Remove the existing libGL installation and then install the new libGL with the ATI driver installation. For example: rpm -e --nodeps XFree86-Mesa-libGL-4.2.0-72 rpm -Uhv .rpm NOTES: (1) Ensure that no OpenGL program is running during installation (2) You need the "--nodeps" option because some screen savers, qt-3, and some parts of XFree86 might depend on the libGL presence. Installing the new libgl from the ATI package will restore the required libGL presence. Perform the following steps after you have installed the driver files: - Run fglrxconfig to configure your XFree86 installation. - Respond to the questions of the fglrxconfig program - Save the settings to /etc/X11/XF86Config-4. Some notes for debian users: The debian Linux distribution in most cases does not come with the ability to handle rpm packages with the rpm tool. But there is a tool called "alien" which allows you to convert rpm files into the debian supported *.deb package format. Please consult your debian documentation on how to operate this tool. A typcial debian installation commandline will look like this: dpkg -i .deb In order to override complaints (which might be caused by an already installed package "xlibmesa3" that also provides the file libGL.so.1.2) please use this installation command line: dpkg -i --force-overwrite .deb 2.3 Generating a Kernel with ISSE Support (Kernel 2.2.x) -------------------------------------------------------- Note: You may skip the information in this section in the following cases: (1) You have Kernel 2.4.xx: Kernel 2.4.xx and most current distributions come with ISSE support built-in, (2) Your CPU does not have ISSE support at all. If your kernel does not have Pentium III ISSE support, you need a kernel patch to benefit from the Pentium III ISSE instruction set. The patches on 'http://people.redhat.com/mingo/mmx-patches/' may be useful. Please note that these patches represent preliminary 'alpha' or 'beta' code. Version "mmx-2.2.14-A0" has been tested with quite positive results. You must use the exactly matching kernel source from www.kernel.org. A distribution-specific kernel, e.g. 2.2.14-5.0 from RedHat or 2.2.14.SuSE may not work. +++ It is highly recommended to backup the old kernel sources before applying the patch! +++ Extract the kernel sources to a directory of your choice, typically in /usr/src. Make sure that the new linux kernel sources are referenced by a symbolic link called /usr/src/linux before continuing. Copy the patch file to /usr/src and extract it from there: - for a gzip-packed patch use 'zcat piii.gz | patch -p0 -E' - for unpacked patches use 'cat piii | patch -p0 -E' No queries or errors are displayed if your kernel matches exactly the kernel the patch was designed for. Change to '/usr/src/linux' and type 'make menuconfig' to start the kernel configuration program. Enter "Processor type and features". Select "PIII/Xeon/Deschutes" as Processor family to display ISSE or MMX2 menu items. For a fully working, ISSE-capable kernel select the following options: - Processor type and features (PIII/Xeon/Deschutes) Processor Family - [*] Enable CPU Specific (MMX/MMX2) Optimization Functions - [*] MTRR (Memory Type Range Register) support - Loadable Module Support - [*] Enable loadable module support - [*] Kernel module loader support Save your settings and leave the menuconfig program. Build your kernel. See the documentation of your distribution vendor for details. Install the newly compiled kernel and test it. +++ Keep your previous kernel bootable in case you experience problems. +++ In case of doubt or trouble please check the files /var/log/XFree86.0.log and /var/log/messages for hints on possible failures. After you have successfully compiled and installed the new, patched kernel, reboot your system with the new kernel. Install the driver for a second time. Use the Install.sh script again. Remember, you must be logged in with super user (root) privileges. Now the necessary kernel driver module and client driver will be installed. You may use the 'cpu_check'software tool for checking the system CPU and the kernel patch. 2.4 Generating a customized kernel module ----------------------------------------- The FireGL 8700/8800 uses the performance capacity of your workstation intensively. A precisely tailored kernel module is needed to support some features, for example, AGP support, busmaster DMA transfers, or memory mapping. Such a module is loaded at boot time or when the x-server starts up and remains present for usage with the driver all the time. Note: If the module is missing, you do not have hardware-accelerated 3D-support and the 2D driver might abort while loading. See the console outputs of X11 and /var/log/XFree86.0.log for results. You are in need to start the kernel module build manually - if you spot having no hardware 3D support (run fglrxinfo to check) - if you have done any important system changes, e.g. a changed kernel - if you were adviced so whilst the driver installation The binary package provides fully working kernel modules for a few distributions and kernel versions. So, for some cases, you don't need to build a kernel module yourself. The installer will notify you if installation of provided modules did succeed. The FireGL provided kernel modules will not fit your needs, for example, - if you have a new or customized Linux kernel, or - if you have kernel symbols versioning enabled. In these cases you must build the configured sources of your kernel at /usr/src/linux - this is allowed to be a symlink. To build a customized kernel module you need administrator privileges. You must manually start two shell scripts to build a customized kernel module. Perform the following steps: - get the matching Linux kernel source - run "make distclean" - setup that kernel source with the config file matching your kernel - run "make dep" on the kernel source tree - go to "/lib/module/fglrx/build_mod" and enter "./make.sh" - go to "/lib/module/fglrx" and enter "./make_install.sh" Enter /lib/module/fglrx/build_mod and enter (as root) "./make.sh". Thus you will create a new customer-specific kernel module. If the creation fails, look up for the reason in the shell and in the related logfile "make.log". Note: Ignore the following warning that may turn up in some configurations: compiling... /tmp/ccOWu6AI.s: Assembler messages: /tmp/ccOWu6AI.s:9: Warning: Ignoring changed section attributes for .modinfo A specific combination of Linux kernel sources and C compiler triggers this warning. Similar messages turn up if you build your own Linux kernel. This is a widely known Linux issue that does not affect your builds. There are some kernel sources arround that produce further warnings about some sort of pointer conversion. You can ignore this warnings as well. To set up a kernel module build you need Linux kernel headers that match exactly the kernel you are running. If your kernel is configured SMP with P-III support and agpgart enabled, you must have a kernel source that is configured exactly the same way. If your kernel was built by your Linux distribution and supplied as binary: - Get the related source RPM file - Extract the matching configuration settings contained there. (RedHat Linux files may reside in the subdir "configs". SuSE Linux: find the files in the SRPMs. Latest SuSE versions will present /proc/config.gz for the running kernel.) - Set up your kernel source with these settings: (1) copy the config file to /usr/src/linux/.config (For SuSE config.gz first apply "gunzip config.gz" at a temp location.) (2) run "make oldconfig" for exact importing - Run "make dependencies" ("make dep"). Note: If you want to build multiple modules for multiple kernel configurations, run "make distclean" after each cycle and setup the config file again. If you cannot build the matching kernel headers (1) build a new kernel from scratch that is optimally customized to your machine, (2) install the new kernel and boot it (3) continue with setup - if the kernel runs. Perform the final step on each customized kernel module build: - Go to /lib/modules/fglrx - Start ./make_install.sh This copies the matching kernel module into the loadable modules tree of your running kernel. The script also updates the module loader dependency list. On machines that use identical kernels and kernel configuration the results of the kernel module build are interchangeable. Copy the module into /lib/modules/fglrx and setup the new module for usage by running the script ./make_install.sh that you can find in the same directory. 2.5 Enabling AGP Support ------------------------ Several up-to-date distributions, for example, SuSE 7.0 or RedHat 7.0, come with a matching and possibly activated AGP support. This is provided by the so called 'agpgart' kernel module. If the graphics driver's kernel module detects the presence of this feature, it tries to connect to the supplied AGP/GART module. To verify if the related AGP module is already loaded run 'lsmod' as root. With the XServer running and the connection established, the usage count of the agpgart module has to be different from zero. Note: The modules dependency list does not list agpgart as a requirement for the fglrx kernel module - agpgart is not a 'hard dependency' for module operation. So the system's administrator has maximum control of what he wants to run on a specific machine. The latest version of the driver's kernel module is shipped with 'built-in' agp support. If your distribution's kernel setup does not provide agpgart compatible services, the FireGL built-in agpgart module will be used. 3. MONITOR CONFIGURATION ------------------------ NOTES: (1) Full overlay functionality is available in Single Head mode only. (2) A connected digital display is always the primary display (3) Primary/Secondary head definition (if two display devices are connected): (4) Quad Buffer Stereo ("Active Stereo") is available in Single Head mode only. - Primary Head: the bottom DVI port on X1, LCD output on M9, the only DVI port on other cards (The connected display on this head is the first string in MonitorLayout option). - Secondary Head: the top DVI port on X1, VGA port on all other cards (The connected display on this head is the second string in MonitorLayout option). The driver supports the following monitor configurations. - Single Head: Single monitor operation only. If a second monitor is connected, it remains dark. This is the only available display mode setting if you have only one monitor connected. This is further the only mode Quad Buffer Stereo ("Active Stereo") is working. - Clone: The contents of the primary monitor are duplicated on the second monitor. If one monitor cannot display the selected resolution, a lower resolution is automatically selected for this monitor. The original resolution is used then as it was specified as the virtual resolution. This means the second screen will do panning when the mouse moves ahead. - Big Desktop. There is a single big framebuffer that gets split either horizontally or vertically and each half is sent to a single monitor. Availabel selections: - Big Desktop Horizontal: left section of your display on the primary monitor and the right section on the second monitor. - Big Desktop Vertical: upper section of your display on the primary monitor and the lower section on the second monitor. NOTES: (1) There is only a single frame buffer and only one window manager. (2) Both monitors have to operate with the same video mode settings. (3) The mode information in 'Section Screen, Subsection Display, Modes' (in XF86Config-4) does apply to both monitors. (4) The maximum resolution for OpenGL operation are: - R200 family (Radeon 8500-9000 Pro, Fire GL 8700/8800/E1): 2048x2048 - R300 family (Radeon 9500-9700 Pro, Fire GL X1/Z1): 2560x2560 (5) Option "ScreenOverlap" (Type OPTV_INTEGER): - This option is intended to allow image overlapping with e.g. two video projectors. - This option only applys to "Big Desktop" mode. - When this option is set to a value greater than zero then the a full heighted rectangualar region along the aligned edge will get displayed on both screens. - The option value specifies the width in pixels of the rectangular region. - The final virtual screen width (unless a higher virtual screen was specified) is the sum of the width of both screens minus the given screen overlap value. - The monitor resolutions and timings from the config file remain unaltered. - Dual Head: Separate framebuffer, independent displays and video modes for each monitor (two window managers possible). 3.1 Changing the monitor configuration -------------------------------------- IMPORTANT: To rebuild the XF86Config-4 file, only use the fglrxconfig tool. NOTE: To rebuild the XF86Config-4 file you must know the type of monitor, keyboard, and mouse of your system. See the existing config file first. WARNING: Do not specify monitor timings that do exceed the performance scope of your monitor. Wrong monitor settings can damage your monitor! To change the monitor configuration, you have to execute these steps: 1. Log on with root privileges. 2. Run the FireGL 8700/8800/E1/X1/Z1 configuration program again. Enter: fglrxconfig 3. Answer the questions of the fglrxconfig program and save the settings to /etc/X11/XF86Config-4. 4. Restart the XServer. 4. CONFIGURATION FEATURES AND INFORMATION ----------------------------------------- 1. To check, if 3D acceleration is working properly, use the 'fglrxinfo' program installed together with the FireGL 8700/8800 driver. To run the test program enter: fglrxinfo Typical output information (3D acceleration is working properly) may read like this: OpenGL vendor string: ATI OpenGL renderer string: FireGL 8700/8800 OpenGL version string: 1.2.1234 (1.2.3) 2. Some tools, for example, from the XFree86 group may also provide useful information, e.g. xdpyinfo or glxinfo. 3. For information on the CPU support of your running system run the application "cpu_check". (This program might only be present if you have also installed the FireGL 1 - 4 drivers.) 4. Dual Head Configuration The driver is multi-load capable, i.e. a second screen with a different window manager can be created for the second output connector. Use configuration tool "fglrxconfig" to enable dual head mode. To get control of the second screen, just move your mouse to it. Notes: - Xinerama and DRI are mutual exclusive. Because of this Xinerama can not be enabled. 5. Video Overlay All graphics boards supported by this driver are Video Overlay capable. When you are using the fglrxconfig tool to generate a XF86Config-4 file, Video Overlay is enabled. Notes: - Video Overlay, OpenGL Overlay and Quad Buffer Stereo ("Active Stereo") are mutual excluding each other. 6. Quad Buffer Stereo ("Active Stereo") The FireGL X1 is Quad Buffer Stereo ("Active Stereo") capable. To enable Stereo mode add 'Option "Stereo" "on"' to the XF86Config-4 file and disable both, VideoOverlay and OpenGLOverlay. Use at least 100 Hz (better 120Hz) modes for Stereo. Find appropriate mode lines in the XF86Config-4 file generated by fglrxconfig. Notes: - For stereoscopic viewing you need shutter glasses that are not included in delivery. Connected to the stereo output connector of the graphics card, the shutter glasses alternately open the view for the left or right eye. 7. Full Scene Anti Aliasing (FSAA) The FireGL X1 uses a multi-sampling technique to implement anti-aliasing. To set/enable/disable FSAA use Option "FSAAScale" (Type OPTV_INTEGER). Possible values for "FSAAScale": - "1" (disables FSAA) - "2" (2 multi sample points) - "4" (4 multi sample points) - "6" (6 multi sample points). Notes: (1) By default FSAA gamma is set to "2.2." (Typical for CRT display devices). To disable FSAA gamma (i.e. set it to "1.0") use 'Option "FSAADisableGamma" "yes"' (Type OPTV_BOOLEAN) (2) If you want to customize the sample points set 'Option "FSAACustomizeMSPos" "yes"' (Type OPTV_BOOLEAN) (3) To set ... ... the first point use Option "FSAAMSPosX0" (Type OPTV_DOUBLE) Option "FSAAMSPosY0" (Type OPTV_DOUBLE) ... the 2nd point use Option "FSAAMSPosX1" (Type OPTV_DOUBLE) Option "FSAAMSPosY1" (Type OPTV_DOUBLE) ... the 3rd point use Option "FSAAMSPosX2" (Type OPTV_DOUBLE) Option "FSAAMSPosY2" (Type OPTV_DOUBLE) ... the 4th point use Option "FSAAMSPosX3" (Type OPTV_DOUBLE) Option "FSAAMSPosY3" (Type OPTV_DOUBLE) ... the 5th point use Option "FSAAMSPosX4" (Type OPTV_DOUBLE) Option "FSAAMSPosY4" (Type OPTV_DOUBLE) ... the 6th point use Option "FSAAMSPosX5" (Type OPTV_DOUBLE) Option "FSAAMSPosY5" (Type OPTV_DOUBLE) For FSAA "2" you have to set 2 points, for FSAA "4" you have to set 4 points, for FSAA "6" you have to set all 6 points. (4) Range. Pixel size is 1x1, so the range is (0 <= (X position) <= 1) and (0 <= (Y position) <= 1). (5) FSAA applies only to OpenGL. 8. Center Mode Center Mode allows 'real' screen display in non-"panel native modes": one pixel of the frame buffer is one pixel on the screen. The display is centered on the screen and the surrounding screen area remains black. NOTES: - By default a Mobility FireGL automatically expands the display in non-"panel native modes" to fullscreen size. - Non-"panel native modes": For example, 1280x1024 resolution on a 1600x1200 (= panel native mode) LCD. - Some panels may not work in Center Mode, screen remains black then. How to enable the Center Mode function? - Open the XF86Config-4 file - Go to the Driver Device section - Insert the Option "CenterMode" "on" - Restart the X server 5. USING THE CONTROL PANEL APPLICATION -------------------------------------- The current drivers come with an easy-to-use set of panels that integrate into the two most common window managers. So you can easily retrieve information about the adapter and its setup. You can also select several variations of single or dual screen setups and the adjustment of the screen color gamma factors. Notes: - The panel application is based upon the QT Toolkit for Linux from Trolltech. Since not all Linux platforms may have the respective libs installed, we provide the panel application in two versions: - statically linked and - dynamically linked By default the dynamically linked version is used. If you do not have the appropriate version of the QT libraries available in your system then the installer will redirect to the statically linked version of the panel application which is also available with this name: /usr/X11R6/bin/fireglcontrol.static This binary comes with the matching QT libs inside. This version of the application has a significantly bigger file size and memory footprint. The statically linked version should match with your the major compiler version in order to get any c++ mangled names correct. If that does not match you might see several unresolved symbols reported when the panel apllication is started vom an X11 based terminal. In this case only a rebuild of the panesl from the provides sources will help. This task should be doable by any average system administrator with c knowledge. The finally unused version will only be present as a bzip2 compressd archive in the /usr/X11R6/bin directory to minimize space consumption. - For GPL and QPL license reasons (copies are provided with the driver package) the sources of the panel application are included in the driver package. If you are interested in these files then please find find them (bundled as an archive) after driver installation on your system at: /usr/src/fglrx_panel_sorce.tgz NOTE: RedHat 8.0 users do need to install the qt-devel package in order to compile this source package if they target for panel recompiliation. This package provides some needed source components and symbolic links. 5.1 How to Launch the Control Panel Application ------------------------------------------------ To launch the control panel application: - If you are using RedHat 8.0 then go to: Main Menu ("RedHat symbol") => Extras => Other => ATI Control - If you are using the GNOME Desktop Environment then go to: Main Menu ("gnome footprint") => Programs => ATI Control - If you are using the KDE Desktop Environment then go to: Main Menu ("K icon") => ATI Control - If you are using another window manager you will find the FireGL 8700/8800 control panel at: /usr/X11R6/bin/fireglcontrol If you do have set a path to this location then can just enter fireglcontrol for launching the panels application from inside an xterm window. 5.2 --- spare --- ----------------- 5.3 Gamma Correction Adjustment ------------------------------- To adjust the gamma correction factor The Gamma Correction Adjustment settings are individual for each monitor. - In the ATI FireGL 8700/8800 control panel select the appropriate monitor tag for the monitor you want to correct: Monitor tab 1 is for the monitor connected to the VGA connector, Monitor tab 2 is for the monitor connected to the DVI connector. - select the Adjustment tab for the desired monitor Adjust the monitor's gamma correction to your needs with the red, green and blue slider bars. The applied changes will show immediately on the respective monitor. The effect of display gamma is to darken or lighten the midtones of the framebuffer data. The gamma correction affects the entire display of the respective monitor. The slider settings range is 0.1 - 10.0 (among X). The default is 1.0. With "Link sliders" selected, the three sliders move together as you drag any individual slider. With the "Link sliders" unchecked, you can adjust colors individually by dragging each of the applicable slider separately. Click the ">1<" button - if not linked then for each color separately - to reset the respective gamma correction value back to the default value of 1.0. Click the Apply or OK button to confirm your adjustments. Notes: - The gamma values are adjusted by applying an exponential translation function that matches each of the 256 possible input values of R, G and B to a numeric output value. This value is transmitted to the monitor driving units. When adjusted with the panels - An input value of zero is always matched to the darkest output value. - An input value of 255 is always matched to the lightest output value. - Since the source of the panel application is provided, advanced programmers can customize the gamma function, e.g. to address special needs like gamma offsets or clamping. - Caution: Different gamma correction applications may not work as described here. Please check with the application-related instructions. 6. NOTES, TROBULESHOOTING AND LIMITATIONS ----------------------------------------- 1. The FireGL 8700/8800 allows graphical Linux installation in VGA and VESA modes. On distributions that come with pre-packaged drivers for the graphics board a native graphics mode install will work. 2. For SuSE systems with XFree86 4 and higher the following might apply: If you do spot warnings about wrong, incomplete or missing GLX support when running any opengl related software (or the SuSE script 3Ddiag) then you might be in need for doing what is described below. SuSE is providing XFree86 3.3.6 for legacy hardware where drivers are not yet ported to current XFree86. For this reason you might have a look into the SuSE installation guide for OpenGL (chapter 6 on SuSE 7.3) for a few more details on the subject. In short, you require the installation of the xf86_glx-4.*.i386.rpm package on your machine. If you have selected the checkbox for "3D hardware support" whilst running the system installation program then you might already have this package. After this you have to run the following two scripts /usr/X11R6/bin/switch2xf86-4 /usr/X11R6/bin/switch2xf86_glx which sets up the executeables of X4.x.x as the default and further installs the DRI libraries for X11 compliant OpenGL support. There are other methods of OpenGL support like "mesasoft" or some third party hw specific set of OpenGL libraries that wont accellerate or even work with the FireGL series of adapters. The installer of the FireGL driver package tries to care and solve for the mentioned requirement, but might not always succeed in it, especially when the required rpm package is just not present. Further this setup might get corrupted if other third party graphics hardware was installed in the system for some reasons. 3. If you do spot interference with grafical console emulations in form of textmode screen corruption, hangs on console switching or sudden stops on XServer shutdown, then try replacing kernel parameters like "vga=" or "vga=ask" by "vga=normal". This will possibly apply to SuSE 8.0, but check with your system. If you are using the lilo boot loader then you will find this parameter most likely in the file /etc/lilo.conf. The "vga=..." statement will typically appear on its own line. After modifying this file you must start "lilo" once to update the boot block data. If you are using the grub boot loader then you will find this parameter possibly in the file /boot/grub/menu.lst. The "vga=..." entry will typically appear in a line that starts with the keyword "kernel". After modifying this file you can simply reboot because "grub" is auto configuring. The files and actions will differ if you are using a different loader. 4. Xv support Video and other media playback via the Xv software system is currently in an early stage and therefore some visualisation problems might occure. If you really have problems with that functionality we recommend you to try out the program "mplayer" and set its VideoOut option to "GL" for best overall quality and performance. 5. Limitations - Systems with libc 6.0 trough libc 6.1 are not supported. - Panning/scrolling does not work in the "big desktop" display mode. 6. For further information on programming OpenGL Applications, DRI, DRM please refer to the file README.DRI located at /usr/X11R6/lib/X11/doc. 7. Other OpenGL implementations - Your system may have installed other OpenGL-compatible libraries (e.g. MesaGL) with higher priority than the hardware supported libraries. - Your applications may link to other GL libs than those provided with the FireGL 8700/8800 - and therefore do not use the provided hardware acceleration. Thus your sytem may run significantly slower software rendering code, as compared to the hardware-accelerated render libs of the FireGL 8700/8800. In this case please consult an experienced Unix/Linux expert who can either recompile the application appropriately or can modify your library environment so that the correct libs are found. To check out which libs your application is using, enter ldd and you will get extended information. If the reported GL libraries come from your X11R6 subdirectory, the application is probably built correctly. However, the library or the XFree86 setup may be strange. References to libGL.so.1.2 are also good. However, a reference to, for example, libMesaGL.030300 typically wont serve your needs. For other references, please check if the file is a symlink and which file is the final target of these symlinks. 8. DRI and Security The Section "dri" in your XF86Config-4 file may, for example, look like: Section "DRI" Group "video" Mode 0660 EndSection This implies that only users assigned to the group "video" can use 3D Hardware acceleration. To add a user to the group "video", do the following: - edit [as root] the file /etc/group, - search for "video" - add the new user(s) at the end of the 'video' line, separated by a comma (,). Example: adding a new user 'henryc' to video:x:33:frankh,michaelg will result in video:x:33:frankh,michaelg,henryc 9. Old GLX Library Files If there is a glx library file other than libglx.a (for example a file like libglx.so or similar) in directory /usr/X11R6/lib/modules/extensions, this might prevent the XServer from correctly accessing the glx library. In this case move any other glx library files (except of libglx.a) to a directory that is not part of the library search path. 10. Commonly used OpenGL utility libraries (GLU, GLUT) Most distributions come with a complete set of OpenGL utility libraries. Sometimes a specific application may require a specific library version which is not currently installed in your system. Most libs are interchangeable or highly equivalent in exports. (libMesaGLU.??? -> libGLU.so, libMesaGLUT -> libGLUT) For most applications do the following: - (1) create a symlink to the existing library with the required name ln -s - (2) run 'ldconfig'. Since libraries are part of the user level system, extensions to this setup are not critical. Normally, your previously nasty application will run smoothly with the symlinked version of the libs. If the setup extension fails, you will get a segmentation fault from the application or a warning messages about unresolved symbols. Typical locations for libraries are: - /lib - /usr/lib - /usr/local/lib - /usr/X11R6/lib Make sure that there are no duplicate names so that you know exactly which library locations is active. If an application requires a specific lib in a specific tree, consider to create a symlink from the application's location to your preferred location rather than copying or moving the files around each time. A typical error scenario: your application uses the GLU tesselation API, and you have only MesaGLU, e.g. Mesa version 3.4. The application will prompt you for unresolved symbols that start with 'gluTess'. - go to the download section of 'http://www.mesa3d.org.' - find ready-to-install packages of the open source SGI sample implementation of GLU. Currently the direct link to the download location is: ftp://mesa3d.sourceforge.net/pub/mesa3d/SI-GLU/ - the file oss-opengl-glu-20000925-1.i386.rpm should work for you. You can find the latest release of the GLUT library at http://reality.sgi.com/mjk_asd/glut3/glut3.html for free download. Since the glut library is released in less frequent cycles, some of the attached sample programs may show errors. Sometimes you can find a fixed source for a sample in the glut/win32 package at http://www.xmission.com/~nate/glut.html Note that this package currently does not compile under Linux - the project's work was not focussed on this target. However, this may possibly change. You must move the selected source files into a regular GLUT-3.7 environment. A variety of toolkits is available. Some toolkits are included in GLUT (like gle, mui, glsmap), some toolkits are distributed separately. Note: It is beyond the scope of this document to further evaluate this subject. It is in the responsibility of the respective toolkit team to supply the latest releases and to offer OpenGL-compatible implementations. 11. Login Shell For any Linux we recommend a real "Login Shell" for working as root. - Log into the system directly from the console or - Use the SubstituteUser command with 'su -l' from any user and any shell. This will set all required paths for your root environment. 12. Linux kernels with built-in dri/drm support Some Linux kernel sources provide XFree86 kernel modules for miscellaneous graphics adapters. (1) These files are not compatible with ATI drivers. (2) These files might prevent ATI modules from beeing searched or found. (3) These files are not required for running the FireGL 8700/8800 with its drivers. As of today, there is no perfect implementation of the XFree86 kernel driver loading process. If you have multiple kernel drivers selected and compiled directly into your Linux kernel, XFree86 may not start the respective ATI kernel module automatically. XFree86 scans all present dri devices and concludes that dri is active but there is no suitable driver. Thus the required kernel module is not loaded. Solutions for the above scenario: - don't compile any dri/drm devices hard into your Linux kernel, if you need other modules than provided by ATI: use modules. - manually load the ATI kernel modules before starting your XServer. This will force the ATI modules to get loaded and properly detected. 14. GL Quake Benchmark You must reference the mode for testing the benchmark "Quake" at full screen in the 'modes' line of the 'Screen' section in your XF86Config-4 file. For example: You are running your XServer at 1280x1024 resolution and want to benchmark Quake at 800x600 resolution. Then your 'modes' line must contain at least these components: modes "1280x1024" "800x600" 15. Quad Buffer Stereo ("Active Stereo") If you do enable Stereo Quad Buffering then you should not use virtual desktops bigger than the selected resolution. Further the stereo feature will only initialize if your adapter is in textmode when launching X and the respective display mode. The adapter can not switch between multiple resolutions while keeping the stereo setup. For that reason it is highly recommended that you have only a single 'modes' line in your XF86Config file at Section "Screen" SubSection "Display". 16. Handling "drmSetBusid failed" The following is a quote from the DRI-FAQ at http://dri.sourcforge.net: How do I fix: [drm] drmSetBusid failed (7, PCI:1:0:0), Permission denied? Posted by: Liam This "Permission denied" problem has been reported a couple of times now. It seems to occur if the DRM kernel module is compiled with a different compiler version than the kernel. AFAIK no one has bothered to find out why so far. You can either compile the kernel yourself or find out which compiler RedHat used and use the same one for the module. This is provided to our end users just for informational purposes. If the individual situation really does resemble to the mentioned root cause can not be answered in general but should be resolved by the respective system administrator on a case by case investigation. We do at least recommend you to run these two commands for analysis: cat /proc/version gcc --version The reported version numbers for the previousely used and now present gcc compiler should match. In case your environment does provide more than one version of gcc then the shell script for the custom kernel module build be inspected and tuned to request the matching version. 17. Sample Source Code The drivers for your graphics adapter do come with some sample files that are also provided as source. The sources are not required when just using the driver. The sources and related documentation are meant for usage by advanced developers and can be found in the file /usr/src/fglrx_sample_source.tgz after you have installed the graphics drivers. The binaries for the respective programs can be found at the respective X11 location. Archive contents: fgl_glxgears: A demonstration program for the pixel buffer (pbuffer) extension. - Showing the usage of the pixel buffer (pbuffer) extension - Helping to verify the presence of the pixel buffer (pbuffer) extension, if enabled in your configuration. PBuffer support: available only if you have an ATI FIRE GL graphics board installed in your computer. No PBbuffer support for ATI Radeon and other boards. Special disclaimer on the provided source package and information: There is no regular support for the source package and related information. However we appreciate your feedback on problems and errors. The sources are provided for educational purposes only. For regulatory and legal reasons we explicitly do not guarantee perfect correctness and accuracy, including but not limited to, fitness for a particular purpose - especially for use in high-security or high-risk environments. Before using this code, you must verify and assure - the fitness for your specific purpose - non-infringement of express or implied third party rights. 18. Two Flavours Of DVI Cables When connecting a display device that is capable of digital data transmission such as a true digital flat panel to your FireGL E1, X1 or Z1 then you should prefer using a DVI-D (=digital) cable over a DVI-I (=integrated) cable in order to avoid confusing the adapter on the desired graphics mode. Below is described how to distinguish the cables. A DVI-D connector does have a bigger grid of pins on one half of the jack and on the other half a _small_ metal blade with _no_ surrounding pins. A DVI-I connector does integrate digital and analog capabilities in a single unit and does therefore have a few more pins. On the one half of the jack there is the known dense grid of pins and on the other half there is a _wide_ metal blade with four surrounding pins. Each of these pins is close to the edge on the upper and lower surface of the blade. 19. Compatibility with WineX and other emulators *** this section only applys to FireGL workstation boards *** *** respective settings for other adapters have no effect *** The OpenGL standard specifies that API calls must be executed by using the context of the current execution thread. For this reason the OpenGL driver part is using advanced methods in order to maintain the so called Thread Local Storage (TLS) locations. The graphics driver implements two alternate methods for the above needs. The first method is quite "fast" and will provide the highest possible OpenGL performance. The method makes use of a quite limited resource. The second method is some 10% slower and uses a less limited resource so this operation is considered to be a highly "compatible" mode. If you do spot an immediate segmentation fault after launching a program that makes use of OpenGL, and further when the fault can be traced down to the OpenGL implementation of the graphics driver (called "fglrx_dri.so") then you should try to tune the TLS settings in the XF86Config-4 file. Locate the below line in your XF86Config-4 file: Option "UseFastTLS" "" The entered value for the key UseFastTLS has this meaning: value meaning description ------------------------------------------------------------------------ 0 default FireGL workstation boards: fast operation 1 on fast operation 2 off compatible operation A known program that might need the compatible mode of operation is WineX. The problem might arise with other emulators and VM manipulating programs as well depending on their particular design. It is supposed that some of the code profiling applications out in the wild might be affected as well. In genereal applications that were written in regular C or C++ using the gnu compiler are rather unlikely to be ever affected by that scenario. Note: The above mentioned fault is not a driver bug, but it's caused by lack of management functionality for the respective resource in the hosting operating system. Alternatively it can be considered as a problem of the application to preserve the respective state of the used TLS method that the OpenGL driver did already "claim" and use. 20. Compatibility with GDB, TotalView and other debuggers The driver has to go trough critical sequences for its normal operation that might produce memory loss or other non nice situations. For this it has to block some of the task interruption signals (like suspend) and to re-enable those signals afterwards. As of now there is a known side effect due to above behaviour. Debugger applications attached to OpenGL programs will be no longer responsive after a certain level of OpenGL initialisation is done and the system is further executing multiple OpenGL threads or applications. The effect is not neccessarily a deterministic one. In order to let developers debug their multi threaded OpenGL applications despite this there was an option added to XF86Config-4 which allows then to turn of the blocking in genereal. Since that also again introduces the risk of suffering memory leaks in combination with specific user activity the blocking should only be disabled unless there is a real need for it. Locate the below line in your XF86Config-4 file: Option "BlockSignalsOnLock" "" The entered state for the key UseFastTLS has this meaning: state meaning description ------------------------------------------------------------------------ off no block The driver will not use signal blocking. (for debuggers) on use block The driver does block the signals for locking. (default) Note: As of now it is uncertain which is the real origin of the problem. As of now it does look like the debugger application is getting in some trouble because of not getting back the debugging control after the lock condtion was removed by the driver. This might be further investigated. 21. Overlay Limitations For M9 / R200 graphic chips, overlay is horizontally limited to 1536 pixels. If the selected mode exceeds this limit (e.g. 1600x1200), there is no overlay display beyond 1536 pixels. 22. DGA (Direct Graphics Access) To run in DGA fullscreen mode, ensure that the mode you want to run appears in the "modes" line of your current subesection "Display"and comment out the line "Option "omit xfree86-dga" in your XF86Config-4 file. Note: The fglrx driver only supports true color DGA fullscreen modes. Ensure that you only switch to DGA fullscreen mode when guest is in true color native mode. 23. Laptop Suspend / Resume Suspending while X is running may cause a system crash. Before suspending (i.e. closing the lid or pressing [Fn] + [F4]) please end the X server. Internal / External Mouse To use the internal and external mouse at the same time please modify the XF86Config-4 file as follows: ... # Core Pointer's InputDevice section Section "InputDevice" Identifier "Internal Mouse" Driver "mouse" Option "Device" "/dev/psaux" Option "Protocol" "PS/2" Option "CorePointer" Option "Emulate3Buttons" "true" Option "ZAxisMapping" "4 5" EndSection Section "InputDevice" Identifier "External Mouse" Driver "mouse" Option "Device" "/dev/input/mice" Option "Protocol" "ImPS/2" Option "SendCoreEvents" "true" Option "Emulate3Buttons" "true" Option "ZAxisMapping" "4 5" EndSection ... ... # ServerLayout sections. Section "ServerLayout" Identifier "T40 Layout" Screen "Screen0" InputDevice "Internal Mouse" InputDevice "External Mouse" InputDevice "Keyboard1" "CoreKeyboard" EndSection ... 24. TMDS coherent Internal TMDS transmitter can be programmed in 2 different ways to get best signal qualities depending on connected transmitter chips in the panel. This noise most appears in 1600x1200 mode, but can also come up in 1280x1024x75 Hz. Use Option "TMDSCoherentMode" to enable ("on") or disable ("off") coherent mode. Default setting is "on". 25. Pseudo Color Visuals 'Option "PseudoColorVisuals" "on"' allows to use pseudo color visuals at the same time with true color visuals with the use of overlay technique. (See also item 21). 26. TV out The Linux driver supports RADEON 9700/9800 Series TV Out capability. Not all flavours of graphics cards have TV Out. Notes: (1) To enable TV Out set 'Option "NoTV" "no"' or delete the line completely. In addition you have to set TV Out (e.g. "CRT,STV") in the MonitorLayout option and set clone mode (e.g. 0x00000100) or big desktop mode in the DesktopSetup option. ( Best would be to use the "fglrxconfig" utility to make all necessary settings). (2) To set the appropriate std use Option "TVStandard" (Type OPTV_ANYSTR) - possible settings are "NTSC-M", "NTSC-N", "NTSC-JPN", "PAL-B", "PAL-D", "PAL-G", "PAL-H", "PAL-I", "PAL-K", "PAL-L", "PAL-N", "PAL-M", "PAL-SCART", "PAL-CN", "PAL-K1. (3) To adjust TV Out use Option "TVHSizeAdj" (Type OPTV_INTEGER) Option "TVVSizeAdj" (Type OPTV_INTEGER) Option "TVHPosAdj" (Type OPTV_INTEGER) Option "TVVPosAdj" (Type OPTV_INTEGER) Option "TVHStartAdj" (Type OPTV_INTEGER) Option "TVColorAdj" (Type OPTV_INTEGER) (4) To adjust TV Out "on the fly" use the control panel, click on tag "TV Out". Ensure to have set TV Out in the MonitorLayout option. Otherwise the "TV Out" tag does not occur in the control panel. 7. LIST OF SUPPORTED MODES -------------------------- The following list represents only a small amount of tested and verified modes for the FireGL X1/Z1/X2 graphics cards. Due to the limitations of your display device you may not be able to run all of the listed modes. In addition it is possible to run the graphics adapter with other modes by generating specific modelines for the XF86Config file. When running the FireGLX1/Z1/X2 with an analog display device (CRT) be aware of a maximum pixel clock of 400MHz and when running on a digital display device (DVI) be aware of a maximum pixel clock of 165 MHz. To set the "Big Desktop" modes please run the "fglrxconfig" utility. Single Modes X Y VRefr. HSync Pix. Pix. Hz kHz --------------------------- 640 480 60 31.5 640 480 75 37.5 640 480 85 43.3 640 480 100 50.9* 640 480 120 61.8* 800 600 60 37.7 800 600 75 46.9 800 600 85 54.1 800 600 100 63.9* 800 600 120 77.2* 1024 768 60 48.4 1024 768 75 60.0 1024 768 85 68.7 1024 768 100 81.4* 1024 768 120 98.8* 1152 864 60 53.7* 1152 864 75 67.5 1152 864 85 77.1* 1152 864 100 91.5* 1280 960 60 59.6 1280 960 75 75.2* 1280 960 85 85.7 1280 960 100 101.7*,** 1280 1024 60 64.0 1280 1024 75 78.0 1280 1024 85 91.1 1280 1024 100 107.0*,** 1280 1024 120 131.6*,** 1400 1050 60 65.3(*) 1600 1000 60 62.1* 1600 1000 75 78.3* 1600 1000 85 89.3* 1600 1000 100 105.9* 1600 1024 60 63.3* 1600 1024 75 80.2* 1600 1024 76 81.3* 1600 1024 85 91.4* 1600 1200 60 75.0 1600 1200 75 93.8** 1600 1200 85 106.3** 1792 1344 60 83.6** 1792 1344 75 106.3** 1920 1080 60 67.1*,** 1920 1080 75 84.6*,** 1920 1200 60 74.5*,** 1920 1200 75 94.0*,** 2048 1536 60 95.3*,** Big Desktop Modes horizontal X Y Desktop VRefr. HSync Pix. Pix. Pix. Hz kHz ----------------------------------------- 2x640 480 1280x640 60 31.5 2x640 480 1280x640 75 37.5 2x640 480 1280x640 85 43.3 2x640 480 1280x640 100 50.9* 2x640 480 1280x640 120 61.8* 2x800 600 1600x600 60 37.7 2x800 600 1600x600 75 46.9 2x800 600 1600x600 85 54.1 2x800 600 1600x600 100 63.9* 2x800 600 1600x600 120 77.2* 2x1024 768 2048x768 60 48.4 2x1024 768 2048x768 75 60.0 2x1024 768 2048x768 85 68.7 2x1024 768 2048x768 100 81.4* 2x1024 768 2048x768 120 98.8* 2x1280 1024 2560x1024 60 64.0 2x1280 1024 2560x1024 75 78.0 2x1280 1024 2560x1024 85 91.1 2x1280 1024 2560x1024 100 107.0*,** 2x1280 1024 2560x1024 120 131.6*,** 2x1600 1024 3200x1024 60 63.3* 2x1600 1024 3200x1024 75 80.2*,** 2x1600 1024 3200x1024 85 91.4*,** 2x1600 1024 3200x1024 100 108.5*,** 2x1600 1024 3200x1024 120 131.6*,** 2x1600 1200 3200x1200 60 75.0 2x1600 1200 3200x1200 75 93.8** 2x1600 1200 3200x1200 85 106.3** vertical X Y Desktop VRefr. HSync Pix. Pix. Pix. Hz kHz ----------------------------------------- 640 2x480 640x960 60 31.5 640 2x480 640x960 75 37.5 640 2x480 640x960 85 43.3 640 2x480 640x960 100 50.9* 640 2x480 640x960 120 61.8* 800 2x600 800x1200 60 37.7 800 2x600 800x1200 75 46.9 800 2x600 800x1200 85 54.1 800 2x600 800x1200 100 63.9* 800 2x600 800x1200 120 77.2* 1024 2x768 1024x1536 60 48.4 1024 2x768 1024x1536 75 60.0 1024 2x768 1024x1536 85 68.7 1024 2x768 1024x1536 100 81.4* 1024 2x768 1024x1536 120 98.8* 1280 2x1024 1280x2048 60 64.0 1280 2x1024 1280x2048 75 78.0 1280 2x1024 1280x2048 85 91.1 1280 2x1024 1280x2048 100 107.0*,** 1280 2x1024 1280x2048 120 131.6*,** 1600 2x1024 1600x2048 60 63.3* 1600 2x1024 1600x2048 75 80.2*,** 1600 2x1024 1600x2048 85 91.4*,** 1600 2x1024 1600x2048 100* 108.5** 1600 2x1024 1600x2048 120* 131.6** 1600 2x1200 1600x2400 60 75.0 1600 2x1200 1600x2400 75 93.8** 1600 2x1200 1600x2400 85 106.3** X: number of pixels in horizontal direction Y: number of pixels in vertical direction VRefr.: "Vertical Refresh" or "Refresh Rate" (RR) HSync: "Horizontal Sync" or "Line Frequency" (LF) *: This modes are not part of Linux and need a special mode line **: Due to HW limitations this modes are not dvi capable. (*): X 4.3.0 only 8. SERVICE, SUPPORT AND SOFTWARE UPDATES ---------------------------------------- Video driver updates can be obtained from the following web location: http://www.ati.com ------------------------------------------------------------------------------ All product names listed are trademarks or copyrights of their respective owners. ------------------------------------------------------------------------------ (c) Copyright 2002,2003 by ATI Technologies Inc. All rights reserved ------------------------------------------------------------------------------ # EOF