dri + ATI: dramatic performance slowdown

Robert Noland rnoland at FreeBSD.org
Thu Apr 23 05:11:40 UTC 2009


On Wed, 2009-04-22 at 19:38 -0700, Norbert Papke wrote:
> On April 22, 2009, Robert Noland wrote:
> > On Wed, 2009-04-22 at 17:39 -0700, Norbert Papke wrote:
> > > 0x0/0x100000000 BIOS write-back set-by-firmware active
> > > 0x100000000/0x40000000 BIOS write-back set-by-firmware active
> > > 0xc0000000/0x40000000 BIOS uncacheable set-by-firmware active
> >
> > MTRR is failing in many cases... It seems that your BIOS is doing what
> > both of my newer machines are doing and setting a global range to
> > write-back.  I'm also guessing that 0xc0000000 is your framebuffer. 
> 
> Correct.  The framebuffer starts at 0xd0000000, still covered by that last 
> range.
> 
> > We 
> > aren't allowed to overlap either of these ranges with a write combined
> > region according to the specs.  We would have to handle
> > splitting/merging regions which we don't currently do.  I looked at this
> > just the other day, but it is reasonably complex to make that work right
> > and accommodate all of the merging/splitting of regions.
> >
> > We are allowed to use PAT on either of these types of regions to enable
> > write-combining.  The drm code already does this for some allocations
> > that are not mapped to user space.  The problem with PAT is that all
> > mappings of a given region need to have the same type and we don't
> > currently have any way to specify that for user space mappings.  This is
> > fwiw, the last of Nvidia's feature requests as well.  I've started
> > looking at it, but I have a lot of learning to do on the vm system
> > still.
> 
> Thanks for taking the time to explain.  Your posts are always very 
> informative.  I am learning quite a lot about the complexities involved.
> 
> There is yet another thing I don't understand.  With other graphics cards, 
> including my G45 internal graphics adaptor, the /dev/agpgart device is 
> created.  I don't see this device with the Radeon card.  Is this expected 
> because it is not needed for PCIe?

That is correct.  If you have an agp based chipset, then the agp wriver
will attach to your chipset and give you an agpgart device.  All Intel
graphics chips emulate AGP, so you will always have an agpgart device.
With PCI-E based cards such as ATI or Nvidia, they don't use AGP.  In
those situations, we use a PCI GART (ati_pcigart.c) and map scatter
gather memory into the GART.  Nouveau is very similar in that respect.

robert.

> Cheers,
> 
> -- Norbert Papke.
>    npapke at acm.org
-- 
Robert Noland <rnoland at FreeBSD.org>
FreeBSD
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 196 bytes
Desc: This is a digitally signed message part
Url : http://lists.freebsd.org/pipermail/freebsd-stable/attachments/20090423/c1c014c6/attachment.pgp


More information about the freebsd-stable mailing list