如果是这样,为什么?除了将渲染命令传送到显卡驱动程序之外,X 还为我做了什么?
我不清楚 X - OpenGL 的关系。我搜索了互联网,但找不到简洁的答案。
如果它很重要,假设是一个最小的现代发行版,比如无头 Ubuntu 13 机器。
使用当前的驱动程序:是的。
如果是这样,为什么?
因为 X 服务器是与 GPU 对话的实际图形驱动程序的主机。目前,Linux GPU 驱动程序需要一个 X 服务器,为它们提供一个可以生存的环境,以及一个通往内核接口的通道,以便与 GPU 进行对话。
在 DRI/DRM/Gallium 前端创建了一个新的驱动程序模型,允许在没有 X 服务器的情况下使用 GPU,例如使用 EGL-API。但是,目前仅支持一小部分 GPU;大多数英特尔和 AMD;没有英伟达。
我不清楚X-OpenGL的关系
我在https://stackoverflow.com/a/7967211/524368和https://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。