Skip to content

BlinkGTK v1.2.1-build2 — GPU が無い環境でのフォールバック

Latest

Choose a tag to compare

@daisy19gnu daisy19gnu released this 30 Aug 05:45
· 1 commit to main since this release

GPU が使用できない環境でも、フォールバックによりソフトウェア描画で表示される
ようになりました。あわせて、画面を撮影した画像の色が入れ替わる問題を修正しています。

できるようになったこと

GPU が使えない環境でも画面が出ます。 BLINKGTK_GPU_MODE=egl を指定した環境で
GPU 経路が利用できない場合 (ドライバが無い、仮想環境で GPU が見えない、など)、
ソフトウェア描画へフォールバックして表示を継続します。描画データが 5 秒間 1 枚も
届かなければ切り替わり、その理由を標準エラー出力に記します。GPU が使える環境では
切り替わりません。待ち時間は BLINKGTK_EGL_AUTO_FALLBACK_MS で変えられ、
切り替えそのものは BLINKGTK_EGL_AUTO_FALLBACK=0 で止められます (その場合、
画面は白いままになります)。

撮影した画像の色が入れ替わりません。 blink_web_view_capture_screenshot()
保存した画像で、赤と青が入れ替わることがありました。純粋な赤のページを撮ると
純粋な青で保存されます。撮影のたびに起きたり起きなかったりするため、1 枚だけ見て
判断できない形でした。保存経路が画像データのバイト順を確認せずに扱っていたのが
原因です。色の形式を検査して揃えるようにしました。8 枚連続で撮影したときの
入れ替わりは 4 枚から 0 枚になります。

追加した環境変数

変数 意味
BLINKGTK_EGL_AUTO_FALLBACK 0 で上記の自動切り替えを止めます (既定は有効)
BLINKGTK_EGL_AUTO_FALLBACK_MS 切り替えまでの待ち時間 (既定 5000 ミリ秒)
BLINKGTK_KEEP_GPU_COMPOSITING 1software 起動時も GPU 合成を無効にしません

BLINKGTK_KEEP_GPU_COMPOSITING は描画経路を実行中に切り替えるための前提です。
代わりに CPU 使用量が増えます — 手元の測定 (Intel UHD / Mesa、アニメーションする
ページを 20 秒、3 回の中央値) では約 12% 増でした。その機械・そのページでの比で、
上限でも代表値でもありません。このため既定は無効です。

確認した範囲

Fedora 44 / GTK 4.22.4 / Mesa 26.1.7 / Intel UHD (CML GT2)。
software・EGL・SwiftShader の 3 モードで異常終了なし。EGL の白画面・縮小描画の
検査、GPU 無し環境での退避、配布物の V8 整合とパッケージ署名を確認しています。
GPU が無い環境の検証には pixman レンダラの Weston を使いました。

パッケージは GPG で署名しています。SHA256SUMS とその署名、公開鍵を同梱しました。

Chromium 152.0.7977.64 ベース。build1 からの差分です。