我正在尝试使用EGL打开OpenGL上下文,该上下文直接在与Linux上的NVidia GPU连接的显示器上绘制。
使用eglGetDisplay(EGL_DEFAULT_DISPLAY)
打开EGL显示时,似乎会创建一个屏幕外渲染上下文。
使用eglGetPlatformDisplayEXT
,找不到任何显示。
是否可以进行设置,以便在没有X11 / Wayland(或其他访问GPU的进程)的情况下启动程序时,它会创建直接在屏幕上呈现的OpenGL上下文。
此外,如果将X11设置为仅访问主GPU,并使EGL渲染到连接到辅助GPU的屏幕上,则是可能的。
它应该提供一个加速的OpenGL上下文,然后可以与CUDA上下文共享。目的是尽可能高效地显示CUDA内核生成的图像,而无需通过窗口服务器。
答案 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来完成。