2006.05.14 xcompmgr まんせー なんか思い付きで X Compsite Extention がどうなってるのか気に なって調べてみました。 on Xorg 6.9.0 xcompmgr というか, X Compsite Extention は X の拡張モジュールで 1. ほんまもんの透過ウィンドウ gnome-terminal やら kterm などのなんちゃって透過ウィンドウで はありません! 本物の透過ウィンドウが使えます。 2. フェード ウィンドウの表示・非表示でフェードイン・フェードアウトしてく れます。それも透過ウィンドウと連動(?)してるので消え方がかっ こいいです。 3. シャドウ ウィンドウに影が付きます。まぁだから何。って話なのですが。 フェードについてはメニューやらツールチップスやらでも使えてたり するので(少なくとも GNOME 2.14 環境下では), 一番目につきやすい かもしれません。 それはさておき, xcompmgr でググるとそこそこ出たりするんですが, http://blogs.dion.ne.jp/terasan/archives/1735014.html を見てかなぁ〜り感動してしまいまして, gnome-settings-visualeffects を ports にしようかと思って調べたら, ports になって無いわ, サ イトが存在しないようで萎え。と。まぁ ls -d /usr/ports/*/*compmgr* したらアレ? っと gcompmgr なるものがあって…と, GNOME 環境でも xcompmgr 使えるのかぁと調べてみました。 結論から言うと gcompmgr って xcompmgr に依存(RUN_DEPENDS)して るようなんですが, いいのかなぁ。。なんて思いつつ。gcompmgr は xcompmgr にどういうパラメータを渡してやればいいか。を設定する ためのツールです。ということに気が付いて今に至る。と。ウィン ドウのシャドウやらフェード(フェードイン・フェードアウト)程度 なら gcompmgr 要らないです。個々のウィンドウを透過させるなら 必要かな。という程度で。Windows Manager がそのあたりやってく れれば要らなさそうだなぁと思いつつ。。 さて。設定の要点としては下記のようになります。 < /etc/xorg.conf へ Section "Extensions" Option "Composite" "Enable" Option "RENDER" "true" Option "DAMAGE" "true" EndSection 設定後 X を再起動すれば xcompmgr が使えるようになります。 あぁ。Xorg なので XFree86 では使えないです(少なくとも 4.4 までは)。 まぁ使えるだけで使い物にならないのでハードウェアアクセラレー ション効かせないとあかんのですが, 自分の環境の場合(ATi Radeon 9600 を使用), ハードウェアアクセラレーションが効かないことが 判明して萎えてます。 この時点では透過ウィンドウは使い物にならない程度に遅く, シェ ード, フェードあたりが使えるかな。って程度にあります。それで も仮想ウィンドウ切り替えでフェードアウトしてるのが重くてちょ っと…という状態です。 > (II) RADEON(0): Render acceleration unsupported on Radeon 9500/9700 and newer. > (II) RADEON(0): Render acceleration disabled そうそう。この手の設定変更したら /var/log/Xorg.0.log は精査 しましょうね。時々こうやって無効になってる時がありますから。 色々と調べてくうちに, XAA (X Acceleration Architecture) では なく, 新しい EXA を使えば改善するみたいなので試してみました。 リリースノート(/usr/X11R6/lib/X11/doc/RELNOTES)によれば EXA は XAA を置き換える新しいアクセラレーションアーキテクチャだ そうで SiS と ATi で対応みたいなことが書いてあります。nVidia の場合, nVidia 謹製ドライバを使った場合とで状況が違うので そのあたり注意してみる必要があるかもしれません。 /usr/X11R6/lib/X11/doc/RELNOTES より EXA is a new accleration architecture to replace XAA, the current archi- tecture. It is largely based upon KAA in KDrive, and is far more effi- cient at accelerating typical workloads on modern hardware, particularly involving the RENDER extension. というわけで, 下記のように設定してみました(Option が重要)。 Section "Device" Identifier "ATI RADEON 9600(64MB)" VendorName "ATI" BoardName "RADEON 9600(64MB)" Driver "radeon" Option "BackingStore" Option "RenderAccel" "true" # R200 アーキテクチャのみ Option "AccelMethod" "EXA" # 実験的 EndSection ちょっと重いかな。という程度でほぼ実用に耐え得る状況まで改善 しています。EXA まんせーってことで。 とりあえずスクリーンショット http:///blog.ninth-nine.com/images/gcompmgr.png とりあえず GNOME セッションの設定として, 起動時に xcompmgr を立ち上げるようにしています。GNOME 以外だと .xsession やら .xinit に仕込むのがいいのかな。下記のような感じで動かしてい ます(gcompmgr のディフォルト設定)。 /usr/local/bin/xcompmgr -r 12.00 -o 0.75 -l -15.0 -t -15.0 -I 0.028 -O 0.03 -D 10.0 -c -C -f まぁあんまり意味分かってないけど。 > オプション ところで, 突っ込みが 1. 私が canna 使ってる。 2. メモリいっぱい積んでるな。 3. 仮想デスクトップが10個って多いですね。 ってあたりなんとも…。 そうそう。ハードウェア対応を謳うとき, どこまで対応してるか を見るのはちょっと大変かも。通常 2D 対応を持って対応してる と言ってるので, 今回のようなマイナーなエクステンションで泣 きを見る場合があります。まぁ次の X のリリースで解決してた りするんですが。今のところ下記のような順番で見てくのがいい のかなぁと思ってます。 2D 対応 > X Video Extention 対応 > 3D 対応 > Render 対応 Xorg 6.9 時点での ATi の対応度としては a. 2D はほぼ全対応かな。とは言え X800 世代あたりまでですが。 たぶん X1800 の情報を与えてやれば動くでしょう。 b. X Video Extention もほぼ同様。 c. 3D 対応から劣化してて R400 アーキテクチャに対応してない ので, PCI Express(つまり X800 世代)なカードで 3D は動か ないです。もっとも R300 アーキテクチャとして使えてると いう話なので使えるかも知れません。実物持ってないので検 証してません。 d. Rander に対してはさらに R300 アーキテクチャでも対応して ないので, Radeon 9200 世代あたりでしか使えないです。 安心を買うなら Radeon 9200 ということで(最近のノートでも Radeon 9600 と遜色無い性能たたき出してるんだよなぁ.. orz)。 nVidia? Intel? さぁ:-)。Radeon 9200 だと Flight Gear が ちょっとなぁ。。 Written by 重村法克