다음 이전 차례

3. 3Dfx카드의 설치

3Dfx 액셀러레이터를 리눅스에서 사용하기 위한 셋업 단계는 다음과 같습니다.

  1. 액셀러레이터 카드를 설치한다.
  2. 글라이드 배포판을 설치한다.
  3. 컴파일과 애플리케이션을 링크 및 실행한다.
  
이 섹션 3 은 이 3Dfx카드를 리눅스에서 설치하는 과정에 대해 자세히 풀어 쓴 것입니다.

3.1 3Dfx 액셀러레이터 카드 설치하기

우선, 액셀러레이터 카드와 같이 따라온 매뉴얼을 참조하십시오. 매뉴얼이 별 도움이 안된다면 컴퓨터를 구입한 곳에서 설치를 해달라고 해도 됩니다. IRQ나 DMA 채널셋팅은 Plug&Pray (tm)이나 공장 기본 설치값으로 하는 것까지는 필요가 없겠다. 여기에 나와있는 애드온 보드는 메모리 매핑을 쓰는 디바이스이므로 IRQ를 쓰지 않는다. 이런 보드에서 생길 수 있는 문제라고는 다른 디바이스들과 같은 메모리영역을 사용하려 하는 충돌밖에 없다. 3Dfx는 칩만 제조를 할뿐 다른 그래픽 카드의 디자인/개발/판매와 전혀 관계가 없기때문에 3Dfx는 연락을 하더라도 뾰족한 도움을 얻을 수가 없겠습니다.

하드웨어 설치시 문제가 일어나면...

하드웨어 설치와 메모리 매핑을 체크해 보십시다. 다음은 다이아몬드 스텔스-64와 다이아몬드 몬스터 3D를 설치해서 cat /proc/pci 라고 친 다음의 결과입니다.


Bus 0, device 12, function 0: VGA compatible controller: S3 Inc.
Vision 968 (rev 0). Medium devsel. IRQ 11. Non-prefetchable 32 bit 
memory at 0xf4000000.
Bus 0, device 9, function 0: Multimedia video controller: Unknown 
vendor Unknown device (rev 2). Vendor id=121a. Device id=1. Fast 
devsel. Fast back-to-back capable. Prefetchable 32 bit memory at 
0xfb000000. 

cat /proc/cpuinfo /proc/meminfo 를 실행하면 있을지도 모르는 충돌원인을 발견하거나 버그 리포트를 하는데 도움이 되겠습니다. 최신 커널을 사용한다면 다음과 같은 부팅 메세지가 뜰 수 있습니다.
Jun 12 12:31:52 hal kernel: Warning : Unknown PCI device (121a:1). 
Please read include/linux/pci.h

이 메세지는 무시를 해도 됩니다. 만약 설치된 비디오 카드가 남들이 안가지고 있는 특이한 모델이던지, 사용자가 스스로 내용을 고쳤다던지 하면 /usr/include/linux/pci.h 을 참고해서 inux-pcisupport@cao-vlsi.ibp.fr 에 필요하다고 생각되는 사항을 이메일로 보내면 되겠습니다. 리눅스 환경에서 그래픽카드를 사용하면서 문제가 생기면 DOS/Win9x, NT 지원서비스를 받아봅시다. 리눅스를 사용한다고 하면 별 도움이 되는 반응을 얻기가 힘듭니다. 개인적으로 다이아몬드社의 A/S 이메일 시스템을 사용해 본후 생각하건데, DOS/Win9x, NT 이외의 운영체제를 사용하면서 서비스를 받기는 무리인 것 같습니다.

커널 설정하기

PCI 지원이 된다면 별도의 커널설정은 필요가 없습니다. 커널에 관한 사항은 http://sunsite.unc.edu/mdw/HOWTO/Kernel-HOWTO.html을 참조 하시기 바랍니다.

디바이스 설정

아직까지는 사운드카드같은 드라이버와는 달리 (/dev/dsp 와 /dev/audio 를 참조해 주세요.) 그래픽 액셀러레이터 드라이버를 사용하기위해 별도로 디바이스를 설정할 필요는 없습니다. 왜냐! 액셀러레이터 드라이버는 시스템에 이미 있는 /dev/mem 를 사용하기 때문입니다. 이에 대한 단점은, 액셀러레이터 카드를 사용하려면 setuid 를 사용하거나 root 의 권한을 사용해야 한다는 것입니다.

3.2 디스플레이 셋업

3Dfx카드를 모니터에 연결하는 것은 두가지 방법이 있습니다. 원래 쓰던 VGA카드에서 나오는 비디오 시그널을 액셀러레이터 카드에 보내서 그걸 모니터에 보내는 방법이 있고, 모니터를 두개를 동시에 쓰는 방법이 있습니다. 대충 도표를 그리자면,

  1. 싱글스크린 셋업.: VGA출력 -> 3Dfx카드 -> 모니터
  2. 싱글스크린 듀얼케이블 셋업: VGA카드 -> 모니터 #1, 3Dfx 카드 -> 모니터 #1
  3. 듀얼스크린 셋업: VGA카드 -> 모니터 #1, 3Dfx 카드 -> 모니터 #2 자세한 내용은 구입한 보드의 매뉴얼을 참조하시기 바랍니다. 위의 두가지 설정방법은 다이아몬드 몬스터 3D에서 테스트된 방법입니다.

싱글 스크린 셋업

: VGA출력 -> 3Dfx카드 -> 모니터 모니터 하나로 액셀러레이터 카드를 쓰면 액셀러레이터 카드가 잘 돌아가고 있는지 확인 할 수 있습니다. 비디오 시그널이 모니터로 가지 않는다면 액셀러레이터에 고장이 있는지 알아 볼수 있기 대문입니다. 염두해 둘것은, VGA의 비디오출력정보가 액셀러레이터 카드를 통해서 모니터로 어느정도의 화질저하는 감수해야 할 것입니다. 여러 군데서 한 리뷰를 보면 카드와 원래 따라온 케이블의 성능이 뒤떨어지기 때문에 화질저하가 일어날수도 있다고 합니다. 다이아몬드社의 몬스터3D가 바로 이런 경우입니다. 싱글스크린셋업에서 또 한가지 주의해야 할 사항이 있습니다. 예를들어, X11에서 640x480 해상도(3D가속을 사용하고 있을때 풀스크린이 이 해상도를 씀)를 쓰고있는 경우라도, 원래 쓰고있던 VGA모드에서 액셀러레이션 모드로 전환할때 모니터의 해상도와 refresh rate (초당 몇번씩 다시 그림을 모니터에 그려주나 하는 비율.)가 바뀐다는 것입니다. 게다가 X11에서는 실행되고있는 애플리케이션이 모든 키보드와 마우스 이벤트를 관리하는데, 액셀러레이션 모드로 바뀌면 해상도의 변화로 스크린 한 부분에 콘트롤(마우스 움직임이랄지 키보드랄지..)이 묶여버릴 수도 있습니다. 이 현상은 액셀러레이션 모드를 쓸때 더 자주 일어납니다. 이문제의 X11대신에 SVGA 콘솔을 사용하는 것으로 간단히 해결 될 수 있습니다. 싱글스크린셋업에서 VGA모드와 액셀러레이션 모드로 전환을 할 때에 이런식으로 하드웨어에서 문제가 발생 할 수 있습니다.

싱글스크린 듀얼케이블 셋업

: VGA카드 -> 모니터 #1, 3Dfx 카드 -> 모니터 #1 고급모니터중 몇 기종은 (예를들어 EIZO F-784-T) RGB, HSync, VSync용 5 BNC 커넥터와, 보통 사용되는 VGA 혹은 13W3 Sub-D VGA용 커넥터같은 커넥터를 하나씩 연결하게 해 줍니다. 대부분의 경우, 커넥터가 두개가 있는 모니터는 비디오신호 입력단자 선택이 모니터 앞면에 붙어있는 콘트롤을 사용해서 가능합니다. 그러므로 이런 종류의 모니터에서는 VGA-to-BNC케이블은 원래 있던 비디오 카드에 연결하고, VGA-to-13W3 Sub-D 케이블은 3Dfx에 연결하는 식으로 연결해서 사용하는 방법이 가능 합니다.

듀얼스크린 셋업

: 모니터 #1, 3Dfx 카드 -> 모니터 #2 정상적인 작동을 위해 액셀러레이터 카드는 VGA 카드로 부터의 입력이 필요하지 않습니다. VGA 출력정보를 액셀러레이터 카드로 보내서 모니터 출력이 나오게 하는 대신에 모니터 한대를 컴퓨터에 달아서 동시에 사용 하는 것도 가능합니다. 앞에 나온 방법들보다 투자를 더 해야 하기는 하지만, 이 방법을 사용하면 위에서도 언급했던 싱글스크린 셋업에서 일어나는 화질저하가 일어나지 않기 때문에 때문에 최상의 화질을 즐길 수 있습니다. 이 방법을 쓰면 X11화면과 액셀러레이터 화면을 동시에 보면서 개발작업과 디버깅 및 게임을 할 수 있습니다. 하지만 유저가 액셀러레이터 카드를 사용하고 있지 않을 때에는 액셀러레이터카드의 출력이 전혀 나오지 않기때문에 어떤 설정상황에서는 그래픽 어플리케이션 을 끝낼 때 마다 하드웨어에서 구동되는 스크린세이버가 실행 될 수 있습니다. 하지만 비디오출력 설정에서 다음의 코드를 집어넣어서 비디오 출력이 항상 켜 있도록 하면 이 문제는 해결이 됩니다.


  setenv SST_DUALSCREEN 1

3.3 글라이드(Glide) 설치하기

글라이드 드라이버와 라이브러리는 압축된 파일 하나로 배포됩니다. tar와 gzip 을 사용해서 압축을 풀고 들어있는 README와 INSTALL 화일을 참조해서 설치를 합니다. 인스톨 스크립트를 읽어보고 그 스크립트를 실행합니다. 인스톨 스크립트는 모든 화일을 /usr/local/glide /include,lib,bin 에 복사해 넣고 ld.conf 라는 화일에 글라이드가 설치된 디렉토리의 위치를 담습니다. 글라이드가 설치되는 위치와, ld.conf 세팅은 따로 떨어질 수 있는 사항 입니다. 만약 ld.conf 셋팅을 하지 않는다면 LD_LIBRARY_PATH 를 이용 할 수 있습니다. 만약 유저가 어플리케이션을 개발해서 컴파일하려면 컴파일을 할 때에 사용 할 수 있는 디렉토리에 헤더 화일을을 설치해야 합니다. 만약 위에나와있는 설치방법대신 다른 디렉토리에 설치를 원한다면, 모든 애플리케이션이 공유로 설정된 라이브러리를 런타임에 액세스 할 수 있도록 체크해 주십시오. 애플리케이션이 런타임에 이 공유 라이브러리를 액세스를 못한다면 다음과 같은 에러메세지가 뜰 것입니다.


 can't load library 'libglide.so'

디텍트 프로그램 쓰는 방법

글라이드 배포판에는 하드웨어를 자동으로 디텍트를 하는 바이너리 프로그램이 포함되어있습니다. 소스코드는 배포되지 않았습니다. root로서 이 프로그램을 실행하면 다음과 같은 메세지를 볼 수 있습니다.


  slot  vendorId   devId   baseAddr0  command  description
  ----  --------  ------  ----------  -------  -----------
    00    0x8086  0x122d  0x00000000   0x0006  Intel:430FX (Triton)
    07    0x8086  0x122e  0x00000000   0x0007  Intel:ISA bridge
    09    0x121a  0x0001  0xfb000008   0x0002  3Dfx:video multimedia
                                               adapter
    10    0x1000  0x0001  0x0000e401   0x0007  ???:SCSI bus 
                                               controller
    11    0x9004  0x8178  0x0000e001   0x0017  Adaptec:SCSI bus 
                                               controller
    12    0x5333  0x88f0  0xf4000000   0x0083  S3:VGA-compatible 

display co root의 권한이 없으면 다음과 같은 메세지가 뜨면서 프로그램이 멈춥니다. 이 메세지는 버그 리포트를 할 때에 요긴하게 쓰일 수 있습니다.
  Permission denied: Failed to change I/O privilege. Are you root?

테스트 프로그램 쓰는 방법

글라이드 배포판 안에는 테스트 프로그램들이 들어있는 디렉토리가 있습니다. 3Dfx가 이프로그램들의 저작권을 소유하고 있으며 유저는 3Dfx 칩셋이 있는 보드를 구입했을때만 이 프로그램을 사용할 수 있는 법적 권한을 가집니다. 배포판 안에 있는 LICENSE 화일과 www.3dfx.com 을 읽어 보십시오. 바이너리 화일들이 있더라도 테스트 프로그램들은 컴파일을 하고 링크를 하는게 좋습니다. 몇 프로그램들은 실행하기 위해서 배포판에 따라온 alpha.3df 같은 화일들이 같은 디렉토리에 있어야 합니다. 테스트 프로그램들은 모두 640x480 해상도를 사용합니다. 어느 프로그램은 단순 문자입력을 필요로 하며, 어느 프로그램은 Press A Key To Begin Test (테스트를 시작하기위해 아무 키나 누르세요.) 와같은 메세지를 출력합니다. 싱글스크린 셋업에서 X11을 사용할 경우 마우스 /키보드의 입력 범위가 줄어드는 것을 알아 두십시오. 프로그램 리스트와 다른 내용을 참조하려면 README.test 를 보십시오.


다음 이전 차례