我正在尝试使用NVIDIA的EGL库在无头模式下渲染一个基于OpenGL的模拟器。但是,我发现使用EGL在服务器上呈现的速度与使用xvfb在服务器上呈现的速度相同,而xvfb只执行基于软件的呈现。我想知道我的EGL可能没有正确地检测到我的NVIDIA GPU。
检查EGL和OpenGL是否正确地检测到我的GPU的最佳方法是什么?
我尝试了下面的命令,发现呈现器被设置为基于软件的,而不是基于GPU的,但是我不确定这是否是因为我用xvfb调用glxinfo:
xvfb-run -a -s "-screen 0 1400x900x24 +extension RANDR -noreset" -- glxinfo | grep "renderer",
输出OpenGL renderer string: llvmpipe (LLVM 10.0.0, 256 bits)。
发布于 2021-04-01 10:04:11
但是,
发现,使用EGL在服务器上呈现的速度与使用xvfb在服务器上呈现的速度相同,
如果您的程序使用的是EGL,那么如果您在X服务器上运行它,那么它就没有任何区别。EGL的全部目的是完全绕过X服务器的必要性。对于一个支持屏幕外EGL的程序来说,它在X环境中运行并不重要(无论是Xvfb还是带有nvidia驱动程序的Xorg ),因为它不关心X。
我用xvfb调用glxinfo:
glxinfo永远不会告诉您EGL支持。
在您自己的程序中,在建立OpenGL上下文之后,使用glGetString获取有关正在运行的OpenGL实现的信息。
如果在您自己的程序中,使用EGL、glGetString(GL_VENDOR)和glGetString(GL_RENDERER)告诉您Nvidia,那么您将加速GPU。
https://stackoverflow.com/questions/66892412
复制相似问题