この章では、PGX32 グラフィックスアクセラレータの画面解像度を変更する方法について説明します。
メニュー式インタフェースユーティリティーの GFXconfig を使用して、いつでも画面解像度を変更することができます。詳細については、GFXconfig のマニュアルページを参照してください。
gfx は、PGX32 グラフィックスアクセラレータの UNIX デバイス名です。
PGX32 設定ウィンドウが表示されます (図 6-1)。
PGX32 設定ウィンドウの操作方法は、下記の表 6-1 を参照してください。
表 6-1 PGX32 設定ウィンドウ
機能 |
説明 |
---|---|
上向きと下向きの矢印 |
設定を変更する PGX32 デバイスを選択します。 |
左向きと右向きの矢印 |
設定を変更するパラメタ (たとえば画面解像度、ビットの深さ、同期など) を選択します。 |
スペースバー |
選択した PGX32 デバイスの、パラメタの変更に使用する (変更可能な場合はメニューが表示されます)。 |
T |
ディスプレイ全体にテストパターンを表示します。いずれかのキーを押せば、メイン画面に戻ります。 |
S |
現在の設定を保存してから、設定ウィンドウを終了します。 |
H |
ヘルプ |
Q |
変更を保存しないで、プログラムを終了します。 |
特に多数のシステムに同一内容の設定をする場合や、システムに最適な設定がわかっている場合などは、PGX32 カードを非対話形式で設定したほうが便利です。
GFXconfig は、m64config ユーティリティーと同じ規約に従います。 m64config は、Sun Ultra 5 と Sun Ultra 10 のマザーボードグラフィックス (8 ビットシステムと 24 ビットシステムの両方) や、PGX 8 ビット PCI フレームバッファーなどの、すべての ATI ベースのグラフィックスで使用されています。対話方式による設定方法で使用するすべてのパラメタは、非対話形式でも使用できます。この場合は、適切なフラグの後に必要な値を続けて指定します。各パラメタの詳細は、表 6-2 を参照してください。
表 6-2 非対話形式の設定で使用するパラメタ
パラメタ |
説明 |
---|---|
-dev デバイス |
構成するデバイスを表示します。 |
-res 解像度 |
解像度名を表示します。 |
-res ¥? |
解像度を表示します。 |
-file ファイル名 |
設定ファイル (system または machine) を表示します。 |
-depth 深さ |
ビットの深さ (8 または 24、デフォルトは 24) を表示します。 |
-defaults |
デバイスのパラメタをデフォルトにリセットします。 |
-24only (true/false) |
すべてのウィンドウで 24 ビット画像を使用するように強制設定します。8 ビットアプリケーションの中には、この指定により正常に動作しなくなるものもあります。 |
-gfile ガンマファイル |
ガンマファイルを一覧表示します。 |
-gvalue ガンマ値 |
ガンマ値を一覧表示します。 |
-propt |
現在の設定を表示します。 |
-prconf |
ハードウェア情報を表示します。 |
-help |
使用方法 (ヘルプメッセージ) を表示します。 |
デフォルトでは、解像度が 1280 × 1024 以下の場合のビット深度は 8/24 に、それよりも高解像度の場合は 8 に、それぞれ設定してあります。
PGX32 の解像度を 1152 × 900、66 Hz に設定するには、以下のように入力します。
# GFXconfig -res 1152x900x66 |
解像度を確定する前に確認しておきたい場合は、解像度名の後に「try」という語を追加します。このオプションを指定すると、画面にテストパターンが表示されます。リターンキーを押すとテストパターンは解除されます。このパターンで実際に解像度を確認してから、その解像度を適用するかどうか判断します。入力例を以下に示します。
# GFXconfig -res 1152x900x66 try -dev /dev/fbs/gfxp0 |
トゥルーカラー画像のみを使用して (8 ビット擬似カラーを使用しないで) 解像度を 1024 × 768、60 Hz に設定するには、以下のように入力します。
# GFXconfig -res 1024x768x60 -24only true |
通常、ほとんどの場合デフォルトの画面解像度で十分です。ただし、以下の場合はデフォルトの解像度を変更する必要があります。
X Window の深さをデフォルトから変更し、デフォルトとして用意されている値ではなくなった場合、画面の深さと X Window の深さが一致するように設定する必要があります。
デフォルトの画面解像度ではモニターが正常に同期しない場合、画面解像度を別の値に変更する必要があります。
画面解像度をデフォルトの値から変更する際には、以下のガイドラインに従ってください。
8/24 モードで X Window 環境を動作させるには、画面解像度の深さを 24 ビットに設定します。
デフォルトでは、画面解像度が 1280 × 1024 以下の場合は自動的に 24 ビットに設定されます。それよりも高い解像度の場合は、8 ビットモードに設定されます。
画面解像度を確定する前に、GFXconfig -i を使用して解像度のテストをしてください。
対話形式、非対話形式以外の変更方法には、以下のようなものがあります。それぞれの方法について解説します。
EDID 自動検出 (Auto-Detect) 機能
output device を使用する方法
ビデオモードを使用する方法
ビデオタイミングを使用する方法
DDC2B/EDID プロトコルを使用しているモニターの場合、デフォルトの解像度は自動検出機能を使って決定できます。このプロトコルを利用した場合、まず GFX が標準タイミング識別子 (Standard Timing Identifiers) を調べてサポート順位の最も高い解像度を検索し、これと設定タイミング (Established Timing) を照合します。この方法が失敗した場合は、カードの解像度は自動的に 1152 × 900、66 Hz に設定されます。
モニターの電源をシステムの起動前に入れておかないと、PGX32 はモニターを正常に認識できません。
この方法を使用した場合、EDID を介して得た情報はすべて無効になります。
PGX32 カードの解像度は、output-device 環境変数からも設定できます。この変数は screen:rAxBxC (A は水平解像度、B は垂直解像度、C はリフレッシュレート) という形式で記述します。
システムはここに代入された値を解像度の内部リスト (表 6-3 参照) と照合して、その値に対応するエントリを画面解像度として使用します。
たとえば、画面解像度を VESA 1024 × 768、75 Hz に設定する場合は、ok プロンプトで以下のように入力します。
ok setenv output-device screen:r1024x768x75 ok reset |
新しい画面解像度はリセットするまで有効になりません。またリセット後は再度 output-device 変数を手動で変更するまで、この解像度が維持されます。
Boot PROM モードの ok プロンプトでは、インストール済みの 34 種類の解像度モードのうちの 1 つを選択するだけで、PGX32 カードの画面解像度を簡単に設定できます。解像度の設定値は 0‾33 のビデオモードの形式で定義してあります (表 6-3)。
画面の深さが 24 ビットの時はビデオモードの 0‾25 を、8ビットの時は 26‾33 を使用します。
モード |
解像度 |
---|---|
0 |
640 × 480 @ 60 |
1 |
640 × 480 @ 72 |
2 |
640 × 480 @ 75 |
3 |
640 × 480 @ 85 |
4 |
800 × 600 @ 60 |
5 |
800 × 600 @ 72 |
6 |
800 × 600 @ 75 |
7 |
800 × 600 @ 85 |
8 |
1024 × 768 @ 60 |
9 |
1024 × 768 @ 70 |
10 |
1024 × 768 @ 75 |
11 |
1024 × 768 @ 77 * |
12 |
1024 × 768 @ 85 |
13 |
1024 × 800 @ 85 * |
14 |
1152 × 900 @ 60 |
15 |
1152 × 900 @ 66 * |
16 |
1152 × 900 @ 70 |
17 |
1152 × 900 @ 75 |
18 |
1152 × 900 @ 76 * |
19 |
1152 × 900 @ 85 |
20 |
1280 × 800 @ 76 * |
21 |
1280 × 1024 @ 60 |
22 |
1280 × 1024 @ 67 * |
23 |
1280 × 1024 @ 75 |
24 |
1280 × 1024 @ 76 * |
25 |
1280 × 1024 @ 85 |
26 |
1600 × 1200 @ 66 * |
27 |
1600 × 1200 @ 76 * |
28 |
1600 × 1200 @ 60 |
29 |
1600 × 1200 @ 65 |
30 |
1600 × 1200 @ 70 |
31 |
1600 × 1200 @ 75 |
32 |
1600 × 1200 @ 76 |
33 |
1600 × 1200 @ 80 * |
nvedit コマンドについては、「nvedit を使用して NVRAM を修正する」を参照してください。
たとえば、画面解像度を 1024 × 768、60 Hz (ビデオモードの 8) に設定するには、以下のように入力します。
ok nvedit 0: 8 value video-mode 1: <ctrl-c> ok nvstore ok setenv use-nvramrc? true ok reset |
最後の 3 行のコマンドにより、NVRAM は有効になります。この 3 行を実行しない場合、nvedit で設定した変更内容は無視されます。
前述のいずれの方法もうまくいかない場合は、最終手段として画面解像度のタイミング数を厳密に指定する方法があります。この方法でも nvedit を使用します。他の方法に比べて複雑で、目的の解像度を設定するにはすべてのタイミングパラメタに関する知識が必要です。前述のビデオモードに用意されていない解像度を設定する必要がある場合のみ、この方法を使用してください。nvedit コマンドについては、「nvedit を使用して NVRAM を修正する」を参照してください。
この方法は、前述のいずれの方法も成功しなかった場合のみ使用してください。
たとえば、画面解像度を 1280 × 1024 、76 Hz に設定するには、以下のように入力します。
ok nvedit 0: : video-timing " 1280, 384, 32, 64, ¥ 1024, 43, 3, 8, 135000000, 0" ; 1: <ctrl-c> ok nvstore ok setenv use-nvramrc? true ok reset |
この入力では構文が非常に重要な意味を持ちます。例に示しているように、スペースを正確に入力する必要があります。
最後の 3 行のコマンドにより、NVRAM は有効になります。この 3 行を実行しない場合、nvedit で設定した変更内容は無視されます。
この方法では、以下の 10 種類のパラメタを設定する必要があります。
水平方向の解像度 (ピクセル単位)
水平方向の空白の合計
水平方向のフロントポーチ
水平同期幅
垂直解像度 (走査線単位)
垂直方向の空白の合計
垂直方向のフロントポーチ
垂直同期幅
ドットクロック (Hz 単位)
同期値 (表 6-4 参照)。複数の同期値を選択する場合は、値の和をとって使用します。
同期値 |
意味 |
---|---|
1 |
独立同期 |
1 |
緑色の同期 |
512 |
正の垂直方向同期パルス |
1024 |
正の水平方向同期パルス |
2048 |
複合同期 |
この方法で必要となるタイミングパラメタについては、ご使用のモニターの機種など必要事項を確認した上で、サン・サービス (1-800-USA-4SUN) にお問い合わせください。
PGX32 ソフトウェアをコンソールデバイスとして使用するには、この節の以下の手順に従ってください。
Sun Ultra 5 または Sun Ultra 10 システムで PGX32 カードをシステムコンソールとして使用し、このカードをシステムの唯一のフレームバッファーとして使用するには、まずこのシステムに標準装備されている 8 ビットまたは 24 ビットのオンボードグラフィックスデバイスを無効にします。
マザーボードに組み込まれている 8 ビットまたは 24 ビットのグラフィックスデバイスを無効にするには、以下のように入力します。
ok setenv pcib-probe-list 1,3 ok reset |
システムのリセット後は、すべてのコンソールメッセージが PGX32 カードに送られます。
マザーボード上の 8 ビットまたは 24 ビットのグラフィックスデバイスをコンソールに復元する場合は、以下のように入力して pcib-probe-list にオンボードグラフィックデバイスを再度追加します。
ok setenv pcib-probe-list 1,2,3 ok reset |
Sun Ultra 30 および Sun Ultra 60 では、システム内に他のフレームバッファーが存在しない場合、有効な PCI スロットに PGX32 ボートが設置されていれば、自動的にその PGX32 カードがデフォルトのコンソールになります。
システムに他の二次フレームバッファーがある場合は、PGX32 カードをコンソールデバイスに指定して併用できます。
Sun Ultra 5 および Sun Ultra 10 の標準のオンボードグラフィックスと PGX32 カードは、オンボードグラフィックスデバイスの方をコンソールとして使用する場合のみ、同一システム内で共存できます。PGX 32 カードの方をコンソールとして使用する場合は、「フレームバッファーに PGX32 カードだけを使用する場合」の手順に従って、オンボードグラフィックスデバイスを無効にする必要があります。
UPA フレームバッファーが存在するシステムで PGX32 カードをコンソールとして設定するには、NVRAM の output-device 変数を、コンソールにする PGX32 カードの実際のパスに変更する必要があります。このパスを調べるには、ok プロンプトから / ツリー下の TSI 文字列を検索するのが最良の方法です。
たとえば、pci デバイスを探すには、以下のように入力します。
ok cd /pci@1f,4000 ok ls |
現在の位置さえ適切であれば、文字列 TSI を含むエントリ (TSI,gfxp@# というエントリで、# の部分には PGX32 のスロットの位置を表す番号が入る) が少なくとも 1 つ表示されます。
このエントリを PGX32 カードのコンソールデバイスとして使用します。たとえば、デバイス TSI,gfxp@# へのパスが上記のように /pcid@1f,4000 である場合は、以下のように入力します。
ok setenv output-device /pci@1f,4000/TSI,gfxp@# ok reset |
# の部分は、ご使用のシステムの PGX32 デバイスに対応する値で置き換えてください。
システムをリセットすると、すべてのコンソールメッセージは PGX32 カードに送られます。
何らかの理由でデフォルトのグラフィックスデバイスをコンソールに復元する場合は、output-device 変数を画面のデフォルト値に戻してください。以下のように入力します。
ok setenv output-device screen ok reset |
システム内に他の PCI フレームバッファーが存在する状態で PGX32 をコンソールデバイスに設定するには、「フレームバッファーに PGX32 カードだけを使用する場合」で解説した変更事項に加えて、二次フレームバッファーのスロットより前に PGX32 のスロットを検索するように pcia-probe-list を変更する必要があります。
フレームバッファーのスロット番号を調べてから、pcia-probe-list で指定しているスロット番号の検索順序を、PGX32 のスロット番号が二次フレームバッファーのスロット番号よりも前にくるように設定します。
たとえば、PGX32 がスロット 3、二次フレームバッファーがスロット 1 にある場合は、スロット 3 がスロット 1 よりも先に検索されるように pcia-probe-list を更新します。例えば以下のような検索順序であれば適切です。
ok setenv pcia-probe-list 3,2,1,4 ok reset |
システムをリセットすると、すべてのコンソールメッセージは PGX32 カードに送られます。
この節では、PGX32 カードで OpenWindows 環境、共通デスクトップ環境 (CDE)、X ディスプレイマネージャを起動する方法について説明します。
以下の節では、OpenWindows 環境をコンソールとして起動する方法、および複数の PGX32 カードで起動する方法について説明します。PGX32 のデバイス名は、gfxp# です。
2 つの PGX32 デバイス (たとえば gfxp0 と gfxp1) で OpenWindows 環境を起動するには、以下のように入力します。
# openwin -dev /dev/fbs/gfxp0 -dev /dev/fbs/gfxp1 |
上の例では gfxp のデバイス番号を 0 と 1 にしていますが、この数字は実際のシステムの設定により異なります。ご使用のシステムごとに /dev/fbs/ または dmesg を確認して、正しいデバイス番号を入力してください。
CDE をインストール済みの環境であれば、/usr/dt/config/Xservers ファイルの修正により、CDE を PGX32 ディスプレイ上に表示できます。ZX カードがコンソールデバイスである場合は、Xservers ファイルを変更する必要はありません。
以下の例の Xservers.gfx ファイルでは ZX カードを、CDE を起動する唯一のフレームバッファーに設定しています。
:0 Local Local_uid@console root /usr/openwin/bin/Xsun ¥ :0 -dev /dev/fbs/gfxp0 -nobanner |
実際の ZX デバイスの名前が gfxp0 以外である場合は、このファイル中のデバイス番号をご使用のシステムで設定している適切な値に置きかえる必要があります。
このファイルの最終行には、必要に応じてその他のコマンド行引数を追加できます。たとえば、CDE を複数のディスプレイで起動するような設定も可能です。
以下の例では、/dev/fbs/gfxp0 というデバイス名のディスプレイに CDE を表示し、/dev/fbs/m640 (これは Sun Ultra 5 システムおよび Sun Ultra 10 システムに組み込みのグラフィックスデバイスです) を二次フレームバッファーとして使用するように設定しています。
:0 Local Local_uid@console root /usr/openwin/bin/Xsun ¥ :0 -dev /dev/fbs/gfxp0 -dev /dev/fbs/m640 |
ZX カードは X ディスプレイマネージャ (xdm) もサポートします。簡潔な設定ファイルが /usr/openwin/lib/X11/xdm/Xservers として提供されます。
すでに適切な位置に Xservers ファイルが配置されていれば、ZX ソフトウェアのインストール時に /usr/openwin/lib/X11/xdm/Xservers.nogfx として保存されます。
デフォルトではこのインストール時に以下の行が追加され、これにより ZX は xdm を起動する唯一のフレームバッファーになります。
:0 Local Local /usr/openwin/lib/xdm/StartOW ¥ :0 -dev /dev/fbs/gfxp0 |
この最終行に続けて、必要に応じてその他のコマンド行引数を追加できます。たとえば、複数のディスプレイで xdm を起動するような設定も可能です。
以下の例では、/dev/fbs/gfxp0 というデバイス名のディスプレイに xdm を表示し、/dev/fbs/m640 (Sun Ultra 5 システムおよび Sun Ultra 10 システムの組み込みのグラフィックスデバイス) を二次フレームバッファーとして使用するように設定しています。
:0 Local Local_uid@console root /usr/openwin/bin/Xsun ¥ :0 -dev /dev/fbs/gfxp0 -dev /dev/fbs/m640 |
nvedit エディタの使用法については、「ビデオタイミングを使用する方法」を参照してください。NVRAM の変数の編集に使用するキーシーケンスを以下に示します。
表 6-5 NVRAM エディタ
キーシーケンス |
説明 |
---|---|
バックスペース |
カーソルの前方の文字を削除する |
ctrl-1 |
NVRAM の現在の値を一覧表示する |
ctrl-p |
前の行に移動する |
ctrl-n |
次の行に移動する |
ctrl-b |
前の文字に移動する |
ctrl-l |
行の先頭までを削除する |
ctrl-k |
現在の行と次の行を結合する |
ctrl-u |
現在の行を削除する |
ctrl-c |
nvram エディタを終了する (ok プロンプトに戻る) |
ここで変更した内容は、ok プロンプトで nvstore コマンドを利用して保存した場合にのみ有効になります。保存後は、この変更内容をシステムが使用する前に NVRAM を有効にしておく必要があります。環境変数の use-nvramrc? を true に設定しておいてください。