Графика Redox движется к совместимости с Linux DRM: плоскости, отображение памяти GPU
14.05.2026В DRM Redox появились плоскости — аппаратное ускорение композитинга — и исчезла необходимость в собственных ioctl: реализованы Linux-совместимые MODE_SETPLANE, ADDFB2, CLOSEFB, SET_VERSION, GET_UNIQUE. Драйвер Intel научился отображать память в GPU, а порт libdrm доведён до конца.
Зачем нужна совместимость с DRM
DRM — подсистема Linux для управления видеопамятью и вывода на экран. У неё три части: ядерный интерфейс с ioctl, библиотека libdrm для пользовательского пространства и драйверы видеокарт.
Графическое ПО на Linux почти не пишет ioctl руками: оно идёт через libdrm. Соответственно, чтобы перенести на Redox приложение или набор компонентов, нужен и интерфейс с Linux-совместимыми запросами, и работающий libdrm. Пока Redox отвечал своими ioctl, перенос был возможен только с правкой кода.
Что появилось в марте
Работа шла несколько месяцев, и в марте 2026 года был сделан решительный шаг: собственные Redox-специфичные ioctl убраны в пользу Linux-совместимых. Реализованы MODE_SET_CRTC, MODE_CURSOR, MODE_PAGE_FLIP, MODE_DIRTYFB. Для тех, кто знает Linux, важно: перенос существующего кода теперь не требует ветвлений по операционной системе.
Добавлено отображение памяти в GPU для драйвера Intel и теневые буферы для памяти с объединением записей, где прямое отображение давало бы плохую производительность.
Плоскости и что они дают
Плоскость — это аппаратно выделенный слой изображения, в который пишут по очереди, а затем переключают на экран без перерисовки. Это и есть аппаратное ускорение композитинга: вместо копирования кадра в память видеокарты слой подменяется.
Реализованы плоскости, основная плоскость для каждого контроллера вывода и запросы MODE_SETPLANE и ADDFB2.
Для графического стека на Rust
Это прямой интерес к wlr-rs, Smithay, COSMIC — компонентам, написанным на Rust. Они опираются на DRM-подобный интерфейс. Чем ближе Redox к Linux-совместимому DRM, тем ближе к переносимости этих крейтов, а вместе с ними — композиторов и оболочек на Rust.
Порт libdrm в мае выведен из состояния незавершённой работы, а обвязки для новых ioctl появились и в relibc, и в драйверах.
Оригинал
Коммиты в репозиториях redox-os/relibc от 14 мая 2026 года: Implement MODE_SETPLANE ioctl, Implement ADDFB2 ioctl; в redox-os/base — Implement support for planes и Add primary plane for every CRTC; в redox-os/redox 13 мая — libdrm: Remove from WIP. Сводки «This Month in Redox» за март, апрель и май 2026
Упоминаний: 1 · Просмотров: 2