Представлен открытый драйвер для графической подсистемы чипов Qualcomm
15 апреля 2012 года
Роб Кларк (Rob Clark), разработчик из компании Texas Instruments, развивающий открытый набор драйверов для чипов OMAP и вовлечённый в разработку проекта Linaro, представил новый открытый графический драйвер для выпускаемых конкурирующей компанией Qualcomm чипов Snapdragon, поставляемых с интегрированными графическими процессорами Adreno. При разработке использована эталонная платформа DragonBoard на базе Snapdragon S3 APQ8060 и обратный инжиниринг бинарных драйверов Qualcomm.
Новый открытый драйвер получил название Freedreno и доступен для свободной загрузки под лицензией MIT. В настоящее время драйвер поддерживает 2D-акселерацию (реализована архитектура EXA), базовые композитные операции и может использоваться совместно с X-сервером (подготовлен DDX-драйвер xf86-video-freedreno). В будущем планируется обеспечить поддержку 3D-акселерации и DRI2. Таким образом, ситуация с открытыми драйверами для мобильных ARM-платформ начинает меняться к лучшему: кроме Freedreno в настоящее время развивается проект Lima, созданный для разработки полноценных открытых драйверов для графического сопроцессора Mali (Mali-200 и Mali-400), также компаниями Texas Instruments и Samsung ведётся разработка базовых открытых графических драйверов для чипов OMAP и Exynos, в которых, к сожалению, пока не планируется поддержка 3D.
По словам Роба Кларка, работа выполнена в свободное от работы время и позиционируется как персональный проект, никак не связанный с компанией Texas Instruments и проектом Linaro. Роб рад был бы принять участие в развитии открытых драйверов для GPU Mali или IMGtech PowerVR, но пока не может этого сделать в силу своих обязательств перед Linaro и TI, так как такой шаг может рассматриваться как нарушение соглашения о неразглашении. С оборудованием Qualcomm Роб на своей прямой работе не сталкивается, поэтому можно не опасаться возможного конфликта интересов.
Для определения логики работы с чипами Qualcomm была создана небольшая библиотека libwrap, загружающаяся через LD_PRELOAD и позволяющая перехватывать все вызовы между модулем ядра и проприетарным драйвером, выполняемым на уровне пользователя, что позволило определить поток команд к GPU, информацию по адресам, координатам и т.п. Для разбора связанной с GPU активности и выявления типовых повторяющихся действий была написана утилита redump, при помощи которой на основе лога генерировался наглядный сводный отчёт, упрощающий анализ логики работы с GPU.
Так как часть оригинального драйвера Qualcomm, работающего на уровне ядра Linux, доступна в исходных текстах, нетрудно было выявить API для взаимодействия с закрытым бинарным компонентом. Работающий на уровне ядра драйвер Qualcomm распространяется под лицензией GPL и использует для управления памятью GPU технологию GEM (Graphics Execution Manager), но не предоставляет функций переключения видеорежимов, что позволяет лишь частично использовать его при дальнейшей реализации поддержки DRI2 и 3D.
Источники
правитьЛюбой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.