代码之家  ›  专栏  ›  技术社区  ›  Hassan

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

  •  20
  • Hassan  · 技术社区  · 16 年前

    据我所知,Directfb为多种图形卡提供硬件加速。另外,它比x11更小、更快,并且占用的内存也更少。那么,它为什么不比现在更主流呢?

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

    谢谢,

    哈桑

    6 回复  |  直到 9 年前
        1
  •  20
  •   Havoc P    16 年前

    如果你在一个现代Linux系统上强调x是开销的来源,你可能找不到合适的地方。X是很久以前为电脑设计的,比现代手机要弱得多。

    如果您看到“top”并看到x使用内存,那么要计算出实际的x开销需要做很多工作。有一些内存映射不是“真实”内存,也有一些资源(比如大块像素)是代表应用程序分配的。底线是在顶部显示的x的内存并不是人们所能想到的。

    人们还听说X使用“网络”,并认为这将成为性能瓶颈。这里的network指的是本地Unix域套接字,在现代Linux上,它的开销可以忽略不计。网络上的瓶颈,有x个扩展可以快速实现(共享内存pixmaps、DRI等)。进程中的线程不一定比X套接字快,因为瓶颈更多地与协调多个线程或进程访问同一硬件的固有问题有关,而不是与本地套接字的最小开销有关。

    多进程设置有很多优点,例如更难崩溃。例如,看看Google Chrome,使用多个进程来增强健壮性——结果证明,它也运行得很快。更少的过程并不一定意味着更现代。

    使用GTK的应用程序不能透明地连接到DirectFB有很多原因。对于火狐,一个是它有时直接使用X。另外,一些与工具箱无关的东西,比如浏览器插件接口直接使用X。例如,Flash插件不能在Directfb上工作。即使是不直接使用x的应用程序,也常常假设存在正常的基于x的桌面环境(gnome等)。

    替换X的另一个问题是驱动程序支持,其中两个更好的图形卡(Nvidia、ATI)都有比免费驱动程序更强大的专有驱动程序,并且这些专有驱动程序与X绑定。

    当然还有迁移路径。如果你有成百上千的应用程序在使用X,并且没有明显的终端用户对X不利,那么没有人会转向没有应用程序的地方。很可能,这里的解决方案是在一个新的窗口系统上运行一个无根X服务器,所以旧的应用程序仍然可以工作。

    老的并不总是坏的。X是由聪明人精心设计的,这使它得以进化和改变,多年后仍能工作。

    不管怎样,总的来说,从X转换基本上是大量的工作,它真的工作得很好,而且“工作得很好”从来没有应用到任何替代方案(至少如果你想在大多数硬件上运行大多数应用程序的话)。

    X存在一些问题,例如不可能进行原子屏更新,这是Wayland项目正在研究的问题,但大多数问题对于用户(例如,非原子更新)或开发人员(旧的不推荐的扩展等)来说确实是表面化的。一个人可能会掉x,神奇地拥有一个更小更快的东西,这不是真的。这主要是基于人们猜测“旧”和“使用网络”必须是缓慢和膨胀的,但同样,X是为真正糟糕的硬件设计的。我曾经运行X(和Emacs!)我的386没问题,大概有8兆内存之类的。

        2
  •  9
  •   user166390    13 年前

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

    GTK on DirectFB is different than GTK on X11 .

        3
  •  6
  •   Dr. Snoopy    16 年前

    很简单,因为Directfb不能解决任何问题。对于嵌入式系统来说,这很好,但是对于桌面来说,你会损失很多,而不会得到真正的任何东西。

        4
  •  4
  •   karlphillip    16 年前

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

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

    http://elinux.org/DirectFB

        5
  •  2
  •   alanc    16 年前

    x11比directfb更轻便。X11应用程序可以在Linux、BSD、Solaris、AIX、HP-UX、MacOS X、Windows(通过Cygwin或更高版本)以及许多其他平台上运行。directfb几乎只适用于Linux。

        6
  •  1
  •   Ikem Krueger dani herrera    13 年前

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