使用NVidia GPU的屏幕上EGL显示

时间:2019-03-06 17:02:15

标签: linux opengl x11 nvidia egl

我正在尝试使用EGL打开OpenGL上下文,该上下文直接在与Linux上的NVidia GPU连接的显示器上绘制。

使用eglGetDisplay(EGL_DEFAULT_DISPLAY)打开EGL显示时,似乎会创建一个屏幕外渲染上下文。

使用eglGetPlatformDisplayEXT,找不到任何显示。

是否可以进行设置,以便在没有X11 / Wayland(或其他访问GPU的进程)的情况下启动程序时,它会创建直接在屏幕上呈现的OpenGL上下文。

此外,如果将X11设置为仅访问主GPU,并使EGL渲染到连接到辅助GPU的屏幕上,则是可能的。

它应该提供一个加速的OpenGL上下文,然后可以与CUDA上下文共享。目的是尽可能高效地显示CUDA内核生成的图像,而无需通过窗口服务器。

1 个答案:

答案 0 :(得分:1)

  

是否可以将其设置为在没有X11 / Wayland的情况下启动程序

NVidia的Linux驱动程序与X.org基础结构紧密联系在一起。它仍然无法按照预期的方式正确支持Wayland。取而代之的是NVidia用自己的“方法”直接访问显示,他们称其为“ EGL Stream”。可以在https://github.com/NVIDIA/egl-wayland

中找到与Wayland的集成。

从技术上讲,您可以使用EGL流直接访问显示,而无需使用X服务器。

  

此外,如果将X11设置为仅访问主GPU,并使EGL渲染到连接到辅助GPU的屏幕上,则是可能的。

从理论上讲,这也应该适用于EGL Streams,假设您将X服务器配置为仅使用您希望使用的一台设备。这可以通过在Device的{​​{1}}部分中指定BusID来完成。