Getting Linux/XFree86/X11 Graphics to run with Mach64 chipset and Rage128 chipset based cards
The following are not the opinions or recommendations of my employer, ATI. All individuals who choose to use the following information, do so at their own risk.
Here is a index to this section:
[2] Setting up X11 GUI with Integrated Mach64 chipset based Cards
1 ATI and Chipsets and Linux
The XFree86 has had a long standing relationship with ATI. Many of XFree86's first 2-D accelerated graphic chipsets were the Mach32 and non-integrated chipsets. These non-integrated chipsets used external PLL (phase lock loops) and external DAC (Digital to Analog Converter) chips. Integrated ATI chipsets included and standardized the programming (to a large extent) of the PLL and DAC interface. The "chipset driver" basically refers to the support of set of defined set of ways/practices of setting up or programming the graphics chip.
1.1 Background on Differences in Mach64 chipsets
In terms of the integrated chipsets working under a graphical environment within Linux, differences exists within the Mach64 family leading ultimately to configuration problems. A rough classification of the Mach64 Chipsets, follows:
These are the default register programming modes assumed by the driver for an unknown/new Mach64
The Rage 128 Chipset is now officially supported by the XFree86 foundation. This is a completely new register definition optimized for for 2D and 3D speed that takes advantage of the 2x improvement in the bus width to 128 bits.
1.2.1 XFree86 officially supported Driver
The Rage 128 is now supported in the latest releases of the XFree86 X11 driver. For more information, click on the following links:
rpm -qf /lib/libm.so.6
You need glib-2.0.xxxx or greater
The Rage128 cards are now supported in the XSVGA server can be manually configured in the XF86config file using the following configuration lines:
Section "Device" Identifier "r128" ChipId 0x5246 Option "no_accel" EndSectionThe current release has a font corruption problem with text that can be worked around by turning off acceleration :(
Section "Screen" Driver "svga" # Device "Generic VGA" Device "r128" Monitor "N4FG" Subsection "Display" Depth 8 #Modes "640x480" "800x600" "1024x768" "1280x1024" ViewPort 0 0 # Virtual 320 200 Virtual 640 480 EndSubsection EndSection
1.2.2 VESA Frame Buffer Workaround
The standardized defintion of a graphics framebuffer under VESA has led to the VESAFB standard. Two links can be found below describing specifics with the Rage 128 based Rage Fury cards at Link #1 and Link #2. This can be useful when no support for a newly introduced card/chipset exists and the need for higher resolutions is desired. The low levels of detailed are simplified so that programming of clocks and any special registers is handled automagically by the hardware and the VESAFB register interface resembles the simplicity of of the VGA frame buffer mode.
2 Setting up X11 GUI with Integrated Mach64 chipset based Cards
It is possible to use three different Servers to get graphics working with your PC. Outlined here are the simplest (XF86_VGA16) and the most sophisticated (XF86_Mach64) setups.
2.1 VGA Support
This is the defacto display defintion defined by IBM. All display adapters are backwards compatible with this non accelerated 640x480 mode. The name of the server is a file called XF86_VGA16. Information on how to get this working can be found at the following Using VGA to get graphics up link.
With the advent of programmable PLL and the emergence of 800x600 and 1024x768 resolutions monitors saw the release of the server XF86_SVGA. Due to the support of many different chipsets under this one driver, the configuration file needs to contain more information. I have never used or had any success with this server on my own home setup. Marc Aurelle Lafrance is the key person at XFree86 to contact about this.
2.3 Universal Mach64 2D Accerelerated Support
The following configuration file
( /etc/X11/XF86config )has been set up to work on almost all
VGA and SVGA monitors.
The file will wake up in a desktop size of about 640x480(60
Hz) and support almost all VGA monitors. If you have a more SVGA monitor,
you can go on from here and ctrl-alt + to try 800x600(56 Hz refresh)
mode and if this displays correctly to move on to 1024x768 interlaced mode(45Hz
refresh) using the same sequence. Be ready to type ctrl-alt - to
backtrack and prevent damage to your monitor (Note...lack of
sync and unstable screen image will
only happen
if you have a VGA...640x480 monitor support only...these are rare...
most
monitors made in the last 3 years will be SVGA capable of
supporting 800x600 and 1024x768 screen modes
The following config file has been tested on all integrated chips(DAC and PLL integrated on controller chip) using the "standard Mach64" video architecture. As mention earlier this includes the folowing:
2.3.2 Foreign Chip IDs and "Enhanced Mach64" Configuration File
I was evaluating the latest generation prototype chips and manage to workaround problems introduced by the 3.2a driver not recognizing new prototype chips released after the 3.2a driver had been circulating for a while. The new chips are 100% register compatible with the RageII chips ...sigh... but the 3.2a driver would see these foreign chip IDs and key RageII registers to would not be set properly.
The following chips required support of the "Enhanced Mach64" registers and need to be told to run 3.3 in a compatability mode by having two lines modified in the XF86config file below uncommented to work.
I only realized that problems would arise for the rest of the world when XFree86 started up and flashed the "Blade Runner" termination message at me. I did get wind of this about two weeks before when Peter Gerken had problems with his ATI All-in-wonder. A quick e-mail to Dave Dawes at XFree86.org allowed him to provide a timely "fix" in the XF86config file via two new control fields called "ChipId" and "ChipRev". Thank you David, Peter and father of e-mail.
The following configuration file can be used providing you uncommnet the lines in the following file. For example:
# Uncomment these two lines for RageII+ DVD and for Rage PRO ...June 5, 1997 #ChipId 0x4754 #ChipRev 0x01 CHANGE TO THE FOLLOWING: # Uncomment these two lines for RageII+ DVD and for Rage PRO ...June 5, 1997 ChipId 0x4754 ChipRev 0x01
Save this link as "text" using the Netscape "Save As..." button under the file "File" menu. Remove everything above the "cut here" line.
Rage Pro products supporting the AGP slot going on to LX/VP-3 based boards (ASUS P2L97, Intel AL440LX, FIC-2012) need to grab a Beta driver circumventing the official Xfree86 release. More information can be found here and at the XSuse page.
Later releases of the X11 driver labelled <3.3.3 from XFree86 include recognition of the newer "Chip Id" numbers do and not required these lines. These lines will become useful again when newer chips become available which are not coded beforehand to recognize them
#======================cut here============================================ # File generated by xf86config. # # Copyright (c) 1994 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. # ********************************************************************** # ********************************************************************** # 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/misc/" 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/" EndSection # ********************************************************************** # Server flags section. # ********************************************************************** #ATI section #membase 0xf0000000 #no_block_write 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 # NoTrapSignals # Uncomment this to disable the server abort sequence # This allows clients to receive this key event. # DontZap # Uncomment this to disable the / mode switching # sequences. This allows clients to receive these key events. # DontZoom EndSection # ********************************************************************** # Input devices # ********************************************************************** # ********************************************************************** # Keyboard section # ********************************************************************** Section "Keyboard" Protocol "Standard" # when using XQUEUE, comment out the above line, and uncomment the # following line # Protocol "Xqueue" AutoRepeat 500 5 # Let the server do the NumLock processing. This should only be required # when using pre-R6 clients # ServerNumLock # Specifiy which keyboard LEDs can be user-controlled (eg, with xset(1)) # Xleds 1 2 3 # To set the LeftAlt to Meta, RightAlt key to ModeShift, # RightCtl key to Compose, and ScrollLock key to ModeLock: # LeftAlt Meta # RightAlt ModeShift # RightCtl Compose # ScrollLock ModeLock EndSection # ********************************************************************** # Pointer section # ********************************************************************** Section "Pointer" # Most of you will use two button Microsoft position #Protocol "Microsoft" # 3-button mouse Protocol "MouseSystems" Device "/dev/mouse" # When using XQUEUE, comment out the above two lines, and uncomment # the following line. # Protocol "Xqueue" # Baudrate and SampleRate are only for some Logitech mice # I'm always behind two generations...most of you willhave 28K # BaudRate 9600 # SampleRate 150 # Emulate3Buttons is an option for 2-button Microsoft mice # Turn this on if you want to represent middle mouse by click both left # and right mouse buttons # Emulate3Buttons # ChordMiddle is an option for some 3-button Logitech mice # ChordMiddle EndSection # ********************************************************************** # Monitor section # ********************************************************************** # Any number of monitor sections may be present Section "Monitor" Identifier "My Monitor" VendorName "Unknown" ModelName "Unknown" # Bandwidth is in MHz unless units are specified # Bandwidth 25.2 # HorizSync is in kHz unless units are specified. # HorizSync may be a comma separated list of discrete values, or a # comma separated list of ranges of values. # NOTE: THE VALUES HERE ARE EXAMPLES ONLY. REFER TO YOUR MONITOR'S # USER MANUAL FOR THE CORRECT NUMBERS. # Minimum set for SVGA (i.e. 640x480@60, 800x600@56 # and 1024x768@90-interlaced) HorizSync 31.5, 35.15, 35.5 # NEC 4FG # HorizSync 31.5, 35.15, 48.4, 51 # HorizSync 31.5-37.8 # HorizSync 30-64 # multisync # HorizSync 31.5, 35.2 # multiple fixed sync frequencies # HorizSync 15-25, 30-50 # multiple ranges of sync frequencies # VertRefresh is in Hz unless units are specified. # VertRefresh may be a comma separated list of discrete values, or a # comma separated list of ranges of values. # NOTE: THE VALUES HERE ARE EXAMPLES ONLY. REFER TO YOUR MONITOR'S # USER MANUAL FOR THE CORRECT NUMBERS. #VertRefresh 50-90 VertRefresh 50-90 # Modes can be specified in two formats. A compact one-line format, or # a multi-line format. # These two are equivalent # ModeLine "1024x768i" 45 1024 1048 1208 1264 768 776 784 817 Interlace # Mode "1024x768i" # DotClock 45 # HTimings 1024 1048 1208 1264 # VTimings 768 776 784 817 # Flags "Interlace" # EndMode # This is a set of standard mode timings. Modes that are out of monitor spec # are automatically deleted by the server (provided the HorizSync and # VertRefresh lines are correct), so there's no immediate need to # delete mode timings (unless particular mode timings don't work on your # monitor). With these modes, the best standard mode that your monitor # and video card can support for a given resolution is automatically # used. # 640x400 @ 70 Hz, 31.5 kHz hsync Modeline "640x400" 25.175 640 664 760 800 400 409 411 450 # 640x480 @ 60 Hz, 31.5 kHz hsync Modeline "640x480" 25.175 640 664 760 800 480 491 493 525 -hsync -vsync # 800x600 @ 56 Hz, 35.15 kHz hsync ModeLine "800x600" 36 800 824 896 1024 600 601 603 625 # 1024x768 @ 87 Hz interlaced, 35.5 kHz hsync Modeline "1024x768" 44.9 1024 1048 1208 1264 768 776 784 817 Interlace # 640x480 @ 72 Hz, 36.5 kHz hsync Modeline "640x480" 31.5 640 680 720 864 480 488 491 521 # 800x600 @ 60 Hz, 37.8 kHz hsync Modeline "800x600" 40 800 840 968 1056 600 601 605 628 +hsync +vsync # 800x600 @ 72 Hz, 48.0 kHz hsync Modeline "800x600" 50 800 856 976 1040 600 637 643 666 +hsync +vsync # 1024x768 @ 60 Hz, 48.4 kHz hsync Modeline "1024x768" 65 1024 1032 1176 1344 768 771 777 806 -hsync -vsync # 1024x768 @ 70 Hz, 56.5 kHz hsync Modeline "1024x768" 75 1024 1048 1184 1328 768 771 777 806 -hsync -vsync # 1280x1024 @ 87 Hz interlaced, 51 kHz hsync Modeline "1280x1024" 80 1280 1296 1512 1568 1024 1025 1037 1165 Interlace # 1024x768 @ 76 Hz, 62.5 kHz hsync Modeline "1024x768" 85 1024 1032 1152 1360 768 784 787 823 # 1280x1024 @ 61 Hz, 64.2 kHz hsync Modeline "1280x1024" 110 1280 1328 1512 1712 1024 1025 1028 1054 # 1280x1024 @ 74 Hz, 78.85 kHz hsync Modeline "1280x1024" 135 1280 1312 1456 1712 1024 1027 1030 1064 # Low-res Doublescan modes # If your chipset does not support doublescan, you get a 'squashed' # resolution like 320x400. # 320x200 @ 70 Hz, 31.5 kHz hsync, 8:5 aspect ratio Modeline "320x200" 12.588 320 336 384 400 200 204 205 225 Doublescan # 320x240 @ 60 Hz, 31.5 kHz hsync, 4:3 aspect ratio Modeline "320x240" 12.588 320 336 384 400 240 245 246 262 Doublescan # 320x240 @ 72 Hz, 36.5 kHz hsync Modeline "320x240" 15.750 320 336 384 400 240 244 246 262 Doublescan # 400x300 @ 56 Hz, 35.2 kHz hsync, 4:3 aspect ratio ModeLine "400x300" 18 400 416 448 512 300 301 602 312 Doublescan # 400x300 @ 60 Hz, 37.8 kHz hsync Modeline "400x300" 20 400 416 480 528 300 301 303 314 Doublescan # 400x300 @ 72 Hz, 48.0 kHz hsync Modeline "400x300" 25 400 424 488 520 300 319 322 333 Doublescan # 480x300 @ 56 Hz, 35.2 kHz hsync, 8:5 aspect ratio ModeLine "480x300" 21.656 480 496 536 616 300 301 302 312 Doublescan # 480x300 @ 60 Hz, 37.8 kHz hsync Modeline "480x300" 23.890 480 496 576 632 300 301 303 314 Doublescan # 480x300 @ 63 Hz, 39.6 kHz hsync Modeline "480x300" 25 480 496 576 632 300 301 303 314 Doublescan # 480x300 @ 72 Hz, 48.0 kHz hsync Modeline "480x300" 29.952 480 504 584 624 300 319 322 333 Doublescan EndSection # ********************************************************************** # Graphics device section # ********************************************************************** # Any number of graphics device sections may be present # Standard VGA Device: Section "Device" Identifier "Generic VGA" VendorName "Unknown" BoardName "Unknown" Chipset "generic" # VideoRam 256 # Clocks 25.2 28.3 EndSection # Sample Device for accelerated server: # Section "Device" # Identifier "Actix GE32+ 2MB" # VendorName "Actix" # BoardName "GE32+" # Ramdac "ATT20C490" # Dacspeed 110 # Option "dac_8_bit" # Clocks 25.0 28.0 40.0 0.0 50.0 77.0 36.0 45.0 # Clocks 130.0 120.0 80.0 31.0 110.0 65.0 75.0 94.0 # EndSection # Device configured by xf86config: Section "Device" Identifier "My Video Card" VendorName "Unknown" BoardName "Unknown" VideoRam 2048 # Uncomment these two lines for RageII+ DVD and for Rage PRO ...June 5, 1997 #ChipId 0x4754 #ChipRev 0x01 # Insert Clocks lines here if appropriate # Option "no_bios_clocks" # Clocks 25.175 36.00 44.900 EndSection # ********************************************************************** # Screen sections # ********************************************************************** # The Colour SVGA server Section "Screen" Driver "svga" Device "Generic VGA" #Device "My Video Card" Monitor "My Monitor" Subsection "Display" Depth 8 #Modes "640x480" "800x600" "1024x768" "1280x1024" Modes "640x480" "800x600" ViewPort 0 0 Virtual 320 240 #Virtual 1280 1024 EndSubsection EndSection # The 16-color VGA server Section "Screen" Driver "vga16" Device "Generic VGA" Monitor "My Monitor" Subsection "Display" Modes "640x480" "800x600" ViewPort 0 0 Virtual 800 600 EndSubsection EndSection # The Mono server Section "Screen" Driver "vga2" Device "Generic VGA" Monitor "My Monitor" Subsection "Display" Modes "640x480" "800x600" ViewPort 0 0 Virtual 800 600 EndSubsection EndSection # The accelerated servers (S3, Mach32, Mach8, 8514, P9000, AGX, W32, Mach64) Section "Screen" Driver "accel" Device "My Video Card" Monitor "My Monitor" Subsection "Display" Depth 8 # Modes "1280x1024" "1024x768" "800x600" "640x480" "640x400" "320x240" #Modes "320x240" "640x400" "640x480" "800x600" "1024x768" #default mode Modes "640x480" "800x600" "1024x768" # Recommended Mode #Modes "1024x768" "800x600" "640x480" "640x400" "320x240" ViewPort 0 0 # Desktop size...monitor will pan larger screen # Virtual 1280 1024 Virtual 1024 768 # Virtual 800 600 # Virtual 640 480 EndSubsection Subsection "Display" Depth 16 Modes "640x480" "800x600" "1024x768" ViewPort 0 0 Virtual 1024 768 EndSubsection Subsection "Display" Depth 32 Modes "640x480" "800x600" ViewPort 0 0 Virtual 800 600 EndSubsection EndSection
...as of Nov 97
Email: rchau@angelfire.com|
HOME