3D Accelerated With ATI HOWTO Author: ATI www.ati.com 译者: 陈敏剑 expns@yahoo.com 翻译日期: 2002年11月9日, 2002年11月23日第二次更新 reversion 0.17 _________________________________________________________________ 此文档为你提供一个在 Linux 作业系统上设定 ATI 3D加速卡的参考. _________________________________________________________________ 1. 声明 * 1.1 版权 2. 环境 * 2.1 硬体环境 * 2.2 软体环境 3. 下载驱动程式 4. 安装 * 4.1 安装 rpm 软体包 * 4.2 安装驱动模组 5. XF86Config 设定档 * 5.1 设定键盘和滑鼠 * 5.2 设定莹幕 * 5.3 其它 6. Agpgart 7. 检视 8. ATI Control Panel _________________________________________________________________ 1. 声明 如果采用了此文档当中的方法而导致你的任何陨失(硬体损坏,函式库混乱等), 作者无权承担任何责任. 在开始设定之前紧记: * 你不一定非得按此文档来设定. * 你不必对此文档报以太大的期望. * 一切以 "Just for fun" 为原则. * 你最好能熟悉 XF86Config-4 的设定, 因为有50%的问题都出自这个设定档, 特别是游戏运行时显示模式的变换和其它的功能(3D加速)由 XFree86 决定, 你可以在 [1]www.tldp.org 找到进一步的资讯. * 由於新旧版本之间的差别导至了许多不必要的时间浪费在解决相容故障上, 我们强烈推荐你使用最新的 Mandrake 和 Red Hat 1.1 版权 Copyright (C) 2002, by ATI This document is free; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This document is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You can get a copy of the GNU GPL [2]here 2. 环境 2.1 硬体环境 你至少有一块 ATI 系列3D加速卡和支持它的母板,下面是一部份 Linux 支持的 ATI 系列3D加速卡: ______________________________________________________________ All IN WONDER 9700 PRO 系列 ( AGP 8X ) RADEON 9700 PRO 系列 ( AGP 8X ) RADEON 9500 PRO 系列 8700/8800 系列 ALL IN WONDER RADEON 8500 系列 ______________________________________________________________ 实际上还有一些 "镭" 卡是被Linux支持的, 以上只列出了有代表性的一部份. 2.2 软体环境 * 版本为 2.4.10 以上的核心. * XFree86版本为4.2.0或更新. * libc 6.2 (=glibc 2.2) 3. 下载驱动程式 [3] http://pdownload.mii.instacontent.net/ati/drivers/fglrx-glc22-4.2.0-2. 4.3.i586.rpm 这个驱动程式已经可以针对 AGP 8X 进行支援. 4. 安装 4.1 安装 rpm 软体包 ______________________________________________________________ rpm -i --force fglrx-glc22-4.2.0-2.4.3.i586.rpm ______________________________________________________________ 如果你的系统里没有 QT2.x.x 请先安装QT2.x.x (请注意 x 是代表0至9的数 字). 对於 Debian 发行版, 你可以使用 alien 工具将 rpm 转换成 deb, 然後安装: ______________________________________________________________ dpkg -i --force-overwrite fglrx-glc22-4.2.0-2.4.3.i586.deb ______________________________________________________________ 4.2 安装驱动模组 如果你编译过核心 (正在使用的不是发行版默认的启动核心) 这部份你可能要重 新编译它, 并使用新核心启动然後执行如下步骤. 如果你的 CPU 具备 ISSE 效 能 (如 英代尔 Pentium III ), 请在设定核心时将 ISSE 效能包含进去. 进入你的核心源代码目录 (如/usr/src/linux) ______________________________________________________________ 执行指令 make distclean 执行指令 make dep ______________________________________________________________ 进入 /lib/module/fglrx/build_mod 目录 ______________________________________________________________ 执行指令 ./make.sh ______________________________________________________________ 进入 /lib/module/fglrx 目录 ______________________________________________________________ 执行指令 ./make_install.sh ______________________________________________________________ 5. XF86Config 设定档 请使用 fglrxconfig 程式来设定 XF86Config 设定档. ______________________________________________________________ 执行指令 fglrxconfig ______________________________________________________________ 它的设定风格和 xfconfig 相像. 5.1 设定键盘和滑鼠 有三个项目: ============================================================================= Mouse and keyboard ============================================================================= 1. serial port mice 2. PS/2 port mice 3. Bus mice 你可以选取相应的项目, 在此例中我们选取 2 接下来选取类型. 然後是设备名称, 默认为 /dev/mouse 完成之後就是键盘类型的选定. 5.2 设定莹幕 ============================================================================= Fire GL Screen Management ============================================================================= 1. Default [single screen] 2. Clone mode [2screens same content] 3. Big mode [2screens one framebuffer] 4. Dual Head [2screens twodrivers] 你可以选取相应的项目, 在此例中我们选取 4 接下来选取莹幕位置. 在此例中我们选取 3 5.3 其它 其它的依据你的实际情况而定. 以下是一份完整的 XF86Config 设定档 # File generated by fglrxconfig (C) ATI Research, a substitute for xf86config. # Note by ATI: the below copyright notice is there for servicing possibly # pending third party rights on the file format and the instance of this file. # # Copyright (c) 1999 by The XFree86 Project, Inc. # # Permission is hereby granted, free of charge, to any person obtaining a # copy of this software and associated documentation files (the "Software"), # to deal in the Software without restriction, including without limitation # the rights to use, copy, modify, merge, publish, distribute, sublicense, # and/or sell copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL # THE XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF # OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. # # Except as contained in this notice, the name of the XFree86 Project shall # not be used in advertising or otherwise to promote the sale, use or other # dealings in this Software without prior written authorization from the # XFree86 Project. # # ********************************************************************** # Refer to the XF86Config(4/5) man page for details about the format of # this file. # ********************************************************************** # ********************************************************************** # DRI Section # ********************************************************************** Section "dri" # Access to OpenGL ICD is allowed for all users: Mode 0666 # Access to OpenGL ICD is restricted to a specific user group: # Group 100 # users # Mode 0660 EndSection # ********************************************************************** # Module section -- this section is used to specify # which dynamically loadable modules to load. # ********************************************************************** # Section "Module" # This loads the DBE extension module. Load "dbe" # Double buffer extension # This loads the miscellaneous extensions module, and disables # initialisation of the XFree86-DGA extension within that module. SubSection "extmod" Option "omit xfree86-dga" # don't initialise the DGA extension EndSubSection # This loads the Type1 and FreeType font modules Load "type1" Load "freetype" # This loads the GLX module Load "glx" # libglx.a Load "dri" # libdri.a EndSection # ********************************************************************** # Files section. This allows default font and rgb paths to be set # ********************************************************************** Section "Files" # The location of the RGB database. Note, this is the name of the # file minus the extension (like ".txt" or ".db"). There is normally # no need to change the default. RgbPath "/usr/X11R6/lib/X11/rgb" # Multiple FontPath entries are allowed (which are concatenated together), # as well as specifying multiple comma-separated entries in one FontPath # command (or a combination of both methods) # # If you don't have a floating point coprocessor and emacs, Mosaic or other # programs take long to start up, try moving the Type1 and Speedo directory # to the end of this list (or comment them out). # FontPath "/usr/X11R6/lib/X11/fonts/local/" FontPath "/usr/X11R6/lib/X11/fonts/misc/" FontPath "/usr/X11R6/lib/X11/fonts/75dpi/:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/100dpi/:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/Type1/" FontPath "/usr/X11R6/lib/X11/fonts/Speedo/" FontPath "/usr/X11R6/lib/X11/fonts/75dpi/" FontPath "/usr/X11R6/lib/X11/fonts/100dpi/" # The module search path. The default path is shown here. # ModulePath "/usr/X11R6/lib/modules" EndSection # ********************************************************************** # Server flags section. # ********************************************************************** Section "ServerFlags" # Uncomment this to cause a core dump at the spot where a signal is # received. This may leave the console in an unusable state, but may # provide a better stack trace in the core dump to aid in debugging # Option "NoTrapSignals" # Uncomment this to disable the server abort sequence # This allows clients to receive this key event. # Option "DontZap" # Uncomment this to disable the / mode switching # sequences. This allows clients to receive these key events. # Option "Dont Zoom" # Uncomment this to disable tuning with the xvidtune client. With # it the client can still run and fetch card and monitor attributes, # but it will not be allowed to change them. If it tries it will # receive a protocol error. # Option "DisableVidModeExtension" # Uncomment this to enable the use of a non-local xvidtune client. # Option "AllowNonLocalXvidtune" # Uncomment this to disable dynamically modifying the input device # (mouse and keyboard) settings. # Option "DisableModInDev" # Uncomment this to enable the use of a non-local client to # change the keyboard or mouse settings (currently only xset). # Option "AllowNonLocalModInDev" EndSection # ********************************************************************** # Input devices # ********************************************************************** # ********************************************************************** # Core keyboard's InputDevice section # ********************************************************************** Section "InputDevice" Identifier "Keyboard1" Driver "Keyboard" # For most OSs the protocol can be omitted (it defaults to "Standard"). # When using XQUEUE (only for SVR3 and SVR4, but not Solaris), # uncomment the following line. # Option "Protocol" "Xqueue" Option "AutoRepeat" "500 30" # Specify which keyboard LEDs can be user-controlled (eg, with xset(1)) # Option "Xleds" "1 2 3" # Option "LeftAlt" "Meta" # Option "RightAlt" "ModeShift" # To customise the XKB settings to suit your keyboard, modify the # lines below (which are the defaults). For example, for a non-U.S. # keyboard, you will probably want to use: # Option "XkbModel" "pc102" # If you have a US Microsoft Natural keyboard, you can use: # Option "XkbModel" "microsoft" # # Then to change the language, change the Layout setting. # For example, a german layout can be obtained with: # Option "XkbLayout" "de" # or: # Option "XkbLayout" "de" # Option "XkbVariant" "nodeadkeys" # # If you'd like to switch the positions of your capslock and # control keys, use: # Option "XkbOptions" "ctrl:swapcaps" # These are the default XKB settings for XFree86 # Option "XkbRules" "xfree86" # Option "XkbModel" "pc101" # Option "XkbLayout" "us" # Option "XkbVariant" "" # Option "XkbOptions" "" # Option "XkbDisable" Option "XkbRules" "xfree86" Option "XkbModel" "pc101" Option "XkbLayout" "us" EndSection # ********************************************************************** # Core Pointer's InputDevice section # ********************************************************************** Section "InputDevice" # Identifier and driver Identifier "Mouse1" Driver "mouse" Option "Protocol" "PS/2" Option "Device" "/dev/mouse" # When using XQUEUE, comment out the above two lines, and uncomment # the following line. # Option "Protocol" "Xqueue" # Baudrate and SampleRate are only for some Logitech mice. In # almost every case these lines should be omitted. # Option "BaudRate" "9600" # Option "SampleRate" "150" # Emulate3Buttons is an option for 2-button Microsoft mice # Emulate3Timeout is the timeout in milliseconds (default is 50ms) # Option "Emulate3Buttons" # Option "Emulate3Timeout" "50" # ChordMiddle is an option for some 3-button Logitech mice # Option "ChordMiddle" EndSection # ********************************************************************** # Other input device sections # this is optional and is required only if you # are using extended input devices. This is for example only. Refer # to the XF86Config man page for a description of the options. # ********************************************************************** # # Section "InputDevice" # Identifier "Mouse2" # Driver "mouse" # Option "Protocol" "MouseMan" # Option "Device" "/dev/mouse2" # EndSection # # Section "InputDevice" # Identifier "spaceball" # Driver "magellan" # Option "Device" "/dev/cua0" # EndSection # # Section "InputDevice" # Identifier "spaceball2" # Driver "spaceorb" # Option "Device" "/dev/cua0" # EndSection # # Section "InputDevice" # Identifier "touchscreen0" # Driver "microtouch" # Option "Device" "/dev/ttyS0" # Option "MinX" "1412" # Option "MaxX" "15184" # Option "MinY" "15372" # Option "MaxY" "1230" # Option "ScreenNumber" "0" # Option "ReportingMode" "Scaled" # Option "ButtonNumber" "1" # Option "SendCoreEvents" # EndSection # # Section "InputDevice" # Identifier "touchscreen1" # Driver "elo2300" # Option "Device" "/dev/ttyS0" # Option "MinX" "231" # Option "MaxX" "3868" # Option "MinY" "3858" # Option "MaxY" "272" # Option "ScreenNumber" "0" # Option "ReportingMode" "Scaled" # Option "ButtonThreshold" "17" # Option "ButtonNumber" "1" # Option "SendCoreEvents" # EndSection # ********************************************************************** # Monitor section # ********************************************************************** # Any number of monitor sections may be present Section "Monitor" Identifier "Monitor0" HorizSync 31.5 - 82.0 VertRefresh 40-150 EndSection Section "Monitor" Identifier "Monitor1" HorizSync 31.5 - 82.0 VertRefresh 40-150 EndSection # ********************************************************************** # Graphics device section # ********************************************************************** # Any number of graphics device sections may be present # Standard VGA Device: Section "Device" Identifier "Standard VGA" VendorName "Unknown" BoardName "Unknown" # The chipset line is optional in most cases. It can be used to override # the driver's chipset detection, and should not normally be specified. # Chipset "generic" # The Driver line must be present. When using run-time loadable driver # modules, this line instructs the server to load the specified driver # module. Even when not using loadable driver modules, this line # indicates which driver should interpret the information in this section. Driver "vga" # The BusID line is used to specify which of possibly multiple devices # this section is intended for. When this line isn't present, a device # section can only match up with the primary video device. For PCI # devices a line like the following could be used. This line should not # normally be included unless there is more than one video device # installed. # BusID "PCI:0:10:0" # VideoRam 256 # Clocks 25.2 28.3 EndSection # === ATI device section === Section "Device" Identifier "ATI Graphics Adapter jack 0" Driver "fglrx" # === disable PnP Monitor === #Option "NoDDC" # === disable/enable XAA/DRI === Option "no_accel" "no" Option "no_dri" "no" # === Fire GL DDX driver module specific settings === # === Screen Management === Option "DesktopSetup" "0x00000000" Option "Display2" "0" Option "HSync2" "(null)" Option "VRefresh2" "(null)" Option "GammaCorrectionI" "0x00000000" Option "GammaCorrectionII" "0x00000000" # === OpenGL specific profiles/settings === Option "Capabilities" "0x00000000" # === Video Overlay for the Xv extension === Option "VideoOverlay" "on" # === OpenGL Overlay === # Note: When OpenGL Overlay is enabled, Video Overlay # will be disabled automatically Option "OpenGLOverlay" "off" # BusID "PCI:1:0:0" # no device found at config time Screen 0 EndSection Section "Device" Identifier "ATI Graphics Adapter jack 1" Driver "fglrx" # BusID "PCI:1:0:0" # no device found at config time Screen 1 EndSection # ********************************************************************** # Screen sections # ********************************************************************** # Any number of screen sections may be present. Each describes # the configuration of a single screen. A single specific screen section # may be specified from the X server command line with the "-screen" # option. Section "Screen" Identifier "Screen0" Device "ATI Graphics Adapter jack 0" Monitor "Monitor0" DefaultDepth 24 #Option "backingstore" Subsection "Display" Depth 24 Modes "640x480" ViewPort 0 0 # initial origin if mode is smaller than desktop # Virtual 1280 1024 EndSubsection EndSection Section "Screen" Identifier "Screen1" Device "ATI Graphics Adapter jack 1" Monitor "Monitor1" DefaultDepth 24 #Option "backingstore" Subsection "Display" Depth 24 Modes "640x480" ViewPort 0 0 # initial origin if mode is smaller than desktop # Virtual 1280 1024 EndSubsection EndSection # ********************************************************************** # ServerLayout sections. # ********************************************************************** # Any number of ServerLayout sections may be present. Each describes # the way multiple screens are organised. A specific ServerLayout # section may be specified from the X server command line with the # "-layout" option. In the absence of this, the first section is used. # When now ServerLayout section is present, the first Screen section # is used alone. Section "ServerLayout" # The Identifier line must be present Identifier "Server Layout" # Each Screen line specifies a Screen section name, and optionally # the relative position of other screens. The four names after # primary screen name are the screens to the top, bottom, left and right # of the primary screen. Screen "Screen0" Screen "Screen1" RightOf "Screen0" # Each InputDevice line specifies an InputDevice section name and # optionally some options to specify the way the device is to be # used. Those options include "CorePointer", "CoreKeyboard" and # "SendCoreEvents". InputDevice "Mouse1" "CorePointer" InputDevice "Keyboard1" "CoreKeyboard" EndSection 注意: * Xinerama 和 DRI 是相互排斥的, Xinerama 必需被关闭. * Video Overlay 和 OpenGL Overlay 也是相互排斥的. 由 fglrxconfig 设 定的 XF86Config 设定档中 Video Overlay 是处在开启的状态之中. * 请注意 DRI 的使用权限. 6. Agpgart 很多发行版都包含 Agpgart 模组,它专门用来识别AGP设备. "镭" 卡的驱动程式 会和它协同工作, 没有 Agpgart 模组也无关紧要, 因为 "镭" 卡的驱动程式已 经包括了 Agpgart 的效能. 7. 检视 ATI 提供一个名为 fglrxinfo 的程式, 它可以检视驱动程式的运行情况. 并发 出如下讯息: OpenGL vendor string: ATI OpenGL renderer string: FireGL 8700/8800 OpenGL version string: 1.2.1234 (1.2.3) 还有其它的程式如 xdpyinfo 和 glxinfo 也可以提供相应的效能. 8. ATI Control Panel 可以通过 ATI Control Panel 调节 Gamma 与 Dual Screen等选项. 请开启一个终端 ______________________________________________________________ 执行 fireglcontrol ______________________________________________________________ Information 提供了 "镭" 卡的相关资讯. DualScreen 提供 双莹幕 设定. 请先在 "Set Primary Monitor" 中选取一个莹 幕作为主 Screen, 然後在 "Desktop Setup" 中选择它们的摆放位置. * Disable Secondary Monitor 将第二个莹幕关掉. * Clone Mode 使它们显示相同的内容. * Extended Desktop Horizontal 将桌面内容横向扩展至第二个莹幕. * Extended Desktop Vertical 将桌面内容纵向扩展至第二个莹幕 Adjustment 提供相应的 Gamma 调节. References 1. http://www.tldp.org/ 2. http://www.gnu.org/copyleft/gpl.html 3. http://pdownload.mii.instacontent.net/ati/drivers/fglrx-glc22-4.2.0-2.4.3.i586.rpm