Cannot get DRI to work

Beso givemesugarr at
Fri Dec 12 15:11:22 PST 2008

From: Beso <givemesugarr at>
Date: 2008/12/12
Subject: Re: Cannot get DRI to work
To: Hendrik Friedel <hen_mail at>

i have some observations:
1. have you compile the libdrm modules for the kernel you're using?!

2. try using the mtrr registers to map the memory. it's somehow faster
than without it
 Option        "mtrr" "on"                             #enables mtrr
3. i'd also use the following optimizations:
 Option        "AccelMethod" "EXA"                   # uses exa by
default (faster than xaa)
 Option        "DRI" "true"                                  # tells to use dri
 Option        "no_accel" "no"                            # tells to
use hw accel if possible
 Option        "DynamicClocks" "on"                  # enables the
dynamic scaling for power handling
 Option        "AccelDFS" "true"                        # i don't
know what this does but it's a remnant that

# doesn't seem to influence the fps
 Option        "EnableDepthMoves" "yes"           # enables depth
moves (i don't know if it's still used)

# another old remnant that doesn't influence fps
 Option        "RenderAccel" "true"                     # this
enables render acceleration. it needs dri and it's slow,

# but very cool as user experience.
now coming to your settings:
a. do you force the loading of the drm? the latest xorg versions and
with newer kernels
don't seem able to automatically load the drm module by themselves. i
have to force the loading
of drm and radeon at startup or have X hang. i still haven't figured
this out (the 2.6.26 introduced this
b. from your dmesg and xorg log it seems that you have a 8mb gart
aperture. in the bios you should be able to see the real value, but i
don't seem to see the agpgart aperture identified by the kernel from
the dmesg you've attached. anyway verify in the bios that your agp
aperture is really set. this link indicates how to set them in the
better way:
the kernel should find the gart aperture in the correct way after
setting this. check if you have the agpgart compiled in the kernel not
as module. you should have most likely an aperture of 32 mb or if
you're lucky of 64mb.
c. why are you forcing radeon to use the internal agp driver? try
removing that option, since if i recall well
it's the right one to use when using fglrx. this option forces the
driver not to use the kernel drm module, but
the driver one. now find out your agp version and try tweaking the
following options:

Option "AGPMask" "integer"

   This option applies to AGPv1/2. To handle an AGPv3 interface, you
will additionally need Option "AGPv3Mask".
   Value       Effect
   "0x00000001"        Disable AGP 1x (forces 2x or 4x).
   "0x00000002"        Disable AGP 2x (forces 1x or 4x).
   "0x00000004"        Disable AGP 4x (forces 1x or 2x).
   "0x00000010"        Disable fast-writes.
   "0x00000200"        Disable sidebanding.

   To combine several settings, only add the values. Let me show an
example: "0x00000216" means: force AGP 1x (disable AGP 2x and 4x),
disable fast-writes and sidebanding.

   You can check, if fast-writes has been disabled by searching your
kernel log for 'AgpCommand = hex-integer'. The second last hex digit
should be 0 (zero) if fast-writes is off, or 1 (one) if it is on.
Option "AGPv3Mask" "integer"

   This option only applies to AGPv3.
   [Important]         Important

   It is used in addition to Option "AGPMask". That means, that you
turn off fast-writes or sidebanding with Option "AGPMask".
   Value       Effect
   "0x00000001"        Disable AGP 4x (forces 8x).
   "0x00000002"        Disable AGP 8x (forces 4x).

also set the bus type to agp with the following:

Option "BusType" "string"

   This option allows to overwrite the detected bus type. Use it,
when the drivers bus detection is incorrect or when you want to force
an AGP card to PCI bus. The default situation is, that the driver
auto-detects the bus type. Possible values for this option are:
   Value       Effect
   "AGP"       AGP bus.
   "PCI"       PCI bus.
   "PCIE"      PCI Express bus (fallback: PCI).
   [Caution]   Caution

   NEVER try to force a PCI card to AGP bus.

and then try tweking with the following kernel options:

Option "KernelModuleParm" "string"

   If you change this option during runtime, you have to remove and
reload the fglrx kernel module with rmmod fglrx && modprobe fglrx (see
modprobe(8), rmmod(8)). Possible values you can provide with this
option are (separate them by semicolon):
   Parameter   Mode
   "agplock=0"         Disable AGP locked user pages.
   "agplock=1"         Enable AGP locked user pages (default).
   "agpgart=0"         Use built-in AGP GART support.
   "agpgart=2"         Same, but only if no agpgart module is loaded.
   "agpgart=3"         Disable built-in AGP GART support.
   "agp_try_unsupported=1"     Try unsupported chipsets [1].
   "debug=0"   Turn debugging off.
   "debug=1"   Turn debugging on.
   "debug=0x00040003"  ???
   "maxlockedmem=256"  Maximum locked DMA (Direct Memory Access) memory in MB.
   "noauth"    ???
   "su_flags=0xdead0003"       Recognize card as FireGL model and enable 3DNow.
[Note]  Note

If neither the built-in nor the kernel AGPGart support work, you can
use [1] as a fallback.

the following tells the driver how much memory to use:
Option "MaxGARTSize" "integer"

   Configure the ATI AGP GART (Graphic Address Remapping Table) size.

if you don't know how useinternalagp functions this is the explanation:

Option "UseInternalAGPGART" "boolean"

   Enable or disable the usage of an internal agpgart module. If you
set this option to "yes", the driver will not use the kernel's AGPGart
module. Instead it will make use of the "built-in" AGP support. The
default is "no", as long as the graphics driver's kernel module
detects the presence of an agpgart kernel module.
   [Warning]   Warning

   If you set this option to "yes" you must ensure, that you don't
have the kernel AGP support compiled in. Instead compile it as

   The AGP support in the driver may not always work, depending on
the type of motherboard and/or card that you have. But there is a
possibility, which maybe still works. Refer to the
"agp_try_unsupported=1" value for Option "KernelModuleParm".

now getting to what i'd try first the following:
Option "BusType" "AGP"
Option "MaxGARTSize" "integer" # the one you set in the bios and the
kernel finds out.
Option "UseInternalAGPGART" "no"
Option "KernelModuleParm" "agplock=0" # then try unsupported
Option "AGPv3Mask"   "0x00000001"  # disable 8x and 4x agp
Option "AGPv3Mask"  "0x00000002"
Option "AGPMask"  "0x00000010" # disable fast writes and 4x and 2x support
Option "AGPMask"  "0x00000004"
Option "AGPMask" "0x00000002"
Option        "DRI" "true"
Option        "mtrr" "on"
Option        "AccelMethod" "EXA"

then i'd add the following modes to your monitor:
1280x1024 1024x768 800x600 (i'm not sure that the 9250 agp can do 1920x1080)
then remove the ati framebuffer from the kernel since it only gives
problems and force
the vesafb at boot.
these options should do to set up a normal agp 1x mode and should
succed as far as the
kernel detects the right agp aperture. if it doesn't detect it the
problem is somewhere there.
after that tweaking the agp options should give you an improved experience.

dott. ing. beso

More information about the xorg mailing list