快轉到主要內容

透過DRI_PRIME變數,指定Linux使用特定GPU渲染

Linux系統 Linux使用技巧 Nvidia
✍ 切換正體/簡體字
目錄

Specifing which GPU for rendering using PRIME GPU offloading commands.

使用情境:Arch Linux當Nvidia主顯示卡,Intel內顯保持啟用。

問題點:我發現VLC在使用Nvidia顯示卡GTX1050Ti的時候播不動8K HEVC編碼影片,不論閉源或開源驅動都一樣,而Intel內顯UHD 630卻可以順暢播放。

經查可能是VAAPI支援度的問題,Nvidia很容易一更新就爆炸。

我想在播放的時候使用Intel,但又維持Nvidia當主顯示卡。

1. 使用DRI_PRIME變數
#

經測試可以用DRI_PRIME變數達成目的。根據 PRIME - Arch Wiki解釋,不論Intel/Nvidia/AM,只要是開源驅動都支援這種方式指定GPU渲染的。

但是、在Nvidia當主顯示卡的時候,必須使用開源nouveau驅動,不可以用閉源驅動。閉源驅動無論怎麼設定都無法叫出Intel。使用閉源驅動的情況下,只能在主顯卡為Intel的情況下用 Nvidia PRIME渲染,無法反過來指定用Intel渲染。

使用DRI_PRIME=0 glxinfo | grep OpenGL顯示目前使用Nvidia顯示卡渲染

播放8K影片掉幀嚴重

使用DRI_PRIME=1 glxinfo | grep OpenGL顯示切換至Intel顯示卡

播放8K影片正常。

另外,DRI_PRIME也可以填寫顯示卡的PCI位址,用lspci -nnkls /sys/bus/pci/devices/查看,再將冒號轉成底線,例如DRI_PRIME=pci-0000:02:00.0

2. 其他方案
#

另一個方案是靠Docker限制容器可以存取的device,或許這樣可以在使用Nvidia閉源驅動的情況下達成DRI_PRIME的效果。

Docker compose的範例:

devices:
  - /dev/dri/card0:/dev/dri/card0
  - /dev/dri/renderD128:/dev/dri/renderD128

相關文章

教你在Arch Linux安裝Nvidia、CUDA、cuDNN、TensorRT專有驅動程式
Linux系統 Linux使用技巧 Arch Linux Nvidia
Linux讓Intel GPU負責畫面輸出,Nvidia負責3D運算的方法
Linux系統 Linux使用技巧 Nvidia
Nvidia PRIME用法,Linux雙顯卡電腦切換獨顯跑3D渲染
Linux系統 Linux使用技巧 Nvidia Arch Linux Ubuntu

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur連結。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。