如何使用 libglvnd 切换 GPU?

如何使用 libglvnd 切换 GPU?

我买了一台笔记本电脑,它在“Optimus”类型的设置中集成了英特尔显卡和独立的 nVidia GPU。集成显卡通常都很好,但笔记本电脑的 HDMI 和 DisplayPort 端口仅物理连接到 nVidia 芯片。

经过一些实验,我确实让 PRIME 在每个应用程序的基础上工作输出到内置显示器,似乎libglvnd是多 GPU 渲染的未来,所以我将我的 Gentoo 系统更新到 Xorg 1.20.8、Linux 5.7.8 和 nvidia-drivers 440.82-r3,并启用了 libglvnd 支持。

我没有明确的规定xorg.conf,并且允许自动检测和配置运行。

xrandr --listproviders显示两张卡都被检测到并注册,但我没有看到任何“接收器”或我可以使用xrandr(1.5.1)选择的其他项目:

Providers: number : 2
Provider 0: id: 0x45 cap: 0xb, Source Output, Sink Output, Sink Offload crtcs: 4 outputs: 2 associated providers: 0 name:Intel
Provider 1: id: 0x220 cap: 0x0 crtcs: 0 outputs: 0 associated providers: 0 name:NVIDIA-G0

并且xrandr -q仅显示英特尔输出:

Screen 0: minimum 8 x 8, current 1920 x 1080, maximum 32767 x 32767
eDP1 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 340mm x 190mm
   1920x1080    120.11*+  48.08  
VIRTUAL1 disconnected (normal left inverted right x axis y axis)

Xorg 日志(下面的完整启动日志)显示,当我插拔电缆时,nVidia 驱动程序正在报告图形端口上的热插拔事件。

[272668.092] (--) NVIDIA(GPU-0): WIT DISPLAY PORT (DFP-1): connected
[272668.093] (--) NVIDIA(GPU-0): WIT DISPLAY PORT (DFP-1): Internal DisplayPort
[272668.093] (--) NVIDIA(GPU-0): WIT DISPLAY PORT (DFP-1): 2660.0 MHz maximum pixel clock
[272668.093] (--) NVIDIA(GPU-0):
[272670.384] (--) NVIDIA(GPU-0): HYO HDMI (DFP-0): connected
[272670.384] (--) NVIDIA(GPU-0): HYO HDMI (DFP-0): Internal TMDS
[272670.384] (--) NVIDIA(GPU-0): HYO HDMI (DFP-0): 600.0 MHz maximum pixel clock

据我了解,核心 libglvnd 设置似乎工作正常,但我无法确定如何切换到 nVidia GPU,以便我可以使用我的输出端口。在试验早期的 PRIME 模型时,需要使用诸如DRI_PRIME__GL*之类的环境变量,但我strings在 libglvnd 二进制文件上使用并没有发现任何有希望的东西,并且 libglvnd 包没有附带任何类似于optirun.

一旦检测到我的多 GPU 设置并正确报告热插拔事件,如何使用 libglvnd 激活 dGPU 以便可以使用我的外部显示器端口?

Xorg 启动时删除了输入设备以适应限制:

[    25.679] (--) Log file renamed from "/var/log/Xorg.pid-5923.log" to "/var/log/Xorg.0.log"
[    25.680] 
X.Org X Server 1.20.8
X Protocol Version 11, Revision 0
[    25.680] Build Operating System: Linux 5.5.3-gentoo-x86_64 x86_64 Gentoo
[    25.680] Current Operating System: Linux codex 5.7.2-gentoo-x86_64 #3 SMP PREEMPT Thu Jun 18 16:11:45 CDT 2020 x86_64
[    25.680] Kernel command line: BOOT_IMAGE=/vmlinuz-5.7.2-gentoo-x86_64 root=/dev/mapper/codex-root ro dolvm crypt_root=PARTUUID=4171a9c1-510e-40f1-a4cc-01162e222522 root=/dev/codex/root resume=/dev/codex/swap root_trim=yes
[    25.680] Build Date: 16 June 2020  07:48:52PM
[    25.680]  
[    25.680] Current version of pixman: 0.38.4
[    25.680]    Before reporting problems, check http://wiki.x.org
    to make sure that you have the latest version.
[    25.680] Markers: (--) probed, (**) from config file, (==) default setting,
    (++) from command line, (!!) notice, (II) informational,
    (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
[    25.680] (==) Log file: "/var/log/Xorg.0.log", Time: Thu Jun 18 16:14:54 2020
[    25.681] (==) Using config directory: "/etc/X11/xorg.conf.d"
[    25.681] (==) Using system config directory "/usr/share/X11/xorg.conf.d"
[    25.682] (==) ServerLayout "layout"
[    25.682] (==) No screen section available. Using defaults.
[    25.682] (**) |-->Screen "Default Screen Section" (0)
[    25.682] (**) |   |-->Monitor "<default monitor>"
[    25.683] (==) No monitor specified for screen "Default Screen Section".
    Using a default monitor configuration.
[    25.683] (==) Automatically adding devices
[    25.683] (==) Automatically enabling devices
[    25.683] (==) Automatically adding GPU devices
[    25.683] (==) Max clients allowed: 256, resource mask: 0x1fffff
[    25.684] (WW) The directory "/usr/share/fonts/TTF/" does not exist.
[    25.684]    Entry deleted from font path.
[    25.684] (WW) The directory "/usr/share/fonts/OTF/" does not exist.
[    25.684]    Entry deleted from font path.
[    25.684] (WW) The directory "/usr/share/fonts/Type1/" does not exist.
[    25.684]    Entry deleted from font path.
[    25.684] (WW) `fonts.dir' not found (or not valid) in "/usr/share/fonts/100dpi/".
[    25.684]    Entry deleted from font path.
[    25.684]    (Run 'mkfontdir' on "/usr/share/fonts/100dpi/").
[    25.684] (WW) `fonts.dir' not found (or not valid) in "/usr/share/fonts/75dpi/".
[    25.684]    Entry deleted from font path.
[    25.684]    (Run 'mkfontdir' on "/usr/share/fonts/75dpi/").
[    25.684] (==) FontPath set to:
    /usr/share/fonts/misc/
[    25.684] (**) ModulePath set to "/usr/lib64/xorg/modules"
[    25.684] (II) The server relies on udev to provide the list of input devices.
    If no devices become available, reconfigure udev or disable AutoAddDevices.
[    25.684] (II) Loader magic: 0x561eb766cd20
[    25.684] (II) Module ABI versions:
[    25.684]    X.Org ANSI C Emulation: 0.4
[    25.684]    X.Org Video Driver: 24.1
[    25.684]    X.Org XInput driver : 24.1
[    25.684]    X.Org Server Extension : 10.0
[    25.685] (++) using VT number 7

[    25.685] (II) systemd-logind: logind integration requires -keeptty and -keeptty was not provided, disabling logind integration
[    25.685] (II) xfree86: Adding drm device (/dev/dri/card1)
[    25.685] (II) xfree86: Adding drm device (/dev/dri/card0)
[    25.691] (--) PCI:*(0@0:2:0) 8086:3e9b:1462:129b rev 2, Mem @ 0xa3000000/16777216, 0x80000000/268435456, I/O @ 0x00005000/64, BIOS @ 0x????????/131072
[    25.691] (--) PCI: (1@0:0:0) 10de:2191:1462:129b rev 161, Mem @ 0xa4000000/16777216, 0x90000000/268435456, 0xa0000000/33554432, I/O @ 0x00004000/128, BIOS @ 0x????????/524288
[    25.691] (II) LoadModule: "glx"
[    25.691] (II) Loading /usr/lib64/xorg/modules/extensions/libglx.so
[    25.699] (II) Module glx: vendor="X.Org Foundation"
[    25.699]    compiled for 1.20.8, module version = 1.0.0
[    25.699]    ABI class: X.Org Server Extension, version 10.0
[    25.699] (II) Applying OutputClass "nvidia" to /dev/dri/card1
[    25.699]    loading driver: nvidia
[    25.699] (==) Matched intel as autoconfigured driver 0
[    25.699] (==) Matched nvidia as autoconfigured driver 1
[    25.699] (==) Matched nouveau as autoconfigured driver 2
[    25.699] (==) Matched nv as autoconfigured driver 3
[    25.699] (==) Matched modesetting as autoconfigured driver 4
[    25.699] (==) Matched fbdev as autoconfigured driver 5
[    25.699] (==) Matched vesa as autoconfigured driver 6
[    25.699] (==) Assigned the driver to the xf86ConfigLayout
[    25.699] (II) LoadModule: "intel"
[    25.700] (II) Loading /usr/lib64/xorg/modules/drivers/intel_drv.so
[    25.701] (II) Module intel: vendor="X.Org Foundation"
[    25.701]    compiled for 1.20.8, module version = 2.99.917
[    25.701]    Module class: X.Org Video Driver
[    25.701]    ABI class: X.Org Video Driver, version 24.1
[    25.701] (II) LoadModule: "nvidia"
[    25.701] (II) Loading /usr/lib64/xorg/modules/drivers/nvidia_drv.so
[    25.705] (II) Module nvidia: vendor="NVIDIA Corporation"
[    25.705]    compiled for 1.6.99.901, module version = 1.0.0
[    25.705]    Module class: X.Org Video Driver
[    25.706] (II) LoadModule: "nouveau"
[    25.706] (WW) Warning, couldn't open module nouveau
[    25.706] (EE) Failed to load module "nouveau" (module does not exist, 0)
[    25.706] (II) LoadModule: "nv"
[    25.706] (WW) Warning, couldn't open module nv
[    25.706] (EE) Failed to load module "nv" (module does not exist, 0)
[    25.706] (II) LoadModule: "modesetting"
[    25.706] (II) Loading /usr/lib64/xorg/modules/drivers/modesetting_drv.so
[    25.707] (II) Module modesetting: vendor="X.Org Foundation"
[    25.707]    compiled for 1.20.8, module version = 1.20.8
[    25.707]    Module class: X.Org Video Driver
[    25.707]    ABI class: X.Org Video Driver, version 24.1
[    25.707] (II) LoadModule: "fbdev"
[    25.707] (WW) Warning, couldn't open module fbdev
[    25.707] (EE) Failed to load module "fbdev" (module does not exist, 0)
[    25.707] (II) LoadModule: "vesa"
[    25.707] (WW) Warning, couldn't open module vesa
[    25.707] (EE) Failed to load module "vesa" (module does not exist, 0)
[    25.707] (II) intel: Driver for Intel(R) Integrated Graphics Chipsets:
    i810, i810-dc100, i810e, i815, i830M, 845G, 854, 852GM/855GM, 865G,
    915G, E7221 (i915), 915GM, 945G, 945GM, 945GME, Pineview GM,
    Pineview G, 965G, G35, 965Q, 946GZ, 965GM, 965GME/GLE, G33, Q35, Q33,
    GM45, 4 Series, G45/G43, Q45/Q43, G41, B43
[    25.707] (II) intel: Driver for Intel(R) HD Graphics
[    25.707] (II) intel: Driver for Intel(R) Iris(TM) Graphics
[    25.707] (II) intel: Driver for Intel(R) Iris(TM) Pro Graphics
[    25.707] (II) NVIDIA dlloader X Driver  440.82  Wed Apr  1 19:50:17 UTC 2020
[    25.707] (II) NVIDIA Unified Driver for all Supported NVIDIA GPUs
[    25.707] (II) modesetting: Driver for Modesetting Kernel Drivers: kms
[    25.716] (II) intel(0): Using Kernel Mode Setting driver: i915, version 1.6.0 20200313
[    25.729] (WW) Falling back to old probe method for modesetting
[    25.729] (II) Loading sub module "fb"
[    25.729] (II) LoadModule: "fb"
[    25.730] (II) Loading /usr/lib64/xorg/modules/libfb.so
[    25.730] (II) Module fb: vendor="X.Org Foundation"
[    25.730]    compiled for 1.20.8, module version = 1.0.0
[    25.730]    ABI class: X.Org ANSI C Emulation, version 0.4
[    25.730] (II) Loading sub module "wfb"
[    25.730] (II) LoadModule: "wfb"
[    25.730] (II) Loading /usr/lib64/xorg/modules/libwfb.so
[    25.731] (II) Module wfb: vendor="X.Org Foundation"
[    25.731]    compiled for 1.20.8, module version = 1.0.0
[    25.731]    ABI class: X.Org ANSI C Emulation, version 0.4
[    25.731] (II) Loading sub module "ramdac"
[    25.731] (II) LoadModule: "ramdac"
[    25.731] (II) Module "ramdac" already built-in
[    25.733] (--) intel(0): Integrated Graphics Chipset: Intel(R) HD Graphics
[    25.733] (--) intel(0): CPU: x86-64, sse2, sse3, ssse3, sse4.1, sse4.2, avx, avx2; using a maximum of 6 threads
[    25.733] (II) intel(0): Creating default Display subsection in Screen section
    "Default Screen Section" for depth/fbbpp 24/32
[    25.733] (==) intel(0): Depth 24, (--) framebuffer bpp 32
[    25.733] (==) intel(0): RGB weight 888
[    25.733] (==) intel(0): Default visual is TrueColor
[    25.733] (II) intel(0): Output eDP1 has no monitor section
[    25.733] (**) intel(0): Found backlight control interface intel_backlight (type 'raw') for output eDP1
[    25.733] (II) intel(0): Enabled output eDP1
[    25.733] (--) intel(0): Using a maximum size of 256x256 for hardware cursors
[    25.733] (II) intel(0): Output VIRTUAL1 has no monitor section
[    25.733] (II) intel(0): Enabled output VIRTUAL1
[    25.733] (--) intel(0): Output eDP1 using initial mode 1920x1080 on pipe 0
[    25.733] (==) intel(0): TearFree enabled
[    25.733] (==) intel(0): Using gamma correction (1.0, 1.0, 1.0)
[    25.733] (==) intel(0): DPI set to (96, 96)
[    25.733] (II) Loading sub module "dri3"
[    25.733] (II) LoadModule: "dri3"
[    25.733] (II) Module "dri3" already built-in
[    25.733] (II) Loading sub module "dri2"
[    25.733] (II) LoadModule: "dri2"
[    25.733] (II) Module "dri2" already built-in
[    25.733] (II) Loading sub module "present"
[    25.733] (II) LoadModule: "present"
[    25.733] (II) Module "present" already built-in
[    25.733] (==) NVIDIA(G0): Depth 24, (==) framebuffer bpp 32
[    25.733] (==) NVIDIA(G0): RGB weight 888
[    25.733] (==) NVIDIA(G0): Default visual is TrueColor
[    25.733] (==) NVIDIA(G0): Using gamma correction (1.0, 1.0, 1.0)
[    25.734] (**) Option "AllowNVIDIAGpuScreens"
[    25.734] (**) NVIDIA(G0): Enabling 2D acceleration
[    25.734] (II) Loading sub module "glxserver_nvidia"
[    25.734] (II) LoadModule: "glxserver_nvidia"
[    25.734] (II) Loading /usr/lib64/xorg/modules/extensions/libglxserver_nvidia.so
[    25.768] (II) Module glxserver_nvidia: vendor="NVIDIA Corporation"
[    25.768]    compiled for 1.6.99.901, module version = 1.0.0
[    25.768]    Module class: X.Org Server Extension
[    25.768] (II) NVIDIA GLX Module  440.82  Wed Apr  1 19:47:36 UTC 2020
[    25.770] (II) NVIDIA: The X server supports PRIME Render Offload.
[    26.259] (--) NVIDIA(0): Valid display device(s) on GPU-0 at PCI:1:0:0
[    26.259] (--) NVIDIA(0):     DFP-0
[    26.259] (--) NVIDIA(0):     DFP-1 (boot)
[    26.259] (--) NVIDIA(0):     DFP-2
[    26.259] (II) NVIDIA(G0): NVIDIA GPU GeForce GTX 1660 Ti (TU116-A) at PCI:1:0:0 (GPU-0)
[    26.260] (--) NVIDIA(G0): Memory: 6291456 kBytes
[    26.260] (--) NVIDIA(G0): VideoBIOS: 90.16.2c.00.0d
[    26.260] (II) NVIDIA(G0): Detected PCI Express Link width: 16X
[    26.260] (--) NVIDIA(GPU-0): DFP-0: disconnected
[    26.260] (--) NVIDIA(GPU-0): DFP-0: Internal TMDS
[    26.260] (--) NVIDIA(GPU-0): DFP-0: 165.0 MHz maximum pixel clock
[    26.260] (--) NVIDIA(GPU-0): 
[    26.260] (--) NVIDIA(GPU-0): WIT DISPLAY PORT (DFP-1): connected
[    26.260] (--) NVIDIA(GPU-0): WIT DISPLAY PORT (DFP-1): Internal DisplayPort
[    26.260] (--) NVIDIA(GPU-0): WIT DISPLAY PORT (DFP-1): 2660.0 MHz maximum pixel clock
[    26.260] (--) NVIDIA(GPU-0): 
[    26.261] (--) NVIDIA(GPU-0): DFP-2: disconnected
[    26.261] (--) NVIDIA(GPU-0): DFP-2: Internal TMDS
[    26.261] (--) NVIDIA(GPU-0): DFP-2: 165.0 MHz maximum pixel clock
[    26.261] (--) NVIDIA(GPU-0): 
[    26.261] (II) NVIDIA(G0): Validated MetaModes:
[    26.261] (II) NVIDIA(G0):     "NULL"
[    26.261] (**) NVIDIA(G0): Virtual screen size configured to be 1920 x 1080
[    26.261] (WW) NVIDIA(G0): Unable to get display device for DPI computation.
[    26.261] (==) NVIDIA(G0): DPI set to (75, 75); computed from built-in default
[    26.261] (II) UnloadModule: "modesetting"
[    26.261] (II) Unloading modesetting
[    26.266] (II) intel(0): SNA initialized with Coffeelake (gen9) backend
[    26.266] (==) intel(0): Backing store enabled
[    26.266] (==) intel(0): Silken mouse enabled
[    26.266] (II) intel(0): HW Cursor enabled
[    26.267] (==) intel(0): DPMS enabled
[    26.267] (==) intel(0): Display hotplug detection enabled
[    26.267] (II) intel(0): [DRI2] Setup complete
[    26.267] (II) intel(0): [DRI2]   DRI driver: i965
[    26.267] (II) intel(0): [DRI2]   VDPAU driver: va_gl
[    26.267] (II) intel(0): direct rendering: DRI2 DRI3 enabled
[    26.267] (II) intel(0): hardware support for Present enabled
[    26.267] (II) NVIDIA: Using 24576.00 MB of virtual memory for indirect memory
[    26.267] (II) NVIDIA:     access.
[    26.276] (II) NVIDIA(G0): ACPI: failed to connect to the ACPI event daemon; the daemon
[    26.276] (II) NVIDIA(G0):     may not be running or the "AcpidSocketPath" X
[    26.276] (II) NVIDIA(G0):     configuration option may not be set correctly.  When the
[    26.276] (II) NVIDIA(G0):     ACPI event daemon is available, the NVIDIA X driver will
[    26.276] (II) NVIDIA(G0):     try to use it to receive ACPI event notifications.  For
[    26.276] (II) NVIDIA(G0):     details, please see the "ConnectToAcpid" and
[    26.276] (II) NVIDIA(G0):     "AcpidSocketPath" X configuration options in Appendix B: X
[    26.276] (II) NVIDIA(G0):     Config Options in the README.
[    26.329] (II) NVIDIA(G0): Setting mode "NULL"
[    26.359] (==) NVIDIA(G0): Disabling shared memory pixmaps
[    26.359] (==) NVIDIA(G0): Backing store enabled
[    26.359] (==) NVIDIA(G0): Silken mouse enabled
[    26.359] (==) NVIDIA(G0): DPMS enabled
[    26.359] (II) Loading sub module "dri2"
[    26.359] (II) LoadModule: "dri2"
[    26.359] (II) Module "dri2" already built-in
[    26.359] (II) NVIDIA(G0): [DRI2] Setup complete
[    26.359] (II) NVIDIA(G0): [DRI2]   VDPAU driver: nvidia
[    26.359] (II) Initializing extension Generic Event Extension
[    26.360] (II) Initializing extension SHAPE
[    26.360] (II) Initializing extension MIT-SHM
[    26.360] (II) Initializing extension XInputExtension
[    26.360] (II) Initializing extension XTEST
[    26.360] (II) Initializing extension BIG-REQUESTS
[    26.360] (II) Initializing extension SYNC
[    26.360] (II) Initializing extension XKEYBOARD
[    26.360] (II) Initializing extension XC-MISC
[    26.360] (II) Initializing extension SECURITY
[    26.360] (II) Initializing extension XFIXES
[    26.361] (II) Initializing extension RENDER
[    26.361] (II) Initializing extension RANDR
[    26.361] (II) Initializing extension COMPOSITE
[    26.361] (II) Initializing extension DAMAGE
[    26.361] (II) Initializing extension MIT-SCREEN-SAVER
[    26.361] (II) Initializing extension DOUBLE-BUFFER
[    26.361] (II) Initializing extension RECORD
[    26.361] (II) Initializing extension DPMS
[    26.361] (II) Initializing extension Present
[    26.361] (II) Initializing extension DRI3
[    26.361] (II) Initializing extension X-Resource
[    26.361] (II) Initializing extension XVideo
[    26.361] (II) Initializing extension XVideo-MotionCompensation
[    26.361] (II) Initializing extension GLX
[    26.361] (II) Initializing extension GLX
[    26.361] (II) Indirect GLX disabled.
[    26.383] (II) AIGLX: Loaded and initialized i965
[    26.383] (II) GLX: Initialized DRI2 GL provider for screen 0
[    26.383] (II) Initializing extension XFree86-VidModeExtension
[    26.384] (II) Initializing extension XFree86-DGA
[    26.384] (II) Initializing extension XFree86-DRI
[    26.384] (II) Initializing extension DRI2
[    26.384] (II) Initializing extension NV-GLX
[    26.384] (II) Initializing extension NV-CONTROL
[    26.386] (II) intel(0): switch to mode [email protected] on eDP1 using pipe 0, position (0, 0), rotation normal, reflection none
[    26.388] (II) intel(0): Setting screen physical size to 508 x 285
[    26.988] (--) NVIDIA(GPU-0): WIT DISPLAY PORT (DFP-1): connected
[    26.988] (--) NVIDIA(GPU-0): WIT DISPLAY PORT (DFP-1): Internal DisplayPort
[    26.988] (--) NVIDIA(GPU-0): WIT DISPLAY PORT (DFP-1): 2660.0 MHz maximum pixel clock
[    26.988] (--) NVIDIA(GPU-0): 
[    26.988] (EE) Failed to open authorization file "/var/run/sddm/{248a5522-1b5e-4998-9e20-ae4671e50102}": No such file or directory
[    28.268] (II) intel(0): EDID vendor "AUO", prod id 53485
[    28.269] (II) intel(0): Using EDID range info for horizontal sync
[    28.269] (II) intel(0): Using EDID range info for vertical refresh
[    28.269] (II) intel(0): Printing DDC gathered Modelines:
[    28.269] (II) intel(0): Modeline "1920x1080"x0.0  290.80  1920 2028 2076 2120  1080 1090 1100 1142 -hsync -vsync (137.2 kHz eP)
[    28.269] (II) intel(0): Modeline "1920x1080"x0.0  116.40  1920 2028 2076 2120  1080 1090 1100 1142 -hsync -vsync (54.9 kHz e)

答案1

如果您摆脱 nouveau 以使用 nvidia 驱动程序:

https://www.if-not-true-then-false.com/2015/fedora-nvidia-guide/

您需要使用 __GLX_VENDOR_LIBRARY_NAME=nvidia 强制驱动程序:

$ inxi -G
Graphics:  Device-1: Intel UHD Graphics 620 driver: i915 v: kernel 
           Device-2: NVIDIA GP106 [GeForce GTX 1060 3GB] driver: nvidia v: 470.74 
           Device-3: Acer SunplusIT Integrated Camera type: USB driver: uvcvideo 
           Display: wayland server: X.Org 1.21.1.2 driver: loaded: nvidia resolution: 1920x1080~60Hz 
           OpenGL: renderer: Mesa Intel UHD Graphics 620 (KBL GT2) v: 4.6 Mesa 21.1.8 
$ DRI_PRIME=0 glxinfo | grep 'OpenGL renderer string'
OpenGL renderer string: Mesa Intel(R) UHD Graphics 620 (KBL GT2)
$ DRI_PRIME=1 glxinfo | grep 'OpenGL renderer string'
libGL error: failed to create dri screen
libGL error: failed to load driver: nouveau
OpenGL renderer string: llvmpipe (LLVM 12.0.1, 256 bits)
$ __GLX_VENDOR_LIBRARY_NAME=nvidia DRI_PRIME=1 glxinfo | grep 'OpenGL renderer string'
OpenGL renderer string: NVIDIA GeForce GTX 1060 3GB/PCIe/SSE2

相关内容