快轉到主要內容

Linux讓Intel GPU負責畫面輸出,Nvidia負責3D運算的方法

Linux系統 Linux使用技巧 Nvidia
🗓️ 民國112年 癸卯年
✍ 切換正體/簡體字
目錄

Intel GPU for display, Nvidia GPU for computing and offload rendering.

Nvidia PRIME是Nvidia顯示卡的一種技術,可以在獨立顯示卡與內顯之間切換。

比如Linux筆電用Intel內顯開機,桌面環境用內顯渲染。當遇到需要重度GPU渲染的遊戲程式時,才將渲染作業分配給Nvidia顯示卡,此種過程稱之為PRIME Render Offload

同樣的,Linux桌電也可以使用這個技術,紓解Nvidia驅動不穩定的問題。將筆電的這個技術,沿用到桌電上,採「內顯」用於畫面輸出,需要時再呼叫「獨顯」出來幹活的方案。

  • 測試系統:Arch Linux 6.6.8
  • Nvidia驅動版本:545.29.06

1. 不要用Nvidia顯示卡當主顯卡的理由
#

我這裡要論述不要用Nvidia當主顯示卡的理由,即讓螢幕所有的渲染都由Nvidia顯示卡處理。

我的電腦有Intel內顯和Nvidia獨顯二張顯示卡,加上一個螢幕。在使用系統的時候,我會把主螢幕接到獨立顯示卡上,所以Nvidia顯示卡自然就成了負責渲染所有圖形的顯示卡。

但是Nvidia的閉源驅動在Linux系統相對Intel驅動來說不是很穩定,很容易更新就爆炸。再者KDE X11與Nvidia相性不佳,偶有畫面撕裂情況。

偉大的Linus Torvalds曾說過:Nvidia fuck you

為了保持桌面穩定度,可以嘗試Intel內顯負責輸出螢幕,需要時再叫Nvidia渲染(PRIME Render Offload)的作法。

所以電腦螢幕接法會變成這樣。

這樣的話,沒有Nvidia畫面撕裂問題,又能保持Nvidia的效能。預設用Intel內顯當主畫面輸出,3D運算就是用Intel,看影片解碼夠力了,還能無痛跑 Waydroid和Android-x86的 virglrenderer。等有需要重度3D計算再叫Nvidia顯示卡出來幹活即可。

2. 將桌電設定為Intel內顯優先開機
#

  1. 現在我的螢幕線是插在Nvidia獨顯上。首先檢查目前使用的是nouveau還是Nvidia專有驅動,顯示nouveau就是前者了。
lsmod | egrep "nvidia|nouveau"
  1. 雖說若有安裝開源Nvidia驅動nouveau,應先將其解除安裝,但它是含在Mesa套件裡面的,而Intel驅動需要Mesa,所以頂多只能禁止其載入。在安裝Nvidia專有驅動後,nouveau應會自動被停用。

  2. 在Arch Linux 安裝Nvidia專有驅動和相關工具,重開機。

  3. 使用指令lspci -k | grep -A 2 -i "VGA"列出目前使用的GPU。如果螢幕的線是插在Nvidia的HDMI孔上,那麼應該只會看到Nvidia

01:00.0 VGA compatible controller: NVIDIA Corporation GP107 [GeForce GTX 1050 Ti] (rev a1)
        Subsystem: ASUSTeK Computer Inc. Device 85d6
        Kernel driver in use: nvidia
  1. 因為等下要改用Intel內顯啟動,安裝Intel的開源驅動,還有Vulkan。
sudo pacman -S mesa intel-media-driver vulkan-intel
  1. 檢查GRUB參數:cat /etc/default/grub,確認GRUB_CMDLINE_LINUX_DEFAULT沒有設定nomodesetnvidia-drm.modeset=1,否則用Intel顯卡開機會沒畫面。

  2. 電腦關機。

  3. 進入電腦的BIOS,設定為內顯優先開機。我的主機板的該設定位置Advanced → System Agent (SA)Configuration,設定IGFX優先開機。

  4. 之後電腦重開機,將插在獨顯的HDMI線拔掉,改插到主機板的HDMI孔。

  5. 使用指令lspci -k | grep -A 2 -i "VGA"檢查目前使用的顯示卡,應會同時列出Intel和Nvidia的顯示卡

00:02.0 VGA compatible controller: Intel Corporation HD Graphics 630 (rev 04)
        Subsystem: ASUSTeK Computer Inc. Device 1830
        Kernel driver in use: i915
--
01:00.0 VGA compatible controller: NVIDIA Corporation GP107 [GeForce GTX 1050 Ti] (rev a1)
        Subsystem: ASUSTeK Computer Inc. Device 85d6
        Kernel driver in use: nvidia
  1. 再參考 Nvidia PRIME用法來執行需要重度GPU計算的程式。

相關文章

Nvidia PRIME用法,Linux雙顯卡電腦切換獨顯跑3D渲染
Linux系統 Linux使用技巧 Nvidia Arch Linux Ubuntu
雙顯卡Linux筆電很耗電?用EnvyControl切換Nvidia獨顯,還可以省電
Linux系統 Linux使用技巧 Nvidia Linux OpenSUSE
Ubuntu LTS如何安裝Nvidia顯示卡驅動、CUDA、cuDNN、NVIDIA Container Toolkit套件
Linux系統 Linux使用技巧 Ubuntu Nvidia

留言板

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

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

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