我正在尝试使用EGL打开一个OpenGL上下文,该上下文直接在连接到Linux上的NVidia GPU的显示器上绘制。
使用eglGetDisplay(EGL_DEFAULT_DISPLAY)
打开EGL显示时,似乎会创建一个屏幕外渲染上下文。
使用eglGetPlatformDisplayEXT
,它找不到任何显示。
是否可以进行设置,以便在没有X11 / Wayland(或访问GPU的其他进程)的情况下启动程序时,它会创建一个直接在屏幕上呈现的OpenGL上下文。
此外,如果X11设置为仅访问主GPU,则可以将EGL渲染到连接到辅助GPU的屏幕上。
它应该提供加速的OpenGL上下文,然后可以与CUDA上下文共享。目标是尽可能有效地显示由CUDA内核生成的图像,而无需通过窗口服务器。
是否可以设置它,以便在没有X11 / Wayland的情况下启动程序
NVidia的Linux驱动程序与X.org基础设施密切相关;它仍然没有以应有的方式正确支持Wayland。相反,NVidia用自己的“方法”来直接访问显示器,他们称之为“EGL Stream”;可以在https://github.com/NVIDIA/egl-wayland找到与Wayland的整合
从技术上讲,您可以使用EGL Streams直接访问显示器而无需X服务器。
此外,如果X11设置为仅访问主GPU,则可以将EGL渲染到连接到辅助GPU的屏幕上。
从理论上讲,这也应该适用于EGL Streams,假设您将X服务器配置为仅使用您希望它使用的那个设备;这可以通过在Device
的xorg.conf
部分中指定BusID来完成。