< Previous Date Next > | < Previous Thread Next > | Index by date | Index by thread |
nosanosaです。 ATIのRADEONなどを搭載したマシンをお持ちの方はOpenGLのハードウェアアク セラレーション(DRI)が有効になってますでしょうか? たぶんXFree86が4.3.0になった頃からだと思うんですが、私のThinkPad X22の RADEON Mobility M6でOpenGLのハードウェアアクセラレーションが効かなくな ってしまってました。 具体的にはOpenGLを使うアプリケーションを立ち上げると libGL error: InitDriver failed というエラーがでます。 /var/log/XFree86.0.logには (II) RADEON(0): [drm] loaded kernel module for "radeon" driver (II) RADEON(0): [drm] created "radeon" driver at busid "PCI:1:0:0" (WW) RADEON(0): [dri] Some DRI features disabled because of version mismatch. [dri] radeon.o kernel module version is 1.1.1 but 1.3.1 or later is preferred. (II) RADEON(0): [dri] Visual configs initialized (II) Keyboard "Implicit Core Keyboard" handled by legacy driver と言う感じです。それでgoogleなどで調べてみるとログの通りだったんですが kernelに含まれるDRMのバージョンがXの要求するものよりも古いためと分かり ました。 解決法としては、(BUILDツリーを残して)Xをビルドしたときにできている pkgs/XFree86/BUILD/XFree86-4.3.0.1/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/radeon.o を/lib/modules/<kernel-version-release>/kernel/drivers/char/drm/radeon.oに上書 きすることでDRIが有効になります。 これだとkernelのリリースが変わる毎に同じことをしないといけなくて面倒な ので、できればkernelの方で対応したいというわけで、kernelのdrmのソースを そっくりXFree86-4.3.0.1のソースで置き換えてコンパイルして見ました。 つまり $ ../tools/OmoiKondara -r "-bp" kernel $ ../tools/OmoiKondara -r "-bp" XFree86 $ cp -pf \ XFree86/BUILD/XFree86-4.3.0.1/xc/programs/Xserver/hw/xfree86/os-support/shared/drm/kernel/*.[ch] \ kernel/BUILD/linux-2.4.21/drivers/char/drm/ $ cp -pf \ XFree86/BUILD/XFree86-4.3.0.1/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/*.[ch] \ kernel/BUILD/linux-2.4.21/drivers/char/drm/ としてkernelのソースをXのソースで上書きして置き換えました。 (両方とも全てのパッチが当たった状態です) それで、MakefileをXの側のMakefileと見比べて少し直してから、カーネル全 体をビルドしてインストールしたところ、一応ThinkPad X22では、うまく動い てくれてDRIも有効になってます。 ソースを置き換えた後のkernelに対する差分が添付の linux-2.4.21-X4301DRM.patchです。 ですが、radeonだけでなくsis,i810,i830,mgaとかも含めて置き換えてますし、 差分の中身を見て頂けると分かるのですが、結構な数のファイルがkernelソー スの方がXでのソースよりも更新日付が新しかったりして、他のカードを含め てどんな影響を与えているかわからず、とてもそのままcommitできるような ものではない気がします。 # (っていうか、見習い新人なのにkernelにcommitなんて恐れ多くて…) あと、radeonだけをX付属のものにしようと思ったのですが、手に負えません でした。 というわけで、もっといい方法も含めて、あとはえらい人にお願いしたいん ですが… 一応、linux-2.4.21-X4301DRM.patchをPatch142として当ててビルドしてみた kernelのパッケージを以下に置いておきます。DRI対応カードを持っている方がテス トして頂ければ幸いです。 http://ndyn.acs.i.kyoto-u.ac.jp/~sano/momonga/SRPMS/kernel-2.4.21-10m.1e.nosrc.rpm http://ndyn.acs.i.kyoto-u.ac.jp/~sano/momonga/RPMS/kernel-headers-2.4.21-10m.1e.i586.rpm http://ndyn.acs.i.kyoto-u.ac.jp/~sano/momonga/RPMS/kernel-2.4.21-10m.1e.i586.rpm
Attachment:
linux-2.4.21-X4301DRM.patch.bz2
Description: Binary data