Subject: xsrc/9327: XF86_SVGA corrupts glyphs on Rage 128 if accellerated
To: None <gnats-bugs@gnats.netbsd.org>
From: None <tls@cs.stevens-tech.edu>
List: netbsd-bugs
Date: 02/01/2000 09:55:54
>Number: 9327
>Category: xsrc
>Synopsis: XF86_SVGA corrupts glyphs on Rage 128 if accellerated
>Confidential: no
>Severity: serious
>Priority: high
>Responsible: xsrc-manager (NetBSD X11 bug manager)
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Tue Feb 1 09:54:01 2000
>Last-Modified:
>Originator: Thor Lancelot Simon
>Organization:
Stevens Institute of Technology
>Release: NetBSD-1.4M, xsrc as of 2000-01-31
>Environment:
NetBSD/i386 1.4M (ELF), ATI Rage 128 with 8MB (probes as
"Rage 128 (generic)" in X server output, 32 bpp color
System: NetBSD lamneth 1.4Q NetBSD 1.4Q (LAMENITH) #7: Tue Jan 25 20:22:00 EST 2000 root@lamneth:/usr/src/sys/arch/i386/compile/LAMENITH i386
>Description:
Running XF86_SVGA with a Rage 128 card results in normal display
of most graphics, but all fonts are corrupted. Small fonts seem
to have rows of pixels interleaved or missing; large fonts seem
to be missing the bottom several rows of pixels. Turning off
accelleration fixes this problem.
I have rebuilt the X server without optimization and the problem
did *not* go away. I also tried the X server from a standard
XFree86-3.3.6 source distribution, and again, the problem did
not go away.
>How-To-Repeat:
Here's my XF86Config file:
# File generated by xf86config.
#
# Copyright (c) 1995 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/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/"
# For OSs that support Dynamically loaded modules, ModulePath can be
# used to set a search path for the modules. This is currently supported
# for Linux ELF, FreeBSD 2.x and NetBSD 1.x. The default path is shown
# here.
# ModulePath "/usr/X11R6/lib/modules"
EndSection
# **********************************************************************
# Module section -- this is an optional section which is used to specify
# which dynamically loadable modules to load. Dynamically loadable
# modules are currently supported only for Linux ELF, FreeBSD 2.x
# and NetBSD 1.x. Currently, dynamically loadable modules are used
# only for some extended input (XInput) device drivers.
# **********************************************************************
#
# Section "Module"
#
# This loads the module for the Joystick driver
#
# Load "xf86Jstk.so"
#
# 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
# NoTrapSignals
# Uncomment this to disable the <Crtl><Alt><BS> server abort sequence
# This allows clients to receive this key event.
# DontZap
# Uncomment this to disable the <Crtl><Alt><KP_+>/<KP_-> mode switching
# sequences. This allows clients to receive these key events.
# DontZoom
# 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.
# DisableVidModeExtension
# Uncomment this to enable the use of a non-local xvidtune client.
# AllowNonLocalXvidtune
# Uncomment this to disable dynamically modifying the input device
# (mouse and keyboard) settings.
# DisableModInDev
# Uncomment this to enable the use of a non-local client to
# change the keyboard or mouse settings (currently only xset).
# AllowNonLocalModInDev
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 30
# Let the server do the NumLock processing. This should only be required
# when using pre-R6 clients
# ServerNumLock
# Specify 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
# To disable the XKEYBOARD extension, uncomment XkbDisable.
# XkbDisable
# 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:
# XkbModel "pc102"
# If you have a US Microsoft Natural keyboard, you can use:
# XkbModel "microsoft"
#
# Then to change the language, change the Layout setting.
# For example, a german layout can be obtained with:
# XkbLayout "de"
# or:
# XkbLayout "de"
# XkbVariant "nodeadkeys"
#
# If you'd like to switch the positions of your capslock and
# control keys, use:
# XkbOptions "ctrl:swapcaps"
# These are the default XKB settings for XFree86
# XkbRules "xfree86"
# XkbModel "pc101"
# XkbLayout "us"
# XkbVariant ""
# XkbOptions ""
XkbKeymap "xfree86(us_microsoft)"
EndSection
# **********************************************************************
# Pointer section
# **********************************************************************
Section "Pointer"
Protocol "Busmouse"
Device "/dev/pms0"
# 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
# or for the AceCad tablets which require 9600 baud
# BaudRate 9600
# SampleRate 150
# Emulate3Buttons is an option for 2-button Microsoft mice
# Emulate3Timeout is the timeout in milliseconds (default is 50ms)
Emulate3Buttons
Emulate3Timeout 50
# ChordMiddle is an option for some 3-button Logitech mice
# ChordMiddle
EndSection
# **********************************************************************
# Xinput section -- 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 "Xinput"
# SubSection "WacomStylus"
# Port "/dev/ttyS1"
# DeviceName "Wacom"
# EndSubSection
# SubSection "WacomCursor"
# Port "/dev/ttyS1"
# EndSubSection
# SubSection "WacomEraser"
# Port "/dev/ttyS1"
# EndSubSection
#
# SubSection "Elographics"
# Port "/dev/ttyS1"
# DeviceName "Elo"
# MinimumXPosition 300
# MaximumXPosition 3500
# MinimumYPosition 300
# MaximumYPosition 3500
# Screen 0
# UntouchDelay 10
# ReportDelay 10
# EndSubSection
#
# SubSection "Joystick"
# Port "/dev/joy0"
# DeviceName "Joystick"
# TimeOut 10
# MinimumXPosition 100
# MaximumXPosition 1300
# MinimumYPosition 100
# MaximumYPosition 1100
# # CenterX 700
# # CenterY 600
# Delta 20
# EndSubSection
#
# The Mouse Subsection contains the same type of entries as the
# standard Pointer Section (see above), with the addition of the
# DeviceName entry.
#
# SubSection "Mouse"
# Port "/dev/mouse2"
# DeviceName "Second Mouse"
# Protocol "Logitech"
# EndSubSection
# EndSection
# **********************************************************************
# Monitor section
# **********************************************************************
# Any number of monitor sections may be present
Section "Monitor"
Identifier "Mitsubishi Diamond Plus 71"
VendorName "Mitsubishi"
ModelName "Diamond Plus 71"
# 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.
HorizSync 30-69
# 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-130
# 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
# 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
# 640x400 @ 85 Hz, 37.86 kHz hsync
Modeline "640x400" 31.5 640 672 736 832 400 401 404 445 -HSync +VSync
# 640x480 @ 72 Hz, 36.5 kHz hsync
Modeline "640x480" 31.5 640 680 720 864 480 488 491 521
# 640x480 @ 75 Hz, 37.50 kHz hsync
ModeLine "640x480" 31.5 640 656 720 840 480 481 484 500 -HSync -VSync
# 800x600 @ 60 Hz, 37.8 kHz hsync
Modeline "800x600" 40 800 840 968 1056 600 601 605 628 +hsync +vsync
# 640x480 @ 85 Hz, 43.27 kHz hsync
Modeline "640x480" 36 640 696 752 832 480 481 484 509 -HSync -VSync
# 1152x864 @ 89 Hz interlaced, 44 kHz hsync
ModeLine "1152x864" 65 1152 1168 1384 1480 864 865 875 985 Interlace
# 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
# 640x480 @ 100 Hz, 53.01 kHz hsync
Modeline "640x480" 45.8 640 672 768 864 480 488 494 530 -HSync -VSync
# 1152x864 @ 60 Hz, 53.5 kHz hsync
Modeline "1152x864" 89.9 1152 1216 1472 1680 864 868 876 892 -HSync -VSync
# 800x600 @ 85 Hz, 55.84 kHz hsync
Modeline "800x600" 60.75 800 864 928 1088 600 616 621 657 -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
# 800x600 @ 100 Hz, 64.02 kHz hsync
Modeline "800x600" 69.65 800 864 928 1088 600 604 610 640 -HSync -VSync
# 1024x768 @ 76 Hz, 62.5 kHz hsync
Modeline "1024x768" 85 1024 1032 1152 1360 768 784 787 823
# 1152x864 @ 70 Hz, 62.4 kHz hsync
Modeline "1152x864" 92 1152 1208 1368 1474 864 865 875 895
# 1280x1024 @ 61 Hz, 64.2 kHz hsync
Modeline "1280x1024" 110 1280 1328 1512 1712 1024 1025 1028 1054
# 1024x768 @ 85 Hz, 70.24 kHz hsync
Modeline "1024x768" 98.9 1024 1056 1216 1408 768 782 788 822 -HSync -VSync
# 1152x864 @ 78 Hz, 70.8 kHz hsync
Modeline "1152x864" 110 1152 1240 1324 1552 864 864 876 908
# 1280x1024 @ 70 Hz, 74.59 kHz hsync
Modeline "1280x1024" 126.5 1280 1312 1472 1696 1024 1032 1040 1068 -HSync -VSync
# 1600x1200 @ 60Hz, 75.00 kHz hsync
Modeline "1600x1200" 162 1600 1664 1856 2160 1200 1201 1204 1250 +HSync +VSync
# 1152x864 @ 84 Hz, 76.0 kHz hsync
Modeline "1152x864" 135 1152 1464 1592 1776 864 864 876 908
# 1280x1024 @ 74 Hz, 78.85 kHz hsync
Modeline "1280x1024" 135 1280 1312 1456 1712 1024 1027 1030 1064
# 1024x768 @ 100Hz, 80.21 kHz hsync
Modeline "1024x768" 115.5 1024 1056 1248 1440 768 771 781 802 -HSync -VSync
# 1280x1024 @ 76 Hz, 81.13 kHz hsync
Modeline "1280x1024" 135 1280 1312 1416 1664 1024 1027 1030 1064
# 1600x1200 @ 70 Hz, 87.50 kHz hsync
Modeline "1600x1200" 189 1600 1664 1856 2160 1200 1201 1204 1250 -HSync -VSync
# 1152x864 @ 100 Hz, 89.62 kHz hsync
Modeline "1152x864" 137.65 1152 1184 1312 1536 864 866 885 902 -HSync -VSync
# 1280x1024 @ 85 Hz, 91.15 kHz hsync
Modeline "1280x1024" 157.5 1280 1344 1504 1728 1024 1025 1028 1072 +HSync +VSync
# 1600x1200 @ 75 Hz, 93.75 kHz hsync
Modeline "1600x1200" 202.5 1600 1664 1856 2160 1200 1201 1204 1250 +HSync +VSync
# 1600x1200 @ 85 Hz, 105.77 kHz hsync
Modeline "1600x1200" 220 1600 1616 1808 2080 1200 1204 1207 1244 +HSync +VSync
# 1280x1024 @ 100 Hz, 107.16 kHz hsync
Modeline "1280x1024" 181.75 1280 1312 1440 1696 1024 1031 1046 1072 -HSync -VSync
# 1800x1440 @ 64Hz, 96.15 kHz hsync
ModeLine "1800X1440" 230 1800 1896 2088 2392 1440 1441 1444 1490 +HSync +VSync
# 1800x1440 @ 70Hz, 104.52 kHz hsync
ModeLine "1800X1440" 250 1800 1896 2088 2392 1440 1441 1444 1490 +HSync +VSync
# 512x384 @ 78 Hz, 31.50 kHz hsync
Modeline "512x384" 20.160 512 528 592 640 384 385 388 404 -HSync -VSync
# 512x384 @ 85 Hz, 34.38 kHz hsync
Modeline "512x384" 22 512 528 592 640 384 385 388 404 -HSync -VSync
# 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 302 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
# Sample Device for Hercules mono card:
# Section "Device"
# Identifier "Hercules mono"
# EndSection
# Device configured by xf86config:
Section "Device"
Identifier "ATI Rage 128 (generic)"
VendorName "Unknown"
BoardName "Unknown"
#VideoRam 8192
Option "no_accel"
Option "power_saver"
#Option "sw_cursor"
#Option "hw_cursor"
#Option "dac_8_bit"
#Option "dac_6_bit"
# Insert Clocks lines here if appropriate
EndSection
# **********************************************************************
# Screen sections
# **********************************************************************
# The Colour SVGA server
Section "Screen"
Driver "svga"
# Use Device "Generic VGA" for Standard VGA 320x200x256
#Device "Generic VGA"
Device "ATI Rage 128 (generic)"
Monitor "Mitsubishi Diamond Plus 71"
Subsection "Display"
Depth 8
# Omit the Modes line for the "Generic VGA" device
Modes "1152x864" "640x480"
ViewPort 0 0
# Use Virtual 320 200 for Generic VGA
EndSubsection
Subsection "Display"
Depth 16
Modes "1152x864" "640x480"
ViewPort 0 0
EndSubsection
Subsection "Display"
Depth 24
Modes "1152x864" "640x480"
ViewPort 0 0
EndSubsection
Subsection "Display"
Depth 32
Modes "1152x864" "640x480"
ViewPort 0 0
EndSubsection
EndSection
# The 16-color VGA server
Section "Screen"
Driver "vga16"
Device "Generic VGA"
Monitor "Mitsubishi Diamond Plus 71"
Subsection "Display"
Modes "640x480" "800x600"
ViewPort 0 0
Virtual 800 600
EndSubsection
EndSection
# The Mono server
Section "Screen"
Driver "vga2"
Device "Generic VGA"
Monitor "Mitsubishi Diamond Plus 71"
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 "ATI Rage 128 (generic)"
Monitor "Mitsubishi Diamond Plus 71"
Subsection "Display"
Depth 8
Modes "1152x864" "640x480"
ViewPort 0 0
EndSubsection
Subsection "Display"
Depth 16
Modes "1152x864" "640x480"
ViewPort 0 0
EndSubsection
Subsection "Display"
Depth 24
Modes "1152x864" "640x480"
ViewPort 0 0
EndSubsection
Subsection "Display"
Depth 32
Modes "1152x864" "640x480"
ViewPort 0 0
EndSubsection
EndSection
>Fix:
A workaround is to use options "no_accel" in the XF86Config file,
but this is unacceptably slow.
>Audit-Trail:
>Unformatted: