快轉到主要內容

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計算的程式。

相關文章

雙顯卡Linux筆電很耗電?用EnvyControl切換Nvidia獨顯,還可以省電
分類   Linux系統 Linux使用技巧
標籤   Nvidia Linux OpenSUSE
解決Gentoo Nvidia顯示卡專有驅動問題,防止nouveau載入
分類   Linux系統 Linux使用技巧
標籤   Gentoo Nvidia
將Linux AppImage變成真正的可攜式軟體!Portable mode使用方式
分類   Linux系統 Linux使用技巧
標籤   AppImage

留言板

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

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

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用圖床網站。