VESA BIOS Extensions ( VBE ) は、 VESA規格であり、現在バージョン 3 です。この規格は、ソフトウェアが高解像度および高ビット深度の対応ビデオボードにアクセスするために使用できるインターフェースを定義します。これは、解像度 640×480ピクセル、色深度 16 色 (4 ビット) 以下に制限されている「従来型」のINT 10h BIOSコールとは対照的です。VBE は、ビデオカードの BIOSを介して利用可能になります。BIOS は、起動時に自身を指す割り込みベクタをいくつかインストールします。
最新のビデオカードのほとんどは、より高性能なVBE 3.0規格を実装しています。VBEの旧バージョンはリアルモードインターフェースしか提供しておらず、保護モードのオペレーティングシステム内から使用するとパフォーマンスが大幅に低下します。そのため、VBE規格はビデオカードのドライバ開発にはほとんど使用されておらず、各ベンダーは自社のビデオカードと通信するための独自のプロトコルを独自に開発する必要がありました。しかしながら、ドライバがリアルモード割り込みにサンクアウトしてスクリーンモードを初期化し、カードのリニアフレームバッファに直接アクセスすることは一般的です。これは、そうしないと、カードごとに存在する数百もの独自のバリエーションを処理する必要が生じるためです。
EFI 1.x システムでは、INT 10H と VESA BIOS 拡張機能 (VBE) は EFI UGA プロトコルに置き換えられます。広く使用されているUEFI 2.x システムでは、INT 10H と VBE はUEFI GOPに置き換えられます。[ 1 ] [ 2 ]
当初、標準化の必要性は、Super VGAグラフィック カードで標準以上のVGA解像度や色深度モードにアクセスする際に問題が生じたことから生じた。異なるメーカーのカードでこれらのモードを使用するにはドライバが必要だったが、ドライバはごく一部のプログラム (主にAutoCADとWindows ) でしか利用できず、ソフトウェアの大部分は依然としてMS-DOS用だった。VBE により、MS-DOS のリアル モード アプリケーションの開発者は、新しいグラフィック モードを共通の標準化された方法で使用することが可能になった。[ 3 ]
VBE 1.0 (VS891001) は 1989 年に定義されました。[ 4 ] VBE 1.1 (VS900602) は 1990 年に定義されました。VBE 1.2 (VS911022) は 1991 年に定義されました。[ 5 ]これらのバージョンの 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は、以前のVBE 1.2規格に比べて、線形フレームバッファアクセスや保護モードバンキングなどの新機能を追加しています。VBE Core 2.0 [ 6 ]の機能には、以下のようなものがあります。
VBE 2.0規格の上位互換規格。この規格は、 VBE 2.0規格にリフレッシュレート制御、ステレオメガネ対応機能、マルチバッファリングの改善などの機能を追加したものです。
機能0Ahの代替として、新しい「保護モードエントリポイント」が追加されました。これにより、すべてのVBE機能にアクセスできるようになり、従来の機能0Ahでは不可能だった、保護モードからのグラフィックモードの変更や論理スキャンライン長の設定などが可能になります。
VBE/AFは、ほとんどのハードウェアで利用可能な一般的なアクセラレーション機能への低レベルの標準インターフェースを提供します。この標準で定義されている機能には、ハードウェアカーソル、ビットブロック転送(Bit Blt)、オフスクリーンスプライト、ハードウェアパンニング、描画、その他の機能へのアクセスが含まれます。32ビット保護モードで動作するように定義されています。VBE Coreは広く採用されていますが、VBE/AFをサポートするデバイスはごくわずかです。FreeBE /AFプロジェクトは、特定のグラフィックカード向けに無料のサードパーティ製VBE/AFドライバを実装しています。
補足仕様では、アプリケーションソフトウェアとSuper VGAハードウェア間のデバイス非依存インターフェースが規定されています。機能番号はVESAソフトウェア標準委員会(SSC)によって割り当てられます。
DPMSは、グラフィックカードがDPMS対応モニターと通信するためのハードウェア規格です。この規格では、既存のグラフィックコントローラーとモニターケーブルで使用できる特殊な信号システムが使用されます。この信号システムにより、グラフィックカードはモニターに対してさまざまな電源管理状態または省電力状態への移行を指示することができ、モニターが使用されていないときに自動的に電源をオフにすることが可能になります。
フラットパネルコントローラーの特殊機能へのアクセスを可能にします。
オーディオサービスに標準規格を提供します。VBE/AI仕様のバージョン1.00では、WAVE、MIDI、VOLUMEの3つのデバイスクラスが定義されています。対象外のデバイスタイプ:
ベンダー固有の拡張機能への標準的なアクセス方法を提供します。
ディスプレイデータチャネル(DDC)とは、コンピュータのディスプレイとグラフィックアダプタ間のデジタル接続であり、ディスプレイが仕様をアダプタに伝達できるようにするものです。この規格はVESAによって策定されました。
オペレーティングシステムとアプリケーションがI²Cシリアル制御インターフェースを介してデータを読み書きするための、ハードウェアに依存しない手段を提供する。
モード番号は16ビット値ですが、オプションのVBEモード番号は14ビット幅です。ビット15は、VGA BIOSによってディスプレイメモリをクリアまたは保持するためのフラグとして使用されます。VBEはモード番号を次のように定義しています。
VBE/Core 2.0以降、VESAは新しいVESAモード番号を定義しなくなり、デバイスが古い番号を実装する必要もなくなりました。画面モードの情報を正しく検出するには、関数01h - VBEモード情報を返すを使用してください。
モード81FFhは、現在のメモリ内容を保持しつつ、ビデオメモリ全体へのアクセスを可能にするために設計された特別なビデオモードです。
VBE 2.0規格以降、VESAは新しいモードを定義することはなく、古いモードも必須ではなくなります。定義済みのモードの使用は非推奨とみなすべきです。最新のビデオカードはこれらのモード番号を使用する場合と使用しない場合があり(ほとんどのカードは下位互換性のために使用していますが)、最新のソフトウェアはこれらを使用すべきではありません。ソフトウェアが使用可能な表示モードを検出する正しい方法は、モードのリストを取得し(「機能00h - VBEコントローラ情報の返却」を使用)、次に各モードをチェックして(「機能01h:VBEモード情報の返却」を使用)、必要なモードを見つけることです。
モード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 --framebuffer、VESA モードを含むグラフィック情報が「Mode」行に表示されます。vbetestVESA 情報を出力するプログラムがあります。vbetest 1994年に遡るDOS向けの無関係なソフトウェアを所有していた。vbeinfo、利用可能なビデオモードを表示したり、特定のモードを試したりするコマンドがあります。これらは、関数01hvbetestの代わりに組み込みテーブルを使用します。x86 EFIを含む他のプラットフォームでは、これらはより汎用的なコマンドに置き換えられます。videoinfovideotestLinuxカーネルでは、メモリ内のコードをカーネルに渡すことで、起動時にVESAモードを選択できます。LILOブートローダーは、設定ファイル内の「vga」パラメータに基づいてこのコードを渡します。形式は「vga=XXX」(XXXは10進数値)または「vga=0xHHH」(HHHは16進数値)です。ただし、「vga=」ブートローダーパラメータはVESAビデオモード番号を直接受け入れません。Linuxビデオモード番号は、VESA番号に512(10進数表現の場合)または0x200(16進数表現の場合)を加えた値です。たとえば、640x480ピクセル、256色を表すVESA定義値257(0x101)は、Linuxビデオモード値では769(0x301)に相当します。[ 13 ]
前述のとおり、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仮想マシン内のVESA BIOSエミュレーションには、標準とは異なるVESAモードのセットがあります。ビルド3214の時点で、LRMI vbetestは以下のモードを検出します。
VirtualBox仮想マシン内のVESA BIOSエミュレーションには、標準とは異なるVESAモードのセットがあります。6.1.38_Ubuntuビルドr153438の時点では、VESA BIOS関数AX=0x4F01によってこれらのモードが明らかになります(VBETables-gen.cも参照してください)。
これらに加えて、ユーザーは独自のビデオモードを指定することもできます。[ 14 ]