pciaccess conversion the revenge..

pcpa at mandriva.com.br pcpa at mandriva.com.br
Mon Mar 10 18:46:50 PDT 2008


Quoting Dave Airlie <airlied at gmail.com>:

> okay I've just finished another big run of pciaccess conversion.

  The apm driver, you just changed, needs at least some kind of
check to build conditionally based on the dev privates changes:
-%<-
    if (ApmGeneration != serverGeneration) {
	if ((ApmPixmapIndex = AllocatePixmapPrivateIndex()) < 0)
	    return FALSE;
	ApmGeneration = serverGeneration;
    }

    if (!AllocatePixmapPrivate(pScreen, ApmPixmapIndex, sizeof(ApmPixmapRec)))
	return FALSE;
-%<-
in src/apm_driver.c:ApmScreenInit() or it will not even start due to
the missing symbols AllocatePixmapPrivateIndex and AllocatePixmapPrivate.

  I feel it will work if you just #if 0 that code as it would only
be used if XF86RUSH is defined (and apm_rush.c would be compiled), but
I think it is never defined, and the other code that uses this in
apm_accel.c is already #if 0'ed, see:
-%<-
extern int	ApmPixmapIndex;
#define APM_GET_PIXMAP_PRIVATE(pix)\
	((ApmPixmapPtr)(((PixmapPtr)(pix))->devPrivates[ApmPixmapIndex].ptr))
-%<-
in src/apm.h.

> I've made glint build, I actually don't think I made glint work, the
> whole slot claiming vs entity info stuff is just messy as hell in
> glint, so it builds I can pretty much only pray it runs,

  There are no unresolved symbols, so unless it tries to do something
like writing to some bad pointer, it should either work or refuse to
start. Actually, assuming a build with -fvisibilty=hidden, and assuming
the previous patches I posted are aplied, these symbols must also be
_X_EXPORT'ed now:
  fbdevHWFreeRec
  XAAPolyLines
  XAAPolySegment
  TIramdacCalculateMNPForClock
  fbdevHWSwitchMode
  TIramdacLoadPaletteWeak
  fbBres
  IBMramdac526CalculateMNPCForClock
  IBMramdac640CalculateMNPCForClock
  TIramdacProbe
but they are defined in the "sdk".

> so you can consider a lot of these conversions to be just making noise
> to wake up the people who own this hardware and can thus test and
> perhaps fix it.

  I did some minor work on it, but gave up because of this same reason,
i.e. not being able to test the changes.

  I was also looking at the possibility, and wrote some initial code, not
yet functional, to create a scanpci.so and xf86ansic.so modules, that could
be installed somewhere like /usr/lib/xorg/modules/compat, just as a way to
allow binary compatibility with old modules, and possibly compile new modules
using an interface that exports the old api, using libpciaccess, and
those modules could just be loaded, adding a Load in the Module section in
xorg.conf. But the "scanpci" module would not be trivial to write...

> Dave.

Paulo






More information about the xorg mailing list