요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
=====
sstfb
=====
Introduction
============
This is a frame buffer device driver for 3dfx' Voodoo Graphics
(aka voodoo 1, aka sst1) and Voodoo² (aka Voodoo 2, aka CVG) based
video boards. It's highly experimental code, but is guaranteed to work
on my computer, with my "Maxi Gamer 3D" and "Maxi Gamer 3d²" boards,
and with me "between chair and keyboard". Some people tested other
combinations and it seems that it works.
The main page is located at <http://sstfb.sourceforge.net>, and if
you want the latest version, check out the CVS, as the driver is a work
in progress, I feel uncomfortable with releasing tarballs of something
not completely working...Don't worry, it's still more than usable
(I eat my own dog food)
Please read the Bug section, and report any success or failure to me
(Ghozlane Toumi <[email protected]>).
BTW, If you have only one monitor , and you don't feel like playing
with the vga passthrou cable, I can only suggest borrowing a screen
somewhere...
Installation
============
This driver (should) work on ix86, with "late" 2.2.x kernel (tested
with x = 19) and "recent" 2.4.x kernel, as a module or compiled in.
It has been included in mainstream kernel since the infamous 2.4.10.
You can apply the patches found in `sstfb/kernel/*-2.{2|4}.x.patch`,
and copy sstfb.c to linux/drivers/video/, or apply a single patch,
`sstfb/patch-2.{2|4}.x-sstfb-yymmdd` to your linux source tree.
Then configure your kernel as usual: choose "m" or "y" to 3Dfx Voodoo
Graphics in section "console". Compile, install, have fun... and please
drop me a report :)
Module Usage
============
.. warning::
#. You should read completely this section before issuing any command.
#. If you have only one monitor to play with, once you insmod the
module, the 3dfx takes control of the output, so you'll have to
plug the monitor to the "normal" video board in order to issue
the commands, or you can blindly use sst_dbg_vgapass
in the tools directory (See Tools). The latest solution is pass the
parameter vgapass=1 when insmodding the driver. (See Kernel/Modules
Options)
Module insertion
----------------
#. insmod sstfb.o
you should see some strange output from the board:
a big blue square, a green and a red small squares and a vertical
white rectangle. why? the function's name is self-explanatory:
"sstfb_test()"...
(if you don't have a second monitor, you'll have to plug your monitor
directly to the 2D videocard to see what you're typing)
#. con2fb /dev/fbx /dev/ttyx
bind a tty to the new frame buffer. if you already have a frame
buffer driver, the voodoo fb will likely be /dev/fb1. if not,
the device will be /dev/fb0. You can check this by doing a
cat /proc/fb. You can find a copy of con2fb in tools/ directory.
if you don't have another fb device, this step is superfluous,
as the console subsystem automagically binds ttys to the fb.
#. switch to the virtual console you just mapped. "tadaaa" ...
Module removal
--------------
#. con2fb /dev/fbx /dev/ttyx
bind the tty to the old frame buffer so the module can be removed.
(how does it work with vgacon ? short answer : it doesn't work)
#. rmmod sstfb
Kernel/Modules Options
----------------------
You can pass some options to the sstfb module, and via the kernel
command line when the driver is compiled in:
for module : insmod sstfb.o option1=value1 option2=value2 ...
in kernel : video=sstfb:option1,option2:value2,option3 ...
sstfb supports the following options:
=============== =============== ===============================================
Module Kernel Description
=============== =============== ===============================================
vgapass=0 vganopass Enable or disable VGA passthrou cable.
vgapass=1 vgapass When enabled, the monitor will get the signal
from the VGA board and not from the voodoo.
Default: nopass
mem=x mem:x Force frame buffer memory in MiB
allowed values: 0, 1, 2, 4.
Default: 0 (= autodetect)
inverse=1 inverse Supposed to enable inverse console.
doesn't work yet...
clipping=1 clipping Enable or disable clipping.
clipping=0 noclipping With clipping enabled, all offscreen
reads and writes are discarded.
Default: enable clipping.
gfxclk=x gfxclk:x Force graphic clock frequency (in MHz).
Be careful with this option, it may be
DANGEROUS.
Default: auto
- 50Mhz for Voodoo 1,
- 75MHz for Voodoo 2.
slowpci=1 fastpci Enable or disable fast PCI read/writes.
slowpci=1 slowpci Default : fastpci
dev=x dev:x Attach the driver to device number x.
0 is the first compatible board (in
lspci order)
=============== =============== ===============================================
Tools
=====
These tools are mostly for debugging purposes, but you can
find some of these interesting:
- `con2fb`, maps a tty to a fbramebuffer::
con2fb /dev/fb1 /dev/tty5
- `sst_dbg_vgapass`, changes vga passthrou. You have to recompile the
driver with SST_DEBUG and SST_DEBUG_IOCTL set to 1::
sst_dbg_vgapass /dev/fb1 1 (enables vga cable)
sst_dbg_vgapass /dev/fb1 0 (disables vga cable)
- `glide_reset`, resets the voodoo using glide
use this after rmmoding sstfb, if the module refuses to
reinsert.
Bugs
====
- DO NOT use glide while the sstfb module is in, you'll most likely
hang your computer.
- If you see some artefacts (pixels not cleaning and stuff like that),
try turning off clipping (clipping=0), and/or using slowpci
- the driver don't detect the 4Mb frame buffer voodoos, it seems that
the 2 last Mbs wrap around. looking into that .
- The driver is 16 bpp only, 24/32 won't work.
- The driver is not your_favorite_toy-safe. this includes SMP...
[Actually from inspection it seems to be safe - Alan]
- When using XFree86 FBdev (X over fbdev) you may see strange color
patterns at the border of your windows (the pixels lose the lowest
byte -> basically the blue component and some of the green). I'm unable
to reproduce this with XFree86-3.3, but one of the testers has this
problem with XFree86-4. Apparently recent Xfree86-4.x solve this
problem.
- I didn't really test changing the palette, so you may find some weird
things when playing with that.
- Sometimes the driver will not recognise the DAC, and the
initialisation will fail. This is specifically true for
voodoo 2 boards, but it should be solved in recent versions. Please
contact me.
- The 24/32 is not likely to work anytime soon, knowing that the
hardware does ... unusual things in 24/32 bpp.
Todo
====
- Get rid of the previous paragraph.
- Buy more coffee.
- test/port to other arch.
- try to add panning using tweaks with front and back buffer.
- try to implement accel on voodoo2, this board can actually do a
lot in 2D even if it was sold as a 3D only board ...
Ghozlane Toumi <[email protected]>
Date: 2002/05/09 20:11:45
http://sstfb.sourceforge.net/README
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
Voodoo Graphics 드라이버 개요
1-26`sstfb`는 3dfx Voodoo Graphics, 즉 Voodoo 1 또는 `sst1`과 Voodoo 2 또는 `CVG` 기반 보드용 framebuffer 장치 드라이버입니다. 매우 실험적인 코드지만 작성자의 Maxi Gamer 3D와 Maxi Gamer 3D II 보드에서는 동작했고, 다른 조합에서도 시험 결과가 보고되었습니다.
프로젝트 홈페이지는 `http://sstfb.sourceforge.net`입니다. 드라이버가 계속 개발 중이던 문서 작성 시점에는 완전히 동작하지 않는 tarball을 배포하기보다 CVS에서 최신 버전을 받도록 안내했습니다. 그럼에도 일상적으로 사용할 수 있는 수준이라고 설명합니다.
Bug 절을 읽고 성공과 실패를 Ghozlane Toumi `<[email protected]>`에게 보고해야 합니다. 모니터가 하나뿐이고 VGA passthrou cable을 자주 바꾸기 싫다면 두 번째 화면을 빌리는 방법을 권합니다.
=====
sstfb
=====
Introduction
============
This is a frame buffer device driver for 3dfx' Voodoo Graphics
(aka voodoo 1, aka sst1) and Voodoo² (aka Voodoo 2, aka CVG) based
video boards. It's highly experimental code, but is guaranteed to work
on my computer, with my "Maxi Gamer 3D" and "Maxi Gamer 3d²" boards,
and with me "between chair and keyboard". Some people tested other
combinations and it seems that it works.
The main page is located at <http://sstfb.sourceforge.net>, and if
you want the latest version, check out the CVS, as the driver is a work
in progress, I feel uncomfortable with releasing tarballs of something
not completely working...Don't worry, it's still more than usable
(I eat my own dog food)
Please read the Bug section, and report any success or failure to me
(Ghozlane Toumi <[email protected]>).
BTW, If you have only one monitor , and you don't feel like playing
with the vga passthrou cable, I can only suggest borrowing a screen
somewhere...
지원 커널과 설치
27-41이 드라이버는 ix86에서 후기 2.2.x 커널(2.2.19로 시험)과 당시의 최근 2.4.x 커널에서 모듈 또는 커널 내장으로 동작하도록 작성되었습니다. 메인라인에는 2.4.10부터 포함되었습니다.
이전 트리에 설치할 때는 `sstfb/kernel/*-2.{2|4}.x.patch`를 적용하고 `sstfb.c`를 `linux/drivers/video/`에 복사하거나, `sstfb/patch-2.{2|4}.x-sstfb-yymmdd` 단일 패치를 Linux 소스 트리에 적용합니다.
그 뒤 일반적인 커널 설정에서 console 절의 `3Dfx Voodoo Graphics`를 모듈 `m` 또는 내장 `y`로 선택해 컴파일·설치합니다. 작성자는 결과 보고도 요청합니다.
구형 트리 패치 방식과 메인라인 설정이 같은 빌드 단계로 합쳐집니다.
Installation
============
This driver (should) work on ix86, with "late" 2.2.x kernel (tested
with x = 19) and "recent" 2.4.x kernel, as a module or compiled in.
It has been included in mainstream kernel since the infamous 2.4.10.
You can apply the patches found in `sstfb/kernel/*-2.{2|4}.x.patch`,
and copy sstfb.c to linux/drivers/video/, or apply a single patch,
`sstfb/patch-2.{2|4}.x-sstfb-yymmdd` to your linux source tree.
Then configure your kernel as usual: choose "m" or "y" to 3Dfx Voodoo
Graphics in section "console". Compile, install, have fun... and please
drop me a report :)
모듈 삽입·콘솔 연결·제거
42-89명령을 실행하기 전에 이 절 전체를 읽어야 합니다. 모니터가 하나뿐이면 모듈을 삽입하는 순간 3dfx 보드가 출력을 장악합니다. 이후 명령을 보려면 모니터를 일반 2D 비디오 보드로 다시 연결하거나 `tools`의 `sst_dbg_vgapass`를 보지 않고 실행해야 합니다. 더 간단한 방법은 모듈 삽입 때 `vgapass=1`을 전달하는 것입니다.
먼저 `insmod sstfb.o`를 실행합니다. 보드에서 큰 파란 사각형, 작은 초록·빨강 사각형, 세로 흰 사각형이 보일 수 있는데 이는 `sstfb_test()`의 시험 출력입니다. 두 번째 모니터가 없으면 입력 내용을 확인하려고 모니터를 2D 카드에 직접 연결해야 합니다.
다음으로 `con2fb /dev/fbx /dev/ttyx`를 사용해 tty를 새 framebuffer에 연결합니다. 기존 framebuffer가 있으면 Voodoo framebuffer는 보통 `/dev/fb1`, 없으면 `/dev/fb0`입니다. `cat /proc/fb`로 확인할 수 있고 `con2fb` 사본은 `tools/`에 있습니다. 다른 framebuffer가 없다면 console subsystem이 tty를 자동 연결하므로 이 단계는 필요 없습니다. 그런 다음 연결한 virtual console로 전환합니다.
제거할 때는 먼저 `con2fb /dev/fbx /dev/ttyx`로 tty를 이전 framebuffer에 다시 연결해야 합니다. `vgacon`과는 이 과정이 동작하지 않습니다. 그 뒤 `rmmod sstfb`를 실행합니다.
출력 장악과 tty 연결을 고려한 안전한 순서입니다.
Module Usage
============
.. warning::
#. You should read completely this section before issuing any command.
#. If you have only one monitor to play with, once you insmod the
module, the 3dfx takes control of the output, so you'll have to
plug the monitor to the "normal" video board in order to issue
the commands, or you can blindly use sst_dbg_vgapass
in the tools directory (See Tools). The latest solution is pass the
parameter vgapass=1 when insmodding the driver. (See Kernel/Modules
Options)
Module insertion
----------------
#. insmod sstfb.o
you should see some strange output from the board:
a big blue square, a green and a red small squares and a vertical
white rectangle. why? the function's name is self-explanatory:
"sstfb_test()"...
(if you don't have a second monitor, you'll have to plug your monitor
directly to the 2D videocard to see what you're typing)
#. con2fb /dev/fbx /dev/ttyx
bind a tty to the new frame buffer. if you already have a frame
buffer driver, the voodoo fb will likely be /dev/fb1. if not,
the device will be /dev/fb0. You can check this by doing a
cat /proc/fb. You can find a copy of con2fb in tools/ directory.
if you don't have another fb device, this step is superfluous,
as the console subsystem automagically binds ttys to the fb.
#. switch to the virtual console you just mapped. "tadaaa" ...
Module removal
--------------
#. con2fb /dev/fbx /dev/ttyx
bind the tty to the old frame buffer so the module can be removed.
(how does it work with vgacon ? short answer : it doesn't work)
#. rmmod sstfb
커널·모듈 옵션
90-139모듈에서는 `insmod sstfb.o option1=value1 option2=value2 ...` 형식을 쓰고, 커널 내장에서는 `video=sstfb:option1,option2:value2,option3 ...` 형식을 씁니다.
`vgapass=0`/`vganopass`와 `vgapass=1`/`vgapass`는 VGA passthrou cable을 끄고 켭니다. 켜면 모니터는 Voodoo가 아니라 VGA 보드의 신호를 받습니다. 기본값은 `nopass`입니다. `mem=x`/`mem:x`는 framebuffer 메모리를 MiB 단위로 강제하며 0, 1, 2, 4만 허용합니다. 기본 0은 자동 탐지입니다.
`inverse=1`/`inverse`는 inverse console을 활성화하려 하지만 아직 동작하지 않습니다. `clipping=1`/`clipping`과 `clipping=0`/`noclipping`은 clipping을 제어합니다. 활성화하면 화면 밖의 읽기와 쓰기를 버리며 기본값은 활성화입니다.
`gfxclk=x`/`gfxclk:x`는 그래픽 clock을 MHz로 강제하는 위험한 옵션입니다. 기본 자동값은 Voodoo 1에서 50 MHz, Voodoo 2에서 75 MHz입니다. `slowpci`/`fastpci`는 빠른 PCI 읽기·쓰기를 제어하며 기본은 `fastpci`입니다. `dev=x`/`dev:x`는 lspci 순서에서 0부터 세는 호환 보드 번호에 드라이버를 연결합니다.
Kernel/Modules Options
----------------------
You can pass some options to the sstfb module, and via the kernel
command line when the driver is compiled in:
for module : insmod sstfb.o option1=value1 option2=value2 ...
in kernel : video=sstfb:option1,option2:value2,option3 ...
sstfb supports the following options:
=============== =============== ===============================================
Module Kernel Description
=============== =============== ===============================================
vgapass=0 vganopass Enable or disable VGA passthrou cable.
vgapass=1 vgapass When enabled, the monitor will get the signal
from the VGA board and not from the voodoo.
Default: nopass
mem=x mem:x Force frame buffer memory in MiB
allowed values: 0, 1, 2, 4.
Default: 0 (= autodetect)
inverse=1 inverse Supposed to enable inverse console.
doesn't work yet...
clipping=1 clipping Enable or disable clipping.
clipping=0 noclipping With clipping enabled, all offscreen
reads and writes are discarded.
Default: enable clipping.
gfxclk=x gfxclk:x Force graphic clock frequency (in MHz).
Be careful with this option, it may be
DANGEROUS.
Default: auto
- 50Mhz for Voodoo 1,
- 75MHz for Voodoo 2.
slowpci=1 fastpci Enable or disable fast PCI read/writes.
slowpci=1 slowpci Default : fastpci
dev=x dev:x Attach the driver to device number x.
0 is the first compatible board (in
lspci order)
=============== =============== ===============================================
디버깅 도구
140-159도구는 주로 디버깅 목적이지만 일부는 운영에도 유용합니다. `con2fb /dev/fb1 /dev/tty5`는 tty를 framebuffer에 연결합니다.
`sst_dbg_vgapass /dev/fb1 1`은 VGA cable을 켜고 `sst_dbg_vgapass /dev/fb1 0`은 끕니다. 사용하려면 드라이버를 `SST_DEBUG=1`, `SST_DEBUG_IOCTL=1`로 다시 컴파일해야 합니다.
`glide_reset`은 Glide를 이용해 Voodoo를 reset합니다. `sstfb`를 제거한 뒤 모듈이 다시 삽입되지 않을 때 사용합니다.
Tools
=====
These tools are mostly for debugging purposes, but you can
find some of these interesting:
- `con2fb`, maps a tty to a fbramebuffer::
con2fb /dev/fb1 /dev/tty5
- `sst_dbg_vgapass`, changes vga passthrou. You have to recompile the
driver with SST_DEBUG and SST_DEBUG_IOCTL set to 1::
sst_dbg_vgapass /dev/fb1 1 (enables vga cable)
sst_dbg_vgapass /dev/fb1 0 (disables vga cable)
- `glide_reset`, resets the voodoo using glide
use this after rmmoding sstfb, if the module refuses to
reinsert.
알려진 버그와 TODO
160-204`sstfb` 모듈이 올라온 동안 Glide를 사용하면 시스템이 멈출 가능성이 매우 높습니다. 픽셀이 지워지지 않는 등의 artefact가 보이면 `clipping=0`으로 clipping을 끄거나 `slowpci`를 사용해 봅니다. 드라이버는 4 MiB Voodoo framebuffer를 제대로 감지하지 못해 마지막 2 MiB가 wraparound되는 것으로 보입니다.
드라이버는 16 bpp 전용이며 24/32 bpp는 동작하지 않습니다. SMP를 포함한 모든 사용에 안전하다고 보장하지 않았지만 Alan의 검토 메모는 실제로는 안전해 보인다고 덧붙입니다.
XFree86 FBdev에서 창 가장자리에 이상한 색 패턴이 생길 수 있습니다. 픽셀의 최하위 바이트, 즉 파랑과 일부 초록 성분이 사라지는 현상이며 XFree86 3.3에서는 재현되지 않았지만 XFree86 4에서 보고되었고 최근 4.x에서 해결된 것으로 보입니다. palette 변경은 충분히 시험하지 않았습니다.
때때로 DAC를 인식하지 못해 초기화가 실패하며 특히 Voodoo 2에서 나타났지만 당시 최근 버전에서는 해결되었을 수 있습니다. 하드웨어가 24/32 bpp에서 특이하게 동작하므로 해당 모드 지원은 가까운 시일 내에 어렵다고 설명합니다.
TODO는 앞의 버그 문단을 없앨 만큼 개선하기, 다른 아키텍처 시험·이식, front/back buffer 조정으로 panning 구현, Voodoo 2의 2D acceleration 구현입니다. 원문에는 커피를 더 산다는 항목도 있습니다. 작성자는 Ghozlane Toumi이고 날짜는 `2002/05/09 20:11:45`, 원본 URL은 `http://sstfb.sourceforge.net/README`입니다.
Bugs
====
- DO NOT use glide while the sstfb module is in, you'll most likely
hang your computer.
- If you see some artefacts (pixels not cleaning and stuff like that),
try turning off clipping (clipping=0), and/or using slowpci
- the driver don't detect the 4Mb frame buffer voodoos, it seems that
the 2 last Mbs wrap around. looking into that .
- The driver is 16 bpp only, 24/32 won't work.
- The driver is not your_favorite_toy-safe. this includes SMP...
[Actually from inspection it seems to be safe - Alan]
- When using XFree86 FBdev (X over fbdev) you may see strange color
patterns at the border of your windows (the pixels lose the lowest
byte -> basically the blue component and some of the green). I'm unable
to reproduce this with XFree86-3.3, but one of the testers has this
problem with XFree86-4. Apparently recent Xfree86-4.x solve this
problem.
- I didn't really test changing the palette, so you may find some weird
things when playing with that.
- Sometimes the driver will not recognise the DAC, and the
initialisation will fail. This is specifically true for
voodoo 2 boards, but it should be solved in recent versions. Please
contact me.
- The 24/32 is not likely to work anytime soon, knowing that the
hardware does ... unusual things in 24/32 bpp.
Todo
====
- Get rid of the previous paragraph.
- Buy more coffee.
- test/port to other arch.
- try to add panning using tweaks with front and back buffer.
- try to implement accel on voodoo2, this board can actually do a
lot in 2D even if it was sold as a 3D only board ...
Ghozlane Toumi <[email protected]>
Date: 2002/05/09 20:11:45
http://sstfb.sourceforge.net/README
요약·해설
sstfb.rst:1-204`sstfb`는 Voodoo 1/2용 실험적 framebuffer로 VGA passthrou와 tty 매핑을 직접 관리해야 하며, 16 bpp 전용·Glide 충돌·구형 XFree86 문제 등 역사적 제약이 큽니다.
모듈 삽입과 제거 사이의 연결 상태를 관리합니다.