Opengl EGL应用程序可以在控制台模式下运行吗?
我想实现一个opengl应用程序,生成图像,并通过网页查看图像 该应用程序打算在linux服务器上运行,该服务器没有显示器,没有x窗口,但带有gpu 我知道egl可以使用pixmap或pbuffer作为渲染目标 但是eglGetDisplay的功能让我担心,听起来我仍然需要附加显示器才能工作Opengl EGL应用程序可以在控制台模式下运行吗?,opengl,egl,Opengl,Egl,我想实现一个opengl应用程序,生成图像,并通过网页查看图像 该应用程序打算在linux服务器上运行,该服务器没有显示器,没有x窗口,但带有gpu 我知道egl可以使用pixmap或pbuffer作为渲染目标 但是eglGetDisplay的功能让我担心,听起来我仍然需要附加显示器才能工作 egl在没有显示器和xwindows或wayland的情况下工作吗?这是一个反复出现的问题。TL;DR:在当前的Linux图形驱动模式下,如果不运行X服务器,就不可能将GPU与传统驱动程序一起使用。如果GP
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可以实现相关的:我很好奇,这2年后还有多少?@ VLADFIROIU:现在有一年多的时间,英伟达的司机支持无头、无X操作,但是应该注意到这是专有的。关于OSS驱动程序,你可以使用我在最后一段中描述的;博士,你是说这是不可能的,但在最后一段中,你是说EGL是可能的(顺便说一句,NVidia也支持EGL)。@Hi Angel:我最初在3年前写下了答案。当时这是不可能的,因为当时一切都取决于Xorg。从那时起,很多事情都发生了变化,我修改了我的答案,以涵盖从那时起开始可用的API:NVidia的驱动程序添加了屏幕外EGL支持,并添加了一个包装器,以很好地与KMS/DRM配合使用。