Xorg/Hardware 3D acceleration guide

From Gentoo Wiki
< Xorg
Jump to:navigation Jump to:search
This page is a translated version of the page Xorg/Hardware 3D acceleration guide and the translation is 31% complete.
Outdated translations are marked like this.


이 문서는 젠투 리눅스에서 Xorg와 DRM을 사용하여 3D 가속을 동작하게 하도록 하는 과정을 안내합니다.

도입부

하드웨어 3D 가속은 무엇이며 왜 필요한가요?

하드웨어 3D 가속을 할 때 3D 렌더링은 3D 이미지를 표현하는데 값진 CPU 자원을 다루는 대신 비디오 카드의 그래픽 프로세서를 사용합니다. 하드웨어 3D 가속을 하지 않으면 CPU는, 좀 더 많은 프로세싱 성능을 수반하는 Mesa 소프트웨어 렌더링 라이브러리를 사용하여 모든 3D 영상을 그리도록 강제하므로 "소프트웨어 가속" 대신 "하드웨어 가속"으로 많이 참조합니다. Xorg가 보통 2D 하드웨어 가속을 지원하는데 반해 하드웨어 3D 가속에 대해 종종 무언가가 빠져있습니다. 3D 하드웨어 가속은 게임이나 3D 캐드, 모델링과 같은 3D 객체를 표현할 필요가 있는 상황에서 빛을 발합니다.

While Xorg typically supports 2D hardware acceleration, it often lacks hardware 3D acceleration. Three-dimensional hardware acceleration is valuable in situations requiring rendering of 3D objects such as games, 3D CAD, and modeling.

어떻게 하드웨어 3D 가속 기능을 동작시키죠?

대부분의 경우, 바이너리와 오픈소스 드라이버가 있습니다. 오픈소스 드라이버는 리눅스를 사용할 때부터 이미 마련되어 있으며 오픈소스는 근본적인 밑바탕 중 하나입니다. 가끔은 특히 그래픽 카드가 상당히 최근에 나와서 해당 기능을 지원하도록 오픈 소스 드라이버를 작성이 안되었을 경우 바이너리 드라이버가 유일한 선택이 될 수 있습니다. 바이너리 드라이버는 nVidia 드라이버용으로 x11-drivers/nvidia-drivers가 있고 AMD/ATi 카드용으로 x11-drivers/ati-drivers가 있습니다.

DRI란 무엇인가요?

DRI로 알려진 Direct Rendering Infrastructure(직접 렌더링 기반)은 안전하고 효율적인 방식으로 그래픽 하드웨어에 직접 접근할 수 있게 하는 프레임워크입니다. X 서버에 대한 변형 요소, 여러가지 클라이언트 라이브러리, 커널 드라이버가 있습니다. DRI에 대한 첫번째 주 활용 대상은 고속 OpenGL 구현체 생성이었습니다.

DRM은 무엇이며, 일반적으로 Xorg와 어떤 관련이 있나요?

DRM(Direct Rendering Manager)는 직접 렌더링에 필요한 커널 모듈을 추가하여 카드에서 지원하는 3차원 가속을 Xorg에 추가하는 "개선 요소"입니다.

목적

이 안내서는 Xorg에서 직접 렌더링 기능이 동작할 수 있게 하지 못하는 사용자를 대상으로 합니다. DRM은 다음 드라이버에서 동작합니다:

  • 3dfx
  • intel
  • matrox
  • nouveau
  • rage128
  • radeon
  • mach64
  • sis300
  • via

더 많은 내용과 문서를 보려면 DRI 홈페이지를 참조하십시오.

Xorg 설치 및 커널 설정

Xorg 설치

Xorg를 설치하여 실행할 수 있게 하려면 Xorg 설정 안내서를 읽으십시오.

커널 설정하기

칩셋을 찾아 활성화하십시오.

root #emerge --ask pciutils
root #lspci | grep AGP
# 00:01.0 PCI bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 03)

하드웨어가 다르면 출력 내용이 일치하지 않을 수도 있습니다.

Certain kernel options will be required, others may cause problems. Hardware specific resources concerning which kernel option for which hardware exist within this wiki and elsewhere.

칩셋을 커널에서 지원하지 않으면 커널 매개 변수로 agp=try_unsupported 전달하여 처리할 수 있습니다. 이 방법은 AGP 지원에 대한 인텔 범용 루틴에서 사용합니다. 이 매개 변수를 추가하려면 부트로더 설정 파일을 편집하십시오.

대부분 이렇지 않더라도 커널은 이 옵션을 포함할 것입니다. 이 방식은 표준 sys-kernel/gentoo-sources 커널을 사용할때 설정하는 옵션입니다.

root #ls -l /usr/src/linux
lrwxrwxrwx 1 root root 22 2007-02-14 20:12 /usr/src/linux -> linux-2.6.18-gentoo-r4

/usr/src/linux를 현재 커널에 링크했는지 확인하십시오.

root #eselect kernel list
root #eselect kernel set
root #cd /usr/src/linux
root #make menuconfig
root #cd /usr/src/linux
root #make menuconfig

Most, if not all, kernels should have these options set. In any case, options labeled <M> are compiled as modules and loaded-as-necessary, thus being very unlikely to break anything if not required.

This was configured using a standard sys-kernel/gentoo-sources kernel.

커널 하드웨어 3D 가속 옵션
Processor type and features --->
<*> MTRR (Memory Type Range Register) support
Device drivers --->
   Graphics support --->
   <M> /dev/agpgart (AGP Support) --->
      (The agpgart option is not present on 64-bit kernels; just choose your chipset support.)
      <M> Intel 440LX/BX/GX, I8xx and E7x05 support
      (Enable your chipset instead of the above.)
   <M> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) --->
      <M> (Select your graphics card from the list)

커널 컴파일 및 설치

root #make && make modules_install

grub.conf 또는 lilo.conf 설정과 LILO 사용시 /sbin/lilo 실행을 잊지 마십시오.

When using LILO, issue:

root #lilo

When using GRUB2, run:

root #grub-mkconfig -o /boot/grub/grub.cfg

video 그룹에 사용자 추가

다음, 핸드북에 설명한 바와 같이 video 그룹에 사용자를 추가하십시오:

root #gpasswd -a username video

다이렉트 렌더링 설정

Xorg 설정

원하는 만큼 video그룹으로의 사용자 추가로 충분히 다이렉트 렌더링을 활성화 합니다. 그러나, /etc/X11/xorg.conf.d/ 에 설정 파일을 만들여야 할 수도 있습니다. 원하는대로 이름을 붙일 수 있습니다. 그냥 .conf로 끝나는지 확인하면 됩니다. 원하는 텍스트 편집기를 열고 언급한 디렉터리 안에 파일을 만드십시오:

파일 /etc/X11/xorg.conf.d/10-dri.conf
Section "Device"
  Driver "radeon"
EndSection
Section "dri"
  Mode 0666
EndSection

radeon을 여러분이 보유한 드라이버 이름으로 바꾸십시오.

/etc/conf.d/modules 바꾸기

시스템을 시작할 때 모듈을 자동으로 불러오는지 확인하는 /etc/conf.d/modules 파일에 사용하는 카드의 모듈이름을 추가해야 합니다.

파일 /etc/conf.d/modules
modules="intel-agp" # Substitute with your driver
참고
agppart를 모듈로 컴파일하면 /etc/conf.d/modules에 추가해야 합니다.

3D 가속 시험

새 커널로 재부팅

새 커널로 재부팅하고 일반 사용자로 로그인하십시오. 이제 다이렉트 렌더링 기능이 들어갔는지 얼마나 잘 동작하는지 볼 차례입니다. glxinfoglxgearsx11-apps/mesa-progs 패키지의 일부이므로, 언급한 명령을 실행해보기 전에 이 패키지를 설치했는지 확인해보십시오.

user $startx

드라이버 또는 agppart에 대해 모듈러 컴파일 해도 모듈을 불러올 필요는 없습니다. 자동으로 불러옵니다.

user $glxinfo | grep rendering
direct rendering: Yes

"No"라고 답하면, 3D 가속 기능을 보유하지 않은것으로 간주됩니다.

user $glxgears

기본 화면 크기 상에서 초당 프레임을 시험하심시오. DRM을 설정하기 전보다 확실히 숫자가 높아야 합니다. CPU가 가능한한 대기상태에 있을 때까지 충분히 수행하십시오.

참고
FPS 값은 화면 재생율에 따라 제한될 수 있으므로, glxgears에서 70-100 FPS 정도의 결과를 출력할 수 있음을 참고하십시오. games-fps/ut2004-demo 또는 다른 3D 게임이 실제 성능 결과를 보여주므로 벤치마킹 도구로서 더 적합합니다.

최상의 직접 렌더링 결과 가져오기

성능 또는 기타 다른 이유로 더 많은 기능을 설정하려면, DRI 웹사이트에서 기능표를 참고하거나 소스포지의 기능 목록을 참고하십시오.

문제 해결

동작하지 않는군요. 렌더링이 안되는데 왜 그러는지 모르겠어요.

X 서버를 시작하기 전에 modprobe radeon를 실행해보십시오(radeon 대신 다른 드라이버 이름으로 바꾸십시오). 또한 agppart를 모듈이 아닌 커널에 포함하는 형식으로 빌드해보십시오.

startx 를 실행하면 다음 오류가 뜨는데요: "[drm] failed to load kernel module agppart"

agppart를 모듈 형태로가 아니라 커널에 포함했기 때문입니다. 문제가 없다면 무시하십시오.

라데온 카드가 있는데요. TV-Out 기능을 쓰고 싶어요.

초기에 GATOS 프로젝트에서 개발한 드라이버는 Xorg 코드베이스에 통합되었습니다. TV-Out 기능에 대해 특별히 취해야 할 조치는 없습니다. x11-drivers/xf86-video-ati 드라이버만으로도 잘 동작합니다.

동작이 안되는데요. 가장 최근에 나온 최신 카드인데 지원 목록을 뒤져봐도 나오질 않는군요.

바이너리 드라이버를 사용해보십시오. AMD 카드라면 ati-drivers를 사용하십시오. http://support.amd.com/us/gpudownload/Pages/index.aspx에 목록이 있습니다. 지원하지 않는다면 fbdev를 사용하십시오. 느리긴 하지만 동작할 것입니다.

PCI 카드가 있는데 동작을 안하네요. 도와주세요!

/etc/X11/xorg.conf.d/에 설정 파일을 만드십시오. .conf로 끝나는 파일 이름으로 이름을 붙이십시오. 다음 내용을 추가하십시오:

파일 /etc/X11/xorg.conf.x/10-pcimode.confAdding ForcePCI Mode
Section "Device"
  Option "ForcePCIMode" "True"
EndSection

참고 자료


This page is based on a document formerly found on our main website gentoo.org.
The following people contributed to the original document: Donnie Berkholz (dberkholz) , peesh, nightmorph
They are listed here because wiki history does not allow for any external attribution. If you edit the wiki article, please do not add yourself here; your contributions are recorded on each article's associated history page.