为什么DirectFB在GNU/Linux中没有得到更广泛的使用?是否存在X11中不存在的严重限制?

Has*_*san 21 x11 gtk graphics directfb

据我了解,DirectFB为多种图形卡提供硬件加速.此外,它比X11更小,更快,占用的内存更少.为什么呢,它不是比现在更主流吗?

这是我真正不确定的:普通的GTK +/Qt程序需要移植到它吗?在DirectFB网站上,有一个将Firefox移植到它的项目.如果GTK +能够直接使用DirectFB,为什么这甚至是必要的呢?我(可能错误地)理解它的方式是Firefox应该输出到GTK +,它应该输出到DirectFB,它应该输出到硬件.如果我错了,请纠正我.

谢谢,

哈桑

Hav*_*c P 20

如果您在现代Linux系统上强调X作为开销的来源,那么您可能没有找到正确的位置.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服务器,因此旧的应用程序仍然有用.

旧并不总是坏的.X由聪明人设计得非常好,这使得它可以进化和改变,并且在很多年后仍然可以使用.

无论如何,很长一段时间说,基本上从X转移是很多的努力,它确实工作正常,"工作正常"从未适用于任何替代品(至少如果你想能够运行大多数应用程序大多数硬件).

X存在问题 - 例如不可能进行原子屏幕更新,这是Wayland项目正在考虑的问题 - 但大多数问题对于用户来说都是非常美观的(例如非原子更新)或开发人员的化妆品(旧的已弃用扩展)等等).一个人可以放弃X并且神奇地拥有更小更快的东西,这是不正确的.这主要是基于人们推测"旧"和"使用网络"必须缓慢而臃肿,但同样,X是专为非常糟糕的硬件而设计的.我曾经在我的386上运行X(和Emacs!),可能有8兆内存或类似的东西.

  • X是垃圾.它没有改进应有的方式的主要原因主要是因为计算机图形行业的所有保密和专利问题. (5认同)
  • 听起来你在谈论X的开源实现中的实现限制(特别是驱动程序).这些也适用于DirectFB.这里的问题不是X协议/设计/ API与其他一些可能的设计所固有的,它们更多地与(如你所说)"后勤"问题有关,例如使用硬件的能力. (4认同)
  • 我当然同意X不是最理想的,并且认为Wayland在X上有有用的改进,并且可能最终成功地取代它......并非巧合,因为Kristian(Wayland的创造者)非常了解X. 根据现代要求,窗户系统可以改进和简化.但X足够好,取而代之的比它看起来要困难得多. (3认同)
  • @HavocP:你错过了一个重要的细节,关于“X 是很久以前为计算机设计的,其功能远不如现代手机强大。” X Server 本身最初并不是为了今天使用的目的而设计的。整个堆栈并不打算完全在一台 PC 上运行。这解释了整个延迟问题、可移植性的极端重要性以及硬件抽象的重要程度。快进到现在,我们有许多扩展来帮助 X11 适应当今的架构。从本质上讲,它并不是最优的。 (2认同)

小智 9

x11不仅仅是一种绘制屏幕的方式 - 它是一个完整的网络桌面协议套件.DirectFB不打算替换x11(据我所知),而是与它并行运行.也就是说,DirectFB致力于成为需要访问基本输入和图形输出的应用程序的轻量级"主机".有可能X服务器(X中的服务器显示东西:-)被编写为使用DirectFB.

DirectFB上的GTK与X11上的GTK不同.


Mat*_*gro 6

很简单,因为DirectFB没有解决任何问题.对于嵌入式系统来说,这很好,但是对于桌面设备,你会损失很多并且不会获得任何东西.


kar*_*lip 5

DirectFB是为嵌入式系统设计的,这些系统占用的内存很小。它允许应用程序通过直接 API 直接与视频硬件对话,从而加速和简化图形操作。

游戏和嵌入式系统开发人员经常使用它来规避完整 X Window 系统服务器实现的开销。

http://elinux.org/DirectFB