On 28 Nov 2002, Chris Kloiber wrote: >We all know Mike Harris knows his stuff, but here is independent >confirmation about the "Built by ATI"/"Powered by ATI" controversy we >had on psyche-list a few days ago (prior to Mike's retreat from the >unneeded abuse he was subjected to). This is specifically about ATI's >new closed drivers for the 8x00/9x00 series cards. I personally think >the difference between "Built" and "Powered" is more than just a PCI >subsystem ID, and that is probably why the current XFree86 drivers are >having some issues. BTW- I don't recommend video bios flashing, don't >come crying to me if you fubar it. > >http://seneca.me.umn.edu/pipermail/flightgear-devel/2002-November/013461.html Since you've forced me into this discussion now (thanks), I've had to briefly resubscribe to the list to straighten out a few things before the conspiracy theorists go wild. First of all, that entire post is totally and completely clueless, and has no technical content worthy of any more than a dismissive laugh. It rings of nothing more than a whiner who expects, no demands something, and doesn't at all put any thought into *why* what is supported is supported, and what is not supported is not supported. As I've stated before, boards that are not made by ATI, very well can be different than those built by ATI. They can however, be very much the same too. ATI is in business to make money, and just like Red Hat, they support the products that they produce, and they do not support the products that they do not produce, or if they do, they do so at their option. This ultimately means that yes, an ATI video driver produced by ATI for Built by ATI hardware, *might* work on other ATI hardware that is not Built by ATI. It also means that it might *NOT* also. ATI I presume at least has no control over how 3rd party vendors produce their clone boards with ATIs chips. It makes perfect and clear sense then that they do not want to get stuck supporting video boards that they DID NOT PRODUCE. ATI is not responsible for producing video drivers for anything other than the video boards that THEY PRODUCE, as they ultimately only can control how the boards work that they produce. By having the video driver check to see if the board it is potentially going to run on is one they support or not, they are checking the PCI ID of the card, as people have discovered. This is nothing new, and in fact is something I would expect of every hardware vendor who wants to not get stuck supporting hardware that they did not produce but which they provided the chips for. Yes, it is possible to flash the BIOS of a video card and override the PCI ID. Is it smart? No, it is incredibly stupid, even if it ends up seemingly working in the end. Why is it incredibly stupid? Because you risk damaging your video card. Duh. XFree86 has a config file option that lets you override the PCI ID, although I don't recall off the top of my head or not if it allows overriding the subvendor/subdevice IDs. If not (no I'm not going to bother checking), it would be quite trivial to override the PCI ID of the video card safely, by making a few slight changes to XFree86 source and recompiling. No careless BIOS flashing required. >Background: ATI's business model differs from NVidia in that they >manufacture and market their own circuit boards, not just the graphics >chips. Mostly. They actually *do* sell the chips to OEMs, who market >third party Radeon-compatible boards. In their marketing parlance, >their own boards are "Built by ATI", while third parties sell "Powered >by ATI" hardware. Most of the low end mail order cards are of this >type; ATI's hardware seems to be sold mostly off of store shelves. In >practice, this doesn't make much difference. While some OEMs might >skimp on parts or use cheap memory, most don't, and the hardware is >100% software compatible. Statements like "100% software compatible" are rather meaningless. Software doesn't ultimately talk to the video card itself. Software talks through several layers of abstraction, and eventually a video driver talks to the hardware. It is the job of the video driver to make the card work properly. Even two cards that are very similar may have differences, and those differences may even be extremely slight. Perhaps simply different RAM was used, requiring different memory timings. if the driver is not aware of this specific card which requires different memory timings to be programmed, and it programs it with memory timings for another card, then it might completely fail, or it might sortof work, or any other kind of random behaviour. In short, if the driver is not 100% aware of the specific video card, then it might or might not be able to work with that card. XFree86 has a built in list of PCI IDs of supported hardware. Every time a new video card comes out with a new PCI ID, even if it is 150% identical programmatically, it WILL NOT WORK because XFree86 is unaware of the card and so it can not autodetect it and pass the ID on through the driver so that the proper conditional codepaths are executed. To add support for one of these cards that are identical programmatically, it is a trivial process that takes about 30 minutes or so, to go through the various parts of the X source code and add the PCI ID and then go and update the driver's conditional codepaths with the define for that ID. If any slight changes are needed for this new chip, then the driver developer can special case the chip by using its PCI ID in order to create a new codepath just for this new chip. That is basically how things work for VENDOR:DEVICE ID combination, however the boards that are made by _other_ vendors using the same chips, while programmed almost identically, are not always 100% identical. This isn't just an ATI thing, this is for ALL video hardware. These types of boards have the SUBVENDOR ID of the vendor who made the _board_. The SUBDEVICE ID will be practically anything, and is used to identify that subvendor's specific model of that board. XFree86 for most cases ignores the subvendor and subdevice IDs. It does so because most often, boards made by other vendors often work ok, and if they do not, it is nice to get bug reports so that perhaps they can be fixed. What this means, is that if someone purchases *any* ATI video card, wether it is a Built by ATI board, or a Powered by ATI board, XFree86 doesn't differentiate between them. Powered by ATI boards, will be treated as Built by ATI boards. Since this is the case in XFree86 stock drivers, I need to note that *MANY* people using Powered by ATI boards have reported that they do not work or that they have one problem or another with their board in XFree86. This does not mean that all of these "Powered" boards are junk, nor does it mean that they wont work either. It just means that no effort has been made to MAKE them work because nobody who develops the drivers HAVE these boards, nor know what particular differences they MIGHT have. And also, each of the clone board makers of course are going to be different from each other. I've had confirmation about many boards that DO work, and work just like any official ATI board. I plan on putting together a list of the working boards, and a list of the non-working boards. In the future, hopefully our config tool will autodetect these Powered by boards, and rather than showing them as "ATI Radeon foo", display them as "ATI Radeon foo (Sapphire)" or whatever the actual box says on it for the card. That would allow us to have custom configuration defaults for these boards that might differ from an official ATI board, and possibly allow us to get more of them to work. To do that would require getting the subvendor and subdevice IDs of the boards, which can be a very tough thing to do without people submitting them. The problem then becomes "how to make the ones that do not work function properly". That can be trial and error, poking in the driver source, or possibly talking to ATI and/or the 3rd party vendor for info. Or even a driver update submission from one of the above. ATI just recently made 2 patch submissions to XFree86.org, in which they have modified a few things in the open source Radeon driver to help provide better support for "Powered by ATI" hardware, as well as support for the new Radeon 9500, and various other things too. That is not yet in CVS, nor in our RPMs, but Kevin plans on committing the changes soon. So yes, ATI does try to support as much ATI hardware as possible. Differences in *some* of the Powered by boards that cause XFree86 to not work, also cause _me_ to get bug reports. Bug reports that I for the most part can do jack squat about, as I do not have the specific problem board, nor the info to make it work, and I certainly can't pull it out of a hat. Nor can any of the other developers really. It's a case of hit and miss, trial and error, or some vendor submission who does know how to make things work. Ultimately it would be nice if the board vendor produced patches and sent them to XFree86.org. Ultimately, it is THEIR HARDWARE, and THEIR responsibility to get it working on various operating systems that they want to support. Not doing so is indicative that they do not want to support that platform. So this guy in the email post is suggesting that people not purchase ATI hardware, when ATI *IS* supporting the hardware that they produce, and the idiots expecting the card they bought to work, bought one ATI did NOT produce. Duh. The proper vendor not to purchase cards from, is the one who produced the card that has no support. This is NO different from Red Hat supporting Red Hat Linux, but NOT supporting clone CDs of Red Hat Linux named something else and sold for $5 over the net. Why *should* we support a clone of Red Hat Linux that we made $0 off of? ATI did not sell their product (the chips) to the person who bought the board. They sold the chips to the vendor who made the board. The vendor who made that board is responsible for making it work *wherever*. >ATI's windows drivers have always worked equally well for OEM >hardware and "Built by ATI" cards. Windows is not a worthy comparison. Windows has a lot of support for a lot more things that are not supported in Linux, and Windows is where the cash cow is. Why do ATIs Windows drivers work on most cards? Probably because the "Powered by" vendor paid ATI to put support for their boards into the ATI drivers. Or perhaps some other business deal. Do those Powered by vendors also care about Linux? Did they make arrangements with ATI to support their hardware in Linux also? >Except their Linux drivers. For reasons unknown, the recently >released drivers do an explicit check to see that they are >running on "built by" hardware, and exit if they find a "powered >by" card. For reasons unknown, yes, but not reasons that are hard to guess. Throwing conspiracy theories away, ATI probably has no obligation to support the "Powered by" hardware. Who knows, these drivers are BRAND NEW, perhaps ATI is making arrangements TO support the other hardware. Has anyone ever even remotely entertained that thought? Considering ATI just submitted some fixes to XFree86.org to support powered by ATI hardware, it seems reasonable they do not have any conspiracies to screw over people who have not bought from them directly. It only makes sense that they do not _currently_ support those boards for _GOOD_REASONS_. >Guess which one I bought? Not that I could tell -- I ordered a >"ATI Radeon 8500LE 64MB" card from a mail order vendor. There >is no information in the distribution channel to indicate what >you are getting. And that is not ATIs fault. Complain to the vendor who sold you the card. For what it is woth, all "LE" cards are Powered by ATI. ATI doesn't make any of them themselves. If I'm not mistaken, ATI even has a webpage dedicated to explaining the LE boards, or they did at one point anyway. >Nor is there any documentation on ATI's site that the linux >drivers only work on "pure" hardware. So I'm SOL. ATI clearly >says on their website that Radeon 8500's are supported, but in >reality most Radeon 8500 cards are *not* supported. Someone >lied to me. No, nobody lied to you. At the absolute worst case, documentation isn't as detailed as possible. A lie, is knowingly providing false information, or knowingly trying to mislead someone. Why would ATI try to do that? What benefit would it gain them AT ALL? It would serve NO useful benefit to them, and therefore one can logically conclude that ATI has not lied to anyone. Much more of improper research, or simply someone not finding out enough information on what they were purchasing beforehand, and finding out later that it wont work, and then being angry and frustrated, and looking for a scapegoat to channel their frustration into. Just return the damn card, and replace it with an official ATI card. ATI has done nothing wrong here. Or, POLITELY contact ATI, or the vendor who made the board, and ASK them the story. Why assume negative things that are likely incredibly false, and in fact just stupid and childish? Seriously. Does this guy think that someone at ATI is sitting in a room with a pointy chair, pinky crooked to his tooth and saying "I've got an evil plan! Lets make drivers for Linux and not support Powered by ATI cards! Just think at the money we'll make! Muahahahaha!". It would seem this is the thought process going on in this guys head anyway. >But nothing is ever unfixable. Remember that the hardware >really is software compatible (the DRI drivers and Windows >drivers don't care what they are running on). Again, "software compatible" is meaningless. The DRI drivers very much DO care what they are running on. Put in a card that the PCI ID is not known, and it doesn't work. Simple as that. The only difference is that XFree86 tries to enable the drivers on anything that *might* work. That does not mean that it *WILL* work, and in fact, some of those "Powered by" cards do NOT work. "software compatible" does not equal "driver compatible" and anyone who thinks otherwise is simply not a driver author and not clued into the concepts. Windows drivers are subject to the exact same as well. The difference being that in Windows, the market is 1000000 times the size of Linux, and so someone has done the work already in Windows to make these cards supported. Duh. It just hasn't occured in Linux *yet*. Yes, they MIGHT work on SOME cards, but as I said above, not all. >It turns out that the "OEMness" of the card is stored in the PCI >subsystem ID, and that value is defined in the card's BIOS code. >And the BIOS can be flashed. Yes, and that is stupid, see above. [SNIP] >In summary: unless you are 100% sure that your card is a "built by" >variant (which basically means that you have to have purchased it in a >dark red ATI box at a retail store), are happy with gray market stuff >like BIOS reflashing, or absolutely *must* have one of the >super-high-end super-expensive 9700 cards (for which no alternatives >exist), stay away from Radeon cards for Linux. Why? They work fantastically. Purchase a card that is supported, and it will work. Purchase a card that is not supported and it will not work. You can bitch and whine about it of course, but ultimately it is your responsibility to purchase hardware that is supported. GO to the vendor who made the video board's web site, and look to see if it is supported on Linux. If not then you purchased an unsupported board without doing your homework first. Also look to see if that vendor has drivers for their boards for Linux. No? Then don't buy one from them. In contrast, ATI produces video boards, and does have Linux information on their website, and drivers for the boards that they produce. >The technical decision to cut off perfectly working hardware is >pure idiocy, and the marketing scheme that makes it impossible No, the decision is quite sane and rational actually. In this case it is the consumer who is the idiot IMHO. >for a consumer to tell the difference between supported and >unsupported products is downright dishonest. Dishonest? How is ATI doing anything dishonest? They did not produce the product that you bought. They produced an ingredient of that product. If you go to the vendor who made the card, then you will find the information that you seek. >It's not that the drivers themselves are poor quality, or that I >think ATI is actually trying to abuse its customers. Well that is because you're frustrated because you got burned from not doing your homework ahead of time, and are looking for a scapegoat to remove the blame from yourself. Conspiracy theories are a good and common way to do that. >But this driver release is just not good. I have not personally tried the binary driver yet, and so can't comment. I do however have Built by ATI hardware, so the driver is at least made for the hardware I have. >Between them, the ATI marketing, engineering and manufacturing >people have turned a fairly standard software release into a >bloody, frothing mess. Give them another release to fix the >release stupidities (or at least document their hardware >limitations) and hopefully things will get better. There aren't really limitations, there are board implementation differences on some of the Powered by ATI boards, and those differences were done by the peopple who made the board, and not by ATI. If I were ATI, I would simply not allow people to make boards with my chips. That solves this problem completely. >And the competition isn't even close, anyway. Except at the >very high end, the NVidia hardware and drivers are just as fast, >just as cheap, and (most importantly) just work. Nvidia's drivers have been around in Linux for several years longer also. Did they support every 3rd party board when they were new on the scene? I'll wager to bet that they did not. I will also wager that as ATI comes out with new Linux drivers that they will support more and more of the powered by ATI boards also. >I'm going to give the DRI stuff a whirl tonight. It lacks a lot >of the fancier hardware features (programmable shaders), but >FlightGear doesn't use them anyway. After last night's >experience, I'd honestly give up 10-20% in performance to not >have to use the ATI dreck. If people like this put a bit more thought into things ahead of time, did some research head of time, and actually contacted their hardware vendors directly, then perhaps they would not have so many problems, and perhaps they would even be told exactly why whateverr is not supported is not supported, so they don't need to come up with some off the wall idiotic conspiracy theories on their own to cover up their own poor decisions. The problem here is not ATI. ATI is an extremely Linux/open source friendly vendor, and does a LOT to support XFree86 on Linux. Not once in the above trash article did I see mention that ATI was contacted for comment directly before jumping to rediculous rampant conclusions. I will personally contact ATI tomorrow, and point them to this childish article. They will most likely be quite surprised IMHO, and I'm sure that they will also likely address any concerns that their customers have in one way or another. IMHO, in order to help prevent rants like this guy just spewed, they could perhaps mention what cards are explicitly not supported currently, and also perhaps why they aren't, and possibly what if asny plans they have of doing so in the future. This flightgear guy article is nothing more than an upset consumer looking for someone else to blame for his own shortsightedness. My $0.02 -- Mike A. Harris