© 1998 Michael J. Hammel

Off the shelf video cards: Choosing the right solution the first time.
Metro Link X Input Support

more musings...

Off the shelf video cards: Choosing the right solution the first time

Video cards have come a long way in the past 2 years. Back then a video card was considered top of the line if it handled generic 2D acceleration features and state of the art encompassed the first of the new generation of 3D accelerators. These days 2D acceleration is common place and an expected feature of video cards and 3D acceleration is not only more common but more standardized. In this article we'll take a look at finding off the shelf video cards, that is video cards available from your local computer retailers or by mail order, and how to match those cards with an X server.

A little background

X servers are the device drivers used in conjunction with video cards in order to display your windowing system under Linux. Unlike the Microsoft world, where each card has its own driver, X servers tend to support many cards with a single driver. For example, the XF86_SVGA driver from the XFree86 distribution supports many older SuperVGA cards plus the more advanced Matrox Millenium and Mystique cards. Xi Graphics AcceleratedX server supports all of its cards with a single server that uses dynamically loaded modules depending on which video card you happen to be using and have configured. The trick is to understand which X server to use for the video card you are using.

Since X servers work with more than one card, they tend to list which video chipset they support. This is because many cards use similar chipsets and it is difficult for X server vendors, who up until recently had to work independent of the video card manufacturers much of the time, to keep up with all the different video card product names. Video card manufacturers tend to use the same, relatively small, set of video chipsets for their own product lines so having a single X server to handle that entire line makes a little more sense than having a individual drivers for every card.

Why am I doing this?

Ordinary users don't really understand about chipsets, they only see the card names from manufacturers: ATI Graphics Pro Turbo or Hercules Dynamite, for example. Additionally, video card manufacturers are notorious for NOT specifying the chipsets they use in their cards. They also tend to try and hide minor video card differences with name changes and pricing differences - its called carrying a product line. Video hardware vendors are used to delivering device drivers with their hardware for the traditional desktop user, ie Microsoft users.

X servers are written by individuals or groups, outside the hardware vendors control, with chipsets in mind. The servers (we call them servers because of the underlying X Windows architecture, but they are still just device drivers) are distributed on their own, not with the video hardware. This is mostly because hardware vendors, in the past, really saw little market demand for doing the work on the X servers themselves. So external entities had to do the work on their own.

So video hardware vendors sell video cards based on product names without X servers and X server software is written and described in terms of chipsets and not specific video cards. Confused? You're not alone. So how does an end user resolve these different approaches and find a working combination of video card and X server? This article won't give absolute answers for all the cards available off the shelves, but it will help educate new users as to how things work and what to look for when preparing to make a new video card purchase.

I assume here that you're reading this with an intent to purchase a new video card sometime in the near future, or that you have done so in the recent past and are trying to figure out how to make it work under X Windows with Linux.

What's the deal with all the 3D stuff?

3D hardware accelerators are hot items. You can hardly find video cards on the shelves of your local retailers that don't mention some form of 3D support or features. But what exactly is 3D? And more important, do you need it?

3D cards often provide at least some of the following hardware acceleration features:

Fast computation of 3D objects.

> 3D objects are made up of any number of various sized triangles. Computing the position and size of these triangles is very computationally expensive. 3D video cards can help speed up those computations.

Texture map memory.

> You'll often here individual units of texture memory referred to as texels. These are used to speed up the mapping of images to flat surfaces which can be used as a trick for high speed motion. Its very slow to generate a tree, for example, from a large number of individual triangles than from one large flat one with a picture of a tree on it. Done properly you might not even be able to tell this trick has been used.

Z-buffering.

> The mapping of images into 3D space in video memory. If you think of 2D space as the XY axis of a coordinate plane then the Z axis would be used to show distance in 3D space.

Flat and Gouroud shading.

> The latter being what gives a smooth 3D apperance to a sphere, for example.

Shadow mapping.

> This allows programmers to associate shadows with objects without having to calculate the shadow at run time. Shadows are cast via calculations of how light moves in 3D and that can be very computationally expensive.

Bilinear filtering.

> A technique that reduces artifacts when small graphics are scaled up.

Many cards provide far more features than this as well, all of which have to do with taking an object described in 3D space and displaying it (and other objects) on a flat 2D monitor. Older 3D cards - those over a year or so in age - often had their own proprietary interface in order to access the accelerated features. This has been superceded recently by more popular interfaces (called API's for Application Programming Interfaces) such as OpenGL (or Mesa, a free implementation of OpenGL) or the 3Dfx Glide interface.

Making use of 3D hardware acceleration requires that you have

1. An X server or other video driver that can drive this card.
2. Application software that knows how to speak the API for that card. Usually this is an application that speak OpenGL/Mesa or Glide on Linux systems. The way this works is that the application speaks the API language only and doesn't care if 3D acceleration is done in hardware or software. The API, ie OpenGL or Glide, then understands how to use hardware acceleration. In some cases this will be by direct support from the X server and in other cases it will be by utilizing a separate driver for the 3D card.

There are also cards that support Microsoft's Direct3D API, an alternative to the OpenGL API. Don't bother with these cards if you are looking for 3D acceleration because as of now there are not only no drivers for them, there aren't any applications on Linux that speak this API language.

At the moment there are not that many OpenGL/Mesa applications that end users might be interested in. A few 3D modellers, such as AC3D or 3dom, use OpenGL but most of the support for OpenGL comes in the form of windowing toolkit extensions. These are developers tools and beyond the scope of this discussion.

3D video cards under Linux normally work in one of three ways:

1. mulitple cards using pass through cables
2. mulitple cards using multiple monitors
3. single card handling both 3D acceleration and standard SVGA (2D) acceleration

In the fist two cases you have two cards: your regular VGA/2D card and the 3D video card. You would have an external driver that runs the 3D card while using your X server to drive your regular video card. This is how the early support for Voodoo cards (Voodoo is a chipset from 3Dfx used in various 3D cards produced by other manufacturers) in Mesa worked (see the 3Dfx Howto). With pass through cables you had your regular VGA output passed through your 3D card which would pass it directly to its output port unless a 3D driver had turned the card "on". Once enabled, the 3D card would ignore the signal coming from the 2D card. This works fine most of the time unless your 3D application dies and doesn't tell the 3D card to start passing through the 2D signal again. In either case where multiple cards are used the standard VGA card knows nothing about the 3D card and works just like it always has.

If your X server supports the 3D card directly you can skip using two cards and run just the 3D card. In some situations you won't get the 3D acceleration but will get to use the generally faster 2D features of that card. And there are some X servers that will provide the 3D acceleration too, so you get the best of both worlds.

Hardware issues of 3D cards

You can run PCI or the new AGP buses with these 3D video cards. AGP is Intel's Advanced Graphics Port which allows faster throughput between the CPU and graphics cards.

Older cards used VRAM or EDO DRAM memory. Newer cards run the faster SVRAM or SGRAM. Not being hardware literate all I can say is that the SGRAM is reported to be much faster due to the way it is more closely tied into the video processor than the other forms of video memory. I asked Jeremy Chatfield at Xi Graphics and Paul Sargent at 3Dlabs for an explanation of these memory types. Jeremy provided the following answer:

Basic differences:

- VRAM & WRAM: dual ported (graphics engine & DAC have concurrent access) DRAM/EDO DRAM/SDRAM: single ported; GE or DAC SGRAM: packetised memory interface
- WRAM allows some graphics operations without the graphics engine (GE); e.g. some types of BLIT can be done without GE or host processor time. WRAM is part of the reason for the high speed of the Millennium and Number 9 boards that use it.
- DRAM is slower than VRAM because the GE can only write when the DAC is not reading memory. The higher the refresh rate, the less time the GE has. The effect is alleviated by EDO (Extended Data Out) which means that the output is held for some time, so that the GE can write while the DAC is still reading the EDO values.
- SGRAM & MDRAM are new forms of packetised memory that can allow higher speeds and lower costs. WRAM and VRAM are still important. Probably the fastest combination for a board would be WRAM or VRAM for display memory and SGRAM for the non-display (double buffer/Z-Buffer/texture etc)

Paul provided similar information but in quite a bit more detail.

Some 3D cards also offer NTSC output plugs so you can connect the card to a TV, presumably to get a larger physical screen (although at the same resolution). I've never seen this however so can't really say much about its use.

Do you need 3D acceleration?

For the most part, no. Outside of games or visualization software it doesn't come into play much for the average Linux user. For example, it doesn't speed up word processing, the Gimp, or POV-Ray renders (which are CPU and memory bound). If you *are* into games or need off the shelf 3D support for visualization software (ie realtime 3D rendering with OpenGL or Mesa) then it can provide significant increases in speed for rendering operations. The problem is that support for the 3D hardware acceleration is just beginning to show up within the X servers themselves and running concurrent video cards (one for 2D and one for 3D) is not for the technically challenged.

Instead, look to these cards for their future potential. Cards that support either OpenGL (which is likely to be around for some time) or 3Dfx's Glide API (which is quite popular with game enthusiasts on non-Unix platforms) are your best bet right now. Additionally, they're increased 2D acceleration will be a significant benefit to you in your day to day use.

What happened to 2D?

Nothing, its still there and basically everybody supports it now. 2D accerlation has to do with generic line drawing techniques, which speeds the drawing of windows for example. Any modern card - something made within the past 2 years - will support 2D acceleration. The advantage with newer cards is that they use faster memory and better acceleration for these 2D effects so ordinary use of windowing applications will look and feel much improved over older cards.

Most cards now come with 1M or 2M of memory which will get you resolutions of about 1024x768 @ 65K colors. But the cost of these cards has dropped drastically in the past year or so and getting a card with 4M of video memory will get you 1280x1024 @ 16 million colors, certainly good enough for most applications and reasonably affordable monitors. Go higher (more memory - 8Mb or higher) only if 3D work is of real importance to you or if you expect to have very large displays running at full 24-bit color depths.

What are currently the popular chipsets?

- 3Dfx's Voodoo, Voodoo2 and Permedia 2 (the latter being the low end set)
- NVidia's RIVA 128 and TNT
- Cirrus Logic's Rendition Verité
- Intel's i740
- Matrox G200/G100
- ATI has a number of chipsets but all are very similar. Some familiar ones are Mach64 and RAGE and RAGE II

There are lots of others for various other cards but these seem to have the most noise being made about them in the press and certainly seem to have the biggest presence in cards available at the local retail outlets.

What is on the shelves now?

Note that this is only based on what I found at three local retailers (although all three are national in scope) or via C|Net's Computers.com. Also, prices vary depending on the amount of video memory on the card, so just use these prices as guidelines. All prices are in US dollars. I've tried to list the chipsets for these cards if I could find them. Finally, these cards may be PCI, AGP or both - you'll just have to check on that aspect on your own.

Video Card | Chipset | Price
ATI All in Wonder | 3D Rage II | $125
ATI All in Wonder Pro | 3D Rage Pro | $151
ATI Xpert@Play PCI and AGP | 3D Rage Pro | $150
ATI Xpert 98 | ATI Rage Turbo | $90
Creative Labs Graphics Blaster Extreme, Professional Edition | Permedia 2 | $183
Creative Labs Graphics Blaster Extreme, Value Edition | Permedia 2 | $53
Creative Labs Graphics Blaster | RIVA TNT | $175
Diamond Stealth II S220 | Rendition Verite | $100
Diamond Monster 3D | Permedia 2 | $250
Diamond Monster II | Voodoo 2 | $250
Diamond Viper V330 | RIVA 128 | $130
Diamond Fire GL 1000 | Permedia 2 | $???
Diamond Fire GL 1000 Pro | Permedia 2 | $144
Diamond Stealth 2000 | S3 ViRGE | $???
Elsa GLoria Synergy | Permedia 2 | $120
Elsa WINNER 2000 / Office | Permedia 2 | $???
Hercules Dynamite 3D/GL | Permedia 2 | $180
Hercules Thriller 3D | Rendition V2200 | $109
Hercules Terminator 2X/i | Intel I740i | $80
Hercules Stingray 128 3D | Unknown | $160
Hercules Terminator Beast | S3 Savage 3D | $120
Jaton S3 Video | S3ViRGE/DX | $40
LEADTEK WinFast 2300 | Permedia 2 | $???
Matrox Mystique G200 | MGA-G200 | $150
Matrox Millenium G200 | MGA-G200 | $150
STB Velocity 128 | RIVA TNT | $150
STB Velocity 4400 | RIVA TNT | $200

Its interesting to note the differences in different cards from the same companies. For example, upon examination of the packaging for the Matrox Mystique and Millenium the only differences that I could find where that the Mystique runs at 230Mhz and has S-Video and Composite outputs whereas the Millenium runs at 250Mhz and does not have S-Video or Composite outputs.

Again, these are the off the shelf, "affordable" cards. Really high end cards can run into the $2000-$3000 range and higher and chances are slim that most of those cards have X server support yet. And there are plenty of other cards out there too - like I said, vendors love to change minor details and release it as a whole new product.

What do the various vendors currently support?

Ok, so now you know a little about what video cards are currently available and a little about the 2D/3D technology being used in them. How does this map to the available X servers? That depends on which server vendor you want to use. In this article we consider 4 vendors: XFree86, S.u.S.E (for their binary only versions that currently require non-disclosure agreements), Xi Graphics and MetroLink.

Of all the vendors, MetroLink made it the easiest to find card names from their web site. SuSE's site was pretty good about it too. Xi Graphics has a fairly decent lookup system, but they mix chipsets with board vendors and if you don't know what you're looking for it can be a bit confusing since they support so many variations. XFree86, although they have plenty of documentation, do not make it simple to match a card by name with a driver. Give them credit for writing great software - now they need someone to organize and collate all that documentation on their web site for the average user.

Red Hat has a hardware compatibility list, but its not obvious where to find it. Try "JumpWords" at the bottom of main page, choose "Hardware" and then the distribution you are currently running. These lists are by far better than any of the X server vendor lists because they tell you specifically which card goes with which server. Since Red Hat is shipping the XFree86 server this list is applicable to both S.u.S.E. and XFree86. Note: if you get to this list via the Red Hat main site (www.redhat.com) and you want to get a printable version of that page, select "No Frames" at the bottom of the page. The link below, however, will take you straight to the list.

> http://www.redhat.com/support/docs/rhl/intel/rh51-hardware-intel-11.html

Caldera's site does not have any such obvious hardware compatibility list. A search for "hardware compatibility" returns as the first entry a link to video card compatibility list for XFree86 - but the link is invalid! They definitely need to work on their site structure. Neither Slackware (via Walnut Creek's web site) nor InfoMagic are set up to provide this sort of user information.

XFree86

This one is actually the easiest of the bunch, but don't start your search on the XFree86 site to figure it out. Instead, take a look at Red Hat's online list of supported hardware. They have video cards listed there sorted by which server supports which card.

Using the set of cards listed previously, the following servers are expected to work (not all cards listed previously were listed on the Red Hat supported hardware list):

Video Card | XFree86 Server (all prefixed with "XF86_")
ATI All in Wonder | Mach64
ATI Xpert@Play | Mach64
Creative Labs Graphics Blaster Extreme, Professional Edition | SVGA
Creative Labs Graphics Blaster Extreme, Value Edition | SVGA
Diamond Viper V330 | SVGA
Diamond Stealth 2000 | S3V
Elsa WINNER 2000 / Office | S3V
Hercules Dynamite 3D/GL | SVGA (maybe)
Hercules Terminator 2X/i | SVGA (maybe)
Hercules Stingray 128 3D | SVGA
Jaton S3 Video | S3V (reported from one respondent)
Matrox Mystique G200 | SVGA
Matrox Millenium G200 | SVGA
STB Velocity 128 | SVGA
STB Velocity 4400 | SVGA (maybe)

You can, additionally, look on the XFree86 site to get more information. The following list is one I gathered from perusing the www.xfree86.com web site. Note that many of the listed cards are older models and not typically what you'll find on the shelves these days. Still, you may be able to purchase some of these by mail order.

Servers | Cards

SVGA

ATI: GAWonder series: VGAWonder V3, VGAWonder V4, VGAWonder V5, VGAWonder+, VGAWonder XL, VGAWonder XL24, VGA Basic 16, VGA Edge, VGA Edge 16, VGA Integra, VGA Charger, VGAStereo F/X, VGA 640, VGA 800, VGA 1024, VGA 1024D, VGA 1024 XL, VGA 1024 DXL, VGA 1024 VLB

Matrox: Millennium (MGA2064W) with Texas Instruments TVP3026 RAMDAC. It has been tested with 175MHz, 220MHz and 250MHz versions of the card with 2MB, 4MB and 8MB WRAM. Millennium II (MGA2164W) both PCI and AGP with Texas Instruments TVP3026 RAMDAC. It has been tested with 220MHz and 250MHz versions of the card with 4MB, 8MB and 16MB WRAM. Mystique with 170 and 220 MHz integrated RAMDACs (both MGA1064SG and MGA1164SG).

Mach8 series | Graphics Ultra, Graphics Vantage, VGAWonder GT (None of the 8514/Ultra and 8514 Vantage series is supported at this time)
Mach32 series | Graphics Ultra+, Graphics Ultra Pro, Graphics Wonder, Graphics Ultra XLR, Graphics Ultra AXO, VLB mach32-D, PCI mach32-D, ISA mach32
Mach64 series | Graphics Xpression, Graphics Pro Turbo, Win Boost, Win Turbo, Graphics Pro Turbo 1600, Video Xpression, 3D Xpression, Video Xpression+, 3D Xpression+, All-In-Wonder, All-In-Wonder PRO, 3D Pro Turbo, ATI-TV, XPERT@Play, XPERT@Work, XPERT XL
S3 | Orchid Fahrenheit 1280+ VLB STB PowerGraph X.24 S3 (ISA), Pegasus VL, Velocity 64 Diamond Stealth 24 VLB, Stealth 64 DRAM ELSA Winner 1000 ISA/EISA (``TwinBus'', not Winner1000ISA!!), Winner 1000 VL, Winner1000PRO VLB, Winner1000PRO PCI #9 GXE Level 10, 11, 12, 14, 16, GXE64 - PCI, Pro VLB, Pro PCI, Trio64, FX Motion 771
S3V (ViRGE) | Supports PCI hardware, ViRGE, ViRGE/DX, ViRGE/GX, ViRGE/GX2, ViRGE/MX, and ViRGE/VX, but no specific cards were listed. Newer support has been moved to the SVGA server.
P9000 | Diamond Viper VLB and PCI cards

This is not a complete list, but does cover most of the off the shelf cards you may run into at local retailers or on the Internet.

All binary versions of the XFree86 servers can be found at ftp://ftp.XFree86.org/pub/XFree86/current/binaries/<OS>
For example, Linux/Intel would be under ftp://ftp.XFree86.org/pub/XFree86/current/binaries/Linux-ix86/Servers/.
Additionally, a properly installed Linus system with the XFree86 run time system (which includes X11 libraries, clients and X servers) should contain the file /usr/X11R6/lib/X11/Cards listing the current known set of supported cards.

S.u.S.E

SuSE (www.suse.com), which is known primarily as a Linux distributor more than as an X server vendor, has a searchable database of graphics cards. From their main page choose "Hardware DB", then "Graphics Cards" from the scrollable list of topics. The DB search results are fairly informative but are titled in German. Don't let that throw you since the real info you're looking for is basically language independent when its displayed.

Since S.u.S.E. ships the XFree86 servers along with a few of their own servers (usually developed initially under NDA until S.u.S.E. can get them into the XFree86 distribution), I'll just list those servers for which I could not find an XFree86 server specifically listed by Red Hat or the XFree86 web site.

Card | Server
Diamond Stealth II S220 | rendition
Diamond Fire GL 1000 Pro | glint
Elsa GLoria Synergy | glint
Hercules Thriller 3D | rendition
LEADTEK WinFast 2300 | unknown - its listed but no server is given

Additionally, S.u.S.E. servers are based on XFree86 servers but with extended features. These updates will be or have already been incorporated into the next XFree86 releases.

XFCom_Matrox Matrox Millennium G200 AGP Matrox Millennium II (PCI und AGP) Matrox Millennium Matrox Mystique

XFCom_3DLabs server |  |

GLINT MX + GLINT Delta + IBM RGB 526DB:

> ELSA GLoria L/MX

GLINT 500TX + GLINT Delta + IBM RGB 526DB:

> ELSA GLoria L
> DIAMOND Fire GL 3000

GLINT MX + GLINT Delta + IBM RGB 640:

> ELSA GLoria XL

PERMEDIA + GLINT Delta + IBM RGB 526DB:

> ELSA GLoria S
> DIAMOND Fire GL 1000

> PERMEDIA-2:

> ELSA GLoria Synergy
> ELSA WINNER 2000/Office
> DIAMOND Fire GL 1000 Pro
> CREATIVE Blaster Exxtreme
> LEADTEK WinFast 2300
> Basically, most cards with Permedia 2 or Permedia 2v chipset (including AGP versions) should work.

After searching the XFree86 sites (www.xfree86.com, Red Hat and S.u.S.E.) I was still unable to find drivers for the following cards:

- Creative Labs Graphics Blaster
- ATI Xpert 98
- Diamond Fire GL 1000
- Diamond Monster 3D
- Diamond Monster II
- Hercules Terminator Beast

All of the S.u.S.E specific X servers can be found at http://www.suse.de/XSuSE/XSuSE_E.html.

Xi Graphics AcceleratedX

Unlike the architecture of the XFree86 project, the two commercial server vendors deliver what is essentially a single driver with support for all video cards handled through loadable object modules. The essential difference here is that with the commercial vendors you load their package and then configure based on card configurations without having to worry about which module to load. Its a one-step difference, essentially, since with XFree86 you need to know ahead of time which server to configure. With the commercial vendors there is really just the one server, but you still have to give it much of the same configuration information you have to give XFree86.

Unlike XFree86 and MetroLink, Xi Graphics lists the Chip Type used in cards by their technical numbers instead of their names. You can see this if, under Xsetup, you select a Graphics Board and then hit TAB. The small window that opens lists various card information, such as the ATI264GT Chip Type for the ATI All In Wonder card. Although graphics cards vendors don't always list the names of the chipsets (like 3D Rage or Rendition Verite), they are even less likely to list the Chip Type. Fortunately, the set of named boards in Xi Graphics lists is quite large and the need to find a specific chipset may not be quite so important.

The following cards, from the list of cards given previously, were found in the Xsetup tool under Graphics Boards for the 4.1.2 server:

ATI All in Wonder (3D Rage II)
ATI All in Wonder Pro (3D Rage Pro)
ATI Xpert@Play PCI and AGP (3D Rage Pro)
Diamond Fire GL 1000 (Permedia 2)
Diamond Fire GL 1000 Pro (Permedia 2)
Elsa GLoria Synergy (Permedia 2)
Elsa WINNER 2000 / Office (Permedia 2)
Hercules Dynamite 3D/GL (Permedia 2)
Hercules Stingray 128 3D
LEADTEK WinFast 2300 (Permedia 2)

The following cards were not found specifically by name, but they may be supported anyway using a configuration for a similar card. You need to check with Xi Graphics to be certain. Remember: these cards might only have minor differences from similar cards from the same vendor. However, since Xi lists these with Chip Types instead of chipset names, its not obvious that the card might work.

- ATI Xpert 98 (ATI Rage Turbo chipset)
- Creative Labs Graphics Blaster Extreme, Professional Edition (Permedia 2)
- Creative Labs Graphics Blaster Extreme, Value Edition (Permedia 2)
- Creative Labs Graphics Blaster (RIVA TNT)
- Diamond Monster 3D (Permedia 2)
- Diamond Monster II (Voodoo 2)
- Diamond Stealth II S220 (Rendition Verite)
- Diamond Viper V330 (RIVA 128)
- Diamond Viper V330 (RIVA 128)
- Diamond Stealth 2000 (S3 ViRGE)
- Hercules Thriller 3D (Rendition V2200)
- Hercules Terminator 2X/i (Intel I740i)
- Hercules Terminator Beast (S3 Savage 3D)
- Jaton S3 Video (S3ViRGE/DX)
- Matrox Mystique G200 (MGA-G200)
- Matrox Millenium G200 (MGA-G200)
- STB Velocity 128 (RIVA TNT)
- STB Velocity 4400 (RIVA TNT)

Additionally, Xi Graphics recently announced support for hardware accelerated OpenGL in a demonstration only version of their "Accelerated-X/OGL Technology Demo". Chips supported include the Number 9 Ticket To Ride IV, 3Dlabs Permedia 2, Intel 740, 3Dlabs GLINT Delta + MX, and SiS 6326. They also specify that Wacom tablets are explicitly supported along with Logitech Magellan (a "spaceball" device).

XFree86 does not currently support hardware accelerated OpenGL directly in their X servers. A release date for the official version of Xi Graphics hardware accelerated OpenGL has not been announced at the time of this writing.

Accelerated-X runs for $99.95 for US shipments, with upgrade pricing starting at $49.95. Xi Graphics can be found on the net at http://www.xig.com.

MetroLink MetroX

MetroLink has also announced hardware acceleration for OpenGL with their "Extreme3D" product. This product is expected to ship in December 1998, according to the press release at http://www.metrolink.com/extrem3d.html. However, I was told by Chris Bare at MetroLink that its more likely to be January 1999. The press report states that support will be available for the following chipsets:

- E&S REALimage(R) 1000, 2000 (Evans & Sutherland)
- GLINT GMX(R) 1000, 2000 (3Dlabs)
- Permedia(R) 2, 3 (3Dlabs)

Like Xi Graphics, MetroLink has the one server which supports many cards and chipsets through loadable modules. Since this architecture doesn't require I list matching servers to cards, I'll just list the cards and chipsets MetroX reports to support:

Card | Chipset

ATI 3D RAGE
ATI 3D RAGE II
ATI ALL-IN-WONDER PRO AGP
ATI ALL-IN-WONDER PRO PCI
ATI Graphics Pro Turbo
ATI Graphics Ultra
ATI Graphics Xpression
ATI Mach32
ATI Mach64
ATI VGA STEREO-F/X
ATI Winturbo PCI
ATI XPERT@Play
ATI XPERT@Play AGP
ATI XPERT@Work
ATI XPERT@Work AGP
Diamond Fire GL 1000Pro
Diamond SpeedStar 24X
Diamond SpeedStar Pro SE
Diamond Stealth 24
Diamond Stealth 32
Diamond Stealth 3D 2000
Diamond Stealth 64
Diamond Stealth 64 DRAM
Diamond Stealth 64 DRAM (SDAC)
Diamond Stealth 64 Graphics 2000 Series
Diamond Stealth 64 Graphics 2200
Diamond Stealth 64 VRAM
Diamond Stealth 64 Video 3000 Series
Diamond Stealth 64 Video VRAM
Diamond Stealth Video (SDAC)
Diamond Stealth Video 2000 Series
Diamond Viper (110 MHz RAMDAC)
Diamond Viper (135 MHz RAMDAC)
ELSA GLoria Synergy
ELSA Victory 3D
ELSA Winner 1000 TRIO/V
ELSA Winner 2000 AVI
ELSA Winner 2000 PRO/X-2, -4
ELSA Winner 2000 PRO/X-8
Matrox Marvel
Matrox Marvel II
Matrox Millennium
Matrox Millennium II AGP
Matrox Millennium II PCI (220 MHz)
Matrox Millennium II PCI (250 MHz)
Matrox Mystique
Matrox Mystique 220
Number Nine GXE64
Number Nine Imagine 128
Number Nine Imagine 128 Series 2
Number Nine Motion 531
Number Nine Motion 771
Number Nine Revolution 3D
Number Nine Vision 330
Orchid Kelvin 64
STB NITRO 3D
STB/Symmetric GLyder MAX-2

3D RAGE
3D RAGE II
3D RAGE PRO
3D RAGE PRO
Mach64
Mach8
Mach64
Mach32
Mach64
ATI 28800
Mach64
3D RAGE PRO
3D RAGE PRO
3D RAGE PRO
3D RAGE PRO
PERMEDIA 2
Western Digital 90C31
Cirrus 5430
S3 801
ET4000/W32p
S3 ViRGE
S3 964, Bt485KPJ135
S3 Trio64
S3 864, S3 SDAC
S3 864, S3 SDAC
S3 Trio64
S3 968, IBM RGB526CF22
S3 968, TI 3026-175
S3 968, TI 3026-175
S3 868, S3 SDAC
S3 868, S3 SDAC
P9000
P9000
PERMEDIA 2
S3 ViRGE
S3 Trio64V+
S3 968, TI 3026-175
S3 968, TI 3026-220
S3 968, IBM RGB528CF25
ET4000
ET4000
MGA Storm
MGA 2164, TI 3026-250
MGA 2164, TI 3026-220
MGA 2164, TI 3026-250
MGA 1064
MGA 1164
S3 864
Imagine 128
Imagine 128 Series 2
S3 868
S3 968
Ticket to Ride
S3 Trio64
Cirrus 5434
S3 ViRGE/GX
PERMEDIA 2

MetroLink's web site is at http://www.metrolink.com. Platform specific information for Linux can be found at
Intel: http://www.metrolink.com/metrox431-intel/cardlist4.3.1.html
Alpha: http://www.metrolink.com/metrox431-alpha/cardlist4.3.1.html

The MetroLink site currently lists their Metro-X Enhanced Server Set 4.3 for $39 and support it on both Intel/x86 and Alpha based Linux systems. With the price drop to $39, the upgrade pricing policies have been dropped by MetroLink.

The future

C|Net reported recently that there were some 40 or so computer graphics chip vendors in the 3D market today. This is far more than the industry can sustain and an eventual consolidation is inevitable. Furthermore, all three of the major CPU vendors - Intel, Cyrix and AMD - currently have plans for integrating graphics functions into the CPU itself. The graphics card world is changing fast and its not quite clear what effect this will have on end users. If you work in with computer graphics it will be necessary to keep abreast of upcoming changes.

A Final Word, or Words

There are a couple of things I didn't cover in this artle:

> MPEG - I don't know if X servers support hardware decoding of MPEGs, animated files that are highly compressed, yet but I suspect they don't. You can view these animations using software to decode the MPEG. This works, but software decoding will always be slower than hardware decoding.

> Laptops - Laptop vendors, at least in the recent past, didn't like to give out too much information on their video subsystems because it was one way to maintain a product differentiation with competitors. More support has come recently and you can expect to see better information on which laptops are supported under X Windows in the coming months. For now, check out the following pages: http://www.cs.utexas.edu/users/kharker/linux-laptop/

> NeoMagic chipsets are being used in many laptops these days. XFree86 (via either Red Hat and/or S.u.S.E) and Xi Graphics definitely have servers for these chips that are known to work on at least some laptops. MetroLink may as well, but I didn't check on this since I wasn't going to concern myself too deeply with laptop issues.

Its hard to keep up with vendor naming schemes and matching them to chipsets. Thats why X server vendors don't do it that often. Its a situation that has developed due to the fact the PC video cards grew up in a world without X Windows, and X servers grew up (originally, quite some time ago) in a world without PCs. Its the nature of the beast, you might say. But things are changing now. With the acceptance of Linux in the corporate world you will begin to see video card vendors show much more interest in the X Windows world. How that will equate to users matching video cards with X servers remains to be seen, but I expect life to get much easier in the next year.

Confused? Me too, but its not that hard to digest when you think of it this way: You'll buy a 3D card because thats what on the shelves at retailers and you'll either have or not have support for the actual 3D acceleration. As long as a driver exists for the card you at least be able to run X Windows and nearly all the applications available for it.

If you're looking for a cheap card you can still find them on the Net. Take a look at Computers.com under their graphics and sound section and do searches by company name (e.g. "matrox"). You'll find a number of older 2D boards listed with links on where you can buy them. These cards run well under $100, some for as low as $30.

Acknowledgements

I'd like to thank a number of people for their assistance in putting this article together. Paul Sargent of 3Dlabs was especially helpful, providing definitions and information on what I'm sure to him must be real beginner questions. Jeremy Chatfield provided similar help. Along with these two, I received helpful bits of information from Dirk Hohndel of S.u.S.E, many members of the Boulder Linux Users Group, Federico Mena Quintero and Miles O'Neal.

Dirk Hohndel (hohndel@suse.de) asked that I mention the outstanding support given to XFree86 by ELSA. Other companies that have provided support to them include ATI, Number 9, Matrox, and Diamond.

Sites for further reading:

3Dfx drivers in RPM format are available at: http://glide.xxedgexx.com/3DfxRPMS.html

The 3Dfx howto (http://www.gamers.org/dEngine/xf3D/howto/3Dfx-HOWTO.html) is an excellent document for information about using 3D hardware accelerated boards with Linux. It focuses on 3Dfx boards, but describes some of the hardware related issues that other boards will encounter, such as AGP vs PCI. Definitely a good read for anyone looking to get 3D hardware acceleration working.

Xi Graphics: http://www.xig.com
MetroLink: http://www.metrolink.com
XFree86: http://www.xfree86.org
S.u.S.E.: http://www.suse.com
Red Hat: http://www.redhat.com

Some good sites for hardware specific information (although likely to be somewhat Microsoft oriented):

- BluesNews.com
- 3dfiles.com
- tomshardware.com

Metro Link and X Input Support
As usual, I didn't get around to writing my Muse column till very late in the month last month. Because of this MetroLink didn't get the opportunity to supply information regarding their X Input support before my deadline. My apologies to them. Here is the information they provided, sent by Chris Bare:

> Sorry I didn't reply sooner, we had a pesky hurricane to deal with and were closed Thursday and Friday.

> Presently, we do not support any tablets through X Input. Our server supports X Input drivers as loadable modules and we have technical specs available so that third parties can write drivers. At present no one has attempted to port the Wacom tablet driver to our new architecture (BTW, this new loadable design will be donated to Xfree86 for their 4.0 release)

> Our configuration tool includes a touch screen calibration utility that works in graphics mode.

> Here's the list of X Input drivers we currently support:

> - Touchscreens
> - Carroll SFP1 Touch Screen
> - Carroll SFP2 Touch Screen
> - MicroTouch Touch Screen
> - ELO Graphics 2300 Serial Touch Screen
> - ELO Graphics 4002 Serial Touch Screen
> - Lucas/Deeco Serial Touch Screen

- 3D input devices

- SpaceOrb
- Magellan Space Mouse

The only thing I know of that can use [3D Input Devices] is GLUT, and even then you have to write (relatively simple) GLUT code to integrate them into glut programs. We also include sample code on our web page that shows how to access them from your own programs.

Here's the URL for info on the 3D devices:
http://www.metrolink.com/support/3dinput.html

© 1998 by Michael J. Hammel