24

据我了解,DirectFB 为多种显卡提供硬件加速。此外,它比 X11 更小、更快、占用的内存更少。那么,为什么它不比现在更主流?

这是我真正不确定的:是否需要将常见的 GTK+/Qt 程序移植到它?在 DirectFB 站点上,有一个将 Firefox 移植到它的项目。如果 GTK+ 能够直接使用 DirectFB,那为什么还要这样做呢?我(可能不正确)理解它的方式是,Firefox 应该输出到 GTK+,GTK+ 应该输出到 DirectFB,DirectFB 应该输出到硬件。如果我错了,请纠正我。

4

6 回答 6

21

如果您强调 X 作为现代 Linux 系统的开销来源,那么您可能没有找对地方。X 是很久以前为功能远不如现代手机的计算机设计的。

如果您查看“顶部”并看到 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 兆 RAM 或类似的东西。

于 2010-07-26T02:33:12.930 回答
9

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

DirectFB 上的 GTK 与 X11 上的 GTK 不同

于 2010-07-25T02:57:12.313 回答
6

很简单,因为 DirectFB 不能解决任何问题。对于嵌入式系统来说这很好,但对于桌面系统来说,你会损失很多并且什么也得不到。

于 2010-07-25T02:55:54.170 回答
5

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

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

http://elinux.org/DirectFB

于 2010-07-25T02:59:59.987 回答
3

X11 比 DirectFB 更便携。X11 应用程序可以在 Linux、BSD、Solaris、AIX、HP-UX、MacOS X、Windows(通过 Cygwin 或 Exceed)以及更多平台上运行。DirectFB 几乎只支持 Linux。

于 2010-07-25T07:22:49.863 回答
1

XDirectFB有一个使用 DirectFB 的无根 X 服务器

于 2013-02-05T21:24:56.187 回答