EnglishРусский Map

Терминал с GPU-ускорением

title
Терминал с GPU-ускорением
type
concept
summary
Эмуляторы терминала, отрисовывающие глифы через GPU: задержка и чёткость в обмен на расход энергии
tags
terminal, rendering, macos
created
2026-04-29
updated
2026-07-29
lang
ru
source_updated
2026-07-29
translated
2026-09-01
translator
lllm/antigravity/gemini-3.7-flash-medium

Терминал с GPU-ускорением отрисовывает текст через графический конвейер (Metal на macOS, OpenGL или Vulkan на других платформах) вместо обычного блиттинга на CPU. Примеры: Ghostty, Alacritty, Kitty, WezTerm. Обещание - более быстрая прокрутка при плотном выводе, плавные анимации и более чёткий субпиксельный рендеринг с лигатурами.

Ядро Ghostty можно использовать отдельно от самого приложения. remux подключает его как готовый фреймворк GhosttyKit, чтобы получить нативный терминал для iOS, и перенимает вместе с ним его рендеринг и тему по умолчанию.

Что именно делает GPU

Глифы загружаются в текстурный атлас. На каждом кадре терминал формирует список quad'ов - по одному на знакоместо - с текстурными координатами, цветами фона и текста, а также эффектами. GPU сэмплирует атлас и собирает кадр. Это отлично масштабируется: сетка 200×60 знакомест - это 12 000 quad'ов, пустяк для любого современного GPU.

Проблема не в пропускной способности. Дело в том, что конвейер запускается при каждом изменении вывода, а на macOS энергопотребление GPU растёт по совсем другой кривой, чем у CPU. Отрисовка статичного текста на CPU задействует энергоэффективные пути с данными прямо из кэша; отрисовка на GPU будит Metal, планирует кадр и переводит дискретный или встроенный GPU в режим повышенного энергопотребления. При нагрузках, где терминал почти всегда простаивает с редкими всплесками активности (потоковый вывод от coding-агента), GPU остаётся нагретым непрерывно.

Компромиссы, незаметные в бенчмарках

  • Взаимодействие с App Nap. macOS приостанавливает окна, которые кажутся неактивными. Анимированные спиннеры и мигающие курсоры сохраняют за терминалом статус активного, сводя на нет энергосбережение на уровне ОС.
  • Избыточная перерисовка в простое. Мигающий курсор, индикатор ввода или единственный спиннер заставляют полностью перезапускать графический конвейер на каждом кадре.
  • Профили работы от батареи и от сети. Большинство GPU-терминалов не видят между ними разницы. Исключение - iTerm2: в нём есть переключатель GPU для каждого профиля, что позволяет легко настроить отдельный режим для работы от аккумулятора.

Специфичный для macOS сценарий сбоя - сжигать больше энергии, чем видеозвонок, ради отображения git status - описан в terminal-gpu-battery-cost.

Где рендеринг на GPU действительно оправдан

Плотные потоки вывода (компиляция, чтение логов через tail), где пропуск кадров бросается в глаза. Графические возможности - 24-битные градиенты (true color), протоколы вывода изображений (Sixel, inline-изображения в iTerm2, Kitty graphics protocol). Нагрузки на стационарных компьютерах, подключённых к розетке, где расход энергии не имеет значения.

Для типичных сессий с агентами на ноутбуке ничего из этого не актуально. Вариант с одним лишь CPU выигрывает по метрике, которая пользователю важнее всего: минутам работы до разрядки аккумулятора.

Sub-pages