REnouveau-ja

Deutsch/English/Español/Français/日本語

案内:

REnouveauは「nouveauのためのリバースエンジニアリング」(Reverse Engineering for nouveau) という意味です。KoalaBRが文書を保守しています (が、未完成です)。関心が高まってきたら、CVSに入るでしょう。

REnouveauのためには、nVidiaのプロプライエタリなドライバがインストールされていて動作する必要があります。BlobVersionsを参照。

このアプリケーションは、小規模なOpenGLのテストをいくつか実行し、ビデオカードのレジスタの変化を観察します。使用の手順はREADMEファイルにあります。最初にやりかたをのみこむのに少し時間がかかりますが、わかってしまえば読みやすいものです。

これを使えば「クリーンルーム」リバースエンジニアリングができます (つまり、nvidiaドライバのライセンスに違反することがありません)。バイナリを逆アセンブルしないのです。

——It is unlikely that REnouveau dumps will turn up new information at the moment, but Fermi (not Enrico) will probably change that soon.

renouveauを自分でインストールして実行する自信がないのなら、KoalaBRのスクリプトを試してみてください。これはダウンロード、コンパイル、実行、書庫作成を自動的に行います。ここにあります。実行権限を与えれば、./createdump.shで起動できます。その後は画面の指示にしたがってください。ただしご注意を——このスクリプトは無保証で提供されます。自身の責任の下にご利用ください。

お待ちかねのリバースエンジニアリングです。

CVSリポジトリにparse-dump.shシェルスクリプトが追加してあります。これが、生成されたダンプを解析する汚れ仕事を一手に引き受けます。ことがうまく運べば、あなたは解析されたダンプをつつきまわして、GPUに送った適当なコマンドがなにをするものなのか推測できるようになるというわけです。

未知のコマンドの例 (オフセット0x1538にあるコマンドが何なのか不明) ——

00043538  size 1, subchannel 1 (0xbeef5097),offset 0x1538,increment
00000001    NV54TCL[0x1538/4]

既知のコマンドの例 (当たり。オフセット0x1398にあるのはSTENCIL_BACK_MASK) ——

00043398  size 1, subchannel 1 (0xbeef5097),offset 0x1398,increment
000000ff    NV54TCL.STENCIL_BACK_MASK

ダウンロード:

CVSにアクセスできます—— http://nouveau.cvs.sourceforge.net/viewvc/nouveau/renouveau/

匿名CVS

cvs -z3 -d:pserver:anonymous@nouveau.cvs.sourceforge.net:/cvsroot/nouveau co -P renouveau

Gentoo

Gentoo ebuildsを参照。

Mandriva

Mandrivaではcontribメディアにパッケージが入っています。次のように実行するだけです。

urpmi renouveau

DebianおよびUbuntu

Debian etchでは次のパッケージが必要です—— libsdl1.2-dev, nvidia drivers, libxvmc-dev, libxv-dev (sdl-configコマンドとXextのため), XvMCNVIDIA, XvMC, Xvライブラリ。

Ubuntuでは、次のコマンドで必要なパッケージは手に入るはずです。

sudo apt-get install build-essential cvs mesa-common-dev libsdl1.2-dev libxvmc-dev nvidia-glx-dev dialog libxml2-dev

Fedora

Fedora (F9で検証) では、livnaリポジトリを有効にして

yum install dialog SDL-devel libXvMC-devel libxml2-devel xorg-x11-drv-nvidia-devel

それから

make XEXT_LDFLAGS="-L/usr/lib/nvidia -L/usr/lib -lXext -lXvMCNVIDIA -lXvMC -lXv"

なおx86_64の場合は

make XEXT_LDFLAGS="-L/usr/lib64/nvidia -L/usr/lib64 -lXext -lXvMCNVIDIA -lXvMC -lXv"

要件:

nvidiaのドライバが動作している必要があります。あまりに古いものだと動かないかもしれません。6xxx, 7xxx, 8xxxシリーズは動くでしょう。CVSのコミットログによると、6xxxが対象・前提になっているようです。3xxx, 4xxx, 5xxxシリーズは2.4カーネルが必要かもしれません。またrenouveauのコンパイル時にlibGLをリンクしなければなりません。

ビデオカードのメモリは256MB以下でなければなりません。PCIのCPU用アドレス空間からは256MBの範囲のビデオメモリにしかアクセスできないため、それより多くのメモリを積んだカードだと、必要な情報がアクセスできないビデオメモリ空間にあるかもしれず、ダンプができません。

—— ドライバのバージョンが9xxxでカードがPCI-Eだと、renouveauがセグメンテーション例外で落ちたり、マシンそのものがハングアップするかもしれません。このような場合は、8xxxドライバを使ってみてください。

コンパイルについての注

REnouveauにはmake installオプションがありませんから、インストールするにはバイナリファイルを適当な場所に手で複写しなければなりません。特定のテストを実施するにはmain.cを手で修正する必要があります (詳しくは文書を参照ください)。

現在、すべてのテストと複数ファイルへの出力が初期値で有効になっています。

使用と提出の手順

REnouveauDumpsを参照してください。