[RFC] Remove AGP support from Radeon/Nouveau/TTM

Alex Deucher alexdeucher at gmail.com
Tue May 12 18:22:40 UTC 2020


On Tue, May 12, 2020 at 12:38 PM Daniel Vetter <daniel at ffwll.ch> wrote:
>
> On Tue, May 12, 2020 at 3:22 PM Alex Deucher <alexdeucher at gmail.com> wrote:
> >
> > On Tue, May 12, 2020 at 5:40 AM Karoly Balogh (Charlie/SGR)
> > <charlie at scenergy.dfmk.hu> wrote:
> > >
> > > Hi,
> > >
> > > On Tue, 12 May 2020, Rui Salvaterra wrote:
> > >
> > > > > FWIW, on my last-generation PowerBook with RV350 (IIRC), there was a
> > > > > big performance difference between AGP and PCI GART. The latter was
> > > > > sort of usable for normal desktop operation, but not so much for
> > > > > OpenGL apps (which were usable with AGP).
> > > >
> > > > I never really understood what were the issues with AGP on PowerPC
> > > > (well, Apple, the only ones I've tested) machines. I mean, did OS X also
> > > > disable AGP entirely, or did it have workarounds somewhere else on the
> > > > stack nobody was able to figure out?
> > >
> > > I don't know about OS X, but I doubt there is a major/blocker hardware
> > > issue, at least not one which affects every AGP machine.
> > >
> > > MorphOS' own Radeon driver uses the AGP facilities to some degree on all
> > > AGP PowerPC Macs supported by that OS, which is from PMac AGP Graphics
> > > (3,1) all the way up to the AGP G5 (7,3), including the various portables
> > > and the Mac mini G4. For example it can utilize it to stream video data
> > > directly from mainboard RAM, so you don't have to copy it with the CPU,
> > > allowing reasonably good 720p h264 video playback on most systems above
> > > the 1Ghz mark with the native MPlayer port. I'm sure the 3D part of the
> > > driver also use it to some degree, given the performance improvement we
> > > experienced when the AGP support was enabled (initially the system was
> > > running without it), but to which extent I can't say.
> >
> > The problem is AGP doesn't support CPU cache snooping.  Technically
> > PCI must support coherent device access to system memory.  Unsnooped
> > access is an optional feature and some platforms may not support it at
> > all.  Unfortunately, AGP required unsnooped access.  x8t generally
> > provides a way to do this, but other platforms, not so much.  I don't
> > recall to what extent PowerPC supported this.  The Linux DMA API
> > doesn't really have a way to get uncached memory for DMA so there is
> > that too.  Windows and Mac may provide a way to do this depending on
> > the platforms.  What probably should have been done on AGP boards was
> > to use both the AGP GART and the device GART.  The former for uncached
> > memory (if the platform supported it) and the latter for cached
> > memory.  That never happened.
>
> Slight correction on the dma-api side of things: The dma-api very much
> can give you uncached memory, but only on some platforms, and the
> dma-api is very opinionated about which those are. And it refuses to
> tell you whether your memory ends up being uncached or cached. That's
> all done in the name of platform portability, which is good for most
> drivers, but just too much pain for gpu drivers.

Out of curiosity how do you do that without manually messing around
with PAT or MTRRs?

Alex

>
> Otherwise all agree, agp is a mighty mess and essentially just
> crapshot outside of x86. It kinda worked for the much more static
> allocations for dri1, but with in-kernel memory managers all the cache
> flushing issues showed up big time and it all fell to pieces. Plus a
> lot of these host chipset back then where designed for the rather
> static windows gpu managers, so even on x86 the coherency issues for
> agp mode when used together with ttm or something else really dynamic
> is pretty bad because the hw just doesn't really cope and has all
> kinds of flushing troubles and races. I think the later agp chipsets
> were better.
> -Daniel
> --
> Daniel Vetter
> Software Engineer, Intel Corporation
> +41 (0) 79 365 57 48 - http://blog.ffwll.ch


More information about the dri-devel mailing list