Антон Бондарев

Avatar1

Антон Бондарев, генеральный директор компании Embox, один из основателей одноименного проекта с открытым кодом по созданию ОСРВ для встраиваемых систем.
После окончания СПбГЭТУ «ЛЭТИ» занимался встраиваемыми системами и системным ПО в медицине, измерительной технике и телекоммуникационном оборудовании. Увлечению системным программированием способствовала тесная связь компании и кафедры системного программирования СПбГУ. Как и любой программист, мечтал написать свою операционную систему, что в итоге и было реализовано в проекте Embox.


Организация поддержки 3d-ускорения в ОСРВ на основе проектов с открытым кодом

В докладе рассматриваются проблемы создания драйверов графических ускорителей, которые являются важной составной частью современных операционных систем. Трудность заключается не только в сложности данных аппаратных частей, но и в нежелании производителей графических ядер открывать документацию. Доклад основан на опыте полученном в процессе разработки графического 3d стека для ускорителей компании Vivante для открытой ОСРВ Embox. В ходе работ были использованы открытые проекты Mesa3d, Etnaviv, LibDRM.



Тезисы

Введение
От современных систем реального времени требуется всё большая функциональность. Аппаратный 3d-ускоритель — одна из важных частей, присутствующей в большинстве вычислительных систем. Для систем реального времени он также становиться всё более важным, поскольку с его помощью можно строить не только графические примитивы, но и решать сложные вычислительные задачи, например — вычисление навигационные. Основной проблемой использования 3d-ускорителей является их закрытость и недоступность поддержки со стороны производителей операционных систем, за исключением наиболее популярных — Linux, Windows. В данном докладе описывается опыт поддержки 3d-ускорителя Vivante в ОСРВ Embox на основе открытого проекта mesa3d.

Открытый стек OpenGL на основе проекта mesa3d
Многие производители аппаратных 3d-ускорителей обеспечивают поддержку со стороны ОС с помощью проприетарных драйверов, что не позволяет провести проверку на соответствие некоторым стандартам для систем реального времени и получить соответствующие сертификаты. Одним из вариантов решения данной проблемы является использование сторонних проектов с открытым кодом. Самым популярным проектом по поддержке различных ускорителей является проект mesa3d. Строго говоря, mesa включает в себя целый набор проектов, предоставляющих весь стек для организации 3d-вычислений. Mesa — это открытая реализация графических API OpenGL, Vulkan и других спецификаций, а также набор видеодрайверов пространства пользователя для GPU. Для реализации драйверов используется проект Gallium3d, который также включен в состав mesa. В свою очередь, драйвера пространства пользователя (gallium drivers) могут использовать собственные средства для доступа к пространству ядра Kernel Mode Setting (KMS) . Для Linux стандартом является Direct Rendering Manager (DRM), представляющий из себя реализацию Direct Rendering Infrastructure (DRI).

В ОСРВ обычно не присутствуют все интерфейсы, необходимые для использования проекта mesa. И хотя это существенно усложняет использование проекта в ОС, отличных от Linux, объем работы, необходимый для реализации ключевых интерфейсов, существенно ниже, чем для реализации драйверов ускорителей с нуля, ведь во многих случаях нет необходимости реализовывать полную спецификацию всех интерфейсов. Кроме того, следует отметить, что часть производителей аппаратуры даже не предоставляет документацию на свои продукты, что вынуждает использовать реверс-инжениринг при разработке драйверов.

Выводы
Применение 3d-ускорителей в системах реального времени возможно на основе проектов с открытым кодом mesa3d. Данный проект поддерживает большое число 3d-адаптеров, является хорошо структурированным и поддерживаемым. К недостаткам данного проекта следует отнести большую кодовую базу и совместимость только с ОС Linux. Последний недостаток требует разработки в других ОС прослойки для совместимости программных интерфейсов и функциональности как в пользовательском режиме, так и в режиме ядра.

Организаторы

При поддержке