요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
================================================
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):
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
===
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.
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.
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).
============ ===================================================================
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.
============ ==================================================================
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.
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.
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>
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`를 참조합니다.
텍스트 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`로 지정합니다.
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로 전환했다가 돌아오면 복구됩니다.
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`을 사용해야 합니다.
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는 항상 제공됩니다.
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입니다.
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색 가운데 하나를 선택합니다.
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-400benchmark는 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초보다 느립니다.
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-438G400과 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`가 필요합니다.
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>
요약·해설
matroxfb.rst:1-438`matroxfb` 문서는 Matrox 장치의 VESA 호환 모드, X11과 SVGALib, 메모리·가속·출력·동기 옵션, 알려진 제약, 성능 측정과 G400/G450 dualhead 운용을 포괄합니다.
안전한 운용의 핵심은 `vgacon` fallback을 유지하고, 장치와 모니터 한계에 맞는 timing을 사용하며, XFree86 DRI와 console mode 불일치 및 Alpha의 `/dev/fb*` 접근 위험을 피하는 것입니다.
초기 모드부터 multihead까지의 주요 결정입니다.