我正在集成 Intel HD 520 显卡的笔记本电脑上安装交叉。它运行 64 位 Arch Linux,64 位显示驱动程序是mesa
(版本 19.3.3-1)。
我正在安装交叉,我有以下选择:
:: There are 8 providers available for lib32-libgl:
:: Repository AUR
1) catalyst-test 2) lib32-amdgpu-pro-libgl 3) lib32-catalyst-libgl 4) lib32-libglvnd-git 5) lib32-mesa-libgl-noglvnd 6) lib32-nvidia-340xx-utils 7) lib32-nvidia-libgl-352 8) lib32-nvidia-libgl-llb
我应该选择哪个选项?
我相信选择是在lib32-libglvnd-git
或之间lib32-mesa-libgl-noglvnd
。
这是我所知道的libglvnd
:
libglvnd 是一个供应商中立的调度层,用于仲裁多个供应商之间的 OpenGL API 调用。它允许来自不同供应商的多个驱动程序在同一个文件系统上共存,并确定在运行时将每个 API 调用分派给哪个供应商。支持 GLX 和 EGL,与 OpenGL 和 OpenGL ES 任意组合。
但是,我仍然不知道该选择哪个选项。
我在整理将我的项目链接到哪个共享库以在 Linux 上提供合理可移植的 OpenGL 支持时偶然发现了您的问题。我的(有限的)理解是,此时所有常见的 OpenGL 实现都与供应商中立的 GLVND 调度层兼容,因此它应该是默认选择。
正如您引用的包描述中所述,GLVND 是一个包装器,它在运行时将 API 使用分派给适当的供应商提供的实现(即安装的 GPU 驱动程序堆栈)。我的理解是,供应商提供的 API 库在历史上相互破坏。
Mesa提供建立在供应商特定驱动程序之上的开源图形 API 实现(而不是供应商在其之上提供驱动程序和 API 实现)。据我所知,Mesa 最初与 GLVND 包装器不兼容。但是,他们似乎至少在两年前获得了支持。我只能假设该
lib32-mesa-libgl-noglvnd
软件包是之前的保留。官方 GLVND 存储库可能对更多信息感兴趣,以及您可能已经看到的这个线程。对于好奇的人,这些幻灯片提供了有关最初推动 GLVND 发展的更多信息。