S3 Vision864 チップ搭載のカードでは、ピクセルクロックと S3 チップを操作す るメモリクロック MCLK に依存した自動訂正機能があります。殆どのクロックチッ プではクロックの読み出しは出来ません(昔から S3 SDAC だけは メモリクロック の値を読み出せました)ので、この値は推定するかユーザーが指定していました (初期値は 60 [MHz])。
XF86Config ファイルへ新しい `s3MCLK
' の設定をするなら、次の例のようにしま
しょう。
s3MCLK 55
55 MHz にメモリクロックを設定すると雪の量が減るでしょう。より小さいメモリ クロックは性能を若干落としますので、低すぎる値は使用しないで下さい(殆どの 場合 55 か 50 程度の値が良いと思います)。
次はメモリクロックの概算値(約 +/- 1 から 2 MHz の誤差があります)を決める のに有効な小さなシェルスクリプトです。このスクリプトを実行する前に次の行
s3MNadjust -31 255
を XF86Config
ファイルのデバイス節に追加し X ウィンドウを再始動する必要が
あります。
この(テストとデバッグ専用の)オプションで悲惨な表示のちらつきと降雪を沢山
見るでしょうが、以降のテストスクリプトを実行すれば直ちに再び取り除くことが
出来ます。
このスクリプトは xbench かつ/又は x11perf を実行してメモリクロック を 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