ビデオドライバに取り組むほかの何名かと同様、Marchesin氏とSkeggs氏もR300プロジェクトのビデオドライバの分野で活動を始めた。すでに中断されたこのプロジェクトでは、メンバーたちがATI Radeonカードシリーズの3Dアクセラレーション機能の解析を試みていた。Skeggs氏が主に取り組んでいたのはピクセル単位でエフェクトの計算とレンダリングを行うグラフィック機能、フラグメントシェーダだったが、彼はその頃のことを「グラフィックドライバ全体のさまざまな部分がどのようにつながっているのか、まったくわからない状態だった」と話している。一方、Marchesin氏が深く関わっていたのは、レンダリング速度とタイリングという標準的なレンダリング方法を改善するグラフィック処理の技法Hyperzのリバースエンジニアリングや、Itaniumプラットフォームへの3D機能の移植だった。「変更を加えるにつれてQuake 3のフレームレートが上がっていくのを見るのがとても面白かった」とMarchesin氏は当時を振り返る。
2005年6月、Marchesin氏は個人プロジェクトとしてNouveauに着手した。ほぼ8か月かけて、Marchesin氏はnvドライバの機能を整理するとともに、プロプライエタリなNvidiaドライバをマシン上で実行しながら情報を収集するためのリバースエンジニアリングツールREnouveauを書き上げた。「Nvidiaカードの内部動作を理解するのに多くの時間を費やした。グラフィックハードウェア分野のほかのどのドライバとも大幅に異なる動作だった。こうした活動を手がける気になった主な理由は、低レベルプログラミングへの個人的な関心と、当時使っていた作業用マシンのNvidia製バイナリドライバが修正できなかったことにあった(ドライバと私のマシンのチップセットとの相性が悪かったのか、ドライバにバグがあったかのどちらかだ。いずれにしても、Nvidia製ドライバはバイナリ形式なので手の打ちようがなかった)」(Marchesin氏)
2006年2月、Marchesin氏はFOSDEM(Free and Open Source Software Developer's European Meeting)においてプロジェクトの成果を披露した。その場で数時間にわたってREnouveauを使いながらNvidiaチップのあるシリーズのレンダリングについて学んだSkeggs氏は、たちまち魅了された。やがて彼は#nouveauというIRCチャンネルに参加する。「自分が学んだことをすっかり伝えることがねらいだった。そうこうするうちに、結局そこから抜け出せなくなってしまった」(Skeggs氏)
Nouveauの2D機能は、nvドライバのコードをフォークさせたものだ。ただし、Skeggs氏は次のように語っている。「コードはかなり変更されている。複数のクライアントがNvidiaカードに同時にアクセスできるように、相当な量のコードをカーネルモジュールに移し、エンジン設定のかなりの部分を書き直さなければならなかったからだ」
現時点では2D機能に関する作業の多くが完了している。「日常的な使用においては、機能の点でもパフォーマンスの点でも、すぐにnouveauでnvを置き換えることが可能だ」とMarchesin氏は述べる。実際、nouveauドライバは、すでにFedora 7などいくつかのディストリビューションに収録されている。ただし、機能面での制限があるため、デフォルトでは使用されていない。
今のところ、3D機能の開発はあまり進んでいない。「基本的な3D機能がいくつかのNV4xチップで動作する程度だ。その他のチップセットを期待どおりのレベルに仕上げること以外に、テクスチャリング機能をこの3Dドライバに実装する必要もある。ご想像のとおり、テクスチャリング機能のない3Dドライバなんて、ほとんど意味がない」。ただし、3D機能を実装する基本的な知識はプロジェクト内にあるので、あとはただコードを書いてテストするだけだ、とも彼は話している。
