Графика 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