The Great AGP rip-off!

So, you just went out and purchased for yourself a new AGP bus based video card to replace your aging 2Mb PCI adapter and you were disappointed with the results. This could be the reason why.

In order to understand what I'm about to reveal, first a little history lesson is required.

The 'traditional' PCI bus that we are all very familiar with is rated to a maximum speed of 33 MHz. (without overclocking). The PCI bus standard, however, allowed for an optional extension of the design (with a longer connector) which operates at 66 MHz. This optional extension of the standard was very rarely ever implemented by anyone, even though it offered a theoretical doubling of PCI performance. (I saw it once on a Gigabyte board, I think, but I've never seen a 66 MHz card, ever).

When the AGP standard was designed, very little was altered from the PCI standard (which AGP is based on). The main changes that AGP implemented were to finally recommend the utilization the optional 66 MHz extension offered by the PCI standard, and for some reason the connector was also changed physically (electrical signal-wise it's virtually identical). AGP also introduced a new host bridge standard that removed some of the bottlenecks between the AGP bus and system memory, which in itself accounts for some speed improvements on 3D cards, but really doesn't help things any for text or 2D graphics. (It was mainly put in place to allow fast updating of textures on 3D accelerators).

The downfall of this simplistic 're-hashing' of PCI to create AGP was that the standard was actually too flexible. Rather than making 66 MHz mode a requirement, it was left optional (just like in the PCI standard)!! What all this means that a hardware designer can take an existing PCI design and re-hash it to work on AGP in a very short space of time, with virtually no alteration of the design at all. Think about that for a moment. It may physically be an AGP card, but it doesn't have to support 66 MHz. If it isn't running at 66 MHz, it must be running at 33 MHz; the exact same speed as a PCI card!!! In other words, there is ZERO percent improvement over a PCI based adapter!!!

Granted, the AGP bridge may offer some improvement by way of bottleneck reduction, but this improvement is probably negated by the fact that the same software drivers, unaltered, are undoubtedly also in use. If the drivers aren't optimized for AGP, then there is a huge wasted potential since all the 'extra' features of AGP can't be called on: i.e. AGP 2x mode, sidebanding, fastwrite transfers, etc etc.

How I discovered this information

Using my PCI exploration program I was able to dump the configuration data for several popular AGP graphic cards. At the time I wasn't looking for reasons for lousy performance; rather I was just learning the programming interfaces and stumbled upon this information quite as a side-effect. It was not my goal to defame certain AGP cards, but since performance issues are always of interest to me, I couldn't help but create this page to relay my discoveries o the world.

Testing & results

By examining the reported configuration data, you can see if an unknown AGP graphic card supports the '66 MHz' and 'AGP Capabilities' features. Also, you can see if  the AGP bridge's Capabilities show AGP as enabled and a valid bus speed selected. Cheap cards that are nothing more than PCI re-hashes won't have any of those features or capabilities present or enabled.
 

Here is the screen-dump for my 'crappy' S3 Trio3D AGP card, which is no more than a PCI chipset stuck on an AGP PCB. Note that the PCI bridge clearly reports AGP as Disabled, the AGP card clearly doesn't report that it has 66 MHz or AGP Capabilities.

 Vendor 8086h Intel
 Device 7190h 82443BX 440BX/82443ZX 440ZX PCI-Host Bridge (AGP Enabled)
 Command 0006h, Status 2210h (capabilities list present, received master abort)
 Rev. 02h, SelfTest 00h, Header 00h, Medium Timing, Latency 40h, BusMaster
 PCI Class Bridge Subclass PCI-to-HOST Interface 00h
 Address 0 is a Memory Address (anywhere in 0-4Gb, Prefetchable) : E8000000h
 Capabilities List Information :
  AGP Capabilities, Version 1.0
  AGP Speed(s) Supported : 1x 2x
  FW Transfers Supported : No
  >4Gb Address Space Supported : No
  Sideband Addressing Supported : Yes
  Maximum Command Queue Length : 32 bytes
  AGP Speed Selected : None Selected
  FW Transfers Enabled : No
  >4Gb Address Space Enabled : No
  AGP Enabled : No
  Sideband Addressing Enabled : No
  Current Command Queue Length : 1 byte

 Vendor 5333h S3 Inc
 Device 8904h Trio3D
 Command 0007h, Status 0210h (capabilities list present)
 Rev. 01h, SelfTest 00h, Header 00h, Medium Timing, Latency 40h, BusMaster
 PCI Class Display Subclass VGA Interface 00h
 Subsystem ID 89045333h 86C365 Trio3D AGP
 Subsystem Vendor 5333h S3 Inc
 Address 0 is a Memory Address (anywhere in 0-4Gb) : E0000000h
 System IRQ 11, INT# A
 Capabilities List Information :
  Power Management Capabilities
  PM Capabilities : 0221h
  PM Status : 0000h
  PM Bridge Extensions : 00h
  PM Data Register : 00h



Compare the above report against a 'true' AGP card: an Intel740 chipset based card. Note that AGP is enabled on the AGP bridge, that the AGP card supports 66 MHz bus speed, that a valid AGP speed has been selected and the AGP card reports that it has AGP capabilities.

 Vendor 1106h VIA Technologies Inc
 Device 0598h VT82C598AT MVP3 System Controller
 Command 0006h, Status 0290h (capabilities list present, capable of back-to-back transactions)
 Rev. 04h, SelfTest 00h, Header 00h, Medium Timing, Latency 10h, BusMaster
 PCI Class Bridge Subclass PCI-to-HOST Interface 00h
 Address 0 is a Memory Address (anywhere in 0-4Gb, Prefetchable) : E3000000h
Capabilities List Information :
  AGP Capabilities, Version 1.0
  AGP Speed(s) Supported : 1x
  FW Transfers Supported : No
  >4Gb Address Space Supported : No
  Sideband Addressing Supported : Yes
  Maximum Command Queue Length : 8 byte(s)
  AGP Speed Selected : 1x
  FW Transfers Enabled : No
  >4Gb Address Space Enabled : No
  AGP Enabled : Yes
  Sideband Addressing Enabled : Yes
  Current Command Queue Length : 1 byte(s)

 Vendor 8086h Intel
 Device 7800h Intel740 AGP Graphics Accelerator
 Command 0007h, Status 02B0h (capabilities list present, capable of 66 MHz, capable of back-to-back transactions)
 Rev. 21h, SelfTest 00h, Header 00h, Medium Timing, Latency 00h, BusMaster
 PCI Class Display Subclass VGA Interface 00h
 Subsystem ID FFFF8086h Unknown
 Subsystem Vendor 8086h Intel
 Address 0 is a Memory Address (anywhere in 0-4Gb, Prefetchable) : E2000000h
 Address 1 is a Memory Address (anywhere in 0-4Gb) : E1000000h
 System IRQ 10, INT# A
Capabilities List Information :
  AGP Capabilities, Version 1.0
  AGP Speed(s) Supported : 1x 2x
  FW Transfers Supported : No
  >4Gb Address Space Supported : No
  Sideband Addressing Supported : Yes
  Maximum Command Queue Length : 32 byte(s)
  AGP Speed Selected : 1x
  FW Transfers Enabled : No
  >4Gb Address Space Enabled : No
  AGP Enabled : Yes
  Sideband Addressing Enabled : Yes
  Current Command Queue Length : 8 byte(s)
  Power Management Capabilities
  PM Capabilities : 0221h
  PM Status : 0000h
  PM Bridge Extensions : 00h
  PM Data Register : 00h


Conclusion

"If I wanted PCI level performance, I'd buy a PCI card. I expect better from an AGP card. An AGP card with no AGP features: surely that is very close to deliberate deception?". Don't let yourself be caught out! Use the PCI program to check out the potential cards you have in mind. Look for the following settings on the AGP bridge and AGP card:

If it isn't a 'real' AGP device, don't buy it.... Vote with your wallet and make those hardware vendors realise you won't accept their substandard crap! Complain to your reseller! Email the graphics card vendor! Post your discoveries to newsgroups! Make as much noise as possible... crap cards will develop a reputation if we all carefully do our research and avoid the rip-offs.

Hey, fellow programmers: Be sure to visit my PCI Information page to learn more about PCI programming & PCI related info!

Finally, I would like very much to hear from anyone who has anything further to add on this discussion. In particular, I would love to hear about cards you've tested and the results you obtained. I may be contacted by email here.



Back to Index