什麼是 matroxfb?¶
這是 Alpha、Intel 和 PPC 平臺上 Matrox 裝置的圖形幀緩衝驅動程式。
優點
它提供了一個漂亮的超大控制檯(在 1024x768 解析度下為 128 列 + 48 行),而無需使用微小、難以辨認的字型。
您可以在 /dev/fb0 之上執行 XF{68,86}_FBDev 或 XFree86 fbdev 驅動程式
最重要的是:啟動徽標 :-)
缺點
圖形模式比文字模式慢... 但是如果您使用與文字模式相同的解析度,您不應該注意到。
如何使用它?¶
使用 video=matroxfb:vesa:... 啟動引數或使用 fbset 程式來切換模式。
例如,如果您想啟用 1280x1024x24bpp 的解析度,您應該將以下命令列傳遞給核心:“video=matroxfb:vesa:0x1BB”。
您應該同時編譯 vgacon(如果在從盒子裡移除 Matrox 後啟動)和 matroxfb(用於圖形模式)。 除非您的主顯示器位於非 Matrox VBE2.0 裝置上,否則不應編譯 vesafb(有關詳細資訊,請參閱什麼是 vesafb?)。
當前支援的影片模式是(透過 vesa:... 介面,PowerMac 具有 [作為外掛] 相容性程式碼)
圖形模式¶
bpp |
640x400 |
640x480 |
768x576 |
800x600 |
960x720 |
|---|---|---|---|---|---|
4 |
0x12 |
0x102 |
|||
8 |
0x100 |
0x101 |
0x180 |
0x103 |
0x188 |
15 |
0x110 |
0x181 |
0x113 |
0x189 |
|
16 |
0x111 |
0x182 |
0x114 |
0x18A |
|
24 |
0x1B2 |
0x184 |
0x1B5 |
0x18C |
|
32 |
0x112 |
0x183 |
0x115 |
0x18B |
圖形模式(續)¶
bpp |
1024x768 |
1152x864 |
1280x1024 |
1408x1056 |
1600x1200 |
|---|---|---|---|---|---|
4 |
0x104 |
0x106 |
|||
8 |
0x105 |
0x190 |
0x107 |
0x198 |
0x11C |
15 |
0x116 |
0x191 |
0x119 |
0x199 |
0x11D |
16 |
0x117 |
0x192 |
0x11A |
0x19A |
0x11E |
24 |
0x1B8 |
0x194 |
0x1BB |
0x19C |
0x1BF |
32 |
0x118 |
0x193 |
0x11B |
0x19B |
文字模式¶
文字 |
640x400 |
640x480 |
1056x344 |
1056x400 |
1056x480 |
|---|---|---|---|---|---|
8x8 |
0x1C0 |
0x108 |
0x10A |
0x10B |
0x10C |
8x16 |
2, 3, 7 |
0x109 |
您可以輸入這些數字,無論是十六進位制(前導 0x)還是十進位制(0x100 = 256)。 您也可以使用值 + 512 來實現與傳遞給 vesafb 的舊數字的相容性。
可以透過更復雜的命令列實現未列出的數字,例如,可以透過 video=matroxfb:vesa:0x11C,depth:32 指定 1600x1200x32bpp。
X11¶
XF{68,86}_FBDev 應該可以正常工作,但是它沒有加速。 在非英特爾架構上,24bpp 影片模式存在一些小故障。 8、16 和 32bpp 工作正常。
執行另一個(加速)X-Server(如 XF86_SVGA)也可以。 但是(至少)XFree 伺服器在多頭配置中存在很大問題(即使在第一個頭中也是如此,更不用說第二個了)。 可以執行 XFree86 4.x 加速 mga 驅動程式,但是您必須停用 DRI - 如果這樣做,X 桌面的解析度和顏色深度必須與虛擬控制檯的解析度和顏色深度匹配,否則 X 將損壞加速器設定。
SVGALib¶
驅動程式包含 SVGALib 相容性程式碼。 透過為控制檯選擇文字模式來開啟它。 您可以在啟動時使用影片模式 2、3、7、0x108-0x10C 或 0x1C0 來做到這一點。 在執行時,fbset -depth 0 會執行此操作。 不幸的是,在 SVGALib 應用程式退出後,螢幕內容會損壞。 切換到另一個控制檯再切換回來可以解決這個問題。 我希望這是 SVGALib 的問題而不是我的,但我不能確定。
配置¶
您可以使用 video=matroxfb:option1,option2:value2,option3 將核心命令列選項傳遞給 matroxfb(多個選項應以逗號分隔,值與選項以 : 分隔)。 接受的選項
mem:X |
記憶體大小(X 可以是兆位元組、千位元組或位元組) 您只能減少驅動程式確定的值,因為它總是探測記憶體。 預設值是使用整個檢測到的可用於螢幕顯示的記憶體(即最大 8 MB)。 |
disabled |
不要載入驅動程式; 您也可以使用 off,但是這裡也提供 disabled。 |
enabled |
載入驅動程式,如果您在 LILO 配置中具有 video=matroxfb:disabled,則可以透過此選項覆蓋它(您無法覆蓋 off)。 這是預設設定。 |
noaccel |
不要使用加速引擎。 它在 Alpha 上不起作用。 |
accel |
使用加速引擎。 這是預設設定。 |
nopan |
使用 vyres = yres 建立初始控制檯,從而停用虛擬滾動。 |
pan |
建立儘可能高的初始控制檯(vyres = 記憶體/vxres)。 這是預設設定。 |
nopciretry |
停用 PCI 重試。 一些有問題的晶片組需要它,intel 的 82437 會自動檢測到它。 在這種情況下,裝置不符合 PCI 2.1 規範(它不能保證每個事務都以成功或 32 PCLK 重試結束)。 |
pciretry |
啟用 PCI 重試。 除了 intel 的 82437 之外,這是預設設定。 |
novga |
停用 VGA I/O 埠。 如果 BIOS 沒有啟用裝置,則這是預設設定。 您不應使用此選項,某些板子在不關閉電源的情況下無法重新啟動。 |
vga |
保留 VGA I/O 埠的狀態。 這是預設設定。 如果 BIOS 沒有啟用 VGA I/O,則驅動程式不會啟用它(在大多數情況下啟用它是不安全的)。 |
nobios |
停用 BIOS ROM。 如果 BIOS 沒有啟用 BIOS 本身,則這是預設設定。 您不應使用此選項,某些板子在不關閉電源的情況下無法重新啟動。 |
bios |
保留 BIOS ROM 的狀態。 這是預設設定。 如果之前未啟用 BIOS,則驅動程式不會啟用 BIOS。 |
noinit |
告訴驅動程式裝置已經初始化。 如果您有 G100 和/或驅動程式無法檢測到記憶體,您在螢幕上看到奇怪的圖案等等,您應該使用它。 BIOS 未啟用的裝置仍會初始化。 這是預設設定。 |
init |
驅動程式初始化它知道的每個裝置。 |
memtype |
指定記憶體型別,暗示 “init”。 這僅對 G200 和 G400 有效,並且具有以下含義
除了 memtype 引數之外,您還應該使用 sdram 或 sgram 引數。 |
nomtrr |
停用幀緩衝區上的寫入合併。 這會減慢驅動程式的速度,但是如果啟用了寫入合併,則在大量負載下 GUS DMA 和 XFree 之間存在報告的輕微不相容性(聲音中斷)。 |
mtrr |
在幀緩衝區上啟用寫入合併。 它大大加快了影片訪問速度。 這是預設設定。 您的核心中必須啟用 MTRR 支援,並且您的 CPU 必須具有 MTRR(例如,Pentium II 具有它們)。 |
sgram |
告訴驅動程式您有帶有 SGRAM 記憶體的 Gxx0。 沒有 init,它不起作用。 |
sdram |
告訴驅動程式您有帶有 SDRAM 記憶體的 Gxx0。 這是一個預設設定。 |
inv24 |
更改 Millennium 和 Millennium II 上 24bpp 模式的時序引數。 如果您在字元周圍看到奇怪的顏色陰影,請指定此選項。 |
noinv24 |
使用標準時序。 這是預設設定。 |
inverse |
反轉螢幕上的顏色(對於 LCD 顯示器) |
noinverse |
在螢幕上顯示真彩色。 這是預設設定。 |
dev:X |
將驅動程式繫結到裝置 X。驅動程式從 0 到 N 對裝置進行編號,其中裝置 0 是找到的第一個已知裝置,1 是第二個,依此類推。 lspci 以此順序列出裝置。 預設值為每個已知裝置。 |
nohwcursor |
停用硬體游標(改用軟體游標)。 |
hwcursor |
啟用硬體游標。 這是預設設定。 如果您使用非加速模式(noaccel 或 fbset -accel false),則使用軟體游標(文字模式除外)。 |
noblink |
停用游標閃爍。 文字模式下的游標始終閃爍(硬體限制)。 |
blink |
啟用游標閃爍。 這是預設設定。 |
nofastfont |
停用 fastfont 功能。 這是預設設定。 |
fastfont:X |
啟用 fastfont 功能。 X 指定為字型資料保留的記憶體大小,它必須 >= (fontwidth*fontheight*chars_in_font)/8。 在 Gx00 系列上速度更快,但在較舊的卡上速度較慢。 |
grayscale |
啟用灰度求和。 它在 PSEUDOCOLOR 模式(文字、4bpp、8bpp)下工作。 在 DIRECTCOLOR 模式下,它僅限於透過 putc/putcs 顯示的字元。 直接訪問幀緩衝區可以繪製顏色。 |
nograyscale |
停用灰度求和。 這是預設設定。 |
cross4MB |
啟用畫素行可以跨越 4MB 邊界的功能。 這是非 Millennium 的預設設定。 |
nocross4MB |
畫素行不能跨越 4MB 邊界。 這是 Millennium I 或 II 的預設設定,因為這些裝置具有不允許此操作的硬體限制。 但是此選項與某些(如果不是所有已釋出的)XF86_FBDev 版本不相容。 |
dfp |
啟用數字平板介面。 此選項與輔助(TV)輸出不相容 - 如果 DFP 處於活動狀態,則 TV 輸出必須處於非活動狀態,反之亦然。 DFP 始終使用與主(監視器)輸出相同的時序。 |
dfp:X |
使用設定 X 用於數字平板介面。 X 是一個從 0 到 0xFF 的數字,每個單獨位的含義在 G400 手冊中描述,在 DAC 暫存器 0x1F 的描述中。 對於正常操作,您應該將所有位設定為零,除了最低位。 此最低位選擇誰是顯示時鐘的來源,是 G400 還是面板。 預設值現在從硬體中讀取 - 因此僅當您還使用 init 引數時才應指定此值。 |
outputs:XYZ |
設定 CRTC 和輸出之間的對映。 每個字母的值可以是 0(對於無 CRTC)、1 (CRTC1) 或 2 (CRTC2),第一個字母對應於主模擬輸出,第二個字母對應於輔助模擬輸出,第三個字母對應於 DVI 輸出。 低於 G400 或沒有 DFP 的 G400 的預設設定為 100,帶有 DFP 的 G400 的預設設定為 101,G450 和 G550 的預設設定為 111。 您只能在第一張卡上設定對映,使用 matroxset 設定其他裝置。 |
vesa:X |
選擇啟動影片模式。 X 是一個從 0 到 0x1FF 的數字,有關詳細說明,請參見上表。 如果驅動程式支援 8bpp,則預設值為 640x480x8bpp。 否則,第一個可用的是 640x350x4bpp、640x480x15bpp、640x480x24bpp、640x480x32bpp 或 80x25 文字(始終可以使用 80x25 文字)。 |
如果您對 vesa 選項選擇的影片模式不滿意,則可以使用以下選項修改它
xres:X |
水平解析度,以畫素為單位。 預設值源自 vesa 選項。 |
yres:X |
垂直解析度,以畫素行為單位。 預設值源自 vesa 選項。 |
upper:X |
頂部邊界:VSYNC 脈衝結束和圖片的第一條畫素行開始之間的行。 預設值源自 vesa 選項。 |
lower:X |
底部邊界:圖片結束和 VSYNC 脈衝開始之間的行。 預設值源自 vesa 選項。 |
vslen:X |
VSYNC 脈衝的長度,以行為單位。 預設值源自 vesa 選項。 |
left:X |
左側邊界:HSYNC 脈衝結束和第一個畫素之間的畫素。 預設值源自 vesa 選項。 |
right:X |
右側邊界:圖片結束和 HSYNC 脈衝開始之間的畫素。 預設值源自 vesa 選項。 |
hslen:X |
HSYNC 脈衝的長度,以畫素為單位。 預設值源自 vesa 選項。 |
pixclock:X |
點時鐘,以 ps(皮秒)為單位。 預設值源自 vesa 選項以及 fh 和 fv 選項。 |
sync:X |
同步脈衝 - 位 0 反轉 HSYNC 極性,位 1 反轉 VSYNC 極性。 如果設定了位 3(值 0x08),則生成複合同步而不是 HSYNC。 如果設定了位 5(值 0x20),則開啟綠色同步。 不要忘記,如果您想要綠色同步,您可能也想要複合同步。 預設值取決於 vesa。 |
depth:X |
每畫素位數:0=文字,4、8、15、16、24 或 32。預設值取決於 vesa。 |
如果您知道顯示器的功能,則可以指定一些(或全部)maxclk、fh 和 fv。 在這種情況下,pixclock 的計算方式為 pixclock <= maxclk,real_fh <= fh 且 real_fv <= fv。
maxclk:X |
最大點時鐘。 X 可以用 MHz、kHz 或 Hz 指定。 預設值為 don`t care。 |
fh:X |
最大水平同步頻率。 X 可以用 kHz 或 Hz 指定。 預設值為 don’t care。 |
fv:X |
最大垂直頻率。 X 必須以 Hz 指定。 對於源自 vesa 且 yres <= 400 的模式,預設值為 70,對於 yres > 400,預設值為 60Hz。 |
限制¶
存在已知和未知的錯誤、功能和錯誤功能。 目前存在以下已知錯誤
SVGALib 在退出時不恢復螢幕
通用的 fbcon-cfbX 程式在 Alpha 上不起作用。 因此,noaccel(和 cfb4 accel)驅動程式在 Alpha 上不起作用。 因此,Alpha 上有權訪問 /dev/fb* 的每個人都可以掛起機器(您應該限制對 /dev/fb* 的訪問 - 相信我,有權訪問此裝置的每個人都可以破壞您的顯示器...)。
24bpp 不正確支援 big-endian 架構上的 XF-FBDev。
不支援隔行掃描文字模式; 這看起來像硬體限制,但我不確定。
Gxx0 SGRAM/SDRAM 未自動檢測到。
可能還有更多...
以下是錯誤功能
SVGALib 在退出時不恢復螢幕。
文字模式的點時鐘受硬體限制為
G200 上為 83 MHz
Millennium I 上為 66 MHz
Millennium II 上為 60 MHz
因為我無法訪問其他裝置,所以我不知道它們的具體頻率。 因此,驅動程式不會檢查這一點,並允許您設定高於此值的頻率。 這會導致火花、黑洞和螢幕上的其他漂亮效果。 在測試期間未銷燬裝置。 :-)
我的 Millennium G200 振盪器的頻率範圍為 35 MHz 到 380 MHz(它在 8bpp 上以大約 320 MHz 的點時鐘(和更改的 mclk)工作)。 但是 Matrox 在產品說明書上說 VCO 限制為 50-250 MHz,所以我相信他們(也許該晶片過熱,但它有一個非常大的冷卻器(G100 沒有),因此它應該可以工作)。
Mystique 和 Gx00 的特殊混合影片/圖形影片模式 - 不支援 2G8V16 和 G16V16
不支援顏色鍵控
Mystique 和 Gx00 的功能聯結器設定為 VGA 模式(它被 BIOS 停用)
DDC(顯示器檢測)透過雙頭驅動程式支援
某些輸入值的檢查不像應該的那麼嚴格(您可以指定 vslen=4000 等)。
可能還有更多...
以下是功能
4bpp 僅在 Millennium I 和 Millennium II 上可用。 這是一個硬體限制。
1:5:5:5 和 5:6:5 16bpp 影片模式之間的選擇由 fbset 的 -rgba 選項完成:“fbset -depth 16 -rgba 5,5,5” 選擇 1:5:5:5,其他任何選項選擇 5:6:5 模式。
文字模式使用 6 位 VGA 調色盤而不是 8 位(262144 種顏色之一而不是 16M 種顏色之一)。 這是由於 Millennium I/II 和 SVGALib 相容性的硬體限制。
基準測試¶
在 1024x768 解析度、60Hz 重新整理率下,重繪整個螢幕 1000 次所需要的時間。透過 /dev/vcsa 在螢幕上繪製 6144000 個字元所需要的時間(對於 32bpp 來說,大約是 3GB 的資料(精確地說是 3000 MB);對於 8x16 字型來說,16 秒,即 187 MBps)。這些時間是從驅動程式的一箇舊版本獲得的,現在它們大約快 3%,這是在 P-II/350 MHz、Millennium I 在 33 MHz PCI 插槽、G200 在 AGP 2x 插槽上的純核心空間時間。我沒有測試 vgacon。
NOACCEL
8x16 12x22
Millennium I G200 Millennium I G200
8bpp 16.42 9.54 12.33 9.13
16bpp 21.00 15.70 19.11 15.02
24bpp 36.66 36.66 35.00 35.00
32bpp 35.00 30.00 33.85 28.66
ACCEL, nofastfont
8x16 12x22 6x11
Millennium I G200 Millennium I G200 Millennium I G200
8bpp 7.79 7.24 13.55 7.78 30.00 21.01
16bpp 9.13 7.78 16.16 7.78 30.00 21.01
24bpp 14.17 10.72 18.69 10.24 34.99 21.01
32bpp 16.15 16.16 18.73 13.09 34.99 21.01
ACCEL, fastfont
8x16 12x22 6x11
Millennium I G200 Millennium I G200 Millennium I G200
8bpp 8.41 6.01 6.54 4.37 16.00 10.51
16bpp 9.54 9.12 8.76 6.17 17.52 14.01
24bpp 15.00 12.36 11.67 10.00 22.01 18.32
32bpp 16.18 18.29* 12.71 12.74 24.44 21.00
TEXT
8x16
Millennium I G200
TEXT 3.29 1.50
* Yes, it is slower than Millennium I.
雙頭 G400¶
- 驅動程式支援雙頭 G400,但有一些限制
輔助頭與主頭共享視訊記憶體。如果您有 32MB 的視訊記憶體,這不是問題,但如果您只有 16MB,您可能需要在選擇影片模式之前三思而後行(例如,兩個 1880x1440x32bpp 是不可能的)。
由於硬體限制,輔助頭只能使用 16 和 32bpp 影片模式。
輔助頭沒有加速。當輔助頭使用加速時,加速的 XFree 存在嚴重問題。
輔助頭總是以 640x480@60-32 影片模式啟動。您必須使用 fbset 來更改此模式。
輔助頭總是以監視器模式啟動。您必須使用 fbmatroxset 將其更改為電視模式。此外,您必須為 NTSC 輸出選擇至少 525 行,為 PAL 輸出選擇 625 行。
核心還沒有完全準備好支援多頭。所以有些事情是不可能做到的。
如果您將其編譯為模組,則必須將 i2c-matroxfb、matroxfb_maven 和 matroxfb_crtc2 插入到核心中。
雙頭 G450¶
- 驅動程式支援雙頭 G450,但有一些限制
輔助頭與主頭共享視訊記憶體。如果您有 32MB 的視訊記憶體,這不是問題,但如果您只有 16MB,您可能需要在選擇影片模式之前三思而後行。
由於硬體限制,輔助頭只能使用 16 和 32bpp 影片模式。
輔助頭沒有加速。
輔助頭總是以 640x480@60-32 影片模式啟動。您必須使用 fbset 來更改此模式。
不支援電視輸出
核心還沒有完全準備好支援多頭,所以有些事情是不可能做到的。
如果您將其編譯為模組,則必須將 matroxfb_g450 和 matroxfb_crtc2 插入到核心中。
Petr Vandrovec <vandrove@vc.cvut.cz>