如果是这样,为什么呢?除了将渲染命令传递到显卡驱动程序之外,X对我有什么作用?
我不清楚关系X-OpenGL。我已经搜索了互联网,但找不到简明的答案。
如果有关系的话,假设它是最小的现代发行版,例如 headless 的Ubuntu 13机器。
最佳答案
使用当前驱动程序:是。
因为X服务器是与GPU通讯的实际图形驱动程序的主机。目前,Linux GPU驱动程序需要X服务器,以便为其提供生存环境和内核接口(interface) channel 以与GPU进行通信。
在DRI/DRM/Gallium前端,已经创建了一个新的驱动程序模型,该模型允许在没有X服务器的情况下使用GPU,例如使用EGL-API。但是,目前此功能仅支持一小部分GPU。大多数英特尔和AMD;没有NVidia。
我在https://stackoverflow.com/a/7967211/524368和https://stackoverflow.com/a/8777891/524368的SO答案中详细介绍了这一点。
简而言之,X服务器就像是GPU的“代理”。您发送X服务器命令,例如“打开窗口”或“在那里画一条线”。 X协议(protocol)的扩展名为“GLX”,其中每个OpenGL命令都转换为GLX/X操作码流,并且X服务器代表调用客户端在GPU上执行这些命令。另外,如果客户端进程实际上可以直接与GPU对话(因为它与X服务器在同一台计算机上运行并且有权访问内核API),那么大多数OpenGL/GLX实现都提供了绕过X服务器的机制;这就是直接渲染。但是,它仍然需要X服务器来打开窗口,创建上下文并进行一般的内务处理。
由于评论而更新
另外,如果您可以在没有GPU加速的情况下生活,则可以使用osmesa(屏幕外台面)模式和LLVMpipe软件光栅化程序使用Mesa3D。