LINUX.ORG.RU
ФорумTalks

Первые успехи портирования драйвера Nvidia на Haiku

 ,


1

4

Сегодня (или вчера, смотря как считать) мне впервые удалось получить картинку рендеринга Nvidia на Haiku.

Я использую связку открытого ядерного драйвера от Nvidia и Mesa Vulkan драйвер NVK. Решение портировать ядерный драйвер от Nvidia, а не Nouveau, было принято исходя из лёгкости портирования (ядерный драйвер от Nvidia изначально проектировался как портируемый, тот же самый общий код используется в Windows, Linux, FreeBSD, Solaris), а также лучшего качества и поддержки, чем Nouveau.

В NVK была добавлена поддержка работы с ядерным драйвером от Nvidia вместо Nouveau. libdrm и связанные с ней вещи не используются.

Пока это первый успешный запуск, много чего ещё не доделано и многие Vulkan программы пока не работают (надо разбираться в логике драйвера NVK).

Ожидается, что многие проблемы Nvidia с Линуксом не будут происходить в Haiku за счёт отсутствия легаси проблем, прибивания всего к ядру (DRM) и более гибкого подхода.

Тема на форуме Haiku: https://discuss.haiku-os.org/t/haiku-nvidia-porting-nvidia-gpu-driver/16520.

★★★★★
Ответ на: комментарий от nerfur

грустю, что не опенком :D

Так в *BSD нет ничего вообще интересного по части Desktop’а, они все всё просто подбирают и пережёвывают за Linux’ом.

А в Haiku всё собственное и самобытное – системный тулкит, куча фреймворков, грамотное управление пакетами «если скачано значит уже установлено», подход к управлению десктопом, окнами, репликанты, возможность объединять окна приложений в группы и делать из нескольких отдельных приложений «рабочие окружения», напоминающие IDE и т. д.

А *BSD это… да это просто Linux с другим ядром и менее функциональными, неудобными утилитами.

Ну то есть вообще ничего нового и интересного. Те же набившие оскомину паршивые иксы, задротские WM и четвёрка давно заезженных DE.

В Haiku у разработчиков есть возможность сделать глоток чистого воздуха, сравнить и подумать – ага, тут вот интересно сделали, в наши UNIX-like бы так, а с *BSD удасться сделать лишь глоток спёртого бздуном воздуха в непроветренной комнате.

EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 1)

Отличные новости, поздравляю!

Многих людей от использования и даже простого щупания Haiku отталкивало именно отсутствие аппаратного ускорения в видеодрайверах. Думается сейчас ситуация изменится в лучшую сторону.

Кстати, помнится был какой-то древний-древний гайд по написанию видеодрайверов под BeOS или старую Haiku от какого-то old school программиста, который вроде кодил ещё под BeOS… в общем, помогли его материалы хоть как-нибудь или же ядро/API драйверов в Haiku давным-давно ускакало далеко вперёд и этот гайд потерял актуальность?

EXL ★★★★★
()
Ответ на: комментарий от EXL

в общем, помогли его материалы хоть как-нибудь или же ядро/API драйверов в Haiku давным-давно ускакало далеко вперёд и этот гайд потерял актуальность?

Видеодрайверы делятся две слабосвязных части: ускорение (3D, compute, видео кодирование/декодирование) и вывод на экран. Этот топик про первое: ускорение. А тот гайд про вывод на экран, тск что он не имеет отношения к конкретно этой теме.

Для вывода на экран гайд актуален, но сама архитектура драйверов сильно устаревшая и её надо будет переделывать. В частности в текущей архитектуре нет поддержки нескольких мониторов и возможности вывода на экран без тиринга. Над этим планируется работать в рамках проекта app_server_neo по модернизации GUI сервера: поддержка аппаратного ускорения 2D графики через Skia и Vulkan, поддержка нескольких мониторов и вывода без тиринга (двойная буферизация фреймбуфера со свопом при обновлении), опционалтный композитинг и поддержка полупрозрачных окон.

X512 ★★★★★
() автор топика
Последнее исправление: X512 (всего исправлений: 1)

Круто, поздравляю! Подскажи, если для условной КолибриОС делать с нуля драйвер для Nvidia чисто для установки родного разрешения экрана (а не доступного в bios/uefi 1024x768) и получения адреса фреймбуфера, насколько это реально? Кода NVK для этого достаточно? Без подгрузки firmware это работать будет?

d ★★★★★
()
Последнее исправление: d (всего исправлений: 1)
Ответ на: комментарий от X512

MSI GEFORCE RTX 2070 Aero ITX 8192MB 256BIT GDDR6 есть - для тестирования в Haiku подойдет?

beos ★★★
()
Ответ на: комментарий от BceM_IIpuBeT

Радеоны потом, потому что с ними намного больше возни. Было принято решение использовать ограниченные ресурсы на то, что может дать уверенный практический результат за разумные сроки.

X512 ★★★★★
() автор топика

Спасибо, отличная работа!

Rubystar ★★
()
Ответ на: комментарий от BceM_IIpuBeT

У всех блобы. У amdgpu тоже. Без файлов firmware оно не запустится.

X512 ★★★★★
() автор топика

Ну так-то непортабельный nouveau был затащен в AROS в своё время, но да поспевать за всеми этими изменениями в Linux сложно.

Успехов, я пока громоздю 20 патчей на qemu-system-ppc чтобы там был SMP (2 шт) , звук и полурабочая поддержка родной openfirmware от Apple. Патчи написаны не мной, я их просто в кучку складываю, и делаю debug via email.

Andrew-R ★★★★★
()

Поздравляю. Жаль только, что все такие работы происходят только на стороне энтузиастов гайкистов. И каждый такой эксперимент единичен и не системен. Как и с АМД, например.

R_He_Po6oT ★★★★★
()
Ответ на: комментарий от R_He_Po6oT

С Nvidia больше шансов на успех потому что выложен по сути готовый ядерный драйвер, который уже умеет инициализировать железо и управлять питанием. Самая сложная часть уже готовая.

А в amdgpu ядерный драйвер Линукса портировать сложно и документации на процесс инициализации и управления питанием по сути нет.

X512 ★★★★★
() автор топика
Последнее исправление: X512 (всего исправлений: 1)
Ответ на: комментарий от X512

Я понимаю. Но эти изменения никто не примет в апстрим и каждый раз кто-то должен будет руками опять разгребать и пробовать и пр. Как и с гимпами и фоксами и пр.

R_He_Po6oT ★★★★★
()
Ответ на: комментарий от R_He_Po6oT

Но эти изменения никто не примет в апстрим

В апстрим NVK могут и принять: https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30033#note_2791918.

В ядерном драйвере Nvidia платформонезависимая (собирается в отдельную статическую библиотеку) и ОС-специфичная часть разделены, так что поддерживать ОС-специфичную часть не сложно.

X512 ★★★★★
() автор топика
Ответ на: комментарий от EXL

А *BSD это… да это просто Linux с другим ядром и менее функциональными, неудобными утилитами.

Я очень бегло смотрел Haiku пару раз, мне показалось, что там такая же ситуация? Многие вещи (например, стек сетевой), весь крупный софт - портированы?

Для чего там POSIX?

vsnb
()
Последнее исправление: vsnb (всего исправлений: 2)
Ответ на: комментарий от vsnb

Я очень бегло смотрел Haiku пару раз, мне показалось, что там такая же ситуация?

В Haiku полностью своя графическая система не основанная на X11, Wayland, DRM. Также свой нативный GUI тулкит. Это позволяет развиваться системе независимо от мнения FreeDesktop и бесконечных согласований.

Портированные программы на Qt/GTK/Wayland в итоге используют системный тулкит, а не X11/Wayland, примерно как в Windows или MacOS.

Многие вещи (например, стек сетевой)

Сетевой стек в Haiku полностью свой, но многие сетевые драйверы портированы из Free/OpenBSD и запускаются через обёртку.

Для чего там POSIX?

Для того, чтобы можно было портировать софт.

X512 ★★★★★
() автор топика
Ответ на: комментарий от X512

Сетевой стек в Haiku полностью свой

Был неправ. Спасибо.

Я, всё таки, не понимаю - зачем она нужна, если столько заимствований.

Запускать что-то старое для работы с медиа? Там есть некий уникальный прикладной софт?

vsnb
()
Последнее исправление: vsnb (всего исправлений: 1)
Ответ на: комментарий от vsnb

Я дома использую Haiku комп. Давно уже … Начал на 4-ом пне, потом на i7-920 с Жифорс 7300 /кстати на нее был видеодрайвер от Рудольфа Корнелиссена с 3D ускореним / году в 2009 -2012. Потом Haiku пережила два ноутбука, моноблок и сейчас установлена на неттопе i5-8400.

beos ★★★
()
Последнее исправление: beos (всего исправлений: 1)
Ответ на: комментарий от vsnb

не понимаю - зачем она нужна

А *BSD зачем нужны, если они вот уже 15+ лет абсолютно всё заимствуют из Linux?

А десктопный Linux зачем нужен, если есть Windows?

А Android, если есть iOS?

Глупый вопрос. Проекты по типу Haiku, Serenity, AROS, Linux, *BSD и пр. существуют в первую очередь потому что их разработчикам интересно их разрабатывать.

Придёт ли в эти OS большой бизнес с большими дядями и большими денежными кошельками – это вопрос уже другого порядка:

  • В Linux вот пришли и из just for fun по типу Haiku по итогу Linux стал доминирующим ядром в Embedded, серверных и сетевых решениях, мобильном рынке.
  • В *BSD тоже большие дяди пришли, но из-за их лицензии они только взяли и ничего обратно не отдали. Поэтому пока хомячки играются во всякие Nintendo Switch и PS5, рядовой бздун плачется в первом посту этой темы.

В Haiku тоже никто пока не пришёл, если придёт – может и взлететь. Google ведь с какой-то целью поощряет разработку Haiku в своих GSoC, может имеет какие-то планы на неё.

EXL ★★★★★
()
Ответ на: комментарий от EXL

Я, видимо, не смог передать суть вопроса.

Фразой «не понимаю - зачем она нужна» я пытался спросить про use case, а не утверждать, что «не нужна».

Например, utility Linux был в бесплатном/открытом клоне Unix на IBM PC. BSD форки появились позже, насколько я понимаю. Про MINIX знаю мало - там, вроде, у автора с головой проблемы были.

Windows, UNIX - очевидно, чтобы запускать разный готовый софт.

Use case Haiku «поиграться» вполне имеет право на жизнь. Однако, это наложит объективные рамки на проект.

vsnb
()
Последнее исправление: vsnb (всего исправлений: 3)
Ответ на: комментарий от EXL

Google ведь с какой-то целью поощряет разработку Haiku в своих GSoC, может имеет какие-то планы на неё.

Угу — продвинутый калькулятор.

iZEN ★★★★★
()
Ответ на: комментарий от vsnb

Например, utility Linux был в бесплатном/открытом клоне Unix на IBM PC. BSD форки появились позже, насколько я понимаю.

Были «юниксовые войны», и появление нейтрального клона, не замазанного в конфликтах, решило кучу проблем. В BSD 386 конфликтного кода было полно.

Про MINIX знаю мало - там, вроде, у автора с головой проблемы были.

Там были архитектурные решения, замедлявшие работу. В известной переписке Торвальдс писал, что сделал ядро под 80386 с защитой памяти принципиально непортируемое под 8088. А в Миниксе эта защита, как я понял, была программная.

question4 ★★★★★
()
Ответ на: комментарий от question4

Кто-то из топов ностальгирует по BeOS?

У них там сам Travis Geiselbrecht пилил Fuchsia, так что даже не возможно не один.

EXL ★★★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)