ºìÁªLinuxÃÅ»§
Linux°ïÖú

ÔÚLinuxÏ´ò¿ªDRI£¨´ÓÃôÀϰåµÄÏ̲˸××ªÔØ£©

·¢²¼Ê±¼ä:2008-01-05 20:24:51À´Ô´:ºìÁª×÷Õß:beasept
×÷ÕߣºÃôÀϰåµÄÏ̲˸×

Õâ¸öÌû×ÓÊÇÎÒ½ñÌì°²×°Compiz£¨Ò»¸öÀàËÆBeryµÄ3D×ÀÃæ»·¾³£¬µ«ÒÔºó¿ÉÄܻᱻBeryÈ¡´ú£©Ëù¾­ÀúµÄ¹ý³Ì¡£ÕâÆäÖÐÃèÊöµÄÄÚÈÝĿǰֻÕë¶ÔÎÒ×Ô¼ºµÄ¹¤×÷»·¾³£ºX24 + Fedora6 + gnome

CompizÊDZ»°üÀ¨ÔÚFedora6Öе쬵«Ô­Ê¼µÄ°²×°ÅÌ×Ô´øµÄCompiz°æ±¾Ì«µÍ£¬ÐèÒª¸üÐÂһϣ¬ÎÒϰ¹ßÏÈɾÔÙ°²×°£¬ÒÔrootÉí·ÝÔËÐУº
yum remove compiz

yum install -y compiz

¼ÇµÃÕâ¸ö½×¶ÎÒªÁªÍøµÄ¡£

ÔÚGnomeÖпªÆôCompizÊÇÕâÑù²Ù×÷µÄ£º
ϵͳ£­>Ê×Ñ¡Ï>×ÀÃæÐ§¹û
µã»÷¡°¿ªÆô×ÀÃæÐ§¹û¡±£¬µ«±¨´í£¬ËµÎÞ·¨ÔËÐС£

ÓÉÓÚCompizÊÇ»ùÓÚXGLµÄ£¬ÎÒÔÚÃüÁîÐÐÏÂÔËÐУº

glxgears

Õý³££¬³ÝÂÖÄܶ¯£¬µ«Ëٶȷdz£Âý¡£
ÓÉÓÚlinuxÉϵÄOpenGLÊÇ£ºMesa£¬¶øËüºÜÒÀÀµÓڵײãµÄDirectRenderInterface£¨DRI)ºÍÏÔ¿¨Çý¶¯¡£

ÔËÐÐÃüÁ
lsmod

ÄÜ¿´µ½
DRM:Radeon

˵Ã÷ÏÔ¿¨Çý¶¯Õý³££¬ÄÇô¾ÍÊÇDRIÓÐÎÊÌâÁË¡£
²é¿´
/var/log/Xorg.0.log

·¢ÏÖÈçÏÂÐÅÏ¢£º

¡£¡£¡£¡£
(==) RADEON(0): Using 24 bit depth buffer
(EE) RADEON(0): Static buffer allocation failed. Disabling DRI.
(EE) RADEON(0): At least 9216 kB of video memory needed at this resolution and depth.

¡£¡£¡£¡£
(WW) RADEON(0): Direct rendering disabled
¡£¡£¡£¡£

µÚ3ÐÐÃ÷ÏÔ˵Ã÷ÊÇÓÉÓÚX24ÏÔ¿¨µÄ×Ô´øÄڴ棨8M£©²»¹»µ¼Öµģ¬¶ø¶ÔÏÔ´æµÄÐèÇóÊÇÓÉ×ÀÃæÉèÖõķֱæÂʺÍÉ«²ÊÊý¾ö¶¨µÄ£¬ÎÒĿǰµÄÊÇ£º
1024x768 24bitɫ
ÎÒ°Ñ24bitÉ«»»³É16bit£¬ÖØÆôXWindow,ÎÊÌâ½â¾ö¡£
£¨ÕâÀïÒªÌáʾһÏ£¬¼ÇµÃÒÔrootÉí·ÝÊÖ¹¤ÔÚ/etc/X11/xorg.confÎļþβ²¿Ìí¼Ó£º
Section "DRI"
Group "video"
Mode 0660
EndSection

ÒÔÈ·±£ËùÓÐÓû§¶¼ÄÜʹÓÃDRI.

ÓÉÓÚDRIÕý³£ÁË£¬ÕâÊDzâÊÔ
glxgears
¿ìÁËÐí¶à£¬ÔÙ¿ªÆô
ϵͳ£­>Ê×Ñ¡Ï>×ÀÃæÐ§¹û
Ò»ÇÐÕý³£ÁË£¬¿ÉÒÔÒÔ3DµÄ·½Ê½×ª¶¯×ÀÃæ£¬ÍÏ×§´°¿ÚµÄЧ¹ûÒ²Éú¶¯¶àÁË¡£

ÕæÊÇÌ«¸ßÐËÁË£¬¸Õ²ÅÖÕÓÚÖªµÀÎÊÌâ³öÔÚÄÄÀïÁË¡£
×Ô¼º×÷ÁËÒÔϵij¢ÊÔ£º
1.[root@localhost /]# ln -s /usr/lib/dri/r300_dri.so /usr/lib/xorg/modules/dri/r300_dri.so

°´ÕÕÉÏÃæµÄ˵·¨ÓпÉÄÜÊÇÎÒµÄdriûÅäÖú㬵«ÎÒÓÃÉÏÊöÃüÁîÁ¬½ÓµÄʱºò£¬ÌáʾÎļþÒѾ­´æÔÚ£¬ËùÒÔÓ¦¸Ã²»ÊÇÕâÎÊÌâ¡£»¹ÓоÍÊÇÎҲ鿴ÁËÒ»ÏÂ/var/logÏÂÃæµÄÏà¹ØÎļþ£¬¿´ÁËһϳö´íÐÅÏ¢£¬dri²¿·ÖÊdzɹ¦¼ÓÔØÁ˵쬲»´æÔÚ˵·¾¶²»¶Ô¶ø¼ÓÔØ²»ÁË¡£

2.[root@localhost luyaotang]# LIBGL_DEBUG=verbose glxinfo
name of display: :0.0
libGL: XF86DRIGetClientDriverName: 5.2.0 r300 (screen 0)
libGL: OpenDriver: trying /usr/lib/dri/r300_dri.so
libGL error: dlopen /usr/lib/dri/r300_dri.so failed (/usr/lib/dri/r300_dri.so: undefined symbol: _glapi_get_dispatch)
libGL error: unable to find driver: r300_dri.so
libGL: XF86DRIGetClientDriverName: 5.2.0 r300 (screen 0)
libGL: OpenDriver: trying /usr/lib/dri/r300_dri.so
libGL error: dlopen /usr/lib/dri/r300_dri.so failed (/usr/lib/dri/r300_dri.so: undefined symbol: _glapi_get_dispatch)
libGL error: unable to find driver: r300_dri.so
display: :0 screen: 0
direct rendering: No
server glx vendor string: SGI
server glx version string: 1.2.

ÄÇЩ¿âÎļþµÄ¼ÓÔØ»¹ÊÇÓÐÎÊÌ⣬µ«²»ÊÇ·¾¶²»´æÔÚÎÊÌ⣬°Ù¶ÈÁËһϣ¬Ã»·¢ÏÖ£¬·´¶øÊÇGOOGLEÓз¢ÏÖ£¬ÆäʵÓÃLinuxµÄ»°£¬GoogleÊǺܱØÒªµÄ¡£ËµfglrxµÄÅäÖ㬻òÕß˵Çý¶¯±¾Éí¸úÎÒÃǵÄradeonÓгåÍ»£¬ÒªÐ¶ÔØ¡£

3.[root@localhost luyaotang]# yum remove kmod-fglrx xorg-x11-drv-fglrx
×öÁËÕâ²½Ö®ºó£¬·¢ÏÖÎÊÌâÒÀ¾É¡£

4.±§×ÅÊÔÊÔ¿´µÄ̬¶È£¬ÔÚ/etc/profile.d/ÀïÃæ°Ñ¸úfglrxÓйصÄÅäÖÃÒÆ³ö¡£
[root@localhost luyaotang]# mv /etc/profile.d/ati-fglrx.sh /btdown/

5.ÔÙÊÔÁËһϣ¬¾ÓÈ»ºÃÁË¡£
[luyaotang@localhost ~]$ glxinfo |grep direct
libGL warning: 3D driver claims to not support visual 0x4b
direct rendering: Yes
3DµÄ¼ÓËÙÒѾ­³É¹¦µÄ¿ªÆôÁË¡£

6.²âÊÔһϼÓËÙ·ÖÊý£¬²»²âÊÔ²»ÖªµÀ£¬Ò»²âЦһЦ£¬¾ÓÈ»ÓÐ3K¶à£¬ÒÔǰûÅäÖúòÅ1K¶à£º
[luyaotang@localhost ~]$ glxgears
libGL warning: 3D driver claims to not support visual 0x4b
15743 frames in 5.0 seconds = 3148.550 FPS
16727 frames in 5.0 seconds = 3345.365 FPS
16730 frames in 5.0 seconds = 3345.780 FPS
16725 frames in 5.0 seconds = 3344.950 FPS
16719 frames in 5.0 seconds = 3343.772 FPS
16729 frames in 5.0 seconds = 3345.648 FPS
16730 frames in 5.0 seconds = 3345.866 FPS
16711 frames in 5.0 seconds = 3342.129 FPS
16729 frames in 5.0 seconds = 3345.748 FPS
£¯£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£¯

/etc/X11/xorg.confÅäÖÃÎļþ
Xorg configuration created by system-config-display

Section "ServerLayout"
Identifier "single head configuration"
Screen 0 "Screen0" 0 0
InputDevice "Keyboard0" "CoreKeyboard"
EndSection

Section "Module"
Load "dri"
Load "glx"
Load "drm"
Load "type1"
Load "extmod"
EndSection

Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
Option "XkbModel" "pc105"
Option "XkbLayout" "us"
EndSection

Section "Monitor"
Identifier "Monitor0"
HorizSync 30.0 - 80.1
VertRefresh 80.5 - 90.5
Option "VendorName" "ATI Proprietary Driver"
Option "ModelName" "Generic Autodetecting Monitor"
Option "DPMS" "true"
EndSection

Section "Device"
Identifier "Videocard0"
Driver "radeon"
Option "AGPMode" "8"
Option "EnablePageFlip" "on"
Option "XAANoOffscreenPixmaps" "true"
Option "XaaNoScanlineImageWriteRect"
Option "XaaNoScanlineCPUToScreenColorExpandFill"
BusID "PCI:1:0:0"
Screen 0
Option "DesktopSetup" "single"
Option "VideoOverlay" "on"
Option "OpenGLOverlay" "off"
Option "AddARGBGLXVisuals" "True"
EndSection

Section "Screen"
Identifier "Screen0"
Device "Videocard0"
DefaultDepth 24
SubSection "Display"
Viewport 0 0
Depth 24
Modes "1024x768" "1024x768" "800x600" "800x600" "640x480" "640x480"
EndSubSection
Monitor "Monitor0"
EndSection

Section "Extensions"
Option "Composite" "Enable"
EndSection

Section "DRI"
Mode 0666
EndSection


°²×°ÎÞÎóºóÐÞ¸Äxorg.conf:
Section "Module"
# Load "GLcore"
Load "bitmap"
Load "ddc"
Load "dbe"
Load "dri"
Load "extmod"
Load "freetype"
Load "glx"
Load "int10"
Load "type1"
Load "vbe"
EndSection
----------------------------
Section "Device"
Identifier "Intel Corporation Intel Default Card"
Driver "i810"
Option "XAANoOffscreenPixmaps"
BusID "PCI:0:2:0"
EndSection
-------------------------
Section "ServerLayout"
Option "AIGLX" "true"
Identifier "Default Layout"
Screen "Default Screen"
InputDevice "Generic Keyboard"
InputDevice "Configured Mouse"
InputDevice "Synaptics Touchpad"
EndSection

ÔÙÐÞ¸Ä/etc/gdm/gdm.conf-custom:
[servers]
0=aiglx

[server-aiglx]
name=aiglx server
command=/usr/bin/Xorg-air :0
flexible=true

Í˳ö£¬ÖØÐÂÆô¶¯gdm
sudo /etc/init.d/gdm restart

OK!²»³öÒâÍâµÄ»°ÄãÄÜ¿´¼ûºÍXGLÒ»ÑùìŵÄ3D×ÀÃæÁË!
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 0 ÌõÆÀÂÛ