Аннотация:
Недавно компания Qualcomm представила первую партию патчей драйверов ядра Linux с открытым исходным кодом для нового графического процессора Adreno 850, и прошел всего один день с момента официального анонса чипа до того, как соответствующий код вступил в процесс разработки ядра Linux. Это означает, что Qualcomm еще больше ускоряет разработку драйверов с открытым исходным кодом для нового поколения графических процессоров Adreno и даже начинает продвигать основную поддержку Linux сразу после официального дебюта оборудования.

Целевой платформой, поддерживаемой этим драйвером, является SoC Qualcomm под кодовым названием Hawi, которым в настоящее время в отрасли принято считать только что выпущенный Snapdragon 8 Elite Extreme Gen 6. Процессор использует новое графическое ядро Adreno 850, и инженеры Qualcomm отправили соответствующий код инициализации графического процессора в список рассылки ядра Linux на следующий день после выпуска чипа.
На самом деле платформа Hawi не появилась в сообществе Linux внезапно. За последние несколько месяцев Qualcomm последовательно представила другие коды поддержки оборудования для Hawi в ядре Linux, поэтому этот патч драйвера графического процессора Adreno 850 на самом деле является дальнейшим улучшением, основанным на поддержке предыдущей платформы.
Патч, представленный на этот раз, в основном нацелен на графический драйвер MSM в ядре Linux, который является основной платформой драйверов с открытым исходным кодом для графического процессора Qualcomm Adreno. Хотя Adreno 850 все еще находится на ранних стадиях разработки и проверки кода, значение состоит в том, что Adreno 850 начал входить в основную систему драйверов Linux, вместо того, чтобы ждать запуска продукта задолго до того, как он будет дополнен сообществом.
В дополнение к Adreno 850 в этот пакет патчей также добавлена предварительная поддержка Adreno 845. Adreno 845 имеет кодовое название «Maili». Его аппаратная архитектура очень похожа на Adreno 850, но в нем отсутствует новое матричное ядро MALU. Таким образом, Qualcomm может обеспечить поддержку драйверов для двух графических процессоров, одновременно используя большой объем базового кода.
Adreno 850 принадлежит к архитектуре графического процессора Qualcomm Adreno 8xx нового поколения. Согласно информации, раскрытой в этом патче, он разделяет часть базовой архитектуры и дизайна с Adreno 840 предыдущего поколения, а также имеет ряд улучшений на аппаратном уровне.
Одним из важных изменений является новое матричное ядро MALU. Qualcomm использует этот аппаратный блок для ускорения определенных типов задач расчета матриц, что также является одним из важных изменений в Adreno 850 по сравнению с предыдущей архитектурой графического процессора. Однако пока не опубликовано никаких подробных данных о конкретных сценариях применения MALU, о том, какое повышение производительности оно может принести и какие программные API оно в конечном итоге откроет для приложений.
Qualcomm заявила, что в будущем необходимо добавить поддержку, связанную с MALU, и она включает не только драйвер ядра Linux, но также требует сотрудничества графического драйвера пользовательского пространства Mesa. Таким образом, даже если базовая поддержка графического процессора Adreno 850 на этот раз появится в основной ветке Linux, вычислительная мощность матрицы MALU не будет доступна сразу.
Помимо вычислительного блока была скорректирована и система управления питанием Adreno 850. Патч показывает, что графический процессор добавляет новую шину питания для подачи питания на некоторые аппаратные модули графического процессора. В то же время блок управления графическим процессором, или GMU, который отвечает за управление состоянием питания графического процессора, теперь имеет независимую область управления питанием GDSC, и эта часть питается от другой шины питания, называемой MxG.
Эти изменения могут показаться деталями аппаратного обеспечения низкого уровня, но они очень важны для драйверов Linux. Графическому процессору необходимо не только выполнять графические вычисления, но также необходимо динамически регулировать напряжение, частоту и состояние источника питания между состояниями простоя, низкой и высокой нагрузки. Поэтому изменения в оборудовании управления питанием должны корректно обрабатываться в драйвере ядра, иначе это может повлиять на энергопотребление, стабильность и даже на нормальную работу графического процессора.
Текущая партия кодов Adreno 850 и Adreno 845 еще не вошла в официально выпущенную версию ядра Linux и все еще находится на стадии проверки кода. В то же время, чтобы устройства, оснащенные Adreno 850, действительно могли достичь полного аппаратного ускорения под Linux, необходимо наличие встроенного ПО, драйверов пользовательского пространства Mesa и поддержки дисплея.
Поддержка пользовательского пространства графического процессора Qualcomm Adreno в экосистеме Linux в основном опирается на Freedreno и Turnip в проекте Mesa. Freedreno отвечает за графические интерфейсы, такие как OpenGL, а Turnip — за Vulkan. Для Adreno 850 последующая поддержка Mesa будет определять окончательную производительность графики Linux вместе с работой этого драйвера ядра.
В настоящее время тестирование Adreno 850 компанией Qualcomm все еще находится на самой ранней стадии разработки, поэтому этот патч нельзя понимать как «Adreno 850 уже может нормально работать под Linux». Код драйвера только начал входить в основной процесс разработки, и предстоит еще много шагов, прежде чем обычные пользователи смогут получить полное графическое ускорение на реальных устройствах.
Однако, судя по времени, действия Qualcomm по-прежнему достаточно активны. В прошлом новым графическим процессорам часто приходилось долго ждать, чтобы получить полный драйвер Linux с открытым исходным кодом. Однако Adreno 850 имеет патч поддержки ядра Linux всего через день после официального анонса оборудования, что указывает на то, что Qualcomm значительно увеличивает свои инвестиции в основной Linux и экологию графики с открытым исходным кодом.
Эта тенденция в основном соответствует недавнему направлению Qualcomm по продвижению поддержки Snapdragon X2 Linux. В настоящее время Qualcomm не только продолжает предоставлять драйверы Linux для графического процессора Adreno X2-85 на платформе ПК, но также продвигает поддержку Freedreno и Turnip в Mesa, так что Snapdragon X2 постепенно будет иметь полный графический стек Linux.
Для разработчиков Linux тот факт, что Adreno 850 может так быстро войти в процесс разработки драйверов с открытым исходным кодом, означает, что цикл поддержки оборудования флагманской мобильной платформы Qualcomm в экосистеме Linux может быть еще более сокращен в будущем. Для всего сообщества открытого исходного кода это также означает, что разработчики могут получить информацию об оборудовании и код драйвера нового графического процессора раньше, тем самым одновременно способствуя адаптации графического стека до и после запуска нового чипа.
В настоящее время поддержка Adreno 850 в Linux все еще находится на очень ранней стадии, и такие функции, как матричное ядро MALU, графический драйвер Mesa, встроенное ПО и вывод на дисплей, все еще нуждаются в улучшении в будущем. Однако Qualcomm представила патч драйвера с открытым исходным кодом графического процессора всего через день после выпуска нового чипа, который показал, что компания пытается обеспечить более тесную синхронизацию нового поколения графического процессора Adreno с основной экосистемой Linux с самого начала выпуска продукта.
Статьи по теме:
Qualcomm расширяет поддержку ядра Linux для графического процессора Snapdragon X2. Исправление драйвера Adreno X2-85 отправлено
Комментарии