借り初めのひみつきち

仮ブログです。

あべこべ。

世の中にはとりあえず Windows さえ起動できれば細かい挙動はあまり気にしない UEFI 実装もあるようです。

通常の PC は画面が横長の方向 (Landscape) に VRAM が配置されているのが普通ですが、小型タブレットでは縦長の方向 (Portrait) の配置がネイティブになっている機種が少なくありません。

そういう機種は起動時の画面が縦長の方向が正になるように配置されるのですが、とある機種では起動時の画面が横長に表示されているのにどうも挙動が怪しいことがありました。

気になっていろいろと詳しく調べてみると、もともと縦長画面がネイティブなのに BGRT のロゴやフォントをむりやり横に倒して横長画面に見せかけていました。

起動直後の画面はそれっぽく見えるのですが、 Windows に制御が移ってしまうと画面が崩れてボロが出ます。

その機種で EFI シェルを起動するとコンソールがかなり不思議な挙動をします。

Windows 端末としては評価がそこそこいい機種みたいなので残念ですが、普通の人は EFI シェルなんて使わないので気づく人はほとんどいないのでしょう。


機種によってコンソールの挙動もいろいろあって、 80x25 のテキストモードはほとんどの機種にありますが、稀にない機種もあります。

現代の UEFI マシンではテキストモードといっても VGA テキストモードを使ってるわけではなく GOP の上でグラフィカルコンソールを表示してるだけです。

では、文字数の多いモードに切り替えるとどうなるか?

当然一画面に表示できる文字数は増えますが、文字数を増やしたからといってグラフィックスモードの画素数が増えるとは限りません。

広い画面の真ん中にポツンと小さく表示されるモードもあれば、画面いっぱいにテキストが表示されるモードもあって、 VGA の頃の 80x25 のテキストが 640x480 ピクセルの画面モードになるような相関がまったく見つかりません。

なお、ほとんどの機種ではスクロール時に単純なコピーを使っているようで、画素数が増えれば増えるほど劇的に重くなります。*1

一方 Mac のコンソールはスクロールが爆速で、コンソール作業時の快適度が全然違います。


UEFI でキーボードが取得できない機種は見たことありませんが、マウスやタッチパネルの挙動が怪しい機種には結構遭遇します。

UEFI 設定画面 (俗にBIOS画面と言われてるアレ) では使えてるしプロトコルも取得できているのに、いざ自作のアプリで取得してみるとデータが取れなかったりします。

アクセス方法が間違ってるのかな?と思って調べてみても UEFI の解説とかサンプルってあまり見つからないのでよくわかりません。


UEFI って機種依存が結構激しいみたいです。

*1:一般にVRAMは書き込みが早く読み込みが遅いので、そのままコピーするとメインメモリの何倍も遅いです