Opengl EGL应用程序可以在控制台模式下运行吗?

Opengl EGL应用程序可以在控制台模式下运行吗?,opengl,egl,Opengl,Egl,我想实现一个opengl应用程序,生成图像,并通过网页查看图像 该应用程序打算在linux服务器上运行,该服务器没有显示器,没有x窗口,但带有gpu 我知道egl可以使用pixmap或pbuffer作为渲染目标 但是eglGetDisplay的功能让我担心,听起来我仍然需要附加显示器才能工作 egl在没有显示器和xwindows或wayland的情况下工作吗?这是一个反复出现的问题。TL;DR:在当前的Linux图形驱动模式下,如果不运行X服务器,就不可能将GPU与传统驱动程序一起使用。如果GP

我想实现一个opengl应用程序,生成图像,并通过网页查看图像

该应用程序打算在linux服务器上运行,该服务器没有显示器,没有x窗口,但带有gpu

我知道egl可以使用pixmap或pbuffer作为渲染目标

但是eglGetDisplay的功能让我担心,听起来我仍然需要附加显示器才能工作


egl在没有显示器和xwindows或wayland的情况下工作吗?

这是一个反复出现的问题。TL;DR:在当前的Linux图形驱动模式下,如果不运行X服务器,就不可能将GPU与传统驱动程序一起使用。如果GPU受KMS+DRM+DRI支持,您可以这样做。(编辑:)同样在2016年,Nvidia最终通过EGL在其驱动程序中引入了真正的无头OpenGL支持


说来话长,从技术上讲,GPU完全能够渲染到屏幕外缓冲区,而无需连接显示器或运行图形服务器。然而,由于图形驱动程序和环境开发的历史,这是不可能的,但在很长一段时间内还不可能实现。当时(当图形首次引入Linux时)的假设是:“图形设备是用来将图片传送到屏幕上的。”图形卡可以用作加速协处理器甚至不是虚构的想法

此外,直到几年前,Linux内核本身还不知道如何与图形设备通信(除了系统地址空间中某个地方的哑帧缓冲区)。X服务器是与GPU通信的,所以您需要它来运行。第一批X服务器开发人员假设键盘和椅子之间有一个人


那么,你有什么选择:

短期来说,如果您使用的是NVidia GPU:只需启动一个X服务器。你不需要一个完整的桌面环境。您甚至可以省去启动窗口管理器的麻烦。只要让X服务器声明VT并处于活动状态即可。在英伟达驱动程序中,现在通过EGL支持无头OpenGL上下文。
如果您使用的是AMD或英特尔GPU,您可以直接与之对话。无论是通过EGL还是使用KMS(谷歌搜索名为
kmscube
,尝试时,请确保先从X服务器切换到文本VT,否则会使X服务器崩溃)。我还没有尝试过,但是应该可以调整
kmscube
示例,它使用GPU渲染到屏幕外缓冲区,而不必将VT切换到图形模式,也不必在显示帧缓冲区上有任何图形输出。

正如datenwolf告诉你的那样,你可以创建一个帧缓冲区,而不必使用AMD和intel GPU的x。由于iam使用带有EGL的AMD图形卡,iam能够在其上创建帧缓冲区和iam绘图。通过配置Mesa库而不使用XU可以实现