Accelerated GLX - Frequently Asked Questions


차례
설명
이것은?
바이너리 설치 도움말
바이너리 묶음을 어디서 구할수 있을까요?
어떤 버젼의 XFree86을 쓸수 있을까요?
X서버의 소스를 받아야 하나요?
apt를 사용할수 업나요?
바이너리 tarball(tar로 묶은)을 구할수 있나요?
편집 도움말
컴파일을 하려면 무엇이 필요 하나요?
Mesa소스코드를 어디서 구할수 있나요?
하지만 내 응용프로그램이 Mesa 3.1과 호환성이 없는걸요!
pMesa는 무엇인가요?
glx 드라이버 소스코드는 어디서 구할수 있나요?
glx소스의 CVS버젼은 어떻게 구할수 있나요?
내가 쓸수있는 cvs의 안정화 버젼은 없나요?
X서버 소스코드는 어떻하나요?
X서버 소스코드는 어디서 구하나요?
모듈은 어떻게 만드나요?
컴파일러가 'MAP_FAILED undeclared'라는 메세지를 남기고 죽어버리는데요.
FreeBSD지원은 어떻게 되나요?
사용할려고 할때 있을수 있는 질문
glx모듈이 동작하고 있는지 어떻게 알수 있나요?
GLX모듈을 사용하려면 컴퓨터 사양은 어떻게 되나요?
glx모듈을 사용하고 있지만 빠르지는 않은거 같은데요.
사용중에 있을수 있는 질문
그것으로 퀘이크를 작동시킬수 있나요? 얼마나 빨리 작동하죠?
어떻게 된거죠? 퀘이크3 테스트버젼을 작동시키면 빈화면만 나와요!
OpenGL응용프로그램을 돌리면 소리가 일그러 져요.
DMA를 작동시키려면?
AGP지원을 작동시키려면?
왜 리바 드라이버에서는 DMA/AGP지원이 안되는 거죠?
"Bad Request"에러가 나오는데요
X서버가 망가졌어요!
알려진 문제들
XRacer는 스왑파일을 가득 채우고 서버가 망가집니다!
상세한 정보
어떤 플랫폼에서 지원 되나요?
여기서 언급된 메일링리스트는 어디서 가입할수 있습니까?

설명

이것은 무엇인가요?

이 프로젝트는 공개 유닉스 운영체제를 위한 하드웨어 가속 glx모듈을 만들기 위한 것입니다. 현재 XFree86용으로 Matrox MGA-G200, MGA-G400, 그리고 nvidia의 Riva시리즈를 지원합니다. 또한 소프트웨어 렌더링도 지원합니다. (역자주: 현재는 ATI Rage pro, Rage 128, Intel i810도 지원합니다.)

GLX프로토콜은 3D그래픽 명령들을 X서버/클라이언트 연결을 통해서 보내는 방법입니 다. 이것은 실리콘 그래픽스에 의해서 만들어 졌으며 현재 공개소스로 전환되었습니 다. 그러나 우리는 현재 분리되어서 이행해 나가고 있습니다.

이 작업은 Precision Insight사 Direct Rendering Infrastructure 와 함께 XFree86 4.0으로 통합될것입니다.


바이너리 설치 도움말

바이너리 꾸러미는 어디서 구할수 있나요?

바이너리 꾸러미는 현재 x86용으로 dep와 rpm형식으로 존재합니다.

Matrox G200과 G400, 그리고 nVidia RIVA칩셋을 지원하는 데비안 꾸러미가 cvs로 glibc 2.0 (hamm/slink) 용과 glibc 2.1 (potato) 용으로 자동으로 만들어 집니다. OpenGL 응용프로그램들을 실행 하려면 libgl1과 glx-(mga,nv)패키지가 필요 하고 OpelGL까지 컴파일 하려면 libgl-dev패키지가 필요 합니다.

Ryan Skadberg 가 만든 몇몇 소스RPM은 ftp://ftp.mindstorm.com/pub/glx/에서 받을수 있습니다.

여러분은 단지 루트로 로그인한후 "rpm --rebuild glxMesa-date-rev.src.rpm" 를 실행 시키면 RPM파일을 /usr/src/redhat/RPMS/i386/ 에서 구할수 있습니다.

Ian Pilcher의 RedHat 5.2와 6.0(Intel)용의 예비RPM(과 spec파일)은 ftp://ftp.sus.mcgill.ca/pub/glx 에서 구할수 있지만 관리가 잘 안되고 있습니다.

MESA 3.1과 3Dnow어셈블리로 컴파일된 또다른 예비RPM은 http://www.tu-bs.de/~y0000980/g200.html 에서 구할수 있습니다. 이 꾸러미는 3Dnow명령어를 수행할수 있는 CPU(AMD K6-2, Winchip2)와 glibc2.0(RH5.x SuSE6, ...) 의 사용환경에서만 동작합니다.

RIVA카드의 바이너리는 nvidia사에서 구할수 있습니다. 최근의 몇몇 보고 에서는 Riva칩셋이 퓆Vidia의 glx모듈이 정정으로 링크된 바이너리 서버가 cvs버젼보다 더 빠르다고 합니다. 성능이 중요하다고 여겨지면 그것을 대신 쓰십시요.


어떤 버젼의 XFree86을 쓸수 있을까요?

XFree 3.3.5 를 사용하세요

모듈은 3.3.3이상의 버젼의 XFree 3.3 SVGA서버와 호환성을 가지고 있습니다. 그러나 3.3.5로 버젼이 올라가면서 mga드라이버에 문제가 되는 bug가 있습니다. 그러므로 제일 최근 벼젼을 사용할것을 권장합니다. 자세한것은 이 글 을 읽어보세요.

현재 glx모듈은 XFree 3.9/4.0에서는 전혀 작동을 할수 없습니다. 작동될려면 새로운 Direct Rendering Infrestructure를 지원하게 많은 부분을 재작성 해야 할것입니다. 그러나 아직 아무도 그작업을 하지 않습니다.


X서버의 소스를 받아야 하나요?

아니요. XFree86 소스코드는 필요 없습니다. glx에서 필요한 헤더들은 포함되어 있 습니다.


apt를 사용할수 없나요?

자동 생성 꾸러미는 Debian 2.0/2.1 (hamm/slink)용 apt(데비안 꾸러미 관리도구)를 지원합니다. 그냥 /etc/apt/sources.list에 이줄만 추가시키면 됩니다.

deb http://ford.on.openprojects.net/~stephenc glx-slink/

Debian/개발버젼 (potato)를 사용하시면 이렇게 추가하세요.

deb http://pandora.debian.org/~crow glx-potato/

그리고 (루트권한으로) 이렇게 입력하세요.

apt-get update; apt-get install glx-mga libgl libgl-dev

Hamm과 Slink사용자는 X꾸러미(slink는 3.3.2.3을 포함합니다)도 업그레이드 해야 합니다. X 3.3.4(현재는 slink용 3.3.5가 없습니다)를 사용하려면 sources.list에 'deb http://samosa.debian.org/~branden/ xfree86-334-slink/' 를 추가시키세요.


바이너리 tarball(tar로 묶은)을 구할수 있나요?

없습니다. 그러나 데비안 꾸러미는 .tar.gz로 저장할수 있습니다. 아래는 표준 유닉스 도구로 데비안 꾸러미를 어떻게 푸는지에 대한 간단한 설명입니다.

데비안 꾸러미 파일(.deb)는 3개의 파일을 포함하고 있습니다:

  • 패키지 형식과 버젼을 표시하는 파일 a file identifying package type and version

  • 설치 스크립트와 관리를 포함하는 control.tar.gz

  • 설치될 파일을 포함하는 data.tar.gz

이 파일들을 보려면 'ar -t <package>.deb'라고 입력하면 됩니다. 풀려면 'ar -x <package>.deb' 라고 입력을 한다. ar은 모든 유닉스OS의 기본 도구입니다. 만약에 그것이 없으면 ftp.gnu.org나 미러사이트를 통해서 GNU binutils 의 일부로 구할수 있습니다.

data.tar.gz 파일은 루트 디렉토리와 연관된 위치에 자리잡은 파일들을 포함합니다. 그러나 하위디렉토리를 풀지 않으려면 데비안과 다른 디렉토리 구조에 수동으로 복사를 시켜줘야 합니다.

또한 XF86Config에 '모듈은 어떻게 만드나요?'라고 아래에 설명된것처럼 모듈을 추가시켜야 합니다. 또는 control.tar.gz에 있는 설치스크립트를 실행시켜야 합니다.

요약하면 필요한 패키지에 대해서 :


	ar -x <package>.deb data.tar.gz
        gzip -cd data.tar.gz | tar xvf - 
 	
아니면 다음 한줄로:

 	ar -p <package>.deb data.tar.gz | tar xvzf - 
 	
을 실행하면 됩니다.


편집 도움말

컴파일을 하려면 무엇이 필요 하나요?

glx모듈을 컴파일 하려면 glx소스코드와 Mesa소스코드가 필요 합니다.

egcs 1.0.3은 몇몇파일이 컴파일안되는 것으로 알려져 있습니다(내부 컴파일 오류) 그러므로 최근버젼(1.1이상)이나 고전적인(그러나 좋은) gcc컴파일러를 사용하는게 좋을것 입니다. 여러분의 컴퓨터에 작동하는 안정적인 코드를 생성하는 컴파일러라고 입증되지 않으면 pgcc컴파일러는 사용하지 말아주세요.


Mesa소스코드를 어디서 구할수 있나요?

현재 드라이버는 Mesa의 CVS버젼(3.2)에서만 작동을 합니다. 3.1 beta1, beta2, beta3 에서는 작동을 하지 않습니다.


    cvs -d :pserver:anonymous@cvs.mesa3d.org:/cvs/mesa3d login
   

주의: 주의: 패스워드는 그냥 엔터를 누르면 됩니다


   cvs -d :pserver:anonymous@cvs.mesa3d.org:/cvs/mesa3d co -r mesa_3_2_dev Mesa
   


하지만 내 응용프로그램이 Mesa 3.1과 호환성이 없는걸요!

몇몇 응용프로그램과 Mesa 3.1 사이에 비호환성문제가 있습니다. 대부분 큰 표시 목록의 Memory footprint와 관계가 있습니다.

우리의 방침은 Mesa의 현재 CVS버젼에 맞춰져 있습니다. 그리고 이전버젼의 지원도 유지하려고 합니다. 그러나 코드가 많이 나누어져 있어서 1999년 9월 중순에 Mesa 3.0에 대한 지원을 포기하는 결정을 내렸습니다. 곧 3.1버젼이 발표되면 두 버젼의 동시개발을 지속한다는 것은 너무 어렵다고 생각되었습니다.

아래에 있는 안정화 버젼 목록을 참고하세요.


pMesa는 무엇인가요?

몇몇사람이 pMesa(다중 CPU를 지원하는)에 대한 작업을 하고 있습니다. 하지만 우리는 여기에 우선을 두지 않습니다. glx프로토콜에 포함된 클라이언트-서버 분리 형태에 이미 두 프로세스 에서 렌더링 파이프라인이 나뉘어져 있습니다. 이것은 pMesa가 듀얼 프로세서를 가진 기계에서 대부분의 응용프로그램에 큰 영향을 주지 않는다는 뜻입니다.

여기에 대한 몇몇 도움말이 조만간 필요할것 같습니다.


glx 드라이버 소스코드는 어디서 구할수 있나요?

소스코드를 얻을수 있는 기본적인 방법은 CVS를 통해서 얻을수 있습니다.(다음 질문을 참고 하세요).

A FreeBSD용을 얻을수도 있습니다. 이 꾸러미는 소스 tarball을 포함 합니다. 아래 소개를 참고 하세요.

CVS의 자동 스냅샷은 프로젝트 홈페이지 에서 구할수 있고 Ralph Giles의 glx page에서도 구할수 있습니다. 그러나 업데이트가 잘 안되더군요.


glx소스의 CVS버젼은 어떻게 구할수 있나요?

여러분의 컴퓨터에 cvs가 설치가 되어있는지 확인 해보세요(which cvs).

환경변수를 설정 합니다:

bash에서는:


	export CVSROOT=':pserver:anonymous@cvs.on.openprojects.net:/cvs/glx'
	

tcsh에서는:


	setenv CVSROOT ':pserver:anonymous@cvs.on.openprojects.net:/cvs/glx'
     	

'cvs login'이라고 로그인에서 입력합니다(패스워드를 물어보면 엔터만 누르면 됩니다. 그리고 나서 'cvs -z3 checkout -P glx'라고 입력합니다.

소스를 받은적이 있으면 'cvs update -Pd glx'을 입력하면 최근버젼의 드라이버로 업데이트가 됩니다.


내가 쓸수있는 cvs의 안정화 버젼은 없나요?

9월에 WARP지원을 추가시킴으로서 mga드라이버는 버그가 많아졌습니다. AGP지원과 많은 visual artifact에 문제가 있습니다.

깨끗한 버젼의 드라이버를 돌릴려면, WARP지원 추가 이전의 소스를 가져가라고 제안 합니다. mga드라이버의 성능은 떨어지지만 결과의 정확함과 gart모듈을 통한 AGP지원 은 정확히 동작 합니다. RIVA드라이버는 약간 다르긴 하지만 mga와 riva사용자 모두 이버젼의 코드를 사용할수 있습니다. 그러나 정확히 보장은 못드립니다.

이 소스로 전환하려면 위와같이 설정을 하고 checkout 단계에서 다음과 같이 입력합니다:


	cvs -z3 checkout -P -r last-nowarp glx 
    

원래소스와는 약간 다릅니다. README.configure에 있는 지시를 참고하세요.


X서버 소스코드는 어떻하나요?

glx모듈은 X서버의 확장입니다. 그리고 X소스의 일부를 가져다 쓰고 있습니다. 코드는 는 분리되어 있지만 많은 내부 X헤더가 작성에 필요합니다.

XFree86소스가 거대해 지면서, 필요한 헤더파일들을 'xc-headers'디렉토리에 같이 저장 해놓았습니다. 현재는 표준 X클라이언트 헤더만 있으면 됩니다.


모듈은 어떻게 만드나요?

드라이버는 autoconf의 표준방법을 만들수 있습니다;자세한 내용은 INSTALL파일을 참조 하세요. 여기서 중요한 것은 Mesa소스의 위치를 지정해주어야만 합니다. 그러나 configure스크립트는 glx디렉토리의 최상위에서 심벌릭링크가 있다면 그것을 찾아서 사용할것 입니다. 쉽게 만들기를 원하면 다음과 같이 하세요:


	cd glx 
        ln -s <path_to_mesa_src> ./mesa 
	./autogen.sh 
	make 
	make install (as root) 
  

드라이버를 작동시키려면, XF86Config파일의 Modules섹션에 'Load "glx.so"를 추가 시켜야만 합니다. 또한 Section "Mudule"/EndSection 을 추가시키거나 주석을 풀어야만 합니다.

이 설치 작업은 glx_install 스크립트가 해줍니다.


컴파일러가 'MAP_FAILED undeclared'라는 메세지를 남기고 죽어 버리는데요

슬랙웨어 리눅스 배포판 사용자들에게 mgadma.c의 컴파일이 안된다는 보고를 받았습니다. 이것은 MAP_FAILED가 정의가 되지 않았기 때문입니다. 이것은 sys/mman.h 에서 mmap()의 리턴값이 있다는 것을 가정한것입니다. 그러나 몇몇 시스템에서는 분명히 가정되지 않았는것 같습니다. 이것이 슬랙웨어 또는 libc5/kernel의 문제인지는 모릅니다. issue, but feel free to enlighten us.

/usr/include/sys/mman.h 또는 헤더파일을 바꾸고 싶지 않거나 퍼미션이 없으면 mgadma.c의 맨 위에 다음의 코드를 삽입하는것이 좋을듯 합니다.


	#ifndef MAP_FAILED
        #define MAP_FAILED ((__ptr_t) -1)
	#endif 
   

FreeBSD지원은 어떻게 되나요?

We'd like to have the module build "out of the box" but there are apparently some issues. Marc van Woerkom has the following suggestions for FreeBSD users:

By far the easiest method to begin, assuming you have the Mesa port (/usr/ports/graphics/Mesa3) on your disk (otherwise get it from http://www.freebsd.org), is to download the glx port from http://www.freebsd.org/~3d/distfiles/glx.

You need the *.shar.bz2 sh-archive only, unpack it with


	bunzip2 -vt .shar sh .sh 
    
then switch into the resulting top directory (glx or riva-glx) and type "make install".

The port will fetch the necessary files from your /usr/ports/distfiles or the Internet and do the rest for you.

If you have questions left, send mail to 3d@freebsd.org.


사용할려고 할때 있을수 있는 질문

glx모듈이 동작하고 있는지 어떻게 알수 있나요?

두가지 방법이 있습니다::

서버측

X서버가 시작할때 다음과 같은것을 볼수 있습니다:


	(--) no ModulePath specified using default: /usr/X11R6/lib/modules
        GLX extension module for XFree86 3.3.3 -- Mesa version 3.0
	GLX package version 0.9, GLX protocol version 1.2.
	(**) module glx.so successfully loaded from /usr/X11R6/lib/modules
   

이 화면은 보통 아주 빨리 넘어가 버립니다, 그러므로 startx 2> ~/tmp/x.out 같은 명령을 입력후 "~/tmp/x.out"파일을 조사하면 됩니다. 이것은 X서버가 glx모듈을 찾아서 성공적으로 로딩했다는 것을 표시합니다.

위화면이 약간 달라도 상관은 없습니다만, 모듈로드가 실패했다는 메세지가 나오면 그 메세지를 메일링리스트에 올려 주십시요.

클라이언트 측

xterm에서 OpenGL프로그램을 실행시키면 다음과 같은 글자들을 볼수 있습니다:

	
	@Created GLX Context..
   

이것은 OpenGL프로그램이 OpenGL 라이브러리를 올바르게 사용하고 있다는 것을 표시합니다.


GLX모듈을 사용하려면 컴퓨터 사양은 어떻게 되나요?

MGA전용

드라이버는 double buffered visual만 가속을 시켜주기 때문에 윈도와 16비트 Z버퍼 를 위해서는 실제 메모리가 충분한 공간이 필요합니다(32비트 Z버퍼는 아직 지원되지 않습니다)

아래 표는 전체화면을 사용하는 응용프로그램을 실행시킬때 필요한 메모리를 표시하고 있습니다. 이 메모리는 텍스쳐 저장과 이미 픽스맵 캐쉬로 사용되어지고 있는 엑스서버 에서 사용되어 집니다.

비디오 메모리해상도색상수텍스쳐 메모리
81024x7678163.5MB
81280x1024160.5MB
8800x600323.5MB
81024x878320.5MB
161600x1200165MB
161280x1024323.5MB

참고: 엑스서버가 실행중에 " ctrl + alt + '+/-' "로 해상도를 바꿀려면 XF86Config의 해상도설정을 바꾸어야 합니다.


glx모듈을 사용하고 있지만 그리 빠르게 보이진 않아요.

클라이언트 측이 올바른 버젼의 드라이버용 GL라이브러리가 링크되어 있어야 합니다. 만약 응용프로그램이 libGL로 컴파일 되지 않았다면, libMesaGL로 제대로된 라이브러리를 심벌릭링크 시켜줘야 합니다. 다음을 루트계정에서 실행 합니다.


 	rm /usr/lib/libMesaGL.so.3
 	ln -s /usr/X11R6/lib/libGL.so.1.0 /usr/lib/libMesaGL.so.3
 	ldconfig
    

다른 이유로 다시 메사라이브러리를 사용하려면 이렇게 합니다.


	rm /usr/lib/libMesaGL.so.3
	ln -s /usr/lib/libMesaGL.so.3.0 /usr/lib/libMesaGL.so.3
	ldconfig
    

Try resizing the window. The current crop of consumer 3d hardware only handles actually drawing of triangles to the screen; most of the viewing calculations are still done by the host processor. In some applications, this can lead to counter-intuitive effects, e.g. it doesn't run any faster, but you can triple the window's screen area and add bilinear-filtered textures without it running any slower. This is particularly true with the performance limitations of the current driver. We're working on it!

Andree Bormann has put together a page on getting various games to work with the glx module. You might also look there if you're having trouble.


사용중에 있을수 있는 질문

그것으로 퀘이크를 작동시킬수 있나요? 얼마나 빨리 작동하죠?

드라이버는 퀘이크2와 퀘이크3에서 아주 잘 동작하고 있습니다. 성능은 현재 15-40 fps정도 입니다만 아주 잘 동작합니다.


어떻게 된거죠? 퀘이크3 테스트버젼을 작동시키면 빈화면만 나와요.

이것은 퀘이크 버그같이 보이지만 주의해야할 일반적인 문제입니다:

bill@taniwha.org 의 질문:

q3test를 가지고 동작하는데 문제가 생겼습니다. 상단 오른쪽 구석에 점들과 함깨 검은 화면밖에 안보입니다. (ctrl-alt-bspace을 누르면 다시 정상으로 돌아옵니다.)

Ryan Drake 의 응답:

퀘이크는 해상도를 640x480(또는 세팅되어 있는것)으로 바꿀려고 시도합니다. 그러나 그 해상도가 /etc/X11/XF86Config의 스크린 섹션에 정의되어 있지 않습니다. 예:

Modes "1024x768"

이것이 퀘이크가 해상도를 바꿀때 검은화면으로 멈추는 이유입니다. 다음처럼 바꿔보세요:

Modes "1024x768" "800x600" "640x480"

And make sure you DONT try to switch to any resolution not listed there or... boom.


OpenGL응용프로그램을 돌리면 소리가 일그러 져요.

이것은 드라이버가 의사-DMA(Pseudo-DMA)를 사용할때 나타날수 있는 문제 입니다. 이 문제를 해결하기 위해서는 부팅할때 DMA버퍼를 사용하기 위한 약간의 메모리를 예약 해두어야 합니다. 이 문제에 대한 긴 토론들은 여기를 보십시요: http://www.alsa-project.org/misc/vgakills.txt


DMA를 작동시키려면?

MGA전용

(역자주: 꼭 설정 하십시오. 성능이 1.5-2배정도로 증가합니다.) 기본 드라이버 설정은 카드에서 명령을 보내기 위해 CPU를 사용합니다. 직접 메모리 접근(DMA)를 사용하면 카드는 직접 주 메모리로 부터 명령을 가져 옵니다. 이것은 프로세서를 다른일로부터 부하(다음 프레임 계산같은것)를 줄여줍니다. 그래서 더욱 빨라 질수 있습니다. 그렇게 전송하는 방법은 두가지가 있습니다: 부팅할때 미리 할당한 정적 버퍼에서 전송하는방법, AGP인터페이스를 통한 동적 버퍼에서 전송하는 방법. 이 장에서는 전자의 것만 설명을 합니다. 이 방법은 AGP코드를 사용하는것 보다 훨씬 안정적입니다, 그러므로 이것을 사용하길 권장합니다. 또한 이것은 PCI카드에도 적용됩니다. AGP전송에 관한 정보는 다음장을 보십시오.

DMA를 사용하려면 8-32메가의 메모리를 예약하여야 합니다. 예로서 128메가의 시 스템에 8메가를 예약하려면 /etc/lilo.conf에 다음을 추가합니다:

append="mem=120M"

그런다음 하드디스크에 설정을 저장하기 위해 루트로 lilo를 실행합니다.

이제 glx모둘에게 얼마만큼의 메모리를 예약했는지 알려줘야하기 위해 몇몇 환경 변수를 설정해야 합니다. 그러기 위해서는 ~/.bashrc에 다음과 같이 추가합니다.


	export GLX_MGA_DMA=3 
        export GLX_MGA_DMAADR=120 
	export GLX_MGA_DMASIZE=8
   

이것은 startx가 실행되기 전에 변수들이 설정되어 있어야 합니다. xdm같은것에서 동작하게 하려면 프로그램이 시작하는 곳(/etc/inittab 이나 /etc/rc스크립트)에 변수들을 정의 해줘야 합니다. 자세한 것은 Stephen Krige의 제안 을 참고하세요. Note the 'G200' token in the environment variables has since changed to 'MGA'.

GLX_MGA_DMA은 최고의 성능으로 설정하려면 3으로 설정하십시오 .

GLX_MGA_DMAADDR 의 값은 lilo.conf에서 mem= 에 쓰여진 값입니다.

GLX_MGA_DMASIZE 은 DMA버퍼로 예약된 양(MB)입니다.

그리고 export GLX_MGA_SYSTEMTEXTURE=1 로 설정하여서 주 메모리에서 텍스쳐링 할수 있게 하여 보십시오.

역자주: 현재버젼의 glx에는 환경변수이외에도 glx.conf파일로 설정을 할수 있습니다. (위치는 /etc/X11/glx.conf(빌드할때 --sysconfdir=/etc 옵션을 추가시키십시오)입니다.)

Note: riva드라이버는 현재 DMA를 지원하지 않습니다..


AGP지원을 작동시키려면?

MGA칩전용

카드의 AGP기능을 사용하려면 'gart(메인보드칩셋의 "AGP 드라이버")'를 사용하여야 합니다. 커널로 이모듈을 올리면 카드의 명령전송을 특유의 값으로 GART(graphic aperture relocation table?)레지스터에 전송합니다.

먼저 위처럼 DMA를 설정하고 검사하세요. 그것이 작동하면 cvs에서 agpgart커널 모듈을 받습니다.:

cvs -z3 checkout -P gart

그리고나서 README에 있는대로 따라하세요.

기본적으로 agp 전송을 가능하게 하려면 모듈을 올리고 GLX_MGA_DMAADR=AGP로 설정합니다. 작동이 되면 더이상 lilo.conf에 "append mem="을 넣을 필요가 없어집니다.

주의! 이코드는 매우 불안합니다!! 행운을 빕니다. 그것을 사용한다면 컴퓨터가 매우 불안해집니다.

역자주: 이 방법은 잘 적용되지 않더군요. 이 방법이 되면 agp로 동적인 메모리 할당을 할수 있을텐데... 이 방법이 적용되는 분이 있으면 연락바랍니다. :)

Note: Riva 드라이버는 현재 AGP를 지원하지 않습니다.


왜 리바 드라이버에서는 DMA/AGP 지원이 안되는 거죠?

왜냐하면 nVidia사에서 드라이버를 만들때 필요로 하는 문서를 제공하지 않았을뿐 아니라 자체적으로 드라이버를 내놓았습니다. Myers Capenter가 이렇게 말했습니다.: :

Here's where the problem lies: While nVidia "opened" up and came out with the X server and glx mod for their cards, they havn't "opened" up their specs. We can do stuff to the code they have given us sure, but the problem is we don't know how to do stuff like do AGP/DMA i/o with the cards. They havn't told us how to talk to the cards and do this. They have released their "Resource Manager" (this is what a nVidia programmer termed as in an email to the glx-dev list) which is basicly a layer of software that you can communicate to the cards and do stuff AGP/DMA i/o (or at least that is what I've gathered. Would I be wrong in saying it's kind of like Glide for the Voodoo cards, but even more low-level?) ... *BUT* ... (this is a really big but), not only have they released it as preprocessed (ie. they made it nearly impossible to be of any real use to linux hackers without spending a lot of time reverse engineering it.), but also as a kernel module that I have yet to hear of a single person being able to compile/run (I've tried too).

The linux-nvidia list is another, more evangelical, source of information on these topics.


"Bad Request"에러가 나오는데요..

메일링 리스트로 보고 해주십시오. 컴파일, 설치한 cvs버젼, 응용프로그램, 등등을 포함해서 보고해주면 됩니다.


X서버가 멎어버렸어요!

이시점에서 가능하다면 두가지일을 해주어야 합니다:

멎은 서버를 고치기

X서버 문제로 명령 프롬프트로 돌아왔다면 재수가 좋았다고 생각해야 합니다. :) 컴퓨터가 완전히 멎어버리면 리붓을 할수 밖에 없죠. 때로는 (다른 컴퓨터로) telnet 접속 을 할수있을것 입니다. 아니면 atrl-alt-del로 안전히 재부팅해야 하는경우도 있죠. 사용할수 없는 콘솔의 경우 커널을 재컴파일 하였다면 sysreq키를 이용해서 안전하게 재부팅 하여야 합니다. (linux/Documentation/sysrq.txt 를 참고)

유용한 데이터 저장

무엇이 컴퓨터를 멎게 했는지에 대한 정보를 얻으세요. 이것은 시스템설정, 모듈의 컴파일 방법 그리고 OpenGL/GLX호출등등의 복합적인 요소로 인해 시스템을 멋게 만듭니다. 현재 모듈은 /var/log/glx_debug.log라는 파일로 정보를 저장합니다. 파일의 크기가 적당하다면 이 파일(또는 관련부분)을 버그 보고시에 메일로 보내주십시오. 기본적으로 이파일은 기본정보 뿐만아니라 모듈에서 컴파일시 옵션이나 실행시 심각한 문제같은 중요한 메세지들도 가지고 있습니다 X서버가 구동되기전에 환경변수를 설정함으로서 더 많은 정보를 남길수 있습니다. 주의할점은 변수를 3이나 4로 했을때 엄청난 양의 데이터가 출력될것입니다.(전체 Vertex Arroy같은것). 이렇게까지 하고 싶지 않다면 환경변수를 1이나 2로 설정하세요. 더 자세한 정보는 glx/docs/debug.txt를 참고하세요.

또한 디버깅시에 응용프로그램 정보는 아주 유용합니다. 만약 프로그래머라면 시스템을 멎게하는 OpenGL 함수호출을 따로 분리해 둔다면 아주 유용합니다. 테스트용 프로그램 은 문제가 해결됐다는것을 보장해줄수 있습니다.

John Carmack이 이러한 디버깅시 제안을 내놓았습니다.


알려진 문제

XRacer가 스왑을 잔뜩 채우면서 서버가 죽어버립니다!

이것은 XRacer와 Mesa cvs의 호환성문제 때문입니다. Mesa 3.0을 이용하려면 "내가 쓸수있는 cvs의 안전화 버젼은 없나요?" 를 참고 하세요.

또는 직접 고쳐보세요. Xracer는 매우 큰 화면 목록을 생성시키기 때문에 현재버젼의 Mesa cvs는 이것을 제어할수가 없습니다. 자세한 것은 이 글 이나 XRacer faq를 참고하세요.


상세한 정보

어떤 플랫폼에서 지원 되나요?

Alpha, PPC, x86군의 프로세서에서 동작을 한다는 보고가 있습니다. 기본적으로 개발은 리눅스로 초점이 맞춰져 있습니다만 XFree86이 작동하는 모든 유닉스상에서 돌아가게 할것 입니다.


여기서 언급된 메일링 리스트는 어디서 가입할수 있습니까?

개발에대한 토론의 대부분은 glx-dev@lists.openprojects.net을 통해서 이루어 집니다.

메일링 리스트에 가입하려면 glx-dev info page로 가서 아래쪽에 있는 양식에 기재하십시오.

info page는 메일링 리스트 모음 과 다른 링크들도 있습니다. 지난 메세지들은 g200-dev에 저장이 됩니다.

공식 홈페이지는 http://glx.on.openprojects.net/ 입니다.

irc 채널도 열려있습니다.:irc.openprojects.net 의 #glx 채널.