Linux DRI

From shankerbalan.net
Jump to: navigation, search

Contents

Overview

Linux is the primary development platform for DRI. Nvidia and ATI provide binary drivers for their range of graphics chipsets which usually outporform their Open Source equivalants.

However, in terms of ease of configuration and stability, the DRI drivers work better for me.

OS Environment

  • Fedora Core 5

Hardware

  • HP Compaq nc6000 with ATI MOBILITY RADEON 9600/9700 (M10/M11 4E50)
  • Intel 440BX with ATI Rage r128

Using the ATI FirelGL Drivers From Livna

Livna is a 3rd party yum repository which provides binary only drivers from Nvidia and ATI in a packaged form. See http://rpm.livna.org/livna-switcher.html

Add the repo

sudo rpm -ivh http://rpm.livna.org/livna-release-5.rpm

Install Driver

yum install kmod-fglrx
sudo /usr/sbin/ati-fglrx-config-display enable
sudo reboot

dmesg

[fglrx] Internal AGP support requested, but kernel AGP support active.
[fglrx] Have to use kernel AGP support to avoid conflicts.
[fglrx] AGP detected, AgpState   = 0x1f000217 (hardware caps of chipset)
agpgart: Found an AGP 2.0 compliant device at 0000:00:00.0.
agpgart: Putting AGP V2 device at 0000:00:00.0 into 4x mode
agpgart: Putting AGP V2 device at 0000:01:00.0 into 4x mode
[fglrx] AGP enabled,  AgpCommand = 0x1f000314 (selected caps)
[fglrx] total      GART = 268435456
[fglrx] free       GART = 252440576
[fglrx] max single GART = 252440576
[fglrx] total      LFB  = 28307456
[fglrx] free       LFB  = 22016000
[fglrx] max single LFB  = 22016000
[fglrx] total      Inv  = 0
[fglrx] free       Inv  = 0
[fglrx] max single Inv  = 0
[fglrx] total      TIM  = 0

Problems

[shanu@faith ~]$ fglrxinfo 
libGL: XF86DRIGetClientDriverName: 8.25.18 fglrx (screen 0)
libGL: OpenDriver: trying /usr/lib/dri/fglrx_dri.so
libGL error: dlopen /usr/lib/dri/fglrx_dri.so failed (/usr/lib/dri/fglrx_dri. so: undefined symbol: __glXFindDRIScreen)
libGL error: unable to find driver: fglrx_dri.so
display: :0.0  screen: 0
OpenGL vendor string: Mesa project: www.mesa3d.org
OpenGL renderer string: Mesa GLX Indirect
OpenGL version string: 1.2 (1.5 Mesa 6.4.2)

Screw it, use r300 from CVS DRI.

r300

As of this time (June 2006), ATI Radeon r300 drivers dont ship with FC5. Compile it from CVS as described in http://dri.freedesktop.org/wiki/Building

Install Kernel Headers

  • Need to compule the drom kernel modules
sudo yum install -y kernel-devel

CVS Checkout

$ mkdir ~/cvs/ && cvs ~/cvs/
$ cvs -d:pserver:anonymous@anoncvs.freedesktop.org:/cvs/dri login
$ cvs -z3 -d:pserver:anonymous@anoncvs.freedesktop.org:/cvs/dri co drm
$ cvs -z3 -d:pserver:anonymous@anoncvs.freedesktop.org:/cvs/mesa co Mesa

Compile

libdrm

$ cd drm
$ ./autogen.sh --prefix=/usr
$ make && sudo make install
  • Install to /usr directly

Mesa GL

$ sudo yum install -y mesa-libGL-devel libdrm-devel libXext-devel libXxf86vm-devel imake expat-devel
$ sudo yum install -y libXmu-devel gcc-c++ freeglut-devel libXt-devel libXi-devel 
$ cd ~/cvs/Mesa/
$ make linux-dri-x86
$ sudo make install
$ sudo cp lib/r300_dri.so /usr/lib/dri/

DRM Kernel Modules

$ cd ~/cvs/drm/linux-core
$ make DRM_MODULES="radeon"
$ Building modules, stage 2.
[..]
 MODPOST
 CC      /home/shanu/cvs/drm/linux-core/drm.mod.o
 LD [M]  /home/shanu/cvs/drm/linux-core/drm.ko
 CC      /home/shanu/cvs/drm/linux-core/radeon.mod.o
 LD [M]  /home/shanu/cvs/drm/linux-core/radeon.ko
make[1]: Leaving directory `/usr/src/kernels/2.6.16-1.2122_FC5-i686'

$ sudo cp -v *.ko /lib/modules/`uname -r`/kernel/drivers/char/drm
`drm.ko' -> `/lib/modules/2.6.16-1.2122_FC5/kernel/drivers/char/drm/drm.ko'
`radeon.ko' -> `/lib/modules/2.6.16-1.2122_FC5/kernel/drivers/char/drm/radeon.ko'
$ make clean

dmesg

[shanu@faith ~]$ uname -r
2.6.16-1.2122_FC5

[shanu@faith linux-core]$ dmesg | grep drm
[drm] Initialized drm 1.0.1 20051102
[drm] Initialized radeon 1.25.0 20060524 on minor 0: 
[drm] Setting GART location based on old memory map
[drm] Loading R300 Microcode
[drm] writeback test succeeded in 2 usecs
[drm] Loading R300 Microcode

glxinfo

[shanu@faith ~]$ LIBGL_DEBUG=verbose glxinfo
name of display: :0.0
libGL: XF86DRIGetClientDriverName: 4.0.3 r300 (screen 0)
libGL: OpenDriver: trying /usr/lib/dri/r300_dri.so
drmOpenByBusid: Searching for BusID pci:0000:01:00.0
drmOpenDevice: node name is /dev/dri/card0
drmOpenDevice: open result is 4, (OK)
drmOpenByBusid: drmOpenMinor returns 4
drmOpenByBusid: drmGetBusid reports pci:0000:01:00.0
libGL error: 
Can't open configuration file /etc/drirc: No such file or directory.
libGL error: 
Can't open configuration file /home/shanu/.drirc: No such file or directory.
Mesa: CPU vendor: GenuineIntel
Mesa: CPU name:         Intel(R) Pentium(R) M processor 1.60GHz
Mesa: MMX cpu detected.
Mesa: SSE cpu detected.
Mesa: Not testing OS support for SSE, leaving enabled.
display: :0  screen: 0
direct rendering: Yes
server glx vendor string: SGI
server glx version string: 1.2
server glx extensions:
   GLX_ARB_multisample, GLX_EXT_visual_info, GLX_EXT_visual_rating, 
   GLX_EXT_import_context, GLX_OML_swap_method, GLX_SGI_make_current_read, 
   GLX_SGIS_multisample, GLX_SGIX_hyperpipe, GLX_SGIX_swap_barrier, 
   GLX_SGIX_fbconfig
client glx vendor string: SGI
client glx version string: 1.4
client glx extensions:
   GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_import_context, 
   GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_EXT_texture_from_drawable,
   GLX_MESA_allocate_memory, GLX_MESA_swap_control, 
   GLX_MESA_swap_frame_usage, GLX_OML_swap_method, GLX_OML_sync_control, 
   GLX_SGI_make_current_read, GLX_SGI_swap_control, GLX_SGI_video_sync, 
   GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer, 
   GLX_SGIX_visual_select_group
GLX version: 1.2
GLX extensions:
   GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_import_context, 
   GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_MESA_swap_control, 
   GLX_MESA_swap_frame_usage, GLX_OML_swap_method, GLX_SGI_video_sync, 
   GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_visual_select_group
OpenGL vendor string: Tungsten Graphics, Inc.
OpenGL renderer string: Mesa DRI R300 20040924 AGP 1x x86/MMX/SSE2 TCL
OpenGL version string: 1.3 Mesa 6.5.1
OpenGL extensions:
   GL_ARB_fragment_program, GL_ARB_imaging, GL_ARB_multisample, 
   GL_ARB_multitexture, GL_ARB_texture_border_clamp, 
   GL_ARB_texture_compression, GL_ARB_texture_cube_map, 
   GL_ARB_texture_env_add, GL_ARB_texture_env_combine, 
   GL_ARB_texture_env_crossbar, GL_ARB_texture_env_dot3, 
   GL_MESAX_texture_float, GL_ARB_texture_mirrored_repeat, 
   GL_ARB_texture_rectangle, GL_ARB_transpose_matrix, 
   GL_ARB_vertex_buffer_object, GL_ARB_vertex_program, GL_ARB_window_pos, 
   GL_EXT_abgr, GL_EXT_bgra, GL_EXT_blend_color, 
   GL_EXT_blend_equation_separate, GL_EXT_blend_func_separate, 
   GL_EXT_blend_minmax, GL_EXT_blend_subtract, GL_EXT_clip_volume_hint, 
   GL_EXT_compiled_vertex_array, GL_EXT_convolution, GL_EXT_copy_texture, 
   GL_EXT_draw_range_elements, GL_EXT_histogram, GL_EXT_packed_pixels, 
   GL_EXT_polygon_offset, GL_EXT_rescale_normal, GL_EXT_secondary_color, 
   GL_EXT_separate_specular_color, GL_EXT_stencil_wrap, GL_EXT_subtexture, 
   GL_EXT_texture, GL_EXT_texture3D, GL_EXT_texture_edge_clamp, 
   GL_EXT_texture_env_add, GL_EXT_texture_env_combine, 
   GL_EXT_texture_env_dot3, GL_EXT_texture_filter_anisotropic, 
   GL_EXT_texture_lod_bias, GL_EXT_texture_mirror_clamp, 
   GL_EXT_texture_object, GL_EXT_texture_rectangle, GL_EXT_vertex_array, 
   GL_APPLE_packed_pixels, GL_ATI_blend_equation_separate, 
   GL_ATI_texture_env_combine3, GL_ATI_texture_mirror_once, 
   GL_IBM_rasterpos_clip, GL_IBM_texture_mirrored_repeat, 
   GL_INGR_blend_func_separate, GL_MESA_pack_invert, GL_MESA_ycbcr_texture, 
   GL_MESA_window_pos, GL_NV_blend_square, GL_NV_light_max_exponent, 
   GL_NV_texture_rectangle, GL_NV_texgen_reflection, GL_NV_vertex_program, 
   GL_OES_read_format, GL_SGI_color_matrix, GL_SGI_color_table, 
   GL_SGIS_generate_mipmap, GL_SGIS_texture_border_clamp, 
   GL_SGIS_texture_edge_clamp, GL_SGIS_texture_lod
glu version: 1.3
glu extensions:
   GLU_EXT_nurbs_tessellator, GLU_EXT_object_space_tess

  visual  x  bf lv rg d st colorbuffer ax dp st accumbuffer  ms  cav
id dep cl sp sz l  ci b ro  r  g  b  a bf th cl  r  g  b  a ns b eat
----------------------------------------------------------------------
0x23 24 tc  0 32  0 r  .  .  8  8  8  8  0 24  0  0  0  0  0  0 0 None
0x24 24 tc  0 32  0 r  .  .  8  8  8  8  0 24  8  0  0  0  0  0 0 None
0x25 24 tc  0 32  0 r  .  .  8  8  8  8  0 24  0 16 16 16 16  0 0 Slow
0x26 24 tc  0 32  0 r  .  .  8  8  8  8  0 24  8 16 16 16 16  0 0 Slow
0x27 24 tc  0 32  0 r  y  .  8  8  8  8  0 24  0  0  0  0  0  0 0 None
0x28 24 tc  0 32  0 r  y  .  8  8  8  8  0 24  8  0  0  0  0  0 0 None
0x29 24 tc  0 32  0 r  y  .  8  8  8  8  0 24  0 16 16 16 16  0 0 Slow
0x2a 24 tc  0 32  0 r  y  .  8  8  8  8  0 24  8 16 16 16 16  0 0 Slow
0x2b 24 dc  0 32  0 r  .  .  8  8  8  8  0 24  0  0  0  0  0  0 0 None
0x2c 24 dc  0 32  0 r  .  .  8  8  8  8  0 24  8  0  0  0  0  0 0 None
0x2d 24 dc  0 32  0 r  .  .  8  8  8  8  0 24  0 16 16 16 16  0 0 Slow
0x2e 24 dc  0 32  0 r  .  .  8  8  8  8  0 24  8 16 16 16 16  0 0 Slow
0x2f 24 dc  0 32  0 r  y  .  8  8  8  8  0 24  0  0  0  0  0  0 0 None
0x30 24 dc  0 32  0 r  y  .  8  8  8  8  0 24  8  0  0  0  0  0 0 None
0x31 24 dc  0 32  0 r  y  .  8  8  8  8  0 24  0 16 16 16 16  0 0 Slow
0x32 24 dc  0 32  0 r  y  .  8  8  8  8  0 24  8 16 16 16 16  0 0 Slow
Personal tools