Site hosted by Angelfire.com: Build your free website today!

^/\^ PeaK /\^/\

Getting Linux/XFree86/X11 Graphics to run with Mach64 chipset and Rage128 chipset based cards


Here is a index to this section:


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:

  1. Standard Integrated Mach64 Supported Chipsets including the
    1. CT Chipset: Charger
    2. VT: Video Xpression, Video Boost
    3. GT-A(Rage):
    4. GT-B(Rage II): 3D Xpression
    chipsets.

    These are the default register programming modes assumed by the driver for an unknown/new Mach64

  2. Enhanced Mach64 Supported Chipsets with acclerated 2D redefinition: To meet new bandwidth requirements necessary to support DVD, a small portion of the display interface defintion was extended resulting in new "Enhance Mach64" registers requiring programming support are introduced on RageII+ based cards

    1. Rage II+ DVD
    2. Rage IIC
    3. Rage Pro (aka Rage III)
    4. Rage LT-Pro

  3. Non Recoginition of Newer chips/cards that do support Enhanced Mach64 architecture: This is a dependency introduced by XFree86 due to their defintion of "default". The Xfree86 3.3 drivers look for Chip ID numbers (used in Plug and Play) and if the do not recognize the Chip ID, they will used this default standard Mach64 Chipset and not the Enhanced Mach64 Definition. This will break all chips (Rage Pro, LT-Pro, IIC etc) introduced after either the RageII+ or 3.3 X11 release . Two solutions exists: Either wait for new drivers that recognize the ChipIDs or employed in the new "ChipId" and "ChipRev" fields in the configuration file to tell the driver that the chipsets/cards are "Enhance Mach64" compatible.

1.2 Rage 128 Chipset Support

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:

  1. Rage 128 XFree86 X11 News
  2. 3.3.6 Release notes and more Rage 128 Info
  3. Rage 128 Setup
  4. Rage 128 and Linux Forum
  5. Download the X Server by cliking on here

The Rage128 cards are now supported in the XSVGA server can be manually configured in the XF86config file using the following configuration lines:

  1. Alter the link in /etc/X11/X
    ln -sf /usr/X11/X11R6/XF86_SVGA X
  2. Add the following lines to your /etc/X11/XF86Config File in the "Device" section:
    Section "Device"                                                      
        Identifier  "r128"
            ChipId  0x5246                                                      
        Option  "no_accel"                               
    EndSection
    
    The current release has a font corruption problem with text that can be worked around by turning off acceleration :(
  3. In the screes section, look for the SVGA screens and add the following, comment out the existing reference to poiint to the r128:
    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


2.3.3 Mach64 XF86Config Template File

#======================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