A couple of days ago I sent Rudolf Cornelissen a couple of questions, mainly to ask about the two new GeForce cards nVidia has just released, the FX 5700 and FX 5950. I took the opportunity to ask him a few additional questions as well, specifically involving his nVidia driver, and here is what he replied.

Rudolf among others tells about what the big problem is supporting the GeForce FX 5600 card, his difficulcies implementing 2D-acceleration, and he even gives some helpful tips further down the interview. Hit read more. IsComputerOn: What are your first impressions of the new GeForce cards. Are you surprised by the performance they offer?

Rudolf Cornelissen: Hey! Thanks for the update on those cards, I didn't even know they existed up till now! I don't know anything about their performance. For me as a BeOS user, it's not that important either. As long as the card in use is reasonably fast, has overlay and acceleration, TV-out and dualhead, and DVI, you don't hear me complain. Though I don't mind having a card that I know potentially could do 3D.

You see, in the old days I always wanted a PC that was as fast as could be. These days I don't find that very important anymore because there's an abundance of speed in systems anyway. As long as you use a lightweight OS like BeOS of course. My main goals now are low power consumption and low noise(!).

ICO: You currently already have a list of things planned for the next release, obviously including trying to get your hands on an FX 5600 to get that one supported as well. In this respect, what is the priority of supporting the new cards? Will they be added to the bottom of the list, or do you intend to add them later on?

Rudolf: Well, to be honest, I'm a bit afraid of destroying my two computers with changing out graphics card all the time: Those connectors just weren't made for that. This, and the fact I don't have those cards - nor will I buy them - means I probably won't be able to make them work if they are not compatible, more or less, with the rest of the nVidia cards out there.

On the other hand, most functions in the FX 5600 seem to work, based on the frequent emails I receive. It's just that the video doesn't make it to the screen apparantly. nVidia must have changed some tiny bit in that card on me, or it's just a register that I don't hit but that's programmed differently in those cards' BIOSes. It should be fixable, or at least I hope it to be, provided I get my hands on such a card for a few hours or so.

Those two new cards might work. They also might not. We'd just have to try that, by finding someone with such a card, and asking him - or her - for the card ID, and then recompile the driver for it. You see, those IDs are hard to come by in another way. If those cards are not compatible to the old ones, we'd have to wait for someone in the Linux community to do the reverse engineering. While in theory I could probably pull that off too, it just costs way too much time to be fun to me. Besides, I'd better spend my time on other things which serves more people ;-)

ICO: In your latest news item, you've also been mentioning you will probably post the next driver version on BeBits as well. What were your reasons not to do that before?

Rudolf: I wanted to make sure the basic functions are up and running without trouble on most systems so I don't get overwhelmed by bugreports, or create a negative buzz about the driver; about my work. By adding 2D acceleration and getting a limited number of bugreport after release, we've reached that point I think. Also I sort of know now where the weak spots are, so I know which sort of card types, along with technical features, need more work. This way I won't be surprised much I expect.

ICO: Figuring out how the card works without having the specs is simply a tough job. Have you run into problems yet that you certainly cannot solve without nVidia finally helping you out?

Rudolf: The toughest part has been done by people in the Linux community by probably reverse engineering Windows drivers. The knowledge gained by that work has been implemented in several universal Linux drivers like Xfree, and a few specific ones, such as NVTVout and rivaTV.

What I did was reverse engineer all those drivers, partly or competely, to find out the register level specs of nVidia cards anew. Alongside I used my own work on BeTVOut to set up some basic functions, and I will use that to add TVout support to the driver later on as well. Everything has been placed in the code of the openBeOS Matrox driver so it in fact became the nVidia driver. So you'll find no copies of Linux sources in the BeOS driver. In fact, some things are ordered neatly now while they where put at "random" places in the Linux code. Also some usually minor errors existing in Linux drivers do not exist in the BeOS driver because I tested a lot of stuff to find out the actual purpose of registers sometimes hardcoded in Linux drivers. Also, some stuff is implemented that did not exist in the Linux drivers I looked at, by combining other stuff. On the other hand of course, I might have introduced my own mistakes as well..

Well, you get the picture I think... Things that cannot be solved are things I cannot test myself and some things that have never been done before, like coldstarting the cards.

ICO: Everyone gets discouraged to continue a project at some point, and I can imagine that in your case that isn't any different, especially because you get no support from nVidia at all. Or do I see this wrong and do you actually enjoy figuring much out on your own?

Rudolf: Well, I must admit I got a bit discouraged trying to setup 2D-acceleration, as this engine is just so huge to initialize. So there could be so much going wrong here, and I could have misinterpreted the Linux example I was looking at. You just keep on testing, changing and trying until you get it going... And what you have got to do is: Never give up, Never surrender!

It's a challenge indeed sometimes. Though BeOS developers really need to check out on the net for opensource Linux projects for the hardware they are trying to get going. It's worth it. You can learn a lot about the register-level specs you need that way. And make sure you don't stop once you find one driver. There are bound to be nVidia drivers. Linux is not that well organized apparently ;-)

ICO: In the future, do you expect the nVidia guys will eventually notice your work and grant you some specs after all? Or are these false hopes?

Rudolf: I don't really mind if they don't notice my work. It remains to be seen if they like people trying to create drivers for their hardware or not. And I am certainly not going to ask for specs.

ICO: Disregarding nVidia's support, what would be your "wet dream" if we'd be talking about the nVidia driver?

Rudolf: Well, it's probably a bitch to get going, but I'd have to say it would be fun trying to setup basic 3D acceleration for these cards. Provided I get a lot of flexible help from the OS side of things.. and demo-apps I can use. I have to admit I might never find the time to complete this particular feature, if ever started, anyhow...

With "flexible" I mean the OS should support drivers to only do what absolutely needs to be done by the driver. The rest should be done by the OS itself. An example of this would be Transform and Lightning. If a driver does not support that, the OS should do that itself. Apps wouldn't notice the difference that way, apart from the speed difference, and I would be able to focus on rendering only, and add hardware T&L at a later date, in case that turns out to be possible without specs or knowledge on my part for instance.

Of course, you are listening to a beginner in 3D here so I might be babbling. I am trying to gain more knowledge on this generally driver-specific stuff, by reading as much as I can about it in the little time I have left alongside actual development and real life.