<!doctype linuxdoc system>

<!--第一次修正:2002年11月22日  
 -->

<article>

<!-- Title information -->

<title>3D Accelerated With ATI HOWTO
<author>Author: ATI <tt/www.ati.com/
<newline> 
<newline>譯者: 陳敏劍  <tt/expns@yahoo.com/
<date>翻譯日期: 2002年11月9日, 2002年11月23日第二次更新 reversion 0.17 
<abstract>
此文檔為你提供一個在 Linux 作業系統上設定 ATI 3D加速卡的參考.
</abstract>

<!-- Table of contents -->
<toc>
<sect>聲明
<p>如果採用了此文檔當中的方法而導致你的任何隕失(硬體損壞,函式庫混亂等),
作者無權承擔任何責任.
<p>在開始設定之前緊記:
<itemize>
<item>你不一定非得按此文檔來設定.
<item>你不必對此文檔報以太大的期望.
<item>一切以 "Just for fun" 為原則. 
<item>你最好能熟悉 XF86Config-4 的設定, 因為有50%的問題都出自這個設定檔,
特別是遊戲運行時顯示模式的變換和其它的功能(3D加速)由 XFree86 決定, 你可以在

<htmlurl url="http://www.tldp.org/"
        name="www.tldp.org"
 > 找到進一步的資訊.

<item>由於新舊版本之間的差別導至了許多不必要的時間浪費在解決相容故障上,
我們強烈推薦你使用最新的 Mandrake 和 Red Hat  

</itemize>
<sect1>版權
<p>Copyright (C) 2002, by ATI 
<p>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. 
<p>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 
                   <htmlurl url="http://www.gnu.org/copyleft/gpl.html"
                           name="here">

<sect>環境
<sect1>硬體環境
<p>你至少有一塊 ATI 系列3D加速卡和支持它的母板,下面是一部份 Linux 支持的 ATI 系列3D加速卡:
<tscreen><code>

All IN WONDER 9700 PRO     系列  ( AGP 8X )

RADEON 9700 PRO  系列            ( AGP 8X )
 
RADEON 9500 PRO  系列

8700/8800        系列


ALL IN WONDER RADEON 8500  系列

</code></tscreen>

<p>實際上還有一些 "鐳" 卡是被Linux支持的, 以上只列出了有代表性的一部份.
<sect1>軟體環境
<p><itemize>
<item>版本為 2.4.10 以上的核心. 
<item>XFree86版本為4.2.0或更新.
<item>libc 6.2 (=glibc 2.2) 
</itemize>
<sect>下載驅動程式
<p><htmlurl url="http://pdownload.mii.instacontent.net/ati/drivers/fglrx-glc22-4.2.0-2.4.3.i586.rpm"
           name="http://pdownload.mii.instacontent.net/ati/drivers/fglrx-glc22-4.2.0-2.4.3.i586.rpm"
    >
<p>這個驅動程式已經可以針對 AGP 8X 進行支援. 
<sect>安裝
<sect1>安裝 rpm 軟體包
<p>
<tscreen><code>
rpm -i --force fglrx-glc22-4.2.0-2.4.3.i586.rpm
</code></tscreen>
<p>如果你的系統裡沒有 QT2.x.x  請先安裝QT2.x.x  (請注意 x 是代表0至9的數字).
<p>對於 Debian 發行版, 你可以使用 alien 工具將 rpm 轉換成 deb,
然後安裝:
<tscreen><code>
dpkg -i --force-overwrite fglrx-glc22-4.2.0-2.4.3.i586.deb 
</code></tscreen>

<sect1>安裝驅動模組
<p> 如果你編譯過核心 (正在使用的不是發行版默認的啟動核心) 這部份你可能要重新編譯它, 
並使用新核心啟動然後執行如下步驟. 如果你的 CPU 具備 ISSE 效能 (如 英代爾 Pentium III ), 
請在設定核心時將 ISSE 效能包含進去. 
<p>
進入你的核心源代碼目錄 (如/usr/src/linux)
<tscreen><code>

執行指令 make distclean

執行指令 make dep

</code></tscreen>

<p>
進入 /lib/module/fglrx/build_mod 目錄

<tscreen><code>

執行指令 ./make.sh

</code></tscreen>

<p>
進入 /lib/module/fglrx 目錄

<tscreen><code>

執行指令 ./make_install.sh

</code></tscreen>

<sect>XF86Config 設定檔
<p>
 請使用 fglrxconfig 程式來設定 XF86Config 設定檔.

<tscreen><code>

執行指令 fglrxconfig

</code></tscreen>

<p>它的設定風格和 xfconfig 相像.

<sect1>設定鍵盤和滑鼠
<p>有三個項目:
<tscreen><verb>
=============================================================================
 Mouse and keyboard
=============================================================================
1. serial port mice

2. PS/2 port mice

3. Bus mice
你可以選取相應的項目, 在此例中我們選取 2
接下來選取類型. 然後是設備名稱, 默認為 /dev/mouse
完成之後就是鍵盤類型的選定.
</verb></tscreen>

<sect1> 設定瑩幕
<p>
<tscreen><verb>
=============================================================================
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
</verb></tscreen>

<sect1>其它
<p>其它的依據你的實際情況而定.
以下是一份完整的 XF86Config 設定檔

<tscreen><verb>
# 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 <Crtl><Alt><BS> server abort sequence
# This allows clients to receive this key event.

#    Option "DontZap"

# Uncomment this to disable the <Crtl><Alt><KP_+>/<KP_-> 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


</verb></tscreen>
<p> 注意:
<itemize>
<item> Xinerama 和 DRI 是相互排斥的, Xinerama 必需被關閉.
<item> Video Overlay 和 OpenGL Overlay 也是相互排斥的. 由 fglrxconfig 設定的
XF86Config 設定檔中  Video Overlay 是處在開啟的狀態之中.
<item> 請注意 DRI 的使用權限. 
</itemize>

<sect> Agpgart
<p>很多發行版都包含 Agpgart 模組,它專門用來識別AGP設備. "鐳" 
卡的驅動程式會和它協同工作, 沒有 
Agpgart 模組也無關緊要, 因為 "鐳" 
卡的驅動程式已經包括了 Agpgart 的效能.
 
<sect>檢視
<p> ATI 提供一個名為 fglrxinfo 的程式, 它可以檢視驅動程式的運行情況.
並發出如下訊息:
<tscreen><verb>

OpenGL vendor string: ATI

OpenGL renderer string: FireGL 8700/8800

OpenGL version string: 1.2.1234 (1.2.3)

</verb></tscreen>

<p> 還有其它的程式如 xdpyinfo 和 glxinfo 也可以提供相應的效能.

<sect>ATI Control Panel
<p> 可以通過 ATI Control Panel 調節 Gamma 與 Dual Screen等選項.
 
請開啟一個終端
<tscreen><code>
執行 fireglcontrol
</code></tscreen>
<p>
Information 提供了 "鐳" 卡的相關資訊.

<p> DualScreen 提供 雙瑩幕 設定. 請先在 "Set Primary 
Monitor" 中選取一個瑩幕作為主 Screen,
然後在 "Desktop Setup" 中選擇它們的擺放位置.
<itemize>
<item> Disable Secondary Monitor      將第二個瑩幕關掉.
<item> Clone Mode                     使它們顯示相同的內容.
<item> Extended Desktop Horizontal    將桌面內容橫向擴展至第二個瑩幕.
<item> Extended Desktop Vertical      將桌面內容縱向擴展至第二個瑩幕
</itemize>

<p> Adjustment 提供相應的 Gamma 調節.
</article>



