Недавно, всем нам знакомый человек, известный как
maxim взял небольшое интервью с одним из разработчиков Haiku, поляком Артуром Выжинским (Artur Wyszynski).
Максим: Расскажи нам о себе.
Артур: Мне 27 лет, я работаю в качестве разработчика игр в GameLion Studios, старинный пользователь BeOS и разработчик Haiku уже в течение 2-3 лет.
Максим: Каково сегодняшнее состояние OpenGL в Haiku?
Артур: OpenGL в Haiku OpenGL Kit сейчас в настолько зачаточном состоянии, что даже Windows GL API превосходит нас в том виде, в котором он был разработан 10-12 лет назад, без современного многопоточного рендеринга GPU и тому подобных вещей. Моя задумка, если конечно никто не опередит меня прежде, состоит в том, чтобы реализовать менеджер памяти TTM (TTM Memory Manager) в ядре, затем портировать DRM в область ядра, произвести небольшое тестирование, чтобы понять как все работает и затем переписать весь Haiku OpenGL Kit с нуля, но за основу взять Apple OpenGL Framework из Mac OS X. Он достаточно зрелый, современный, отлично спроектирован и вообще охренительный :).
К примеру, сегодняшняя реализация OpenGL Kit не позволяет вам иметь множественные контексты. Современные движки используют многопоточность, а мы сейчас не способны даже использовать множественные контексты, например один для рисования (рендеринга), один для обработки, один для физического движка и т.д.
Максим: Расскажи нам про Gallium3D в Haiku.
Артур: Softpipe в Gallium3D берет на себя роль референсного драйвера. Если вы хотите написать драйвер для Gallium, вы можете обратить внимание на softpipe. Это чисто софтовая имплементация, разработанная без учета производительности, в качестве примера для разработчиков. Он вообще не работает с GPU, исключительно на CPU. Существует ответвление (форк) softpipe, называемый llvmpipe, который использует LLVM, чтобы производить высокооптимизированный код, с помощью которого на Linux можно играть в Open Arena на 32 FPS в разрешении 800х600 без использования GPU вообще. Это впечатляюще, ибо на чистой MESA производительность графики около 3 или 5 FPS.
Для начала мне нужно реализовать TTM и DRM, затем я могу сфокусироваться на обновлении состояния OpenGL в Haiku до современного, конкурентоспособного вида. TTM - это API для управления памятью на GPU. DRM - это менеджер прямого рендеринга, ядерная часть реализации которого позволяет "говорить" с самой графической картой. Он популярен в Linux. Я использую код из FreeBSD и некоторые части из Linux. Однако, в последнее время я пытаюсь брать больше из Linux, поскольку графический стек и порт MESA на FreeBSD не настолько готов и хорошо разработан, как на платформе Linux. Тем не менее, существуют ограничения, например Linux GL-стек на стороне ядра (DRM) это GPL-софт, а мы в проекте Haiku нацелены на то, чтобы использовать GPL-код в самом минимальном количестве, насколько это конечно возможно.
Максим: Ты упомянул LLVM. Ты будешь это использовать?
Артур: LLVM - это Низкоуровневая Виртуальная Машина (Low Level Virtual Machine), это другой вопрос, но она (машина) позволяет генерировать исключительно высокооптимизированный код для CPU. Нет, я скорее всего не буду ее использовать.
Максим: Какой GPU будет в первых рядах очереди на аппаратное ускорение графики?
Артур: Какой GPU? Буду использовать тот, что есть на руках - от nVidia :D. Если мы будем делать полноценный OpenGL Kit, он должен полностью работать на графическом процессоре, а не на программной реализации. Однако, в моих планах сначала использовать драйвер VMWare vGPU и в случае, если тот заработает как надо, я приступлю к реальному железу. VMWare vGPU - это виртуальная архитектура GPU, которая транслирует гостевые запросы OpenGL в настоящие запросы к графической системе на ОС-хосте. Таким образом вы можете получить настоящую производительность графики на вашей nVidia-видеокарте, если вы работаете под Linux, в то время как ваша Haiku бегает внутри виртуальной машины VMWare.
Максим: Будет ли Haiku поддерживать драйверы DRM из Linux?
Артур: Если мы не хотим долгие годы изобретать велосипед для Haiku, то мы должны реализовать поддержку DRM на нашей системе и использовать только стабильные, вычищенные от багов драйверы из Linux. TTM и DRM будут имплементированы как код в режиме ядра Haiku. Также, Haiku DRM будет предоставлять DRM API, который совместим на уровне исходников с драйверами DRM из Linux, точно также наши коллеги сделали со слоем совместимости сети из FreeBSD, благодаря которому у нас появились драйвера для сетевого оборудования.
Интервью на английском опубликовал
maxim---
На русском языке в плохом переводе
v-bobok