S3 Vision864 チップ搭載のカードでは、S3 チップの動作時に、ピクセルクロッ クとメモリクロック値 MCLK に依存した、自動訂正機能があります。ほとんど のクロックチップでは、この値を読み出すことはできないので(今のと ころ S3 SDAC だけで MLCK 値を読み出せます)、この値は推定するかユーザー が指定しなければなりません(デフォルト値は 60 [MHz])。
XF86Config
ファイル用の新しい `s3MCLK
' エントリを使って、次
の例のような指定ができます:
s3MCLK 55
このように MCLK に 55 MHz を設定すると雪の量が減るでしょう。ただし、 MCLK の値を小さくすると性能が少し落ちるので、低すぎる値は使用しないで ください(大抵の場合は、きっと 55 か 50 で良いでしょう)。
以下に示すのは、MLCK の概算値(+/- 1〜2 MHz 程度の誤差があります)を
決める際に便利な短いシェルスクリプトです。このスクリプトを実行する前に
次の行を XF86Config
ファイルの Device セクションに追加し X ウィン
ドウを再起動する必要があります:
s3MNadjust -31 255
このオプション(テストとデバッグ専用です)を使うと、画面がちらついたり雪 が降ったりして悲惨なことになるので、以下のテスト用スクリプトを実行した らすぐにこのオプションを取り除かなければなりません。
このスクリプトを実行すると、xbench や x11perf が実行され、MLCK 値を決 めるためのテストが実行されます。この結果は MHz 単位で表示されます。4 つのテストが実行されるので、推定値は 4 つまで得られます(最初の値が 最も正確でしょう)。
#!/bin/sh exec 2> /dev/null scale=2 calc() { m=`awk 'BEGIN{printf "%.'$scale'f\n",'"( $1 + $2 ) / $3; exit}" ` [ -z "$m" ] && m=` echo "scale=$scale; ( $1 + $2 ) / $3" | bc ` [ -z "$m" ] && m=` echo "$scale $1 $2 + $3 / pq" | dc ` echo $m } run_xbench() { r=` ( echo 1; echo 2; echo 3; echo 4 ) | xbench -only $1 | grep rate ` [ -z "$r" ] && return cp="$2 $3" set $r calc $3 $cp } run_x11perf() { r=` x11perf $1 | grep trep | tr '(/)' ' ' ` [ -z "$r" ] && return cp="$2 $3" set $r calc `calc 1000 0 $4` $cp } run_x11perf "-rect500 -rop GXxor" 3.86 5.53 # 0 1 # 4.11 5.52 # run_xbench invrects500 4.63 5.48 # 0 1 # 4.69 5.48 # run_x11perf "-rect500 -rop GXcopy" -16.42 13.90 # 0 1 # -14.99 13.88 # run_xbench fillrects500 -7.81 13.57 # 0 1 # -8.53 13.58 # exit