Почему DirectFB не так широко используется в GNU / Linux?Есть ли у него серьезные ограничения, которых нет в X11? - PullRequest
20 голосов
/ 25 июля 2010

Насколько я понимаю, DirectFB предлагает аппаратное ускорение для многих видов видеокарт. Кроме того, он меньше, быстрее и использует меньше памяти, чем X11. Почему же тогда это не более массово, чем сейчас?

Вот в чем я действительно не уверен: нужно ли переносить на него обычные программы GTK + / Qt? На сайте DirectFB есть проект для портирования Firefox на него. Почему это даже необходимо, если GTK + имеет возможность напрямую использовать DirectFB? Насколько я понимаю (вероятно, неправильно), Firefox должен выводить данные на GTK +, а на DirectFB - на оборудование. Пожалуйста, поправьте меня, если я ошибаюсь.

Спасибо

Hassan

Ответы [ 6 ]

20 голосов
/ 26 июля 2010

Если вы подчеркиваете, что X является источником накладных расходов в современной системе Linux, вы, вероятно, не ищете правильное место. X был разработан очень давно для компьютеров, гораздо менее мощных, чем современный мобильный телефон.

Если вы посмотрите на «top» и увидите, что X использует память, вам предстоит проделать большую работу, чтобы выяснить фактические издержки X. Существуют карты памяти, которые не являются «реальной» памятью, и есть ресурсы (такие как большие блоки пикселей), выделенные от имени приложений. Суть в том, что память, показанная для X сверху, не то, что можно подумать.

Люди также слышат, что X использует «сеть», и думают, что это будет узким местом в производительности. «Сеть» здесь означает локальный сокет домена UNIX, который имеет незначительные издержки в современном Linux. Вещи, которые могут стать узким местом в сети, есть быстрые расширения X (растровые изображения совместно используемой памяти, DRI и т. Д.). Выполняемые потоки не обязательно будут быстрее, чем сокет X, поскольку узкие места больше связаны с внутренней проблемой координации нескольких потоков или процессов, обращающихся к одному и тому же оборудованию, чем с минимальными издержками на локальные сокеты.

Многопроцессная настройка имеет много преимуществ, таких как гораздо сложнее аварийно завершить работу. Посмотрите, например, Google Chrome, используя несколько процессов, чтобы быть более надежными - и, оказывается, также для быстрой работы. Меньше процессов не обязательно означает более современные.

Есть много причин, по которым приложения, использующие GTK, не прозрачно портируют на DirectFB. Для Firefox одна из них заключается в том, что он иногда использует X напрямую. Кроме того, некоторые независимые от инструментария вещи, такие как интерфейс плагина браузера, используют X напрямую. Flash плагин не будет работать на DirectFB, например. Даже приложения, которые не используют X напрямую, часто предполагают, что существует нормальная среда рабочего стола на основе X (GNOME и т. Д.).

Еще одна проблема с заменой X - это поддержка драйверов, когда обе лучшие графические карты (NVidia, ATI) имеют проприетарные драйверы, которые намного лучше, чем бесплатные драйверы, и эти проприетарные драйверы привязаны к X.

И, конечно, есть путь миграции. Если у вас есть сотни приложений, использующих X, и нет явных недостатков конечного пользователя в X, никто не собирается переключаться на то, что не работает ни на одном приложении. Скорее всего, решением здесь будет X-сервер без root, работающий в новой оконной системе, поэтому старые приложения по-прежнему работают.

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

В любом случае, все, что вы можете сказать, это то, что в основном переключение с X - это тонна усилий, это действительно хорошо работает, и «работает отлично» никогда не применялось ни к одной из альтернатив (по крайней мере, если вы хотите иметь возможность запустить большинство приложений на большинстве аппаратных средств).

Существуют проблемы с X - например, невозможность сделать атомарное обновление экрана, на что смотрит проект Wayland - но большинство проблем действительно косметические для пользователей (например, неатомарные обновления) или косметические для разработчиков ( старые устаревшие расширения и тому подобное). Это просто неправда, что можно сбросить Х и волшебным образом получить что-то намного меньше и быстрее. В основном это основано на предположениях людей, что «старая» и «использующая сеть» должны быть медленными и раздутыми, но опять же, X был разработан для действительно очень дрянного оборудования. Раньше я нормально запускал X (и Emacs!) На своем 386 с 8 мегабайтами оперативной памяти или чем-то в этом роде.

9 голосов
/ 25 июля 2010

x11 - это гораздо больше, чем просто способ рисовать на экране - это целый набор сетевых протоколов для настольных компьютеров. DirectFB не намеревается заменить x11 (насколько я знаю), а работает параллельно с ним. То есть DirectFB стремится быть легковесным «хостом» для приложений, которым необходим доступ к базовому вводу и графическому выводу. Возможно, что X-сервер (сервер в X - это то, что отображает вещи :-) написан для использования DirectFB.

GTK на DirectFB отличается от GTK на X11 .

5 голосов
/ 25 июля 2010

DirectFB был разработан для встроенных систем с небольшим объемом памяти. Он позволяет приложениям напрямую взаимодействовать с видеооборудованием через прямой API, ускоряя и упрощая графические операции.

Он часто используется разработчиками игр и встроенных систем для обхода полной реализации сервера X Window System.

http://elinux.org/DirectFB

5 голосов
/ 25 июля 2010

Просто, потому что DirectFB не решает никаких проблем. Для встраиваемых систем это хорошо, но для настольных компьютеров вы много теряете и ничего не получаете.

2 голосов
/ 25 июля 2010

X11 гораздо более портативен, чем DirectFB. Приложение X11 может работать на Linux, BSD, Solaris, AIX, HP-UX, MacOS X, Windows (через Cygwin или Exceed) и многих других платформах. DirectFB в основном только для Linux.

1 голос
/ 06 февраля 2013

С XDirectFB существует X-сервер без root, использующий DirectFB.

...