为啥基于 GLX 的应用程序可以在 Ubuntu 上的 Wayland 上运行?

Posted

技术标签:

【中文标题】为啥基于 GLX 的应用程序可以在 Ubuntu 上的 Wayland 上运行?【英文标题】:How come GLX-based applications can be run on Wayland on Ubuntu?为什么基于 GLX 的应用程序可以在 Ubuntu 上的 Wayland 上运行? 【发布时间】:2017-12-13 08:31:00 【问题描述】:

所以 GLX 是 X11 上 OpenGL 的图形上下文创建和管理系统。但在设计上,Wayland 不兼容 X11,并且为 OpenGL 上下文管理实现了 EGL,而不是 GLX。那么,在 Ubuntu 17.10 上基于 Wayland 的会话中,我仍然可以运行使用 GLX 创建其上下文的应用程序(例如 glxinfoglxgears),这是怎么回事?是否正在进行一些透明的 GLX 仿真?

另外(因为这可能与上面的问题有关)为什么在 Wayland 上运行时,这些基于 GLX 的应用程序不能使用 MSAA(例如 glxinfo 不返回任何支持 MSAA 的上下文类型)- 至少在我测试它们的英特尔 GPU 上 - 而 MSAA 在 X.org 而不是 Wayland 上运行时适用于相同的应用程序、GPU 和 Ubuntu 版本?

【问题讨论】:

en.wikipedia.org/wiki/X.Org_Server#XWayland @genpfault:这就解释了为什么 GLX 可以工作。关于为什么 XWayland 在 MSAA 支持方面的行为与原生 X.org 不同的任何见解? 遗憾的是,不知道为什么 MSAA 支持有所不同 :( 尝试通过在终端 export GDK_BACKEND=x11 中运行来强制 X11 后端,然后启动您的应用程序 ./myapp 【参考方案1】:

所以根据@genpfault 提供的链接:

XWayland 是 XOrg 的一部分,它在 Wayland 之上提供 X 服务器。任何与 X11 库链接并在 Wayland 下运行的应用程序都将自动使用 XWayland 作为其后端。所以 XWayland 的 GLX 部分是允许基于 GLX 的 OpenGL 应用程序在 Wayland 上运行的机制。 不能在基于 GLX 的应用程序中使用 MSAA 似乎是 XWayland 的一个已知错误,至少对于 Intel 和 AMD GPU 而言(参见https://bugs.freedesktop.org/show_bug.cgi?id=98272)。但我找不到关于此事的任何其他信息。

【讨论】:

如果有更多“Wayland/Xorg-savvy”的人可以进一步了解细节,也很感兴趣。

以上是关于为啥基于 GLX 的应用程序可以在 Ubuntu 上的 Wayland 上运行?的主要内容,如果未能解决你的问题,请参考以下文章

在多台显示器上使用 GLX RHEL -- OpenGL、XLib 和多台显示器(带线程)

glew, glee与 gl glu glut glx glext的区别

为啥ubuntu系统文件打开或者程序打开的速度总觉得比XP系统慢一拍?

QXcbIntegration:无法创建平台 OpenGL 上下文,GLX 和 EGL 均未启用

linux ubuntu 显卡驱动安装方法

docker的宿主系统是centos,为啥可以运行ubuntu的镜像