8

如果是这样,为什么?除了将渲染命令传送到显卡驱动程序之外,X 还为我做了什么?

我不清楚 X - OpenGL 的关系。我搜索了互联网,但找不到简洁的答案。

如果它很重要,假设是一个最小的现代发行版,比如无头 Ubuntu 13 机器。

4

2 回答 2

8

使用当前的驱动程序:是的。

如果是这样,为什么?

因为 X 服务器是与 GPU 对话的实际图形驱动程序的主机。目前,Linux GPU 驱动程序需要一个 X 服务器,为它们提供一个可以生存的环境,以及一个通往内核接口的通道,以便与 GPU 进行对话。

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

我不清楚X-OpenGL的关系

我在https://stackoverflow.com/a/7967211/524368https://stackoverflow.com/a/8777891/524368的 SO 答案中详细介绍了这一点

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

因评论而更新

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

于 2013-09-27T09:19:50.613 回答
3

使用 Linux 3.12:不再。

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

TLDR:
渲染节点 ( /dev/dri/renderD<num>) 显示为未连接屏幕的 GPU。

至于应该如何使用这一点,(内核)开发人员对用户空间基础设施只有非常一般的建议。尽管如此,可以公平地假设该功能对于 Wayland 和 Mir 来说无异于一个显示启用程序,因为客户端将无法再在屏幕上呈现。

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

于 2013-11-26T23:29:33.303 回答