
在我的 Linux 筆記型電腦上,我有兩個 VGA 相容控制器(資訊來自lshw
):
- 產品:GK107 [GeForce GT 640M]
實體 ID:0
匯流排資訊:pci@0000:01:00.0
..
時脈:33MHz
功能:pm msi pciexpress vga_controller bus_master cap_list
配置:driver=nouveau 延遲=0
資源:irq:16 記憶體: f2000000-f2ffffff 內存:e0000000-efffffff 內存:f0000000-f1ffffff ioport:3000(大小=128) - 產品:第三代核心處理器 圖形控制器
實體 ID:2
匯流排資訊:pci@0000:00:02.0
時脈:33MHz
功能:msi pm vga_controller Bus_master cap_list ROM
配置:driver=i915 延遲=0
資源:irq:44 記憶體:f3000000- f33fffff 內存:d0000000-dffffffff ioport:4000(大小=64)
lspci | grep VGA
輸出:
- 00:02.0 VGA 相容控制器:Intel Corporation 第三代酷睿處理器圖形控制器(rev 09)
- 01:00.0 VGA 相容控制器:NVIDIA Corporation GK107 [GeForce GT 640M](rev a1)
當我運行時,glxgears
我得到以下輸出(當應用程式運行時):
libGL 錯誤:無法載入驅動程式:i965 libGL 錯誤:使用 LIBGL_DEBUG=verbose 重試以取得更多詳細資訊。 XIO:X 伺服器「:0」上出現致命 IO 錯誤 11(資源暫時無法使用) 在 2968 個請求(已知已處理 2966 個)之後,剩餘 0 個事件。
所以我想 Intel VGA 會失敗嗎?
我已經安裝了以下驅動程式:
- 英特爾-dri
- xf86-video-intel 2.20(X.org Intel i810/i830/i915/945G/G965+ 視訊驅動程式)
- xf86-視頻-nouveau
1如何檢查系統/程式使用哪個控制器?
2如何確保使用特定的控制器?
3 如何確保載入驅動程式 i965,而不是 i915(從輸出lshw
)? (適合我的 intel agp)
4為什麼lshw
顯示時脈:33MHz?對於 GeForce 640M 應為 625 MHz。
我正在使用 Linux Arch。
答案1
若要查明系統/程式目前使用哪個圖形控制器,請使用下列兩個命令:
grep LoadModule /var/log/Xorg.0.log grep Driver /etc/X11/xorg.conf
第一個將為您提供所有已加載模組(或 X 嘗試加載的模組)的列表,第二個將為您提供配置為在您的盒子上運行的所有設備的列表。這些文件的交集為您提供了正在運行的控制器。
定義它在
/etc/X11/xorg.conf
不要討論太多細節,而是在部分中定義
Driver
線條。Device
如果在 中安裝並配置它
/etc/X11/xorg.conf
,它將運行。請記住,驅動程式有時是通用的,這意味著英偉達是所有 nvidia 卡的驅動程序,因此 i915 可能是 i965 的合適驅動程序。@Hennes 上面已經部分回答了。
lshw
顯示 PCI 或 PCIe 上每個裝置的 PCI 匯流排速度似乎是個錯誤。檢查這張照片:英偉達 GeForce GT220(不是我的,但我有兩個 NVidias 和 lshw,兩者都告訴 33MHz)。
答案2
- 4
625不是PCIe的匯流排頻率;我認為您對線路速度、插頭速度和 PCI 總線速度感到困惑。線速度是一位一位。而PCI匯流排是32b寬度。因此,一條 PCI 匯流排可以支援 33MHz*32=1056Mb/s(所有裝置之間共用)。雖然 PCIe v1 提供每條線 2.5GT/s,但事務不是一個位(事務是資料線上的一個位,但是,資料線需要傳輸大量資料包描述標頭;因此您可能希望 2.3Gb/每行s )。
但是…… PCIe 的映射方式不同;事實上,它是動態路由和分配的。因此,子卡在 PCI 總線上聲明(讀取為 32b 33MHz),但在物理上映射到 PCI 交換器上;且交換器可以以未說明的速度分配更多資源(64b寬度)。
USB 也有同樣的混亂。 USB3 的速率為 5Gb/s,建立在標稱 480Mb/s 的集線器上。根集線器永遠不能聲明超過「高速」(480)。所以設備被映射到那裡。但是,在「高速連結」內,您可以使用「5Gb/s 資料速率」。這就是為什麼當 USB3 出現時,USB 樹總是顯示 2 棵樹;和 USB3 裝置是雙重映射的。除其他事項外,還需要在 USB2 樹內映射 USB3 設備,以便進行電源管理(在添加其他 USB2 設備後計算每個分支消耗的總電流)。
這就是為什麼我對於看到低於 33MHz 總線的 625MHz 專案並不感到驚訝或擔心。
或者也許 625 是 RAM 速度,與 PCI 總線根本無關。
答案3
- 1
要了解卡片是否由司機處理:
$ lspci | grep -E "VGA|3D" | cut -f1 -d" " | while read id ; do lspci -v -s $id ; done | grep -i -e "VGA" -e "3D" -e "Kernel driver" -e "Kernel module"
01:05.0 VGA compatible controller: Advanced Micro Devices [AMD] nee ATI RS880 [Radeon HD 4200] (prog-if 00 [VGA controller])
Kernel driver in use: radeon
Kernel modules: radeon
02:00.0 VGA compatible controller: Advanced Micro Devices [AMD] nee ATI RV710 [Radeon HD 4350/4550] (prog-if 00 [VGA controller])
Kernel driver in use: radeon
Kernel modules: radeon
03:00.0 VGA compatible controller: Advanced Micro Devices [AMD] nee ATI RV710 [Radeon HD 4350/4550] (prog-if 00 [VGA controller])
Kernel driver in use: radeon
Kernel modules: radeon
# lspci | grep -E "VGA|3D" | cut -f1 -d" " | while read id ; do lspci -v -s $id ; done | grep -i -e "VGA" -e "3D" -e "Kernel driver" -e "Kernel module"
00:02.0 VGA compatible controller: Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09) (prog-if 00 [VGA controller])
Kernel driver in use: i915
Kernel modules: i915
01:00.0 VGA compatible controller: NVIDIA Corporation GF108GLM [NVS 5200M] (rev a1) (prog-if 00 [VGA controller])
Kernel driver in use: nvidia
Kernel modules: nvidia
要知道哪張卡是 X 的預設卡:
$ cat /var/log/Xorg.0.log | grep "PCI:"
[ 4328.398] (--) PCI: (0:1:5:0) 1002:9710:1458:d000 rev 0, Mem @ 0xd8000000/134217728, 0xfdae0000/65536, 0xfd900000/1048576, I/O @ 0x0000ae00/256
[ 4328.398] (--) PCI:*(0:2:0:0) 1002:954f:1462:1618 rev 0, Mem @ 0xb0000000/268435456, 0xfd6e0000/65536, I/O @ 0x0000ee00/256, BIOS @ 0x????????/131072
[ 4328.398] (--) PCI: (0:3:0:0) 1002:954f:1462:1618 rev 0, Mem @ 0xc0000000/268435456, 0xfdfe0000/65536, I/O @ 0x0000de00/256, BIOS @ 0x????????/131072
# cat /var/log/Xorg.0.log | grep "PCI:"
[ 30.924] (--) PCI:*(0@0:2:0) 8086:0166:1028:0534 rev 9, Mem @ 0xf6400000/4194304, 0xd0000000/268435456, I/O @ 0x0000f000/64, BIOS @ 0x????????/131072
[ 30.924] (--) PCI: (1@0:0:0) 10de:0dfc:1028:1534 rev 161, Mem @ 0xf5000000/16777216, 0xe0000000/268435456, 0xf0000000/33554432, I/O @ 0x0000e000/128, BIOS @ 0x????????/524288
但是,即使 X 根本不處理該卡,核心也會顯示正在使用的驅動程式。
- 2 / 3
xorg.conf 可能(應該有很大的幫助),但是,我已經報告了一些針對 Xorg 的錯誤,因為它可能會忽略conf,甚至沒有說出來(也沒有說為什麼)。