Терминал с GPU-ускорением
- title
- Терминал с GPU-ускорением
- type
- concept
- summary
- Эмуляторы терминала, отрисовывающие глифы через GPU: задержка и чёткость в обмен на расход энергии
- tags
- terminal, rendering, macos
- created
- 2026-04-29
- updated
- 2026-07-29
- lang
- ru
- translation_of
- gpu-accelerated-terminal
- 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 выигрывает по метрике, которая пользователю важнее всего: минутам работы до разрядки аккумулятора.