VESA BIOS 拡張( VBE ) は、現在バージョン 3 のVESA標準で、ソフトウェアが高解像度および高ビット深度で準拠ビデオ ボードにアクセスするために使用できるインターフェイスを定義します。これは、解像度が 640×480ピクセル、色深度が 16 色 (4 ビット) 以下に制限されている「従来の」 INT 10h BIOS呼び出しとは対照的です。VBE はビデオ カードの BIOSを通じて利用可能になり、起動時にそれ自体を指す割り込みベクターをいくつかインストールします。
最近のカードのほとんどは、より高性能な VBE 3.0 標準を実装しています。古いバージョンの VBE はリアル モードインターフェイスのみを提供しており、プロテクト モードのオペレーティング システム内から使用すると、パフォーマンスが大幅に低下します。その結果、ビデオ カードのドライバーの作成に VBE 標準が使用されることはほとんどありませんでした。各ベンダーは、自社のビデオ カードと通信するための独自のプロトコルを考案する必要がありました。それにもかかわらず、ドライバーが画面モードを初期化し、カードのリニア フレーム バッファーに直接アクセスするために、リアル モード割り込みにサンクアウトするのは一般的です。そうしないと、これらのタスクを実行するには、カードごとに存在する何百もの独自のバリエーションを処理する必要があるためです。
EFI 1.xシステムでは、INT 10HとVESA BIOS Extensions (VBE)はEFI UGAプロトコルに置き換えられました。広く使用されているUEFI 2.xシステムでは、INT 10HとVBEはUEFI GOPに置き換えられました。[1] [2]
標準
初期のVBE
VBE 1.0 (VS891001) は1989年に定義されました。[3] VBE 1.1 (VS900602) は1990年に定義されました。VBE 1.2 (VS911022) は1991年に定義されました。[4]これらのバージョンのVBEが動作するにはリアルモードが必要です。
VBE は、 INT 10Hを通じて呼び出されるいくつかの新しい関数を定義します。関数番号は、関数 00hの場合、 AX=4F00 または (AH=4F、AL=00) で始まります。00h から 05h は VBE 1.0 で定義され、06h と 07h は 1.1 で、08h は 1.2 で定義されました。
VESA BIOS 拡張 (VBE コア) 2.0 (1994 年 11 月)
この規格は、VESA BIOS 拡張機能の主要機能を提供します。これにより、アプリケーションはグラフィックス カードの機能を判別し、検出された表示モードを設定することができます。VBE 2.0 は、以前の VBE 1.2 規格に、リニアフレームバッファアクセスや保護モードバンキングなどの新機能を追加しました。VBE Core 2.0 [5]の機能には、次のものがあります。
- リニアフレームバッファアクセス
- 効率の低い小さなチャンクではなく、1 つの大きなメモリ領域として、保護モードでフレームバッファへの直接アクセスを有効にします。
- 保護モードバンキング
- リアルモードに「サンクダウン」することなく、保護モードからフレームバッファにアクセスできるようにします。これは、新しい関数 0Ah を使用して実装されます。
- スーパーVGAページめくり
- より高性能なアニメーションを可能にし、コンピューター ゲームやその他の高性能グラフィック プログラムでスムーズなアニメーションを実現します。
- スーパーVGA仮想スクリーン
- ソフトウェアで実際の表示解像度よりも大きい仮想ディスプレイ解像度を設定し、大きな画像をスムーズにスクロールまたはパンできるようにします。
- High ColorおよびTrueColorモード
- 業界標準の16ビットおよび24ビットグラフィックモード、320×200までの解像度に対応1600 ×1200年。
VESA BIOS 拡張 (VBE コア) 3.0 (1998 年 9 月)
VBE 2.0 標準のスーパーセット。この標準は、リフレッシュ レート制御、ステレオ グラスの機能、改良されたマルチバッファリング、およびその他の機能を VBE 2.0 標準に追加します。
- トリプルバッファリング
- 高速アプリケーションが、画面のちらつきを抑え、グラフィックス コントローラーを待つことなく、マルチバッファリングを実行できるようにします。
- GTFタイミングを使用したリフレッシュレート制御
- これにより、アプリケーションとオペレーティング システム ユーティリティは、すべての VBE 3.0 グラフィック コントローラで標準的な方法でリフレッシュ レートを変更できます。ステレオを有効にすると、ユーザーの有効なリフレッシュ レートが半分に削減されるため、ステレオ アプリケーションでは重要です。
- ステレオページめくり
- ステレオグラスを使用してアプリケーションを表示する場合、ソフトウェアは各目ごとに別々の画像を生成する必要があるため、通常の 2 倍の頻度でページをめくる必要があります。この新しい機能により、ステレオ対応ソフトウェアは適切に表示できます。
- ハードウェアステレオ同期
- ステレオ ソフトウェアが、ユーザーのグラフィック カードにステレオ グラス用のコネクタがあるかどうかを判断できるようにします。
関数 0Ahの代替として、新しい「保護モード エントリ ポイント」が追加されました。
VBE/アクセラレータ関数 (VBE/AF) (1996 年 8 月)
VBE/AF は、ほとんどのハードウェアで利用できる一般的なアクセラレーション機能への低レベルの標準インターフェイスを提供します。標準で定義されている機能には、ハードウェア カーソル、ビット ブロック転送(Bit Blt)、オフスクリーンスプライト、ハードウェア パン、描画などの機能へのアクセスがあります。32 ビット保護モードで動作するように定義されています。VBE Core は広く採用されていますが、VBE/AF をサポートするデバイスはほとんどありません。FreeBE/AF プロジェクトは、特定のグラフィックス カード用の無料のサードパーティ製 VBE/AF ドライバーを実装しています。
補足仕様
補足仕様は、アプリケーション ソフトウェアと Super VGA ハードウェア間のデバイスに依存しないインターフェイスを提供します。機能番号は、VESA ソフトウェア標準委員会 (SSC) によって割り当てられます。
電源管理拡張機能 (PM)
DPMS は、既存のグラフィックス コントローラおよびモニタ ケーブルで使用できる特別な信号システムを介して、グラフィックス カードが DPMS 準拠のモニタと通信できるようにするハードウェア標準です。この信号システムにより、グラフィックス カードはモニタにさまざまな電源管理または省電力状態に移行するように指示することができ、使用されていないときにモニタの電源を効果的にオフにすることができます。
フラットパネルインターフェース拡張 (FP)
フラット パネル コントローラの特別な機能にアクセスできるようにします。
オーディオインターフェース拡張(AI)
標準のオーディオ サービスを提供します。
現在 (バージョン 1.00)、VBE/AI 仕様では、WAVE、MIDI、VOLUME の 3 つのデバイス クラスが定義されています。カバーされていないデバイス タイプ:
- CDROMコントロール
- これはMicrosoft の CD-ROM 拡張機能によってカバーされます。
- エフェクトプロセッサー
- このクラスのデバイスは、VBE/AI 仕様の将来のバージョンで拡張される予定です。
OEM 拡張機能
ベンダー固有の拡張機能への標準エントリを提供します。
ディスプレイデータチャネル (DDC)
ディスプレイデータ チャネル( DDC)は、コンピュータ ディスプレイとグラフィックス アダプタ間のデジタル接続であり、ディスプレイがアダプタに仕様を伝えることを可能にします。この標準はVESAによって作成されました。
シリアル制御インターフェース (SCI)
オペレーティング システムとアプリケーションがI²Cシリアル制御インターフェイスを介してデータを読み書きするためのハードウェアに依存しない手段を提供します。
VBEモード番号
モード番号は 16 ビット値ですが、オプションの VBE モード番号は 14 ビット幅です。ビット 15 は、VGA BIOS によって、ディスプレイ メモリをクリアまたは保持するためのフラグとして使用されます。VBE はモード番号を次のように定義します。
VBE/Core 2.0 以降、VESA は新しい VESA モード番号を定義しなくなり、デバイスが古い番号を実装する必要がなくなりました。画面モードの情報を適切に検出するには、関数01h - VBE モード情報を返すを使用します。
モード 81FFh は、現在のメモリの内容を保持し、ビデオ メモリ全体にアクセスできるように設計された特別なビデオ モードです。
VESAで定義されたモード
VBE 2.0 標準以降、VESA では新しいモードは定義されなくなり、古いモードは必須ではなくなりました。定義されたモードの使用は非推奨とみなす必要があります。最新のビデオ カードでは、これらのモード番号が使用される場合と使用されない場合があります (ほとんどのカードでは下位互換性のために使用されていますが)。また、最新のソフトウェアでは、これらのモード番号を使用しないでください。ソフトウェアが使用可能なディスプレイ モードを見つける正しい方法は、モードのリストを取得し (「Function 00h - Return VBE Controller Information」を使用)、次に各モードをチェックし (「Function 01h: Return VBE Mode Information」を使用)、必要なモードが見つかるまで各モードをチェックすることです。[引用が必要]
モード 264~268 はテキスト モードです。264 (0108h) は 80 列 × 60 行 (80×60)、265 (0109h) は 132×25、266 (010Ah) は 132×43、267 (010Bh) は 132×50、268 (010Ch) は 132×60 です。
その他の一般的なグラフィックモード
以下の表は、VESA で定義されたモード (黒で示される値) と、一般的に使用されているが、標準で定義されていないためすべてのグラフィック カードで機能しない可能性があるモード (赤で示される) を組み合わせたものです。
モード検出
システムで利用可能な VBE モードを検出するツールがいくつか作成されています。これらは通常、関数 01h を呼び出すことによって動作します。これは、デバイスの自己ドキュメントの一部である拡張モードのテーブルを想定するよりも信頼性が高くなります。
- hwinfoは、SuSE Linuxや他のLinuxディストリビューションで使用されるハードウェア検出ツールです。[10]実行すると
hwinfo --framebuffer、「Mode」行にVESAモードなどのグラフィック情報が報告されます。 - mdtはVESA BIOS機能を使用してモニターデータを読み取るLinuxまたはDOSツールです。 [11]
- Linux リアルモードインターフェース (LRMI) には、
vbetestVESA 情報を出力するプログラムがあります。 - SciTech Software には、
vbetest1994 年に遡る DOS とは無関係の製品がありました。 - x86 "PC" バージョンのGNU GRUB 2には
vbeinfo、使用可能なビデオ モードを印刷したり、特定のモードを試したりするためのコマンドがあります。これらは、関数 01h のvbetest代わりに組み込みテーブルを使用します。x86 EFI を含む他のプラットフォームでは、これらはより汎用的な および に置き換えられます。videoinfovideotest
Linux ビデオモード番号
Linuxカーネルでは、メモリ内のコードをカーネルに渡すことで、起動時にユーザーが VESA モードを選択できるようになっています。LILO ブートローダーは、設定ファイル内の "vga" パラメータに基づいてこのコードを渡します。このコードは、'vga=XXX' (XXX は 10 進値) または 'vga=0xHHH' (HHH は 16 進値) の形式をとります。ただし、'vga=' ブートローダーパラメータは、VESA ビデオモード番号を直接受け入れるわけではありません。Linux ビデオモード番号は、VESA 番号に 512 (10 進表現の場合) または 0x200 (16 進表現の場合) を加えた値です。たとえば、640x480 および 256 色を表す 257 (0x101) という定義済みの VESA 値は、Linux ビデオモード値では 769 (0x301) になります。[12]
前述のように、VESA規格では限られたモードセットが定義されており、特に上記のモードは定義されていません。1280 ×1024がカバーされており、代わりに、グラフィック アダプターの製造元にとって、その実装は完全にオプションです。ベンダーは任意の追加値を自由に使用できるため、下の表で赤で示されているモード(10 進数で表現)は、すべてのグラフィック アダプターに適用されない可能性があります。
1: 32 ビットは実際には (8:8:8:8) ですが、最後の 8 ビットの数字は「空の」アルファ チャネルです。それ以外は 24 ビット カラーと同じです。多くの GPU は、32 ビット メモリ アラインメントによるビデオ メモリ アクセスの高速化のためだけに、24 ビット モードではなく 32 ビット カラー モードを使用します。
VGA= 864 [ 352 (0160h)]も選択されているようです1280 ×800(8ビット)は、さまざまなラップトップのディスプレイ用です。VGA
= 834 [ 322 (0142h)]は1400 ×1050
Parallelsで利用可能なモード
Parallels仮想マシンの VESA BIOS エミュレーションには、非標準の VESA モードの異なるセットがあります。ビルド 3214 以降、LRMI vbetest では次のモードが明らかになります。
VirtualBoxで利用可能なモード
VirtualBox 仮想マシンの VESA BIOS エミュレーションには、非標準の VESA モードの異なるセットがあります。6.1.38_Ubuntu ビルド r153438 以降、VESA BIOS 関数AX=0x4F01はこれらのモードを明らかにします (VBETables-gen.c も参照)。
参照
参考文献
- ^ 「efifb とは何か? — Linux カーネルのドキュメント」. kernel.org . 2020 年11 月 24 日閲覧。
- ^ 「vesafb とは何か? — Linux カーネルのドキュメント」. kernel.org . 2020 年11 月 24 日閲覧。
- ^ “SUPER VGA BIOS EXTENSION Standard # VS891001 › Gemixtes”. 2013年12月11日. 2013年12月11日時点のオリジナルよりアーカイブ。2022年12月27日閲覧。
- ^ “VBE バージョン 1.2”. 1991年10月22日. 2009年1月14日時点のオリジナルよりアーカイブ。 2022年12月27日閲覧。
- ^ 「VBE/Core 2.0 Standard」。2008年12月11日。2008年12月11日時点のオリジナルよりアーカイブ。 2022年12月27日閲覧。
- ^ abc 従来の10h BIOS呼び出しで利用可能なモード
- ^ 352 (0160h)も選択するようです1280 × 800 (8 ビット) さまざまなラップトップのディスプレイ用
- ^ 32 ビットは実際には (8:8:8:8) ですが、最後の 8 ビットの数字は「空の」アルファ チャネルです。それ以外は 24 ビット カラーと同じです。多くの GPU は、32 ビットメモリ アラインメントによるビデオ メモリ アクセスの高速化のためだけに、24 ビット モードではなく 32 ビット カラー モードを使用します。
- ^ 322 (0142h)は 1,400×1,050
- ^ GitHub 上の hwinfo ソースコード
- ^ "mdt". GitHub .
- ^ Documentation/svga.txt および Documentation/fb/vesafb.txt のカーネルドキュメントを参照してください。
さらに読む
- VESA Super VGA BIOS 拡張 1.0 (標準番号 VS891001) 1989 年 10 月 1 日
- VESA BIOS 拡張 1.2
- VESA BIOS 拡張 2.0
- VESA BIOS 拡張 3.0
- ドブ博士によるVESA VBE 2.0仕様の検討
- Super VGA (VESA 1.x 非線形) の使用方法
- Wayback Machineの VESA BIOS 拡張シリアル制御インターフェース標準(2005-12-21 アーカイブ)
- Wayback Machineの VESA BIOS 拡張機能/アクセラレータ機能 (VBE/AF) (2008-12-09 アーカイブ)
- VESA BIOS インターフェース
外部リンク
- SuperVGA/VESA プログラマーのメモ
- VESA VBE 2.0/3.0 実装チップセットのリスト
- VBE モード情報をキャプチャする vbespy ソース パッケージ 2011 年 7 月 22 日、Wayback Machineにアーカイブされました
- vbespyソースパッケージの使い方
- VBETOOL - ビデオカードの BIOS コードを実行するための (現在はアーカイブされている) アプリケーション
