在Linux中,我需要一台X服务器来进行离屏渲染吗?

如果是的话,为什么? 除了将我的渲染命令连接到显卡驱动程序之外,X为我做了什么?

我不清楚关系X – OpenGL。 我search了互联网,但找不到一个简洁的答案。

如果重要的话,假设一个最小的现代分布,就像一个无头的Ubuntu 13机器。

与目前的司机:是的。

如果是的话,为什么?

因为X服务器是与GPU交谈的实际图形驱动程序的主机。 目前,Linux GPU驱动程序需要一个X服务器,为他们提供一个可以使用的环境,以及一个通向内核接口的通道,以便与GPU通信。

在DRI / DRM / Gallium前面,已经创建了一个新的驱动程序模型,允许在没有X服务器的情况下使用GPU,例如使用EGL-API。 但是现在只支持一小部分的GPU, 大多数英特尔和AMD; 没有NVidia。

我不清楚关系X – OpenGL

我详细介绍了在https://stackoverflow.com/a/7967211/524368和https://stackoverflow.com/a/8777891/524368找到的SO答案

简而言之,X服务器就像是GPU的“代理”。 您发送X服务器命令,如“打开一个窗口”或“在那里画一条线”。 还有一个名为“GLX”的X协议的扩展,其中每个OpenGL命令被转换成GLX / X操作码流,X服务器代表主叫客户端在GPU上执行这些命令。 另外,如果客户端进程实际上可以直接与GPU交谈(因为它与X服务器运行在同一台机器上,并且有权访问内核API),所以大多数OpenGL / GLX实现提供了绕过X服务器的机制。 这就是所谓的直接渲染。 然而,它仍然需要X服务器来打开窗口,创建上下文和一般管家。

由于评论而更新

另外,如果您可以在没有GPU加速的情况下生活,则可以使用osmesa(离屏台面)模式和LLVMpipe软件光栅化器使用Mesa3D。

随着Linux 3.12:没有更多。

根据提交 ,离屏渲染是DRM渲染节点的目的。 请参阅开发人员的博客以获得更好的解释。

TLDR:
渲染节点( /dev/dri/renderD<num> )显示为没有附加屏幕的GPU。

至于应该如何使用这个,(内核)开发者对于用户空间基础设施只有非常一般的建议。 然而,假设这个功能是Wayland和Mir的一个显示功能,这是客观的,因为客户将无法再在屏幕上显示。

维基百科条目有更多的指针。

研究使用Mir (Ubuntu)或Wayland (其他发行版)。 他们的目的是提供使用X服务器的替代方案。 它们还很新,但一旦在各种发行版上成为标准,它们就会变得更加广泛。