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