Preferences - webdino/gecko-embedded GitHub Wiki

Gecko の設定について

Gecko Embedded で設定変更したくなることがよくある設定 (about:preferences/config や prefs ファイルで指定する項目) に関するメモです。

Gecko エンジンの動作設定

Hardware Acceleration

  • layers.acceleration.disabled
    • HW Compopsiting (OpenGL OMTC) を無効化するかどうか
  • layers.acceleration.force-enabled
    • これを true にすると HW Compositing が利用できないと判定された場合でも GPU を利用する
  • gfx.canvas.azure.accelerated
    • Canvas での Hardware Acceleration を利用するかどうか
  • widget.wayland-dmabuf-webgl.enabled

WebRender

Rust 実装レンダリングエンジン WebRender の設定。Gecko 92 で Linux 含む全環境で有効化された。Gecko 92 ではレガシーレンダリングエンジンに戻す設定が一時的に用意されたが Gecko 93 にてそれも廃止し、全面的に WebRender (Sofware または Hardware) が利用されるようになった。

設定変更結果は about:support で確認できる

  • Graphics - Compositing: WebRender となっていると GPU アクセラレーション付き WebRender、Compositing: WebRender (Software) となっているとソフトウェア処理の WebRender へのフォールバックが行われている。決定ログの WEBRENDER, WEBRENDER_QUALIFIED も参照。
  • gfx.webrender.all
    • true にすると WebRender を有効化する設定が全てオンになる (自動判断で無効だが有効化したい場合用)
    • Linux では OpenGL レイヤーの利用の強制オン設定も含む
    • Gecko 92 以降ではこの設定はせずとも WebRender が有効化される。基本的には Gecko 91 までで使う設定
  • gfx.webrender.software (Gecko 87 以降)
    • WebRender での GPU 利用をせずソフトウェア WebRender を利用する
  • webrender.low-quality-pinch-zoom
    • 高性能 PC 向けではなく Android 端末など低性能端末向けのピンチズーム処理を行う
    • 組込 SoC でも Android 同様に高速ピンチズーム処理が欲しい場合に有効化して使うことを検討
  • gfx.webrender.debug.profiler
    • true に設定すると WebRender の Overlay Debugging 機能が有効化される
  • gfx.webrender.debug.profiler-ui
    • Overlay Debugging 有効時に何を表示するか設定する文字列を指定する。初期設定は Default でかなり細かいものが表示されるが、簡易版としては CompactSlow indicators などもあるし、単純に FPS 表示をしたいだけであれば FPS と設定するとよい。
    • その他に設定可能な文字列は profiler.rs のコメントを参照

最新の Gecko では利用しない deprecated prefs

  • gfx.webrender.all.qualified (隠し設定)
  • gfx.webrender.force-legacy-layers (deprecated on Gecko 93)
    • Gecko 92 で gfx.webrender.force-disabled の代わりに使う WebRender 無効化用の設定
  • gfx.webrender.force-disabled (deprecated on Gecko 92)
    • true にすると WebRender を利用しない (自動判断で有効だが無効化したい場合用)
  • gfx.webrender.enabled (deprecated)
    • true にすると WebRender を利用する (デフォルト無効である古いバージョン用)
    • Linux では layers.acceleration.force-enabled=true にしていなければ有効化されない
  • nglayout.debug.paint_flashing, nglayout.debug.invalidation

WebRender の振る舞いは prefs ではなく環境変数からのみ制御可能なものもある。

e10s/fission (マルチプロセス) 関連

e10s の有効・無効や有効時のプロセス数の設定。設定変更結果は about:support の「マルチプロセスウインドウ: 2/2 (ユーザー設定により有効)」などで確認できる。

  • browser.tabs.remote.autostart, browser.tabs.remote.autostart.2
    • e10s 有効化の基本設定。Gecko 60 で有効化するには true を設定、Gecko 68 以降で無効化するには autostart の方に false を設定して再起動 (または実行時オプションとして MOZ_FORCE_DISABLE_E10S=1 をつけて起動する)
  • browser.tabs.remote.force-enable
  • browser.tabs.remote.force-disable
    • e10s 強制無効化
  • extensions.e10sBlocksEnabling, extensions.e10sBlockedByAddons
  • dom.ipc.processCount
  • fission.autostart
    • fission の有効化。Gecko 69 から試験的に有効化可能な iframe プロセス分離

RZ/G1 シリーズでは ハード/BSP の制限で EGL ウィンドウが一つしか作れない都合、egl による GPU アクセラレーションと canvas-gpu アクセラレーションや (未検証だが) WebGL などと共存できないため e10s はオフにすることになりそう。

Stylo

Servo から移植した Rust 実装スタイルエンジン Stylo の有効・無効の設定。設定変更結果は about:support の「Stylo: content = true (デフォルトで有効), chrome = true (デフォルトで有効)」で確認できる。

  • layout.css.servo.enabled
    • true にすると Stylo を利用する

WebGL/WebGPU

  • webgl.msaa-force
    • true にすると WebGL anti-aliasing を利用する (自動判断でサポート外扱いされているが使えるハズ)
  • dom.webgpu.enabled (gecko 73〜)
    • true にすると WebGPU を有効化する

Video Codecs

  • media.mediasource.enabled
    • MSE の有効化
  • media.mediasource.mp4.enabled
    • MSE での mp4 サポートの有効化

タッチイベント

セキュリティ制限

  • privacy.file_unique_origin
    • ローカルファイルの同一オリジンルールを緩和する。具体的には HTTP(S) ではない fetch を行うコードが Firefox 68 から許可されなくなった ために file URL で読み込むと動かないコンテンツを取りあえず動作させたい場合 false に設定する

SpiderMonkey の動作設定

  • javascript.options.baselinejit
    • ベースライン JIT の有効・無効を切り替える (ブラウザ自体の再起動不要)
  • javascript.options.ion
    • IonMonkey による最適化 JIT の有効・無効を切り替える (ブラウザ自体の再起動不要)
    • ベースライン JIT 無効化時はこちらも無効になっているハズ
  • dom.max_script_run_time
    • コンテンツの JavaScript が重すぎる場合に中断するかどうか確認するまでの時間を指定する。重たいベンチを動作させるときに事前に設定しておくとよい。デフォルト 10 なのを 1000 にするなどだが、場合によっては 0 (無限) に設定する。

デバッグ関連

フレームレート表示

  • layers.acceleration.draw-fps (deprecated)
    • true にすると左上にフレームレートが表示される簡易機能 (しかし表示されないケースあり)
    • 開発ツールのパフォーマンスツール でプロファイリングしつつ FPS 履歴を確認できる
    • WebRender ではこの設定は有効ではない。gfx.webrender.debug.profiler を参照

レイヤー境界の表示

  • layers.draw-borders
    • true にするとコンポジットレイヤーの境界線が表示される。CSS Transition/Animation の開始が遅い場合などは適切なレイヤーが検出されているか確認、されていなければ will-change 設定をして指示をするといった対応が必要。

リモートデバッグ

  • devtools.debugger.remote-enabled
    • リモートでバッグを許可するには true を設定。次の項目も合わせて true にする必要あり
  • devtools.debugger.usb.enabled = true
    • USB 経由のリモートでバッグを許可するには true を設定
  • devtools.debugger.prompt-connection
    • 接続時に許可ボタンを押さなくとも自動接続させたければ false を設定

履歴とキャッシュ

設定画面での変更

終了時にキャッシュや履歴などのデータを自動削除する設定は about:preferences で設定できる

  • about:preferences を開く
    • Privacy & Security panel - Cookies and Site Data
      • Delete cookies and site data when Firefox is closed をオンにする
      • これにより cookie や local storage などコンテンツ側のコードで保存させるデータを自動消去できる
    • Privacy & Security panel - History
      • Firefox will Use custom settings for History を選択して Clear history when Firefox closes をオンにして Settings にて対象とする項目を選択する
      • これによりコンテンツ側のプログラムに関係なくブラウザエンジン側で自動的に保存している履歴やキャッシュなどを自動消去できる

参考: How to clear the Firefox cache

ディスク・メモリキャッシュ

  • browser.cache.disk.enable
    • false に設定するとディスクキャッシュ (ファイルのキャッシュなど) を無効化できる
  • browser.cache.memory.enable
    • false に設定するとメモリキャッシュ (画像デコードのキャッシュなど) を無効化できる
  • browser.cache.memory.capacity
    • -1 (デフォルト) では容量に応じた自動設定、0 は無効、正の整数値は指定 KB のメモリを利用する

その他

  • dom.max_script_run_time
    • 重たい JavaScript 処理ページで応答のないスクリプト警告表示するまでの時間を設定する
  • browser.sessionstore.interval
    • セッション情報の自動保存。デフォルト 15 秒 (15000) だが長くすればディスクアクセスが減る
  • browser.sessionstore.resume_from_crash
    • false に設定するとセッション情報の自動保存自体を無効化することも可能
  • dom.push.enabled
    • ESR 68 では false に設定されているがその状態だと起動時に JavaScript error: resource:///modules/sessionstore/SessionStore.jsm, line 1215: uncaught exception: [2147746065](http://james-ross.co.uk/mozilla/misc/nserror?2147746065) というエラーが出てしまう バグがある。この問題を取りあえずで回避したい場合は dom.push.enabled=true に設定を変更する

references