Orbital научился обновлять окна частично — втрое быстрее развёрнутые окна
10.04.2026Композитор Orbital получил программное частичное обновление: перерисовываются только изменившиеся пиксели окна. Производительность развёрнутых и полноэкранных окон выросла примерно втрое; поддержка добавлена в SDL 1.x и в крейт softbuffer.
Почему окно перерисовывали целиком
Оконный менеджер должен сообщить драйверу, какую часть экрана нужно перерисовать. Простейший и самый частый вариант — «перерисуй всё окно целиком». Для окна размером с экран это означает копирование мегабайта пикселей, даже если изменился один.
Ситуация усугубляется развёрнутым окном. При изменении размера содержимое надо пересчитать, и если обновление идёт целиком, стоимость растёт пропорционально площади — а на переключение между окнами это становится заметно на глаз.
Что сделано
Compositor теперь считает, какая часть окна действительно изменилась, и просит драйвер обновить только её. Реализация программная: перенос прямоугольных участков средствами самого композитора. Для отладки добавлена рамка «повреждений» — она показывает, какие участки экрана композитор считает изменившимися. Это инструмент анализа: по рамке видно, откуда берутся лишние перерисовки.
Поддержка со стороны библиотек
Одной возможности композитора мало — приложение должно уметь сообщить, что именно изменилось. Поддержка добавлена в softbuffer и в SDL 1.x.
Здесь важно для разработчика на Rust: softbuffer — крейт для буферизации кадров, и теперь он умеет сообщать композитору о частичном обновлении на Redox. Для приложения, рисующего через него, это ускорение получается без изменения собственного кода.
Оригинал
Коммиты Add software partial blit и Add damage borders от 10 апреля 2026 года в репозитории redox-os/orbital; сводка «This Month in Redox — April 2026», разделы «Better Orbital Performance» и «Orbital Improvements»
Упоминаний: 1 · Просмотров: 2