X-3DFX interview!

Introduction



Look's better than the original, doesn't it?

 

Recently, we had the opportunity to interview Paul Magee and Jonathan Trainor of x-3dfx (www.x3dfx.com). Who is x-3dfx? What is that little "x" doing in front of the "good old" 3dfx? Your questions will be answered thoroughly by the end of this article, I promise. The interview might differ a bit from the typical interviews you are used to (with PR people... so no questions on the NV20, that won't be answered anyway... sorry, Brian & Derek :)), since - as a programmer myself - I wanted to show you the inners of the lives of people, whom we tend to forget in the ongoing flaming for the best videocard: the writers of the drivers, the software development team. Enter x-3dfx:

Note: our questions are in italic, red. Also, do NOT start beating on 3dfx, x-3dfx, Paul or Johnny about this interview. We have interviewed two developers, all opinions herein are their/ours, and NOT 3dfx's or x-3dfx's!


 

Hirdetés

Márton: Could you tell us a little bit about yourselves: who are you, what have you done at 3dfx, what are you doing at x-3dfx now?

Paul: Hi, I'm Paul, until recently a Software Engineer for the 3dfx Belfast Software Engineering Division.

I originally was employed as a placement student (intern) for STB Systems, before the company was bought by 3dfx, and now am amongst the group of engineers in Belfast, Northern Ireland, who suddenly found themselves redundant :). I have worked on a broad range of products including the MVP Series of cards from STB (4 x Riva128s) for the professional market, STB Velocity 4400, 3dfx Voodoo3, Voodoo5, Rampage.

Johnny: I'm Johnny. My alias is bod, who was a children's cartoon character form the early eighties ;-). I was also a Software Engineer in the 3dfx Belfast office.

I joined the STB Systems Belfast office shortly after it opened about 3 and a half years ago. Initially I spent a lot of time working on the tools team, which involved mostly application work. I later transferred to Sustaining Engineering, where I was responsible for updating and maintaining drivers for the current products. Just before the closure of the Belfast office I had started the process of transferring to developer relations work.

Work at 3dfx

Márton: Could you describe an average day you had at 3dfx? You got up in the morning, had your coffee, headed towards the office, and (or... :)...

Paul: Average day. Mmm... Drive my mother to work ;) dead early in the morning and try to stay awake enough to make it to the office. Once in, stick on kettle and then walk to my machine and turn it on, and read my email until the kettle ready. By this early time in the morning (about 8 AM) there are only a few of us in the office so we generally have breakfast together. And then straight to work, grab the latest source from the source control in San Jose, using our 2 MBit internet link :). Possibly using Napster to brighten up my day. Lunch time consisted of searching the local records for vinyl versions of what I had downloaded...

Johnny: My average day... Get up early to beat the morning rush hour traffic on the way into the office. I hate nothing more than sitting bumper to bumper in traffic. When I arrive at work I normally read my email over breakfast and plan my work for the day. As Paul stated the first job involves getting the latest driver source for our source control database. There are usually quite a few changes made overnight because of the time difference between all the various offices.

My day then varies quite a bit. One day I may have to fix a driver bug that occurs in a popular game. Another day I could be helping a developer with problems in a game that is yet to be released. Other times I get to work on new driver features (such as support for the next version in the DirectX API). Lunch is always a time to get some fresh air and a change of scenery. Which means a trip to the chip shop or a workout in the gym (when I'm feeling health conscious).


 

Márton: If I am correct, you were working on drivers/3dfx Tools for the Voodoo cards. What exactly driver development consists of? Obviously, you have to create the interface for the Glide, D3D and OpenGL APIs. Are you given a certain task of, let's say, creating a module for the OpenGL drivers, or patching a certain bug in the last release, or...?

Paul: I can only speak from the 3dfx Tools side of things. The whole tools project was initiated by the Belfast office a number of years ago, when we were still STB. It's goal was to provide a simple interface to all driver tweaks across a wide range of graphics cards.

As the tools is a long term project, it is a tight team that has been working together for several years. Initially the project was specced, with everyone having a share in authoring the documents. The whole project was split into modules that were divided into the following areas:

  • driver controls,
  • driver interfaces,
  • common libraries for the tools,
  • and the tools themselves.

I worked on the full range, but I tended to specialise in the driver controls and driver interfaces.

Johnny: Sustaining Engineering involves fixing bugs and adding new features to legacy products (Voodoo2-Voodoo5).

All bugs are entered in a bug database with a full description of how to recreate the bug and how severe the bug is. Each entry in the database is then assigned to a particular engineer. All major bugs have to be fixed before each new driver release.

The driver development work is not as modular as the 3dfx Tools work. Generally development work can be split between Glide, OpenGL, Direct3D and O.S. In the Belfast office people tend to specialize in certain areas. I mainly work in Direct3D.

The Irish and the American 3dfx

Márton: How was the software development for 3dfx split up between you (the Irish and the American team, and between the 35 people (35, right?) in the Irish team)?

Paul: There were 19 developers and 6 Quality Assurance staff in the Belfast office. Of these developers, 1 was multimedia - developing drivers for the Voodoo TV, 6 were the (entire) tools team, and the rest were the Sustaining Engineering department. There are more engineers in the building that originally worked for STB, but they were spun off to form Enseo, for high end multimedia and video products.

All the Tools work was done in this office. For the drivers, the main core was developed by the engineers in San Jose and Dallas, with the Sustaining Engineers taking care of legacy products. By legacy I mean the Voodoo5! The core work and driver set was developed in the states and generally a while before release Belfast took control, fixing any bugs that were left.


 

Márton: What does driver optimization mean? How do you "tweak" drivers for maximum performance? You change certain core routines to assembly language, or change something algorithmically, or...?

(It was always a mistery to me, that 3dfx and nVidia both could release drivers that improved performance considerably, say, about +20-30% from time to time. How? How can someone do a tweak in the driver that yields this much performance, but was not possible to implement in the first release? Or is this due to the timeframe, that companies have to keep with product releases, in other words, is there no time to fully get to know the hardware before writing drivers?)

Paul: Most of the core 3dfx routines are written in assembly, to get the maximum performance possible, but the rest of the driver was written in C. As far as I know, only the most commonly called code segments were in assembly, as it would take too long to write the entire driver like this.

You are correct, a lot of it has to do with time. Coding large optimised routines in assembly take a lot time to write comparing to writing it in C. Some of the large performance gains have been a result of examining the code generated by the C compilers and spotting segments that could have been done better. There are also tools that were used by the performance team to help them in this analysis (VTune I think was one of them).

Johnny: In addition to what Paul has stated it is a fact that the more you work with a particular piece of hardware, the more familiar you become with it. A better knowledge of the hardware allows software developers to write better code for it, often with tricks and workarounds that improve performance. For example look at the first Playstation games that came out and compare them to the latest Playstation games. The game developers are using the same hardware but they are more familiar with it. I know that a few clever software tricks that significantly improved performance in later drivers.

It is also possible, with some research, to determine what are the most common code paths taken through our drivers when running games. Most time is spent trying to optimize these frequently used routines.


 

Márton: In what programming language(s) do you write drivers/3dfx Tools?

Paul: The drivers are basically coded in C, with some assembly. The Tools is a different matter. All the code is done in C++, initially making use of MFC, but this was dropped because of problems with multithreading. Other technologies involved in the tools are COM, with substantial use made of the Platform SDK for reference (I know I used it an awful lot).

Beta testing

Márton: How do you beta test your drivers? In a report, ID software said they prefer to test their code themselves, non-stop for days. Do you believe that bugs can be sorted easier by the programmers, or the users?

Paul: In Belfast we have a system in place where a developer will test their own code, until they are certain that it works completely, then we ask the lead of the QA department to assign a test engineer to give it a better test. This system works well, if a programmer has been working on a problem for a long time, he tends to get focused on that particular problem, often neglecting the other problems that may appear.


 

Dávid: Glide has been buried by online hardware sites several times. Does such an "old and tried" API have any chance nowadays, or it is the other way and those sites were right about taking Glide to the "software museum"?

If Glide is here to stay, why?

Johnny: You can get the best performance out of a Voodoo card using the Glide API. This is because the API was designed specifically for the hardware, it is "closer to the metal" than OpenGL or Direct3D. For an example of what I mean simply compare the performance of a game that supports the Glide API on a Voodoo card to the the same game on a card without Glide support (the Unreal games spring to mind). As far as mainstream games go, developers are moving to Direct3D and OpenGL because they can be used accross a range of video cards. Lets face it developers don't want to code for 3 API's when they can code for 2 or even just 1. Even if developers no longer want to provide a Glide option in newer games it still has its uses. Glide is still good if you want to produce a rapid prototype to see what a game or effect will look like. The code is simpler and shorter than the equivalent in other APIs (athough this is changing with newer revisions of Direct3D).

The Glide API is now open source. I think that it will live on in the open source community and continue to be improved for a long time to come.


 

Dávid: Why is the installation of Internet Explorer 4.01 SP1 required for the correct working of 3dfx Tools?

Paul: That update of IE contained updates for the windows shell that were necessary for some of the pages to function correctly. In particular, one example that springs to mind, is the tree control of the Advanced Features page.


 

Dávid: Let's stay at 3dfx Tools: as far as we know, the 22-bit post-filters for the Voodoo series can be reached by setting the "3D Filter Quality" to "High" and the "Alpha-Blending" to "Sharper". But it is rumored, that these post-filters are not used when doing 32-bit rendering on the V4/V5. What is the truth (why?)?

Johnny: Hmmmm ... not sure about this. The 22-bit filter was famously used on Voodoo3 cards to give an output of 22bpp even though the card only supported a frame buffer up to 16bpp. Many reviewers incorrectly compared the Voodoo3 and a competitor's card using screenshots because they failed to take the 22-bit post-filter into account. You need to use something like HyperSnap to get correct filtered screenshots.

I don't think it makes sense to use the same filter in 32bpp mode but I haven't checked what the driver does in this case.


 

Dávid: Undoubtly, 3dfx was in a very unpleasant financial situation (maybe they still are..?). Following the story of 3dfx it would seem logical that a big video card manufacturer's proposition could have been the solution. Much like 3dfx bought STB two years ago, a big manufacturer (for example, Creative) could have given an offer that solves the financial pressure. What is your opinion about this?

Paul: To be honest I know as much about the financial situation of 3dfx as the person on the street :(


 

Dávid: Do you believe that a company, as big as Creative, couldn't have considered this option very seriously?

Paul: I doubt that any other card manufacturer would step in and help 3dfx. Creative and any other companies that used to produce 3dfx cards got their fingers burnt when 3dfx bought STB. They have been making their money developing cards based on nVidia chips, so they may have been unwilling to take the risk. (I think personally that nVidia would have been able to put pressure on any company wanting to do this.)

Work at x-3dfx

Márton: Could you describe an average day you have at x-3dfx? You get up in the morning, have your coffee, head towards the office, and (or... :)...

Paul: Very little change :) Except that I now look after our web server and internal mail server and a load of other jobs that were generally done by the network administrators in America. But this is the same for everyone. We have all taken on extra responsibilities to get this project up and running.

Johnny: Don't really know what I will be doing a x3dfx yet :-(


 

Márton: I know you are in a hard situation regarding x-3dfx, mainly from the legal point of view. I would have a lot of questions about x-3dfx and your work there, but I do not want to be impolite, nor ask you a load of questions you are not allowed to answer. I am really interested in x-3dfx's plans for the future, a bit more precise mission statement that you had on the site on the first day :)))), who and why is legally battling with you, and a lot more.

Please tell us about x-3dfx as much as you can and are allowed.

Paul: x3dfx is basically a large group of developers who were geographically separated from the rest of the company. We have done a lot of work on the drivers and on 3dfx Tools. The working environment we have is superb, especially if you look at what we have been doing over the past few weeks. As a team we have pulled tighter together that we have ever thought possible. It is this we do not want to lose. In Northern Ireland there are divisions that you are probably aware of, and this office contains a superb group of highly skilled people from all sections of community working in a unique and special environment.



Would you like to work here? I would... :)

There are a lot of developers here who would not like to see their work in recent months go to waste, which is why there has been rumours of driver releases. This is a personal goal for many of the staff, even if as a parting shot. I'm sure no matter what happens a lot of the developers will work on support for the near future, even if it is in their own time.

(Editor's note: So, here it is. Those of you who were reluctant to find out whether there will be driver updates or not, now have it: Bingo :-))


 

Miscellaneous

Márton: I have been programming in ASM/C++ for several years myself. I am reallllly interested in source code, beta testing and anything else for your drivers. Will I ever get the chance of seeing something I couldn't even dream of :))? (Take the beta testing part more seriously :))

Paul: The simple answer is : "Wait and see". We may have a few aces up our sleeves. But there is nothing I can really say at this point :(


 

Márton: Releasing drivers for cards that are no longer produced is probably costly. How do you plan on compensating for this?

Paul: I cannot discuss this :( But I'm sure if we are going to do this, then it will have to be properly funded.


 

Márton: Should I get a Voodoo5 for my brother? :)

Paul: I just bought one for a friend, and he's really enjoying it. You might be able to pick one up cheap at a local car boot sale. The Voodoo5 is still an awesome card, and I know I'm not going to buy an nVidia card unless 100% necessary. (Editor's note: THAT'S THE SPIRIT! :))


 

Márton: Is there anything you would like to say to our readers?

Paul: Hope you had a good Christmas and have a very happy New Year. And cross your fingers that everyhing works out for x3dfx :)

On a personal note, I would like to mention what a great bunch of people 3dfx have been to work with. I was taken in as a placement student and from day one was treated like a fully qualified engineer. Which obviously meant I had a lot of work to do to catch up. It was a struggle, but it was enjoyable, and with a good team around to help me, I could not have done better.


 

Márton: Johnny, Paul, I would like to thank you for your support, and your ongoing enthusiasm. We wish you all the best at x-3dfx! I really, really liked 3dfx as a company, I still do, and the idea of x-3dfx is simply thrilling me to the bones. We are with you for one, good luck!

Our thanks to:
Paulmagee & bod x3dfx
of

(Márton Balog & Dávid Szőts (Parci & keopsz))

Azóta történt

  • VIA interview, 2002!

    Ready for some hot stuff? Want to know what's cooking in VIA's labs? Wanna break some NDAs? Well, we won't, but still, prepare for a cool interview with one of the big guys: VIA.

  • VIA interjú, 2002

    Az interjú, ami körbejárta a világot, most magyarul is olvasható. Alaposan megkínoztuk a VIA-t, a kérdések teljes spektrumát zúdítva rájuk.

  • Interview with XGI

    XGI is a new player in the GPU-field and the recently announced Volari series stirred quite a bit of attention. It's time to look behind the scenes.