GPU加速レンダリング
CPUではなくGPU(Graphics Processing Unit)の並列処理能力を活用してUI・グラフィクスのレンダリングを行う技術。テキスト描画、スクロール、アニメーションなどの描画処理をGPUにオフロードすることで、CPUの負荷を軽減し描画パフォーマンスを向上させる。
なぜGPUを使うのか
CPUは逐次処理に強いが、画面のピクセルを塗りつぶすような並列処理は得意でない。GPUは何千ものコアを持ち、大量のピクセル計算を同時並列で処理できる。テキスト・グラフィクスのレンダリングはこの並列処理に適した処理。
ターミナルエミュレータへの応用
従来のターミナルエミュレータはCPU上でテキストをレンダリングしていた。大量のログ出力やスクロール時にCPU処理がボトルネックになる。GPU加速により:
- CPUはシェルとの通信・エスケープシーケンス解釈に専念
- 描画はGPUに委ねる分業体制
- 高フレームレートの滑らかなスクロールが実現
Ghosttyは各プラットフォームのネイティブGPU APIを使用する:
- macOS: Metal API
- Linux: OpenGL API
GPU加速の注意点
GPU加速は常に高速なわけではない。GPU転送のオーバーヘッドが存在するため:
- 小さなテキスト更新(カーソル点滅など)では、オーバーヘッドが無視できない
- 差分検出・部分更新との組み合わせが重要
- CPUとGPU間のデータ転送がボトルネックになることもある
関連技術
- Metal(Apple独自の低レベルGPU API)
- OpenGL(クロスプラットフォームGPU API)
- Vulkan(次世代クロスプラットフォームGPU API)
- WebGL(ブラウザ向けGPU API)