VESA BIOS拡張

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拡張(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を介して呼び出されるいくつかの新しい関数を定義します。関数番号はAX=4F00、または(AH=4F, AL=00)で始まります(関数00hの場合)。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を使用して実装されていますが、関数 5 (ディスプレイウィンドウ制御、64KB VGA メモリウィンドウからアクセスできるフレームバッファの部分を選択する)、関数 7 (ディスプレイ開始の取得/設定、左上ピクセルのメモリ位置を変更してスクロールと複数のビデオページの使用を可能にする)、および関数 9 (パレットデータの取得/設定、インデックスモードでパレットの色を変更する) のみにアクセスできます。したがって、グラフィックモードを設定するには、保護モードに入る前に設定するか、モード V86 を使用して保護モードのオペレーティングシステムから BIOS ソフトウェアを実行できるようにする必要がありました。
スーパー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 関数にアクセスできるようになり、保護モードからグラフィックモードの変更や論理スキャンライン長の設定などが可能になります。これらは、以前の関数 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はモード番号を次のように定義しています。

少し意味
0~8モード番号。ビット8が1の場合、VESA定義のVBEモードです。
9-10拡張用に予約されています。0 に設定する必要があります。
11リフレッシュレート制御を選択します。1に設定すると、リフレッシュレートにユーザー指定のCRTC値が使用されます。それ以外の場合は、BIOSのデフォルトのリフレッシュレートが使用されます。
12~13VBE/AF用に予約されています。0に設定する必要があります。
14リニア/フラットフレームバッファの選択。1に設定するとリニアフレームバッファが使用され、それ以外の場合はバンクフレームバッファが使用されます。
15ディスプレイメモリの保持を選択します。1に設定するとディスプレイメモリが保持され、それ以外の場合はディスプレイメモリがクリアされます。

VBE/Core 2.0以降、VESAは新しいVESAモード番号を定義しなくなり、デバイスに古い番号を実装する必要もなくなりました。画面モードの情報を正しく検出するには、関数01h(VBEモード情報の取得)を使用してください。

モード 81FFh は、現在のメモリの内容を保持し、ビデオ メモリ全体にアクセスできるように設計された特別なビデオ モードです。

VESAで定義されたモード

VBE 2.0規格以降、VESAでは新しいモードは定義されなくなり、古いモードは必須ではなくなりました。定義済みのモードの使用は非推奨とみなすべきです。最新のビデオカードはこれらのモード番号を使用する場合と使用しない場合があります(ほとんどのカードは下位互換性のために使用していますが)。また、最新のソフトウェアはこれらのモードを使用すべきではありません。ソフトウェアが利用可能なディスプレイモードを見つける正しい方法は、モードのリストを取得し(「Function 00h - Return VBE Con​​troller Information」を使用)、次に各モードをチェックし(「Function 01h: Return VBE Mode Information」を使用)、必要なモードが見つかるまで続けることです。[要出典]

グラフィックモード320×200640×400640×480800×6001024×7681280×1024
16色パレット258 (0102h), 106 (6Ah)260 (0104h)262 (0106h)
256色パレット256 (0100h)257 (0101h)259 (0103h)261 (0105h)263 (0107h)
15ビット(5:5:5)269 (010Dh)272 (0110h)275 (0113h)278 (0116h)281 (0119h)
16ビット(5:6:5)270 (010Eh)273 (0111h)276 (0114h)279 (0117h)282 (011Ah)
24ビット(8:8:8)271 (010Fh)274 (0112h)277 (0115h)280 (0118h)283 (011Bh)

モード264~268はテキストモードです。264(0108h)は80列×60行(80×60)、265(0109h)は132×25、266(010Ah)は132×43、267(010Bh)は132×50、268(010Ch)は132×60です。

テキストモード
80132
25265 (0109h)
43266 (010Ah)
50267 (010Bh)
60264 (0108h)268 (010Ch)

その他の一般的なグラフィックモード

以下の表は、VESA で定義されたモード (黒で示されている値) と、一般的に使用されているが、標準で定義されていないためすべてのグラフィック カードで機能しない可能性があるモード (赤で示されている値) を組み合わせたものです。

グラフィックモード320×200640×400640×480800×500800×600896×6721024×6401024×7681152 × 7201280 ×10241360 × 7681440 × 9001600 ×1200
16色パレット[6][6]258 (0102h),
106 (6Ah)
260 (0104h)262 (0106h)
256色パレット[6]256 (0100h)257 (0101h)367 (016Fh)259 (0103h)303 (012Fh)362 (016Ah)261 (0105h)357 (0165h)263 (0107h)352 (0160h) [7]284 (011Ch)
15ビット(5:5:5)269 (010Dh)289 (0121h)272 (0110h)368 (0170h)275 (0113h)304 (0130h)363 (016Bh)278 (0116h)358 (0166h)281 (0119h)353 (0161h)285 (011Dh)
16ビット(5:6:5)270 (010Eh)290 (0122h)273 (0111h)369 (0171h)276 (0114h)305 (0131h)364 (016Ch)279 (0117h)359 (0167h)282 (011Ah)978 (03d2h)354 (0162h)286 (011Eh)
24ビット(8:8:8)271 (010Fh)291 (0123h)274 (0112h)370 (0172h)277 (0115h)306 (0132h)365 (016Dh)280 (0118h)360 (0168h)283 (011Bh)355 (0163h)287 (011Fh)
32ビット(8:8:8) [8]292 (0124h)297 (0129h)371 (0173h)302 (012Eh)307 (0133h)366 (016E​​h)312 (0138h)361 (0169h)317 (013Dh)980 (03d4h)356 (0164h)322 (0142h) [9]

モード検出

システムで利用可能なVBEモードを検出するツールがいくつか開発されています。これらのツールは通常、関数01hを呼び出すことで動作します。これは、デバイスの自己ドキュメントに記載されている拡張モードのテーブルを想定するよりも信頼性が高いです。

  • hwinfoはSuSE Linuxや他のLinuxディストリビューションで使用されているハードウェア検出ツールです[10]実行するとhwinfo --framebuffer、「Mode」行にVESAモードなどのグラフィック情報が報告されます。
  • mdtはVESA BIOS機能を使用してモニターデータを読み取るLinuxまたはDOSツールです。 [11]
  • Linux リアルモードインターフェイス (LRMI) には、vbetestVESA 情報を出力するプログラムがあります。
  • SciTech Software にvbetestは、1994 年に遡る DOS とは無関係の製品がありました。
  • x86版「PC」版GNU GRUB 2には、vbeinfo利用可能なビデオモードを表示したり、特定のモードを試したりするコマンドがあります。これらのコマンドは、関数01hvbetestの代わりに組み込みテーブルを使用します。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色を表すVESA定義値257(0x101)は、Linuxビデオモード値769(0x301)に相当します。[12]

前述のように、VESA規格では限られたモードセットが定義されており、特に上記のモードは定義されていない。1280 ×1024はカバーされており、グラフィックアダプタメーカーによる実装は完全に任意です。ベンダーは任意の追加値を自由に使用できるため、以下の表で赤で示されているモード(10進数で表記)は、すべてのグラフィックアダプタに適用されるとは限りません

320×200640×400640×480800×500800×600896×6721024 × 6401024 × 7681152 × 7201280 × 1,0241400 × 1,0501440 × 9001600 × 1,2001920 ×10801920 ×1200
16色770 0302h772 0304h774 0306h
256色768 0300h769 0301h879 036Fh771 0303h815 032Fh874 036Ah773 0305h869775 0307h835864796893
15ビット(5:5:5)781 030Dh801 0321h784 0310h880 0370h787 0313h816 0330h875 036Bh790 0316h870793 0319h865797
16ビット(5:6:5)782 030Eh802 0322h785 0311h881 0371h788 0314h817 0331h876 036Ch791 0317h871794 031Ah837866798
24ビット(8:8:8)783 030Fh803 0323h786 0312h882 0372時間789 0315h818 0332時間877 036Dh792 0318h872795 031Bh838867799
32ビット(8:8:8)1804809883814819878824873829868834980
03D4h

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 では以下のモードが検出されます。

640×400640×480720×480800×500800×600896×6721024 × 6401024 × 7681152 × 7201280 × 1,0241440 × 9001600 × 1,200
256色パレット256 (0100h)257 (0101h)367 (016Fh)364 (016Ch)259 (0103h)297 (0129h)358 (0166h)261 (0105h)355 (0163h)263 (0107h)352 (0160h)284 (011Ch)
15ビット(5:5:5)272 (0110h)275 (0113h)278 (0116h)281 (0119h)285 (011Dh)
16ビット(5:6:5)289 (0121h)273 (0111h)368 (0170h)365 (016Dh)276 (0114h)298 (012Ah)359 (0167h)279 (0117h)356 (0164h)282 (011Ah)353 (0161h)286 (011Eh)
24ビット(8:8:8)290 (0122h)274 (0112h)369 (0171h)366 (016E​​h)277 (0115h)299 (012Bh)360 (0168h)280 (0118h)357 (0165h)283 (011Bh)354 (0162h)287 (011Fh)

VirtualBoxで利用可能なモード

VirtualBox仮想マシンのVESA BIOSエミュレーションには、非標準VESAモードの異なるセットがあります。6.1.38_Ubuntuビルドr153438以降、VESA BIOS関数AX=0x4F01でこれらのモードが確認できます(VBETables-gen.cも参照)。

320x200640×400640×480800×6001024 × 7681152 × 8641280 × 10241600 × 1200
4ビットパレット260

(0104h)

262

(0106h)

256色パレット326

(0146h)

256

(0100h)

257

(0101h)

259

(0103h)

261

(0105h)

328

(0148h)

263

(0107h)

15ビット(5:5:5)269

(010dh)

272

(0110h)

275

(0113h)

278

(0116h)

329

(0149h)

281

(0119h)

16ビット(5:6:5)270

(010eh)

273

(0111h)

276

(0114h)

279

(0117h)

330

(014ah)

282

(011Ah)

24ビット(8:8:8)271

(010fh)

274

(0112h)

277

(0115h)

280

(0118h)

331

(014bh)

283

(011Bh)

32ビット (x:8:8:8)320

(0140h)

321

(0141h)

322

(0142h)

323

(0143h)

324

(0144時間)

332

(014ch)

325

(0145h)

327

(0147h)

参照

参考文献

  1. ^ 「efifbとは何か? — Linuxカーネルドキュメント」kernel.org . 2020年11月24日閲覧
  2. ^ 「vesafbとは何か? — Linuxカーネルドキュメント」kernel.org . 2020年11月24日閲覧
  3. ^ “SUPER VGA BIOS EXTENSION Standard # VS891001 › Gemixtes”. 2013年12月11日. 2013年12月11日時点のオリジナルよりアーカイブ2022年12月27日閲覧。
  4. ^ “VBE Version 1.2”. 1991年10月22日. 2009年1月14日時点のオリジナルよりアーカイブ。 2022年12月27日閲覧
  5. ^ “VBE/Core 2.0 Standard”. 2008年12月11日. 2008年12月11日時点のオリジナルよりアーカイブ。 2022年12月27日閲覧
  6. ^ abc 従来の10h BIOS呼び出しで利用可能なモード
  7. ^ 352 (0160h)も選択するようです1280 × 800 (8ビット) 各種ノートパソコンのディスプレイ用
  8. ^ 32ビットは実際には(8:8:8:8)ですが、最後の8ビット数値は「空の」アルファチャンネルです。それ以外は24ビットカラーと同じです。多くのGPUは、32ビットメモリアライメントによるビデオメモリアクセスの高速化のためだけに、24ビットモードではなく32ビットカラーモードを使用しています
  9. ^ 322 (0142h)は 1,400×1,050
  10. ^ GitHub上のhwinfoソースコード
  11. ^ "mdt". GitHub .
  12. ^ 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
  • Dr. Dobbによる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コードを実行するための(現在はアーカイブされている)アプリケーション
Retrieved from "https://en.wikipedia.org/w/index.php?title=VESA_BIOS_Extensions&oldid=1308487961"