Return to BSD News archive
Path: euryale.cc.adfa.oz.au!newshost.anu.edu.au!harbinger.cc.monash.edu.au!nntp.coast.net!news.kei.com!uhog.mit.edu!news.mathworks.com!newsfeed.internetmci.com!howland.reston.ans.net!cs.utexas.edu!not-for-mail From: pmcdermo@cs.utexas.edu (Peter F. McDermott) Newsgroups: comp.os.linux.development.apps,comp.os.linux.development.system,comp.os.linux.x,comp.os.linux.hardware,comp.os.linux.setup,comp.unix.bsd.386bsd.misc,comp.unix.bsd.bsdi.misc,comp.unix.bsd.netbsd.misc,comp.unix.bsd.freebsd.misc Subject: Re: Why to not buy Matrox Millennium Followup-To: comp.os.linux.development.apps,comp.os.linux.development.system,comp.os.linux.x,comp.os.linux.hardware,comp.os.linux.setup,comp.unix.bsd.386bsd.misc,comp.unix.bsd.bsdi.misc,comp.unix.bsd.netbsd.misc,comp.unix.bsd.freebsd.misc Date: 26 Mar 1996 16:53:40 -0600 Organization: CS Dept, University of Texas at Austin Lines: 83 Distribution: world Message-ID: <4j9shk$odt@slappy.cs.utexas.edu> References: <4j21ph$crr@slappy.cs.utexas.edu> NNTP-Posting-Host: slappy.cs.utexas.edu X-Newsreader: TIN [version 1.2 PL2] Xref: euryale.cc.adfa.oz.au comp.os.linux.development.apps:13787 comp.os.linux.development.system:20206 comp.os.linux.x:27883 comp.os.linux.hardware:34657 comp.os.linux.setup:47713 comp.unix.bsd.386bsd.misc:337 comp.unix.bsd.bsdi.misc:2836 comp.unix.bsd.netbsd.misc:2616 comp.unix.bsd.freebsd.misc:16192 I'm glad that this thread has aroused so much discussion, but am even happier that it appears to have aroused even more awareness of Matrox's policies. Let me go over my reasons for originally posting the message: o To raise awareness within the Linux/*BSD* community that Matrox's hardware will not work on XFree86 any time in the forseeable future. o To make the public understand how arrogant the tech support people are at Matrox. o To bring about discussion that will hopefully get back to the powers that be at Matrox and somehow convince them that releasing documentation on their chipset is a good thing. I think the first two have been successful, the third, I don't know. I certainly have received no e-mail from Matrox. I'm glad that the Xinside people are following this thread. And there have certainly been quite a few thoughtful posts regarding the matter. Now let me get a few words in. The XFree86 team is a very dedicated group of individuals. David Wexelblat's (sp?) comments aside, they are pretty nice people. Maybe David was having a bad day. I can certainly understand his frustration with people suggesting that the solution is reverse engineering, when the real solution is convincing the manufacturers to release documentation. As has been pointed out by a number of people reverse engineering something as complicated as an accelerated graphics chipset is going to be quite painful. If I had a Matrox Millennium, I could probably reverse engineer it. I estimate that if I dedicated all of my time to the project, I could do it in 9 months. I am by no means the best programmer, so ymmv. But I'm certainly not going to be spending the next 9 months of my life porting Mesa to a card that will be obselete when I'm done. I have better things to do with my time. [Mesa is a free OpenGL clone] Now, as far as the reverse engineering stuff goes, let me relate a conversation I was having with a programmer who used to work for a company that reverse engineered the IBM VGA when it was new. Oh, when I talk about legality here it is US law -- after all, we are talking about US companies. Apparently, reverse engineering the gates on a chip is not illegal. They sent the actual VGA chip to Japan where a company stripped the silicon one layer at a time and mapped out the chip. From this they had basically the programming equivallent of a binary bump of the VGA logic. This was all perfectly legal. Now, the BIOS was a different story all together. The BIOS for the card is actual code and as such is protected under US copyright law, much like a book. So, they couldn't so much as look at the code and consider it clean-roomed. They ended up putting a tektronix logic analyzer on the bus, sending an outp(..) to one of the printer lines to trigger the logic analyzer to start recording, and then calling an int 10h (video) function to do something (say a mode set) and recording all of the bus transitions, and then sending an outp(..) to the same printer port to tell the logic analyzer to stop recording. It went like this: outp(...) -- tell logic analyzer to start recording mov ax, something -- setup the function number for the interrupt call int 10h -- call the video BIOS to execute the function (logic analyzer records all bus transactions) outp(...) -- tell the logic analyzer to stop recording So, they ended up with address and data information which they could then look at to determine what registers on the VGA chip were being programmed for a given int 10h function call. In a nutshell, they black-boxed the BIOS chip. All perfectly legal, none of it particularly easy. I hope this gives some of you an idea of just what's involved in a reverse-engineering effort. Oh, BTW, the Matrox 3-D solution is okay for now, but come Comdex time you'll be seeing a whole slew of 3-D chipsets. Most of them better than Matrox's current offering. And I know of at least one that will be making their documentation publicly available. Who's do you think I'll be using? -Peter McDermott pmcdermo@cs.utexas.edu