充当直通的 X Window Server

充当直通的 X Window Server

Xorg(或任何 X 窗口服务器)是否有一个设置可以创建 X 服务器的“存根”,以便它接受来自应用程序的 API 调用,然后完全忽略它们,而不是处理调用、更新帧缓冲区并写出记忆?我需要能够运行图形应用程序(例如 Firefox),但我实际上并不关心图形输出,并且希望尽可能减少渲染开销。我正在尝试获取不因图形渲染而改变的网页计时。

或者,是否有某种方法可以“记录”所有 X 服务器 API 调用,将它们转储到磁盘,然后稍后重播它们,以便我可以将 Web 计时与图形渲染分离,但仍然创建应用程序所查看内容的屏幕截图在不同的时间点?

答案1

您正在寻找Xvfb。从手册:

   Xvfb  is  an X server that can run on machines with no display hardware
   and no physical input devices.  It emulates a  dumb  framebuffer  using
   virtual memory.

答案2

1996 年曾经有一个程序可以做到这一点,直到最近才从 debian 中删除xmon,它分为两部分,xmond过滤请求并回复到 X11 服务器,还有xmonui一个 gui,您可以在其中切换哪些请求是被压制,所以不画任何东西。它是该程序的一个分支xscope(用于跟踪请求和回复),该程序仍然是分布式的。然而,要找到来源今天编译xmon你需要有一点狂热。我想它被删除了,因为没有更多的 X11 错误需要调试......

男人xmon:下图显示了 xmon 和 xmon 守护进程之间的关系。以及客户端和服务器。

                             ----------
                             | xmonui |
                             ----------
                                 |
                                 v
        ------------         ----------
        | client 1 |<------->|        |
        ------------         |        |       ----------
             :               | xmond  |<----->| server |
             :               |        |       ----------
        ------------         |        |
        | client n |<------->|        |
        ------------         ----------
                                 |
                                 v
                       monitor output to stdout

您可以尝试的另一种优化Xvfb是创建一个非常小的屏幕,例如 64x64 像素,深度可能为 1(单色),并将 Firefox 窗口放置在屏幕外,因此不会渲染太多内容,因为它不可见。

相关内容