Documentation/fb/matroxfb.rst GitHub 원문 ↗

Linux 6.18.37 · Frame Buffer

matroxfb - Framebuffer driver for Matrox devices

Matrox framebuffer의 모드, 전체 옵션, 제한, benchmark와 dualhead 운용을 다룬 한국어 전문 번역입니다.

Source pathDocumentation/fb/matroxfb.rst
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

요약·해설

matroxfb.rst:1-438

`matroxfb` 문서는 Matrox 장치의 VESA 호환 모드, X11과 SVGALib, 메모리·가속·출력·동기 옵션, 알려진 제약, 성능 측정과 G400/G450 dualhead 운용을 포괄합니다.

안전한 운용의 핵심은 `vgacon` fallback을 유지하고, 장치와 모니터 한계에 맞는 timing을 사용하며, XFree86 DRI와 console mode 불일치 및 Alpha의 `/dev/fb*` 접근 위험을 피하는 것입니다.

matroxfb 구성 흐름
`vgacon`과 `matroxfb` 구성`vesa:X` 또는 세부 timing 선택메모리와 가속 정책 설정X11/SVGALib 호환 조건 확인모니터 maxclk/fh/fv 제한 적용필요하면 G400/G450 secondary head module 적재

초기 모드부터 multihead까지의 주요 결정입니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 ================================================
2 matroxfb - Framebuffer driver for Matrox devices
3 ================================================
4
5 This is a driver for a graphic framebuffer for Matrox devices on
6 Alpha, Intel and PPC boxes.
7
8 Advantages:
9
10 * It provides a nice large console (128 cols + 48 lines with 1024x768)
11 without using tiny, unreadable fonts.
12 * You can run XF{68,86}_FBDev or XFree86 fbdev driver on top of /dev/fb0
13 * Most important: boot logo :-)
14
15 Disadvantages:
16
17 * graphic mode is slower than text mode... but you should not notice
18 if you use same resolution as you used in textmode.
19
20
21 How to use it?
22 ==============
23
24 Switching modes is done using the video=matroxfb:vesa:... boot parameter
25 or using `fbset` program.
26
27 If you want, for example, enable a resolution of 1280x1024x24bpp you should
28 pass to the kernel this command line: "video=matroxfb:vesa:0x1BB".
29
30 You should compile in both vgacon (to boot if you remove you Matrox from
31 box) and matroxfb (for graphics mode). You should not compile-in vesafb
32 unless you have primary display on non-Matrox VBE2.0 device (see
33 Documentation/fb/vesafb.rst for details).
34
35 Currently supported video modes are (through vesa:... interface, PowerMac
36 has [as addon] compatibility code):
37
38
39 Graphic modes
40 -------------
41
42 === ======= ======= ======= ======= =======
43 bpp 640x400 640x480 768x576 800x600 960x720
44 === ======= ======= ======= ======= =======
45 4 0x12 0x102
46 8 0x100 0x101 0x180 0x103 0x188
47 15 0x110 0x181 0x113 0x189
48 16 0x111 0x182 0x114 0x18A
49 24 0x1B2 0x184 0x1B5 0x18C
50 32 0x112 0x183 0x115 0x18B
51 === ======= ======= ======= ======= =======
52
53
54 Graphic modes (continued)
55 -------------------------
56
57 === ======== ======== ========= ========= =========
58 bpp 1024x768 1152x864 1280x1024 1408x1056 1600x1200
59 === ======== ======== ========= ========= =========
60 4 0x104 0x106
61 8 0x105 0x190 0x107 0x198 0x11C
62 15 0x116 0x191 0x119 0x199 0x11D
63 16 0x117 0x192 0x11A 0x19A 0x11E
64 24 0x1B8 0x194 0x1BB 0x19C 0x1BF
65 32 0x118 0x193 0x11B 0x19B
66 === ======== ======== ========= ========= =========
67
68
69 Text modes
70 ----------
71
72 ==== ======= ======= ======== ======== ========
73 text 640x400 640x480 1056x344 1056x400 1056x480
74 ==== ======= ======= ======== ======== ========
75 8x8 0x1C0 0x108 0x10A 0x10B 0x10C
76 8x16 2, 3, 7 0x109
77 ==== ======= ======= ======== ======== ========
78
79 You can enter these number either hexadecimal (leading `0x`) or decimal
80 (0x100 = 256). You can also use value + 512 to achieve compatibility
81 with your old number passed to vesafb.
82
83 Non-listed number can be achieved by more complicated command-line, for
84 example 1600x1200x32bpp can be specified by `video=matroxfb:vesa:0x11C,depth:32`.
85
86
87 X11
88 ===
89
90 XF{68,86}_FBDev should work just fine, but it is non-accelerated. On non-intel
91 architectures there are some glitches for 24bpp videomodes. 8, 16 and 32bpp
92 works fine.
93
94 Running another (accelerated) X-Server like XF86_SVGA works too. But (at least)
95 XFree servers have big troubles in multihead configurations (even on first
96 head, not even talking about second). Running XFree86 4.x accelerated mga
97 driver is possible, but you must not enable DRI - if you do, resolution and
98 color depth of your X desktop must match resolution and color depths of your
99 virtual consoles, otherwise X will corrupt accelerator settings.
100
101
102 SVGALib
103 =======
104
105 Driver contains SVGALib compatibility code. It is turned on by choosing textual
106 mode for console. You can do it at boot time by using videomode
107 2,3,7,0x108-0x10C or 0x1C0. At runtime, `fbset -depth 0` does this work.
108 Unfortunately, after SVGALib application exits, screen contents is corrupted.
109 Switching to another console and back fixes it. I hope that it is SVGALib's
110 problem and not mine, but I'm not sure.
111
112
113 Configuration
114 =============
115
116 You can pass kernel command line options to matroxfb with
117 `video=matroxfb:option1,option2:value2,option3` (multiple options should be
118 separated by comma, values are separated from options by `:`).
119 Accepted options:
120
121 ============ ===================================================================
122 mem:X size of memory (X can be in megabytes, kilobytes or bytes)
123 You can only decrease value determined by driver because of
124 it always probe for memory. Default is to use whole detected
125 memory usable for on-screen display (i.e. max. 8 MB).
126 disabled do not load driver; you can use also `off`, but `disabled`
127 is here too.
128 enabled load driver, if you have `video=matroxfb:disabled` in LILO
129 configuration, you can override it by this (you cannot override
130 `off`). It is default.
131 noaccel do not use acceleration engine. It does not work on Alphas.
132 accel use acceleration engine. It is default.
133 nopan create initial consoles with vyres = yres, thus disabling virtual
134 scrolling.
135 pan create initial consoles as tall as possible (vyres = memory/vxres).
136 It is default.
137 nopciretry disable PCI retries. It is needed for some broken chipsets,
138 it is autodetected for intel's 82437. In this case device does
139 not comply to PCI 2.1 specs (it will not guarantee that every
140 transaction terminate with success or retry in 32 PCLK).
141 pciretry enable PCI retries. It is default, except for intel's 82437.
142 novga disables VGA I/O ports. It is default if BIOS did not enable
143 device. You should not use this option, some boards then do not
144 restart without power off.
145 vga preserve state of VGA I/O ports. It is default. Driver does not
146 enable VGA I/O if BIOS did not it (it is not safe to enable it in
147 most cases).
148 nobios disables BIOS ROM. It is default if BIOS did not enable BIOS
149 itself. You should not use this option, some boards then do not
150 restart without power off.
151 bios preserve state of BIOS ROM. It is default. Driver does not enable
152 BIOS if BIOS was not enabled before.
153 noinit tells driver, that devices were already initialized. You should use
154 it if you have G100 and/or if driver cannot detect memory, you see
155 strange pattern on screen and so on. Devices not enabled by BIOS
156 are still initialized. It is default.
157 init driver initializes every device it knows about.
158 memtype specifies memory type, implies 'init'. This is valid only for G200
159 and G400 and has following meaning:
160
161 G200:
162 - 0 -> 2x128Kx32 chips, 2MB onboard, probably sgram
163 - 1 -> 2x128Kx32 chips, 4MB onboard, probably sgram
164 - 2 -> 2x256Kx32 chips, 4MB onboard, probably sgram
165 - 3 -> 2x256Kx32 chips, 8MB onboard, probably sgram
166 - 4 -> 2x512Kx16 chips, 8/16MB onboard, probably sdram only
167 - 5 -> same as above
168 - 6 -> 4x128Kx32 chips, 4MB onboard, probably sgram
169 - 7 -> 4x128Kx32 chips, 8MB onboard, probably sgram
170 G400:
171 - 0 -> 2x512Kx16 SDRAM, 16/32MB
172 - 2x512Kx32 SGRAM, 16/32MB
173 - 1 -> 2x256Kx32 SGRAM, 8/16MB
174 - 2 -> 4x128Kx32 SGRAM, 8/16MB
175 - 3 -> 4x512Kx32 SDRAM, 32MB
176 - 4 -> 4x256Kx32 SGRAM, 16/32MB
177 - 5 -> 2x1Mx32 SDRAM, 32MB
178 - 6 -> reserved
179 - 7 -> reserved
180
181 You should use sdram or sgram parameter in addition to memtype
182 parameter.
183 nomtrr disables write combining on frame buffer. This slows down driver
184 but there is reported minor incompatibility between GUS DMA and
185 XFree under high loads if write combining is enabled (sound
186 dropouts).
187 mtrr enables write combining on frame buffer. It speeds up video
188 accesses much. It is default. You must have MTRR support enabled
189 in kernel and your CPU must have MTRR (f.e. Pentium II have them).
190 sgram tells to driver that you have Gxx0 with SGRAM memory. It has no
191 effect without `init`.
192 sdram tells to driver that you have Gxx0 with SDRAM memory.
193 It is a default.
194 inv24 change timings parameters for 24bpp modes on Millennium and
195 Millennium II. Specify this if you see strange color shadows
196 around characters.
197 noinv24 use standard timings. It is the default.
198 inverse invert colors on screen (for LCD displays)
199 noinverse show true colors on screen. It is default.
200 dev:X bind driver to device X. Driver numbers device from 0 up to N,
201 where device 0 is first `known` device found, 1 second and so on.
202 lspci lists devices in this order.
203 Default is `every` known device.
204 nohwcursor disables hardware cursor (use software cursor instead).
205 hwcursor enables hardware cursor. It is default. If you are using
206 non-accelerated mode (`noaccel` or `fbset -accel false`), software
207 cursor is used (except for text mode).
208 noblink disables cursor blinking. Cursor in text mode always blinks (hw
209 limitation).
210 blink enables cursor blinking. It is default.
211 nofastfont disables fastfont feature. It is default.
212 fastfont:X enables fastfont feature. X specifies size of memory reserved for
213 font data, it must be >= (fontwidth*fontheight*chars_in_font)/8.
214 It is faster on Gx00 series, but slower on older cards.
215 grayscale enable grayscale summing. It works in PSEUDOCOLOR modes (text,
216 4bpp, 8bpp). In DIRECTCOLOR modes it is limited to characters
217 displayed through putc/putcs. Direct accesses to framebuffer
218 can paint colors.
219 nograyscale disable grayscale summing. It is default.
220 cross4MB enables that pixel line can cross 4MB boundary. It is default for
221 non-Millennium.
222 nocross4MB pixel line must not cross 4MB boundary. It is default for
223 Millennium I or II, because of these devices have hardware
224 limitations which do not allow this. But this option is
225 incompatible with some (if not all yet released) versions of
226 XF86_FBDev.
227 dfp enables digital flat panel interface. This option is incompatible
228 with secondary (TV) output - if DFP is active, TV output must be
229 inactive and vice versa. DFP always uses same timing as primary
230 (monitor) output.
231 dfp:X use settings X for digital flat panel interface. X is number from
232 0 to 0xFF, and meaning of each individual bit is described in
233 G400 manual, in description of DAC register 0x1F. For normal
234 operation you should set all bits to zero, except lowest bit. This
235 lowest bit selects who is source of display clocks, whether G400,
236 or panel. Default value is now read back from hardware - so you
237 should specify this value only if you are also using `init`
238 parameter.
239 outputs:XYZ set mapping between CRTC and outputs. Each letter can have value
240 of 0 (for no CRTC), 1 (CRTC1) or 2 (CRTC2), and first letter
241 corresponds to primary analog output, second letter to the
242 secondary analog output and third letter to the DVI output.
243 Default setting is 100 for cards below G400 or G400 without DFP,
244 101 for G400 with DFP, and 111 for G450 and G550. You can set
245 mapping only on first card, use matroxset for setting up other
246 devices.
247 vesa:X selects startup videomode. X is number from 0 to 0x1FF, see table
248 above for detailed explanation. Default is 640x480x8bpp if driver
249 has 8bpp support. Otherwise first available of 640x350x4bpp,
250 640x480x15bpp, 640x480x24bpp, 640x480x32bpp or 80x25 text
251 (80x25 text is always available).
252 ============ ===================================================================
253
254 If you are not satisfied with videomode selected by `vesa` option, you
255 can modify it with these options:
256
257 ============ ===================================================================
258 xres:X horizontal resolution, in pixels. Default is derived from `vesa`
259 option.
260 yres:X vertical resolution, in pixel lines. Default is derived from `vesa`
261 option.
262 upper:X top boundary: lines between end of VSYNC pulse and start of first
263 pixel line of picture. Default is derived from `vesa` option.
264 lower:X bottom boundary: lines between end of picture and start of VSYNC
265 pulse. Default is derived from `vesa` option.
266 vslen:X length of VSYNC pulse, in lines. Default is derived from `vesa`
267 option.
268 left:X left boundary: pixels between end of HSYNC pulse and first pixel.
269 Default is derived from `vesa` option.
270 right:X right boundary: pixels between end of picture and start of HSYNC
271 pulse. Default is derived from `vesa` option.
272 hslen:X length of HSYNC pulse, in pixels. Default is derived from `vesa`
273 option.
274 pixclock:X dotclocks, in ps (picoseconds). Default is derived from `vesa`
275 option and from `fh` and `fv` options.
276 sync:X sync. pulse - bit 0 inverts HSYNC polarity, bit 1 VSYNC polarity.
277 If bit 3 (value 0x08) is set, composite sync instead of HSYNC is
278 generated. If bit 5 (value 0x20) is set, sync on green is turned
279 on. Do not forget that if you want sync on green, you also probably
280 want composite sync.
281 Default depends on `vesa`.
282 depth:X Bits per pixel: 0=text, 4,8,15,16,24 or 32. Default depends on
283 `vesa`.
284 ============ ===================================================================
285
286 If you know capabilities of your monitor, you can specify some (or all) of
287 `maxclk`, `fh` and `fv`. In this case, `pixclock` is computed so that
288 pixclock <= maxclk, real_fh <= fh and real_fv <= fv.
289
290 ============ ==================================================================
291 maxclk:X maximum dotclock. X can be specified in MHz, kHz or Hz. Default is
292 `don`t care`.
293 fh:X maximum horizontal synchronization frequency. X can be specified
294 in kHz or Hz. Default is `don't care`.
295 fv:X maximum vertical frequency. X must be specified in Hz. Default is
296 70 for modes derived from `vesa` with yres <= 400, 60Hz for
297 yres > 400.
298 ============ ==================================================================
299
300
301 Limitations
302 ===========
303
304 There are known and unknown bugs, features and misfeatures.
305 Currently there are following known bugs:
306
307 - SVGALib does not restore screen on exit
308 - generic fbcon-cfbX procedures do not work on Alphas. Due to this,
309 `noaccel` (and cfb4 accel) driver does not work on Alpha. So everyone
310 with access to `/dev/fb*` on Alpha can hang machine (you should restrict
311 access to `/dev/fb*` - everyone with access to this device can destroy
312 your monitor, believe me...).
313 - 24bpp does not support correctly XF-FBDev on big-endian architectures.
314 - interlaced text mode is not supported; it looks like hardware limitation,
315 but I'm not sure.
316 - Gxx0 SGRAM/SDRAM is not autodetected.
317 - maybe more...
318
319 And following misfeatures:
320
321 - SVGALib does not restore screen on exit.
322 - pixclock for text modes is limited by hardware to
323
324 - 83 MHz on G200
325 - 66 MHz on Millennium I
326 - 60 MHz on Millennium II
327
328 Because I have no access to other devices, I do not know specific
329 frequencies for them. So driver does not check this and allows you to
330 set frequency higher that this. It causes sparks, black holes and other
331 pretty effects on screen. Device was not destroyed during tests. :-)
332 - my Millennium G200 oscillator has frequency range from 35 MHz to 380 MHz
333 (and it works with 8bpp on about 320 MHz dotclocks (and changed mclk)).
334 But Matrox says on product sheet that VCO limit is 50-250 MHz, so I believe
335 them (maybe that chip overheats, but it has a very big cooler (G100 has
336 none), so it should work).
337 - special mixed video/graphics videomodes of Mystique and Gx00 - 2G8V16 and
338 G16V16 are not supported
339 - color keying is not supported
340 - feature connector of Mystique and Gx00 is set to VGA mode (it is disabled
341 by BIOS)
342 - DDC (monitor detection) is supported through dualhead driver
343 - some check for input values are not so strict how it should be (you can
344 specify vslen=4000 and so on).
345 - maybe more...
346
347 And following features:
348
349 - 4bpp is available only on Millennium I and Millennium II. It is hardware
350 limitation.
351 - selection between 1:5:5:5 and 5:6:5 16bpp videomode is done by -rgba
352 option of fbset: "fbset -depth 16 -rgba 5,5,5" selects 1:5:5:5, anything
353 else selects 5:6:5 mode.
354 - text mode uses 6 bit VGA palette instead of 8 bit (one of 262144 colors
355 instead of one of 16M colors). It is due to hardware limitation of
356 Millennium I/II and SVGALib compatibility.
357
358
359 Benchmarks
360 ==========
361 It is time to redraw whole screen 1000 times in 1024x768, 60Hz. It is
362 time for draw 6144000 characters on screen through /dev/vcsa
363 (for 32bpp it is about 3GB of data (exactly 3000 MB); for 8x16 font in
364 16 seconds, i.e. 187 MBps).
365 Times were obtained from one older version of driver, now they are about 3%
366 faster, it is kernel-space only time on P-II/350 MHz, Millennium I in 33 MHz
367 PCI slot, G200 in AGP 2x slot. I did not test vgacon::
368
369 NOACCEL
370 8x16 12x22
371 Millennium I G200 Millennium I G200
372 8bpp 16.42 9.54 12.33 9.13
373 16bpp 21.00 15.70 19.11 15.02
374 24bpp 36.66 36.66 35.00 35.00
375 32bpp 35.00 30.00 33.85 28.66
376
377 ACCEL, nofastfont
378 8x16 12x22 6x11
379 Millennium I G200 Millennium I G200 Millennium I G200
380 8bpp 7.79 7.24 13.55 7.78 30.00 21.01
381 16bpp 9.13 7.78 16.16 7.78 30.00 21.01
382 24bpp 14.17 10.72 18.69 10.24 34.99 21.01
383 32bpp 16.15 16.16 18.73 13.09 34.99 21.01
384
385 ACCEL, fastfont
386 8x16 12x22 6x11
387 Millennium I G200 Millennium I G200 Millennium I G200
388 8bpp 8.41 6.01 6.54 4.37 16.00 10.51
389 16bpp 9.54 9.12 8.76 6.17 17.52 14.01
390 24bpp 15.00 12.36 11.67 10.00 22.01 18.32
391 32bpp 16.18 18.29* 12.71 12.74 24.44 21.00
392
393 TEXT
394 8x16
395 Millennium I G200
396 TEXT 3.29 1.50
397
398 * Yes, it is slower than Millennium I.
399
400
401 Dualhead G400
402 =============
403 Driver supports dualhead G400 with some limitations:
404 + secondary head shares videomemory with primary head. It is not problem
405 if you have 32MB of videoram, but if you have only 16MB, you may have
406 to think twice before choosing videomode (for example twice 1880x1440x32bpp
407 is not possible).
408 + due to hardware limitation, secondary head can use only 16 and 32bpp
409 videomodes.
410 + secondary head is not accelerated. There were bad problems with accelerated
411 XFree when secondary head used to use acceleration.
412 + secondary head always powerups in 640x480@60-32 videomode. You have to use
413 fbset to change this mode.
414 + secondary head always powerups in monitor mode. You have to use fbmatroxset
415 to change it to TV mode. Also, you must select at least 525 lines for
416 NTSC output and 625 lines for PAL output.
417 + kernel is not fully multihead ready. So some things are impossible to do.
418 + if you compiled it as module, you must insert i2c-matroxfb, matroxfb_maven
419 and matroxfb_crtc2 into kernel.
420
421
422 Dualhead G450
423 =============
424 Driver supports dualhead G450 with some limitations:
425 + secondary head shares videomemory with primary head. It is not problem
426 if you have 32MB of videoram, but if you have only 16MB, you may have
427 to think twice before choosing videomode.
428 + due to hardware limitation, secondary head can use only 16 and 32bpp
429 videomodes.
430 + secondary head is not accelerated.
431 + secondary head always powerups in 640x480@60-32 videomode. You have to use
432 fbset to change this mode.
433 + TV output is not supported
434 + kernel is not fully multihead ready, so some things are impossible to do.
435 + if you compiled it as module, you must insert matroxfb_g450 and matroxfb_crtc2
436 into kernel.
437
438 Petr Vandrovec <vandrove@vc.cvut.cz>
439

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

Matrox 프레임 버퍼의 목적과 시작 방법

1-38

`matroxfb`는 Alpha, Intel, PPC 시스템의 Matrox 장치를 위한 그래픽 프레임 버퍼 드라이버입니다. 1024x768에서 작은 글꼴 없이 128열과 48행 콘솔을 제공하며 `/dev/fb0` 위에서 `XF68_FBDev`, `XF86_FBDev` 또는 XFree86 fbdev 드라이버를 실행하고 부팅 로고를 표시할 수 있습니다.

그래픽 모드는 텍스트 모드보다 느리지만 같은 해상도를 사용하면 차이를 느끼기 어렵다고 설명합니다. 모드는 `video=matroxfb:vesa:...` 부팅 매개변수나 `fbset`으로 전환합니다.

1280x1024 24 bpp 예시는 `video=matroxfb:vesa:0x1BB`입니다. Matrox 카드를 제거해도 부팅할 수 있도록 `vgacon`과 그래픽 모드용 `matroxfb`를 모두 built-in으로 구성하라고 권합니다.

주 디스플레이가 Matrox가 아닌 VBE 2.0 장치에 있을 때를 제외하면 `vesafb`를 built-in으로 만들지 않아야 합니다. 세부 사항은 `Documentation/fb/vesafb.rst`를 참조합니다.

Matrox 부팅 구성
`vgacon` built-in`matroxfb` built-in 또는 module필요하지 않으면 `vesafb` 제외`video=matroxfb:vesa:...`로 초기 모드 선택실행 중에는 `fbset` 사용

텍스트 fallback과 Matrox 그래픽 모드를 함께 준비합니다.

================================================
matroxfb - Framebuffer driver for Matrox devices
================================================

This is a driver for a graphic framebuffer for Matrox devices on
Alpha, Intel and PPC boxes.

Advantages:

 * It provides a nice large console (128 cols + 48 lines with 1024x768)
   without using tiny, unreadable fonts.
 * You can run XF{68,86}_FBDev or XFree86 fbdev driver on top of /dev/fb0
 * Most important: boot logo :-)

Disadvantages:

 * graphic mode is slower than text mode... but you should not notice
   if you use same resolution as you used in textmode.


How to use it?
==============

Switching modes is done using the video=matroxfb:vesa:... boot parameter
or using `fbset` program.

If you want, for example, enable a resolution of 1280x1024x24bpp you should
pass to the kernel this command line: "video=matroxfb:vesa:0x1BB".

You should compile in both vgacon (to boot if you remove you Matrox from
box) and matroxfb (for graphics mode). You should not compile-in vesafb
unless you have primary display on non-Matrox VBE2.0 device (see
Documentation/fb/vesafb.rst for details).

Currently supported video modes are (through vesa:... interface, PowerMac
has [as addon] compatibility code):

VESA 호환 그래픽·텍스트 모드

39-86

원문은 bpp와 해상도 조합별 VESA 호환 모드 번호를 표로 제공합니다. 예를 들어 640x480은 8 bpp `0x101`, 16 bpp `0x111`, 24 bpp `0x1B2`, 32 bpp `0x112`이고 1280x1024는 8 bpp `0x107`, 16 bpp `0x11A`, 24 bpp `0x1BB`, 32 bpp `0x11B`입니다.

모드 번호는 `0x`를 붙인 16진수나 10진수로 입력할 수 있으며 `0x100 = 256`입니다. 이전에 vesafb에 전달하던 번호와 호환하려면 값에 512를 더할 수도 있습니다.

표에 없는 조합은 추가 옵션으로 만들 수 있습니다. 예를 들어 1600x1200 32 bpp는 `video=matroxfb:vesa:0x11C,depth:32`로 지정합니다.

주요 Matrox 그래픽 모드
bpp640x480800x6001024x7681280x10241600x1200
4`0x12``0x102``0x104``0x106`-
8`0x101``0x103``0x105``0x107``0x11C`
15`0x110``0x113``0x116``0x119``0x11D`
16`0x111``0x114``0x117``0x11A``0x11E`
24`0x1B2``0x1B5``0x1B8``0x1BB``0x1BF`
32`0x112``0x115``0x118``0x11B`-

Matrox 텍스트 모드
글꼴640x400640x4801056x3441056x4001056x480
8x8`0x1C0``0x108``0x10A``0x10B``0x10C`
8x16`2, 3, 7`--`0x109`-

Graphic modes
-------------

===  =======  =======  =======  =======  =======
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
===  =======  =======  =======  =======  =======


Graphic modes (continued)
-------------------------

===  ======== ======== ========= ========= =========
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
===  ======== ======== ========= ========= =========


Text modes
----------

==== =======  =======  ========  ========  ========
text 640x400  640x480  1056x344  1056x400  1056x480
==== =======  =======  ========  ========  ========
 8x8   0x1C0    0x108     0x10A     0x10B     0x10C
8x16 2, 3, 7                        0x109
==== =======  =======  ========  ========  ========

You can enter these number either hexadecimal (leading `0x`) or decimal
(0x100 = 256). You can also use value + 512 to achieve compatibility
with your old number passed to vesafb.

Non-listed number can be achieved by more complicated command-line, for
example 1600x1200x32bpp can be specified by `video=matroxfb:vesa:0x11C,depth:32`.

X11과 SVGALib 호환

87-112

`XF68_FBDev`와 `XF86_FBDev`는 비가속으로 동작합니다. 비 Intel architecture의 24 bpp에는 일부 문제가 있지만 8, 16, 32 bpp는 정상 동작합니다.

`XF86_SVGA` 같은 별도 가속 X server도 실행할 수 있지만 XFree server는 multihead 구성에서 큰 문제가 있습니다. XFree86 4.x의 가속 `mga` 드라이버를 사용할 수 있으나 DRI를 활성화하면 안 됩니다. DRI를 켠 경우 X desktop과 virtual console의 해상도와 color depth가 일치하지 않으면 X가 accelerator 설정을 손상합니다.

드라이버에는 SVGALib 호환 코드가 있습니다. 부팅 때 mode 2, 3, 7, `0x108`~`0x10C`, `0x1C0` 가운데 하나의 텍스트 모드를 선택하거나 실행 중 `fbset -depth 0`을 사용해 켭니다.

SVGALib 응용 프로그램이 종료된 뒤 화면 내용이 손상될 수 있으며, 다른 console로 전환했다가 돌아오면 복구됩니다.

Matrox 사용자 공간 호환
환경지원주의점
`XF68_FBDev`/`XF86_FBDev`비가속비 Intel 24 bpp 문제
XFree86 4.x `mga`가속DRI 금지, X와 console 모드 일치
SVGALib텍스트 모드 호환종료 후 화면 손상, console 전환으로 복구

X11
===

XF{68,86}_FBDev should work just fine, but it is non-accelerated. On non-intel
architectures there are some glitches for 24bpp videomodes. 8, 16 and 32bpp
works fine.

Running another (accelerated) X-Server like XF86_SVGA works too. But (at least)
XFree servers have big troubles in multihead configurations (even on first
head, not even talking about second). Running XFree86 4.x accelerated mga
driver is possible, but you must not enable DRI - if you do, resolution and
color depth of your X desktop must match resolution and color depths of your
virtual consoles, otherwise X will corrupt accelerator settings.


SVGALib
=======

Driver contains SVGALib compatibility code. It is turned on by choosing textual
mode for console. You can do it at boot time by using videomode
2,3,7,0x108-0x10C or 0x1C0. At runtime, `fbset -depth 0` does this work.
Unfortunately, after SVGALib application exits, screen contents is corrupted.
Switching to another console and back fixes it. I hope that it is SVGALib's
problem and not mine, but I'm not sure.

메모리, PCI와 장치 초기화 옵션

113-182

옵션은 `video=matroxfb:option1,option2:value2,option3` 형식이며 여러 옵션은 쉼표, 옵션과 값은 콜론으로 구분합니다.

`mem:X`는 MB, KB 또는 byte로 메모리 크기를 줄여 지정합니다. 드라이버가 항상 메모리를 probe하므로 감지값보다 늘릴 수 없고 기본은 화면 표시용으로 쓸 수 있는 감지 메모리 전체, 최대 8 MB입니다. `disabled` 또는 `off`는 적재를 막고 `enabled`는 LILO의 `disabled`를 덮어쓸 수 있지만 `off`는 덮어쓸 수 없습니다.

`noaccel`/`accel`은 가속 엔진을 끄고 켭니다. Alpha에서는 가속이 동작하지 않으며 기본은 `accel`입니다. `nopan`은 초기 console의 `vyres=yres`로 virtual scrolling을 끄고, 기본 `pan`은 `vyres=memory/vxres`로 가능한 한 높게 만듭니다.

`nopciretry`는 일부 고장 난 chipset에서 PCI retry를 끄며 Intel 82437에서는 자동 감지합니다. 기본 `pciretry`는 Intel 82437을 제외하고 retry를 켭니다. `novga`와 `nobios`는 각각 VGA I/O port와 BIOS ROM을 끄지만 전원을 완전히 끄기 전 재시작하지 못하는 board가 있어 사용하지 말라고 경고합니다. 기본 `vga`와 `bios`는 기존 상태를 보존하되 BIOS가 꺼 둔 기능을 새로 켜지 않습니다.

기본 `noinit`은 이미 초기화된 장치 상태를 사용하며 G100이나 메모리 감지가 실패할 때 권장됩니다. BIOS가 활성화하지 않은 장치는 여전히 초기화합니다. `init`은 드라이버가 아는 모든 장치를 초기화합니다.

`memtype`은 G200/G400 메모리 배치를 지정하고 암묵적으로 `init`을 켭니다. G200 값 0~7은 2개 또는 4개의 128K/256K/512K chip과 2~16 MB SGRAM/SDRAM 조합을 나타냅니다. G400 값 0~5는 8~32 MB의 SGRAM/SDRAM 구성을 나타내며 6과 7은 reserved입니다. `memtype`과 함께 `sdram` 또는 `sgram`을 사용해야 합니다.

Matrox 기본 구성 옵션
옵션반대 옵션기본 또는 효과
`mem:X`-감지 메모리 이하로 화면 메모리 제한
`disabled``enabled`드라이버 적재 제어
`noaccel``accel`가속 제어, 기본 accel
`nopan``pan`virtual scrolling 제어, 기본 pan
`nopciretry``pciretry`PCI retry 제어
`novga``vga`VGA I/O 상태, 기본 보존
`nobios``bios`BIOS ROM 상태, 기본 보존
`noinit``init`장치 재초기화 여부, 기본 noinit
`memtype``sdram`/`sgram` 병용G200/G400 메모리 배치

Configuration
=============

You can pass kernel command line options to matroxfb with
`video=matroxfb:option1,option2:value2,option3` (multiple options should be
separated by comma, values are separated from options by `:`).
Accepted options:

============ ===================================================================
mem:X        size of memory (X can be in megabytes, kilobytes or bytes)
             You can only decrease value determined by driver because of
             it always probe for memory. Default is to use whole detected
             memory usable for on-screen display (i.e. max. 8 MB).
disabled     do not load driver; you can use also `off`, but `disabled`
             is here too.
enabled      load driver, if you have `video=matroxfb:disabled` in LILO
             configuration, you can override it by this (you cannot override
             `off`). It is default.
noaccel      do not use acceleration engine. It does not work on Alphas.
accel        use acceleration engine. It is default.
nopan        create initial consoles with vyres = yres, thus disabling virtual
             scrolling.
pan          create initial consoles as tall as possible (vyres = memory/vxres).
             It is default.
nopciretry   disable PCI retries. It is needed for some broken chipsets,
             it is autodetected for intel's 82437. In this case device does
             not comply to PCI 2.1 specs (it will not guarantee that every
             transaction terminate with success or retry in 32 PCLK).
pciretry     enable PCI retries. It is default, except for intel's 82437.
novga        disables VGA I/O ports. It is default if BIOS did not enable
             device. You should not use this option, some boards then do not
             restart without power off.
vga          preserve state of VGA I/O ports. It is default. Driver does not
             enable VGA I/O if BIOS did not it (it is not safe to enable it in
             most cases).
nobios       disables BIOS ROM. It is default if BIOS did not enable BIOS
             itself. You should not use this option, some boards then do not
             restart without power off.
bios         preserve state of BIOS ROM. It is default. Driver does not enable
             BIOS if BIOS was not enabled before.
noinit       tells driver, that devices were already initialized. You should use
             it if you have G100 and/or if driver cannot detect memory, you see
             strange pattern on screen and so on. Devices not enabled by BIOS
             are still initialized. It is default.
init         driver initializes every device it knows about.
memtype      specifies memory type, implies 'init'. This is valid only for G200
             and G400 and has following meaning:

               G200:
                 -  0 -> 2x128Kx32 chips, 2MB onboard, probably sgram
                 -  1 -> 2x128Kx32 chips, 4MB onboard, probably sgram
                 -  2 -> 2x256Kx32 chips, 4MB onboard, probably sgram
                 -  3 -> 2x256Kx32 chips, 8MB onboard, probably sgram
                 -  4 -> 2x512Kx16 chips, 8/16MB onboard, probably sdram only
                 -  5 -> same as above
                 -  6 -> 4x128Kx32 chips, 4MB onboard, probably sgram
                 -  7 -> 4x128Kx32 chips, 8MB onboard, probably sgram
               G400:
                 -  0 -> 2x512Kx16 SDRAM, 16/32MB
                 -         2x512Kx32 SGRAM, 16/32MB
                 -  1 -> 2x256Kx32 SGRAM, 8/16MB
                 -  2 -> 4x128Kx32 SGRAM, 8/16MB
                 -  3 -> 4x512Kx32 SDRAM, 32MB
                 -  4 -> 4x256Kx32 SGRAM, 16/32MB
                 -  5 -> 2x1Mx32 SDRAM, 32MB
                 -  6 -> reserved
                 -  7 -> reserved

             You should use sdram or sgram parameter in addition to memtype
             parameter.

MTRR, 색상, cursor와 출력 매핑

183-252

`nomtrr`은 framebuffer write combining을 꺼서 느려지지만 고부하에서 GUS DMA와 XFree 사이의 sound dropout 문제를 피할 수 있습니다. 기본 `mtrr`은 write combining을 켜며 커널과 CPU가 MTRR을 지원해야 합니다.

`sgram`과 `sdram`은 Gxx0 메모리 종류를 지정합니다. `sgram`은 `init` 없이 효과가 없고 기본은 `sdram`입니다. `inv24`는 Millennium과 Millennium II의 24 bpp timing을 바꿔 글자 주변 색 그림자를 고치며 기본 `noinv24`는 표준 timing을 사용합니다. `inverse`는 LCD용 색 반전, 기본 `noinverse`는 실제 색을 표시합니다.

`dev:X`는 `lspci` 순서의 알려진 장치 번호 X에 드라이버를 bind하며 기본은 모든 알려진 장치입니다. `nohwcursor`/`hwcursor`는 cursor 구현을 선택하며 기본은 hardware cursor입니다. 비가속 모드에서는 text mode를 제외하고 software cursor를 사용합니다. `noblink`/`blink`는 cursor 깜박임을 제어하지만 text mode cursor는 하드웨어 제약으로 항상 깜박입니다.

기본 `nofastfont`는 fastfont를 끕니다. `fastfont:X`는 font data용 메모리를 예약하며 최소 `(fontwidth*fontheight*chars_in_font)/8`이어야 합니다. Gx00에서는 빠르지만 구형 카드에서는 느립니다. `grayscale`은 PSEUDOCOLOR에서 grayscale 합산을 켜며 DIRECTCOLOR에서는 `putc/putcs`로 그린 문자에만 적용됩니다.

`cross4MB`는 pixel line이 4 MB 경계를 넘게 허용하며 non-Millennium 기본값입니다. Millennium I/II의 기본 `nocross4MB`는 하드웨어 제약 때문에 경계를 막지만 일부 `XF86_FBDev`와 호환되지 않습니다.

`dfp`는 digital flat panel을 켜며 secondary TV 출력과 동시에 사용할 수 없습니다. `dfp:X`의 0~`0xFF` bit는 G400 DAC register `0x1F` 설정이고 일반적으로 최하위 bit 외에는 0입니다. 하드웨어에서 기본값을 읽으므로 `init`과 함께 쓸 때만 명시해야 합니다.

`outputs:XYZ`는 primary analog, secondary analog, DVI 출력과 CRTC의 매핑입니다. 각 자리는 0(no CRTC), 1(CRTC1), 2(CRTC2)이고 기본은 G400 이전 또는 DFP 없는 G400에서 100, DFP 있는 G400에서 101, G450/G550에서 111입니다. 첫 카드만 이 옵션으로 매핑하고 다른 장치는 `matroxset`을 사용합니다.

`vesa:X`는 0~`0x1FF`의 시작 모드를 선택합니다. 기본은 8 bpp 지원 시 640x480x8이며, 아니면 640x350x4, 640x480x15, 640x480x24, 640x480x32, 80x25 text 순서로 가능한 첫 모드를 고릅니다. 80x25 text는 항상 제공됩니다.

Matrox 표시·출력 옵션
영역옵션핵심 동작
성능`mtrr`/`nomtrr`write combining
메모리`sdram`/`sgram`Gxx0 메모리 종류
24 bpp`inv24`/`noinv24`Millennium timing
색상`inverse`, `grayscale`색 반전과 회색조
장치`dev:X`특정 Matrox 장치 bind
cursor`hwcursor`, `blink`, `fastfont:X`cursor와 글꼴 가속
경계`cross4MB`/`nocross4MB`pixel line의 4 MB 경계
출력`dfp:X`, `outputs:XYZ`DFP와 CRTC 매핑
시작 모드`vesa:X`VESA 호환 모드 번호

nomtrr       disables write combining on frame buffer. This slows down driver
             but there is reported minor incompatibility between GUS DMA and
             XFree under high loads if write combining is enabled (sound
             dropouts).
mtrr         enables write combining on frame buffer. It speeds up video
             accesses much. It is default. You must have MTRR support enabled
             in kernel and your CPU must have MTRR (f.e. Pentium II have them).
sgram        tells to driver that you have Gxx0 with SGRAM memory. It has no
             effect without `init`.
sdram        tells to driver that you have Gxx0 with SDRAM memory.
             It is a default.
inv24        change timings parameters for 24bpp modes on Millennium and
             Millennium II. Specify this if you see strange color shadows
             around  characters.
noinv24      use standard timings. It is the default.
inverse      invert colors on screen (for LCD displays)
noinverse    show true colors on screen. It is default.
dev:X        bind driver to device X. Driver numbers device from 0 up to N,
             where device 0 is first `known` device found, 1 second and so on.
             lspci lists devices in this order.
             Default is `every` known device.
nohwcursor   disables hardware cursor (use software cursor instead).
hwcursor     enables hardware cursor. It is default. If you are using
             non-accelerated mode (`noaccel` or `fbset -accel false`), software
             cursor is used (except for text mode).
noblink      disables cursor blinking. Cursor in text mode always blinks (hw
             limitation).
blink        enables cursor blinking. It is default.
nofastfont   disables fastfont feature. It is default.
fastfont:X   enables fastfont feature. X specifies size of memory reserved for
             font data, it must be >= (fontwidth*fontheight*chars_in_font)/8.
             It is faster on Gx00 series, but slower on older cards.
grayscale    enable grayscale summing. It works in PSEUDOCOLOR modes (text,
             4bpp, 8bpp). In DIRECTCOLOR modes it is limited to characters
             displayed through putc/putcs. Direct accesses to framebuffer
             can paint colors.
nograyscale  disable grayscale summing. It is default.
cross4MB     enables that pixel line can cross 4MB boundary. It is default for
             non-Millennium.
nocross4MB   pixel line must not cross 4MB boundary. It is default for
             Millennium I or II, because of these devices have hardware
             limitations which do not allow this. But this option is
             incompatible with some (if not all yet released) versions of
             XF86_FBDev.
dfp          enables digital flat panel interface. This option is incompatible
             with secondary (TV) output - if DFP is active, TV output must be
             inactive and vice versa. DFP always uses same timing as primary
             (monitor) output.
dfp:X        use settings X for digital flat panel interface. X is number from
             0 to 0xFF, and meaning of each individual bit is described in
             G400 manual, in description of DAC register 0x1F. For normal
             operation you should set all bits to zero, except lowest bit. This
             lowest bit selects who is source of display clocks, whether G400,
             or panel. Default value is now read back from hardware - so you
             should specify this value only if you are also using `init`
             parameter.
outputs:XYZ  set mapping between CRTC and outputs. Each letter can have value
             of 0 (for no CRTC), 1 (CRTC1) or 2 (CRTC2), and first letter
             corresponds to primary analog output, second letter to the
             secondary analog output and third letter to the DVI output.
             Default setting is 100 for cards below G400 or G400 without DFP,
             101 for G400 with DFP, and 111 for G450 and G550. You can set
             mapping only on first card, use matroxset for setting up other
             devices.
vesa:X       selects startup videomode. X is number from 0 to 0x1FF, see table
             above for detailed explanation. Default is 640x480x8bpp if driver
             has 8bpp support. Otherwise first available of 640x350x4bpp,
             640x480x15bpp, 640x480x24bpp, 640x480x32bpp or 80x25 text
             (80x25 text is always available).
============ ===================================================================

사용자 비디오 타이밍과 모니터 한계

253-300

`vesa`가 고른 모드가 만족스럽지 않으면 세부 timing을 수정할 수 있습니다. `xres`와 `yres`는 수평·수직 해상도이고 `upper`, `lower`, `vslen`은 수직 앞뒤 경계와 VSYNC 길이입니다. `left`, `right`, `hslen`은 수평 경계와 HSYNC 길이입니다.

`pixclock`은 ps 단위 dotclock입니다. `sync` bit 0은 HSYNC polarity, bit 1은 VSYNC polarity를 반전합니다. bit 3(`0x08`)은 HSYNC 대신 composite sync를 만들고 bit 5(`0x20`)는 sync on green을 켭니다. sync on green에는 보통 composite sync도 필요합니다.

`depth`는 0(text), 4, 8, 15, 16, 24, 32 bpp 가운데 하나이며 기본값은 `vesa` 모드에 따라 달라집니다.

모니터 능력을 알면 `maxclk`, `fh`, `fv`를 일부 또는 모두 지정할 수 있습니다. 그러면 `pixclock <= maxclk`, `real_fh <= fh`, `real_fv <= fv`를 만족하도록 픽셀 클럭을 계산합니다. `maxclk`은 MHz/kHz/Hz, `fh`는 kHz/Hz, `fv`는 Hz 단위입니다. `fv` 기본은 VESA 파생 모드에서 yres 400 이하면 70 Hz, 400보다 크면 60 Hz입니다.

Matrox 사용자 타이밍 필드
필드의미
해상도`xres`, `yres`수평 픽셀과 수직 행
수직`upper`, `lower`, `vslen`VSYNC 주변 경계와 길이
수평`left`, `right`, `hslen`HSYNC 주변 경계와 길이
클럭`pixclock`ps 단위 dotclock
동기`sync`polarity, composite, sync-on-green bit
색 깊이`depth`0, 4, 8, 15, 16, 24, 32 bpp

모니터 제한 조건
옵션단위제약
`maxclk`MHz, kHz 또는 Hz`pixclock <= maxclk`
`fh`kHz 또는 Hz`real_fh <= fh`
`fv`Hz`real_fv <= fv`


If you are not satisfied with videomode selected by `vesa` option, you
can modify it with these options:

============ ===================================================================
xres:X       horizontal resolution, in pixels. Default is derived from `vesa`
             option.
yres:X       vertical resolution, in pixel lines. Default is derived from `vesa`
             option.
upper:X      top boundary: lines between end of VSYNC pulse and start of first
             pixel line of picture. Default is derived from `vesa` option.
lower:X      bottom boundary: lines between end of picture and start of VSYNC
             pulse. Default is derived from `vesa` option.
vslen:X      length of VSYNC pulse, in lines. Default is derived from `vesa`
             option.
left:X       left boundary: pixels between end of HSYNC pulse and first pixel.
             Default is derived from `vesa` option.
right:X      right boundary: pixels between end of picture and start of HSYNC
             pulse. Default is derived from `vesa` option.
hslen:X      length of HSYNC pulse, in pixels. Default is derived from `vesa`
             option.
pixclock:X   dotclocks, in ps (picoseconds). Default is derived from `vesa`
             option and from `fh` and `fv` options.
sync:X       sync. pulse - bit 0 inverts HSYNC polarity, bit 1 VSYNC polarity.
             If bit 3 (value 0x08) is set, composite sync instead of HSYNC is
             generated. If bit 5 (value 0x20) is set, sync on green is turned
             on. Do not forget that if you want sync on green, you also probably
             want composite sync.
             Default depends on `vesa`.
depth:X      Bits per pixel: 0=text, 4,8,15,16,24 or 32. Default depends on
             `vesa`.
============ ===================================================================

If you know capabilities of your monitor, you can specify some (or all) of
`maxclk`, `fh` and `fv`. In this case, `pixclock` is computed so that
pixclock <= maxclk, real_fh <= fh and real_fv <= fv.

============ ==================================================================
maxclk:X     maximum dotclock. X can be specified in MHz, kHz or Hz. Default is
             `don`t care`.
fh:X         maximum horizontal synchronization frequency. X can be specified
             in kHz or Hz. Default is `don't care`.
fv:X         maximum vertical frequency. X must be specified in Hz. Default is
             70 for modes derived from `vesa` with yres <= 400, 60Hz for
             yres > 400.
============ ==================================================================

알려진 버그, 제약과 색 형식

301-358

알려진 버그에는 SVGALib 종료 후 화면 미복원, Alpha에서 generic `fbcon-cfbX`와 `noaccel`/cfb4 가속 미동작, big-endian architecture의 24 bpp `XF-FBDev` 문제, interlaced text mode 미지원, Gxx0 SGRAM/SDRAM 자동 감지 부재가 있습니다.

Alpha에서 `/dev/fb*`에 접근 가능한 사용자는 시스템을 멈추거나 모니터를 손상할 수 있으므로 장치 접근을 제한해야 한다고 강하게 경고합니다.

text mode의 pixclock 하드웨어 한계는 G200 83 MHz, Millennium I 66 MHz, Millennium II 60 MHz입니다. 드라이버가 상한을 검사하지 않아 더 높은 값을 설정할 수 있습니다. Millennium G200 oscillator는 시험에서 35~380 MHz 범위였지만 Matrox 제품 자료의 VCO 한계는 50~250 MHz이므로 문서는 제조사 값을 따릅니다.

Mystique/Gx00의 mixed video/graphics 모드 `2G8V16`, `G16V16`, color keying은 지원하지 않습니다. feature connector는 VGA mode이고, DDC monitor detection은 dualhead driver를 통해 지원합니다. `vslen=4000` 같은 비현실적 값도 허용될 만큼 입력 검사가 엄격하지 않을 수 있습니다.

4 bpp는 하드웨어 제약상 Millennium I/II에서만 사용할 수 있습니다. 16 bpp의 1:5:5:5와 5:6:5 선택은 `fbset -depth 16 -rgba 5,5,5`로 하며 이 값은 1:5:5:5, 그 밖의 값은 5:6:5를 선택합니다.

text mode는 Millennium I/II의 하드웨어 제약과 SVGALib 호환 때문에 8 bit가 아닌 6 bit VGA palette를 사용합니다. 따라서 1,600만 색 가운데 하나가 아니라 262,144색 가운데 하나를 선택합니다.

Matrox 주요 제한
영역제한 또는 동작
SVGALib종료 후 화면 복원 실패
Alpha`fbcon-cfbX`, `noaccel` 문제와 `/dev/fb*` 접근 위험
24 bppbig-endian `XF-FBDev` 문제
text modeinterlace 미지원, 장치별 dotclock 상한
Gxx0 메모리SGRAM/SDRAM 자동 감지 안 됨
특수 기능mixed mode와 color keying 미지원
4 bppMillennium I/II만 지원
16 bpp`-rgba`로 1:5:5:5 또는 5:6:5 선택
palettetext mode에서 6 bit VGA palette

Limitations
===========

There are known and unknown bugs, features and misfeatures.
Currently there are following known bugs:

 - SVGALib does not restore screen on exit
 - generic fbcon-cfbX procedures do not work on Alphas. Due to this,
   `noaccel` (and cfb4 accel) driver does not work on Alpha. So everyone
   with access to `/dev/fb*` on Alpha can hang machine (you should restrict
   access to `/dev/fb*` - everyone with access to this device can destroy
   your monitor, believe me...).
 - 24bpp does not support correctly XF-FBDev on big-endian architectures.
 - interlaced text mode is not supported; it looks like hardware limitation,
   but I'm not sure.
 - Gxx0 SGRAM/SDRAM is not autodetected.
 - maybe more...

And following misfeatures:

 - SVGALib does not restore screen on exit.
 - pixclock for text modes is limited by hardware to

    - 83 MHz on G200
    - 66 MHz on Millennium I
    - 60 MHz on Millennium II

   Because I have no access to other devices, I do not know specific
   frequencies for them. So driver does not check this and allows you to
   set frequency higher that this. It causes sparks, black holes and other
   pretty effects on screen. Device was not destroyed during tests. :-)
 - my Millennium G200 oscillator has frequency range from 35 MHz to 380 MHz
   (and it works with 8bpp on about 320 MHz dotclocks (and changed mclk)).
   But Matrox says on product sheet that VCO limit is 50-250 MHz, so I believe
   them (maybe that chip overheats, but it has a very big cooler (G100 has
   none), so it should work).
 - special mixed video/graphics videomodes of Mystique and Gx00 - 2G8V16 and
   G16V16 are not supported
 - color keying is not supported
 - feature connector of Mystique and Gx00 is set to VGA mode (it is disabled
   by BIOS)
 - DDC (monitor detection) is supported through dualhead driver
 - some check for input values are not so strict how it should be (you can
   specify vslen=4000 and so on).
 - maybe more...

And following features:

 - 4bpp is available only on Millennium I and Millennium II. It is hardware
   limitation.
 - selection between 1:5:5:5 and 5:6:5 16bpp videomode is done by -rgba
   option of fbset: "fbset -depth 16 -rgba 5,5,5" selects 1:5:5:5, anything
   else selects 5:6:5 mode.
 - text mode uses 6 bit VGA palette instead of 8 bit (one of 262144 colors
   instead of one of 16M colors). It is due to hardware limitation of
   Millennium I/II and SVGALib compatibility.

콘솔 다시 그리기 benchmark

359-400

benchmark는 1024x768 60 Hz 화면을 1,000번 다시 그리거나 `/dev/vcsa`를 통해 6,144,000자를 그리는 시간입니다. 32 bpp에서는 정확히 3,000 MB 데이터이며 8x16 글꼴로 16초라면 약 187 MB/s입니다.

수치는 구버전 드라이버에서 얻어 현재는 약 3% 빠르다고 설명합니다. P-II 350 MHz에서 kernel-space 시간만 측정했고 Millennium I은 33 MHz PCI slot, G200은 AGP 2x slot을 사용했습니다. `vgacon`은 시험하지 않았습니다.

표는 `NOACCEL`, `ACCEL, nofastfont`, `ACCEL, fastfont`, `TEXT`를 글꼴과 bpp별로 비교합니다. 대부분 가속과 fastfont가 시간을 줄이지만 G200의 fastfont 32 bpp 8x16 결과 18.29초는 Millennium I의 16.18초보다 느립니다.

NOACCEL benchmark (초)
bpp8x16 Millennium I8x16 G20012x22 Millennium I12x22 G200
816.429.5412.339.13
1621.0015.7019.1115.02
2436.6636.6635.0035.00
3235.0030.0033.8528.66

ACCEL, nofastfont benchmark (초)
bpp8x16 MI/G20012x22 MI/G2006x11 MI/G200
87.79 / 7.2413.55 / 7.7830.00 / 21.01
169.13 / 7.7816.16 / 7.7830.00 / 21.01
2414.17 / 10.7218.69 / 10.2434.99 / 21.01
3216.15 / 16.1618.73 / 13.0934.99 / 21.01

ACCEL, fastfont 및 TEXT benchmark (초)
bpp/모드8x16 MI/G20012x22 MI/G2006x11 MI/G200
88.41 / 6.016.54 / 4.3716.00 / 10.51
169.54 / 9.128.76 / 6.1717.52 / 14.01
2415.00 / 12.3611.67 / 10.0022.01 / 18.32
3216.18 / 18.2912.71 / 12.7424.44 / 21.00
TEXT3.29 / 1.50--

Benchmarks
==========
It is time to redraw whole screen 1000 times in 1024x768, 60Hz. It is
time for draw 6144000 characters on screen through /dev/vcsa
(for 32bpp it is about 3GB of data (exactly 3000 MB); for 8x16 font in
16 seconds, i.e. 187 MBps).
Times were obtained from one older version of driver, now they are about 3%
faster, it is kernel-space only time on P-II/350 MHz, Millennium I in 33 MHz
PCI slot, G200 in AGP 2x slot. I did not test 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과 G450 dualhead 제약

401-438

G400과 G450의 secondary head는 primary head와 비디오 메모리를 공유합니다. 32 MB에서는 큰 문제가 없지만 16 MB에서는 모드 크기를 신중히 골라야 하며, 예를 들어 G400에서 1880x1440x32 bpp 두 화면은 불가능합니다.

하드웨어 제약 때문에 secondary head는 16 또는 32 bpp만 사용할 수 있고 가속되지 않습니다. 전원 투입 시 항상 640x480@60-32로 시작하므로 `fbset`으로 변경해야 합니다. 커널의 multihead 지원도 완전하지 않습니다.

G400 secondary head는 monitor mode로 시작하며 TV mode로 바꾸려면 `fbmatroxset`을 사용합니다. NTSC는 최소 525행, PAL은 최소 625행이 필요합니다. module 구성에서는 `i2c-matroxfb`, `matroxfb_maven`, `matroxfb_crtc2`를 삽입해야 합니다.

G450은 TV 출력을 지원하지 않습니다. module 구성에서는 `matroxfb_g450`과 `matroxfb_crtc2`가 필요합니다.

Matrox dualhead 비교
항목G400G450
메모리primary와 공유primary와 공유
secondary bpp16, 3216, 32
가속없음없음
초기 모드640x480@60-32640x480@60-32
TV 출력`fbmatroxset`, NTSC 525/PAL 625행지원하지 않음
module`i2c-matroxfb`, `matroxfb_maven`, `matroxfb_crtc2``matroxfb_g450`, `matroxfb_crtc2`

Dualhead G400
=============
Driver supports dualhead G400 with some limitations:
 + secondary head shares videomemory with primary head. It is not problem
   if you have 32MB of videoram, but if you have only 16MB, you may have
   to think twice before choosing videomode (for example twice 1880x1440x32bpp
   is not possible).
 + due to hardware limitation, secondary head can use only 16 and 32bpp
   videomodes.
 + secondary head is not accelerated. There were bad problems with accelerated
   XFree when secondary head used to use acceleration.
 + secondary head always powerups in 640x480@60-32 videomode. You have to use
   fbset to change this mode.
 + secondary head always powerups in monitor mode. You have to use fbmatroxset
   to change it to TV mode. Also, you must select at least 525 lines for
   NTSC output and 625 lines for PAL output.
 + kernel is not fully multihead ready. So some things are impossible to do.
 + if you compiled it as module, you must insert i2c-matroxfb, matroxfb_maven
   and matroxfb_crtc2 into kernel.


Dualhead G450
=============
Driver supports dualhead G450 with some limitations:
 + secondary head shares videomemory with primary head. It is not problem
   if you have 32MB of videoram, but if you have only 16MB, you may have
   to think twice before choosing videomode.
 + due to hardware limitation, secondary head can use only 16 and 32bpp
   videomodes.
 + secondary head is not accelerated.
 + secondary head always powerups in 640x480@60-32 videomode. You have to use
   fbset to change this mode.
 + TV output is not supported
 + kernel is not fully multihead ready, so some things are impossible to do.
 + if you compiled it as module, you must insert matroxfb_g450 and matroxfb_crtc2
   into kernel.

Petr Vandrovec <vandrove@vc.cvut.cz>