
During
BeGeistert 014 I had the pleasure of chatting with
Rudolf Cornelissen via BeShare so he could fill us in on what is new with his nVidia driver development. Quite a lot as it turns out.
Despite the enormous amount of time Rudolf spends on development work, he still finds the time for his family, which in my humble opinion is truly the most important thing in anyone's life, no matter what anyone tells you otherwise. :P
Read on, and enjoy a little insight into Rudolf's life and work. (Picture is Rudolf's daughter.)
What's new Rudolf? We've been watching the great progress on your blog and you are finally starting to hammer out some serious patches to your driver, such as 3D support. When is the next release coming, and what does it bring?
Hi there chris. Wow. I'm sorry, but I can't give you an estimate on a date for a new version. Probably you will get a modifed, but old Mesa version at first with a hardcoded nVidia 3D accelerant in it. Messy and all, just proof of concept. It will probably accelerate for instance the teapot and Quake2 by a factor of about 5 compared to software rendering.
It will probably work on TNT1, TNT2, GeForce256, GeForce2 (MX, Ti, GTS) and GeForce 4MX. No other types. It looks like there is engine initialisation code (and info of course) missing.
It will work in PIO mode which means, you have to tell the 2D driver to use that mode as well since they interoperate with each other (2D and 3D driver).
Once we have this, I will next try to add support for newer cards and DMA mode. If DMA mode is going to work, speed will probably go up again with another factor of 5. (Don't hold me to it though.)
I expect that the first version of the 3D driver (with MESA) will work OK with the current 2D driver V0.41 which means I won't update it for now probably. A 2D driver update might come for fixing some TNT2 and GeForce2Ti/GTI 'banwidth trouble', it looks like I will be taking home some distorting cards so I can finally get a fix on that.
How does MESA relate to your nVidia driver? Can you explain in so many words for the layman?
Let's put it this way. An application issuing openGL commands, sends those commands to a library called libGL.so. MESA is 'just' a 'version' of this libGL.so library. Up to now, this library calculates all 3D stuff using internal software, and the results are then drawn onto your screen.
What I am doing is replacing some parts of this software calculation (rendering) code with an interface to the nVidia card hardware which then does these calculations instead. The results of these calculations are then shown on your screen using yet more hardware commands in this nVidia engine, instead of using software to do that.
So, MESA is merely a library of the same functionality that is (now) present in most nvidia cards, and you're replacing the software calls with hardware calls which will speed up the overall graphics display, correct?
I don't know how much of the software functions can be handled by the nvidia hardware, but to start I will just setup a few much-used functions that I have hardware information about. The rest remains to be done by the MESA library. The library stays in place, I'm just 'hooking in', but all in all, you seem to be correct, yes.
How are you dividing up your time these days? What other projects are you involved in?
I'm working two full days a week on this driver project and I 'steal' some more time to code on the other days (evenings, weekends) as far as I can without getting into trouble at home ;-)
The nVidia driver is all that I am doing currently, but I will also make time (again) to code an opensource VIA graphics driver requested by yellowTab. The good thing about this is that it will be in Haiku SVN using Haiku's licence as yellowTab has no problems with that.
How does the open source aspect play into your objectives in coding?
I love open source. I know how much work, time and energy is needed to create these drivers and I as well get very tired sometimes. I just hate it if I would have done this 'for nothing'. I mean, if you do it closed source for a company, and they go 'belly up' for example, my work has been for nothing. Well no go for me!
On the other hand, I think that closed source software should be able to interface with open source software without that meaning that closed source software needs to be open sourced as well. People have to live too and besides some things are probably just too costly to get it done the open sourced way.
What do you think you will be working on when the nVidia driver is "complete"? The word complete is a hard word to use, I admit, and I know that -nothing- is ever truly complete, but do you foresee a time when you will be complete in the nVidia driver?
I have to admit doing this 3D stuff is a new, and real challenge for me. Doing a 2D driver is not anymore. So apart from this VIA driver, I don't see myself doing yet another 2D driver. I'd rather go more towards unexplored things but only time will tell. Who knows, maybe I'll just quit. There has to be a challenge, or I won't be motivated.
What has motivated you to work so hard and for such a long time on the nVidia driver?
The fact that people said that it couldn't be done. My wife always says if you want Rudolf to do something, just say that it's impossible :-)
You've been coming to BeGeistert since 2002. Besides the obvious meeting of the people from the scene, as most people have told me that is their number one reason to come, what are your reasons?
Well, actually in the months before the first time I came here, I had extensive email contact with Thomas Kurschel. Suddenly, a few days before BG he asked me if I would come. That hadn't occured to me yet, as I am kind of a private guy I guess. But as he asked so nicely (and just wouldn't take 'no' for an answer), that I went.
Since then I've gone mostly once a year I guess. And it's always interesting. You meet people and finally know the face that goes with a name. Also, for instance talking to Thomas always teaches me a thing or two. He's my fellow graphics driver writer after all. :-)
And, if people have trouble with my drivers, they can literally show it to me, which allows me a greater chance at solving it than ever possible via just Email. This time around I probably even get to take a card or two home to fix some trouble there. No place like home!
How is your family life?
I've got a most understanding wife and a lovely 2 year old daugther. While I love spending time with them, I also still feel a strong urge to code on BeOS (and derivatives). Without the support my wife gives me it just wouldn't be possible to code anymore. She literally buys me time to code in. I was able to quit half my day-time job because of her, to do all these drivers.
Anyway, I think I have to scale back coding a bit in a year or so, as my family deserves more time from me I'd say. And, I've done some things I always dreamt about (2D/3D nVidia driver on my favorite OS!)
Another option would probably be totally quitting my current day-time job and coding for this OS as a job. We'll see though. I don't really plan ahead, I kind of go where the road takes me.
How's your little one? You showed me a picture of her taking charge, so to speak. Now that you're a dad, what is that like for you?
I never really planned to be a dad, but now I am. I wouldn't miss it for the world. It's undescribable what having a child you love means. It's fantastic. It has a down-side as well I guess in that it costs a lot of time and energy. Hmm, sounds familiar. ;-)
Are you interested in developing for other OS's such as Linux, BSD, or MacOS X, or are you strictly a Haiku/BeOS kind of guy?
Not Linux, not another version of that, or whatever. No Windows. No MacOS X, although I'd switch to that if BeOS didn't exist. Without BeOS, no coding, period.
Thanks for your time, Rudolf. Your work means a great deal to us all, as I am sure many would agree. Till next time, take care.
My pleasure!