我需要我的显卡驱动程序支持 OpenGL 4.5,据我所知 Mesa 实际上能够运行它。
glxinfo
给了我这个:
$ glxinfo | grep "OpenGL"
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) Haswell Mobile
OpenGL core profile version string: 3.3 (Core Profile) Mesa 13.0.6
OpenGL core profile shading language version string: 3.30
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 3.0 Mesa 13.0.6
OpenGL shading language version string: 1.30
OpenGL context flags: (none)
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.1 Mesa 13.0.6
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.10
OpenGL ES profile extensions:
所以这意味着它只能运行 OpenGL 3.0。所以我尝试更新它,但我遇到了几个问题:
如果我尝试通过 更新它apt
,即sudo apt-get upgrade libgl1-mesa-dri -t testing
,它已损坏:
$ sudo apt-get upgrade libgl1-mesa-dri -t testing
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
libsnmp30 : Depends: libsensors4 (>= 1:3.0.0) but it is not going to be installed
mesa-va-drivers : Depends: libsensors4 (>= 1:3.0.0) but it is not going to be installed
mesa-va-drivers:i386 : Depends: libsensors4:i386 (>= 1:3.0.0) but it is not going to be installed
E: Broken packages
好的,但是:
$ apt-cache policy libsensors4
libsensors4:
Installed: 1:3.4.0-4
Candidate: 1:3.4.0-4
Version table:
*** 1:3.4.0-4 900
900 http://ftp.ru.debian.org/debian stretch/main amd64 Packages
100 /var/lib/dpkg/status
所以它取决于lib版本> = 1:3.0.0,但我有版本1:3.4.0-4,这真的很奇怪。
一般来说,我不明白我应该如何升级 Mesa。如果使用apt
,我不知道应该更新哪些软件包。如果来自源,我不知道它将如何交互apt
以及它是否不会被更新恢复。
我使用的是 Debian 9 Stretch,我的显卡是 Intel HD Graphics 5000。
不要尝试直接在stable上安装testing!或者你最终会得到一个FrankenDebian(充其量),或者由于不切实际的依赖关系而丢失很多包。
好消息是这些更新的软件包可在
stretch-backports
. Debian 的台面在测试中进行了一些包装更改,在拉伸反向移植中也有,这与供应商中立的 GL 调度库有关,这使这变得不平凡。此外,由于您同时使用amd64
和i386
包的多架构,因此必须同步升级这些包,否则您会遇到一些您已经看到的错误。因此,我无法说出有关如何仅升级 mesa 的确切命令,而不升级所有内容(您不应该这样做:
stretch-backports
没有安全支持),但我会给出一个过程。首先请按照Debian 的说明正确添加
stretch-backports
。我将在这里做一个简化的总结:如果您添加了 buster/testing/sid 条目,请务必删除它们。
一些软件包可能已经消失(例如
libgles1-mesa
不再提供),而另一些则出现了。您必须在一个apt-get 命令中升级所有涉及的软件包,因此您首先必须查看最涉及的软件包及其当前版本,并让依赖关系解析器选择缺少的部分(例如:)libdrm2
。您应该手动执行操作,而不是在脚本中执行操作,因为您必须检查是否没有发生任何不良情况(例如apt-get
删除 100 个包)。所以是这样的:甚至:
获取包列表的主要部分。请注意,对于已安装的多架构包,您必须同时提供
amd64
包(默认情况下不需要额外的包,:amd64
但您可以将其从剪切/粘贴中保留)和相同的包(使用附加到包名) 如果在上一个命令中也找到它。所以最终的安装命令应该是这样的:i386
:i386
dpkg
你明白了。现在检查提供的要删除的软件包的数量。如果有一些与台面相关的包要删除(例如:)
libgles1-mesa
,那很好,如果它们中的大多数或许多不相关的包被提供删除,中止并考虑可能丢失的内容。当然,还应提供许多其他升级(例如:libdrm2
和libdrm2:i386
)。由于多拱可能仍然会引起麻烦,因此如果apt-get
不够聪明,您可能必须手动将它们添加两次(每个拱一次)到不断增长的单行列表中。正如@Stephen Kitt 所建议的,其他有用的和相关的软件包,处理硬件使用的改进,包括图形支持,也可以在拉伸反向端口中使用,并且可能也应该升级。其中:
linux-image-amd64
目前将拉linux-image-4.19.0-0.bpo.2-amd64
firmware-misc-nonfree
可能包括升级的图形支持以及无论如何可能必须升级为新内核的(可能是隐藏的)依赖项以获得最佳效果。在事件 Mesa & co. 不在您可以从源代码构建的反向端口中:
施根设置
主机设置:
为 schroots 创建目录:
为 schroots 创建和填充配置文件:
添加
/usr/local
到/etc/schroot/default/fstab
以便 schroots 中的构建脚本可以在那里安装文件:使用 Debian 安装填充 schroot 目录:
汇编
在主机系统上,克隆源存储库:
schroot -c debian32
然后用/依次输入每个 schrootschroot -c debian64
并执行以下操作:安装构建依赖项:
设置环境变量:
安装
wayland
:安装
wayland-protocols
:安装
drm
:安装
mesa
:(仅限 64 位 schroot)编译内核(集成 AMD 和 Intel GPU 固件):
虽然编译(几乎)所有固件在技术上是可行的,但我建议不要这样做。
在主机上安装软件包
回到主机系统,执行以下操作:
主机设置:
扫描
/usr/local
丢失的库并安装提供它们的包:安装内核包:
系统设置
添加
profile.d
脚本以确保(大多数)外壳和外壳类型使用新的 DRI 驱动程序:添加一个 systemd 配置覆盖,以便在 KDE 的 SDDM 启动时 Xorg AIGLX 也使用新的 DRI 驱动程序:
(来自其他桌面环境的 Greeters 需要在相应
service.d
目录中使用相同的配置文件)(可选)删除旧的 Mesa Vulkan 驱动程序:
这可以防止 Vulkan 加载程序获取旧的 Debian 提供的 Vulkan 驱动程序文件(如果有)并可能将其中一个作为“第一个”GPU 返回。
虽然 Mesa确实具有
MESA_VK_DEVICE_SELECT
帮助重新排序设备列表的环境变量,但它只允许您选择特定的 PCI 设备进行优先级排序,而不是在同一设备的多个驱动程序之间进行选择。如果您想保留安装的 Debian 提供的 Vulkan 驱动程序并需要在它们之间进行选择,请尝试vkdevicechooser。最后,重启到:
amdgpu
内核模块和固件ldconfig
缓存在事件 Mesa & co. 不在反向移植中,您可以自己创建反向移植包:
设置
设置环境变量:
从源安装根目录(由于bug#1011348 ):
根
使用mmdebstrap设置 i386 和 amd64 chroot :
来源
添加来源
unstable
:_下载源包和更新变更日志:
应用补丁:
(对于不透明的base64 blob表示歉意,固件非免费补丁需要选项卡,但Markdown 代码块会吃掉选项卡,即使您修复了将包含选项卡的文本粘贴到 Bash 提示符中,也会导致它在尝试完成选项卡时消耗选项卡:( )
建造
构建包(在 12 核 Ryzen 5900x 上大约需要 90 分钟):
Copy packages into the local-apt-repository package depot (needs ~1 GiB):
Upgrade
Upgrade to the new packages:
Install kernel from backports:
Reboot