【问题标题】:Onscreen EGL display using NVidia GPU [closed]使用 NVidia GPU 的屏幕 EGL 显示 [关闭]
【发布时间】:2025-11-25 20:25:08
【问题描述】:

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

当使用eglGetDisplay(EGL_DEFAULT_DISPLAY) 打开 EGL 显示时,它似乎创建了一个离屏渲染上下文。

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

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

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

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

【问题讨论】:

    标签: linux opengl x11 nvidia egl


    【解决方案1】:

    是否可以这样设置,当程序在没有 X11/Wayland 的情况下启动时

    NVidia 的 Linux 驱动程序与 X.org 基础架构密切相关;它仍然不能以应有的方式正确支持 Wayland。相反,NVidia 硬塞了他们自己的“方法”来直接访问显示器,他们称之为“EGL Stream”;与 Wayland 的集成可以在 https://github.com/NVIDIA/egl-wayland 找到。

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

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

    理论上,这也应该可以通过 EGL Streams 实现,假设您将 X 服务器配置为仅使用您希望它使用的那个设备;这可以通过在 xorg.confDevice 部分中指定 BusID 来完成。

    【讨论】:

      最近更新 更多