次のページ 前のページ 目次へ

8. グラフィック画面操作時、``雪が降る'' 現象の回避策

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


次のページ 前のページ 目次へ