Leohearts的Blog

拥有一颗坚强而又温柔的心 *博客主题正在开发

cover

在Ubuntu20.04体验NVIDIA官方的动态显卡切换

快来升级到Ubuntu20.04吧!

这几天折腾了一下显卡驱动的问题(估计是之前装waifu2x时一通make install惹的祸), 然后顺手升级了一下Ubuntu版本.

结果当我再次调整prime-select的选项时, 发现了这个东西

leohearts@leohearts ~> prime-select
Usage: /usr/bin/prime-select nvidia|intel|on-demand|query

On-demand是什么?难道终于可以像windows那样对不同的程序使用不同显卡了吗?

测试了一下, 还真是...只要在启动时指定环境变量__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia就可以使用N卡来运行, 否则使用集成显卡.GPU计算程序默认使用N卡.

leohearts@leohearts ~> env __NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia glxinfo | grep "OpenGL renderer"
OpenGL renderer string: GeForce GTX 1050 Ti/PCIe/SSE2
leohearts@leohearts ~> glxinfo | grep "OpenGL renderer"
OpenGL renderer string: Mesa Intel(R) UHD Graphics 630 (CFL GT2)

写个optirun放在bin里:

#!/bin/bash
export __NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia
for i in "$@"
do      
        cmd=$cmd' ''"'$i'"'
done    
echo $cmd | exec sh

就可以优雅地用optirun glxgears调用了. 假装bumblebee

这个特性是435.17的时候更新的, 但之前用18.04的时候也是440的驱动, 却没有看到这个选项, 根据这里的回答来看是Ubuntu20.04的Xorg进行了更新, 才支持的这个特性.

这样以来, 一般的窗口渲染使用集显, 玩游戏的时候用独显, 对Linux本本的续航更友善了.