Initial code on a X regression and/or validation tool
pcpa at mandriva.com.br
pcpa at mandriva.com.br
Thu Nov 1 21:13:34 PDT 2007
I am working on a tool based on the code I wrote for xf86cfg some years ago,
but hopefully go further this time, and make a true validation tool for drivers
and also add some tests for things that don't have yet some formal testing
tool, like render, randr, composite, argb cursors, etc
One of my goals is also to try to develop an easy tool to create regression
testing tools (one of the reasons is that any WindowMaker user probably knows
how broken is Xorg 1.3.0 and newer with WindowMaker, but I believe several
other applications don't work correctly, this is running with a vesa driver
i.e. no accel, but same/similar problems happens with other drivers).
I believe Xorg staff did run xtest and make sure 1.3.0 and 1.4.0 are
compliant, (personally, I have run xtest like 2 our 3 times in my X "hacker"
career...) so, I believe the problems I have noticed are a regression due to
some combination of requests, or the like, but still breaking code that used
to work on the past.
The symbols listed below are the ones I needed to wrap to be able to load
the driver and let it run the very initial setup. Also, for the moment I
only recursed on /usr/lib/xorg/modules/drivers
I will work on other modules later, as well as either trying to run it past
the very basic initial setup, or maybe a modified XServer with
"validation/regression" code on it, to possibly better inspect what the module
is doing, and what it requires. Note that the idea is not to say what a driver
can or cannot do, but to have a tool that should make it easier to detect
problems, and hopefully, not shipping such drivers/modules because a developer
would have a tool to detect the problem.
This is a Mandriva cooker computer. Not all packages are from Xorg.
viaarena is a version I built from the latest (as of september 2007) driver
available at www.viaarena.com, compiled only with the available sources, i.e.
not linking with any of the provided pre compiled libraries (just to add to
the mess that is support for via chipsets...)
Modules failing to load:
ztv -> no ztvModuleData
apm -> not updated, abi mismatch with 1.4.0
fglrx/fglrx -> not updated, abi mismatch with 1.4.0
fglrx-hd2000/fglrx -> not updated, abi mismatch with 1.4.0
cirrus_alpine -> loads but needs adding symbols to loader program
due to several xf86-video-cirrus/src/cir_shadow.c
missing symbols.
The fglxr drivers, besides not loading, still needs some symbols. Probably
I will also need to add some magic to prevent exit/abort, etc
The not updated modules are probably Mandriva's packagers fault (that includes
me :-)
This is basically xorg 1.4.0 with a few patches (most of which are already
in git head).
Currently the tool has a configure option to point to the root of a
xserver build, and links with only libloader.a from the tree, but needs a few
headers only available in the build tree. Also, not listing ErrorF, Xalloc,
and similar wrapped funcions because they are also needed by the loader itself.
------------------------------------------------------------------------
Functions wrapped:
dix/extension.c:
StandardMinorOpcode()
sisusb sis vmware
dix/dixutils.c:
NoopDDA()
atimisc
xf86-video-cirrus/src/cir_shadow.c:
cirRefreshArea8()
cirrus_alpine
cirPointerMoved()
cirrus_alpine
cirRefreshArea()
cirrus_alpine
cirRefreshArea16()
cirrus_alpine
cirRefreshArea24()
cirrus_alpine
cirRefreshArea32()
cirrus_alpine
mi/mipolypnt.c:
miPolyPoint()
nv
miZeroPolyArc()
nv
hw/xfree86/common/xf86Helper.c
xf86AddDriver()
amd imstt ark chips cirrus cyrix dummy fbdev glint i128 i740
sisusb mga neomagic newport nsc nv openchrome rendition s3
s3virge savagesiliconmotion sis vesa sunbw2 suncg14 suncg3
suncg6 sunffb sunleo suntcx tdfx tga trident tseng v4l vga
via vmware voodoo avivo intel viaarena radeonhd
NOT REQUIRING SYMBOL:
atimisc r128 radeon cirrus_alpine cirrus_laguna ch7017
ch7xxx ivch sil164 tfp410
xf86ServerIsOnlyDetecting()
atimisc r128 radeon cirrus_alpine cirrus_laguna
/* This is probably the reason of cirrus_alpine mess
as the wrapper returns True, need to check */
xf86LoaderRefSymLists()
ati atimisc r128 radeon
hw/xfree86/modes/xf86Crtc.c
xf86SaveScreen()
intel
------------------------------------------------------------------------
Symbols wrapped:
dix/globals.c:
serverGeneration
imstt i128 newport vesa sunbw2 suncg14 suncg3 suncg6 sunffb
sunleo suntcx tseng vga voodoo radeonhd
currentTime
r128 chips glint i740 sisusb mga neomagic nsc savage
siliconmotion tdfx trident
monitorResolution
sis
screenInfo
sisusb v4l
WindowTable
amd dummy intel
DPMSEnabledSwitch
fglrx/fglrx fglrx-hd2000/fglrx
DPMSEnabled
fglrx/fglrx fglrx-hd2000/fglrx
globalSerialNumber
fglrx/fglrx fglrx-hd2000/fglrx
dix/main.c
PixmapWidthPaddingInfo
vmware
dix/window.c
savedScreenInfo
fglrx/fglrx fglrx-hd2000/fglrx
screenIsSaved
fglrx/fglrx fglrx-hd2000/fglrx
mi/micmap.c
miInstalledMaps
fglrx/fglrx fglrx-hd2000/fglrx
mi/miregion.c
miEmptyData
ztv apm r128 radeon chips glint i740 mga neomagic nsc
openchrome s3 s3virge savage siliconmotion sis tdfx trident
via intel
miEmptyBox
ztv apm r128 radeon chips i740 neomagic openchrome s3 s3virge
savage siliconmotion sis tdfx trident via intel
miBrokenData
fglrx/fglrx fglrx-hd2000/fglrx
mi/miscrinit.c
miZeroLineScreenIndex
amd tga
os/utils.c
noPanoramiXExtension
sis vmware viaarena
randr/randr.c
rrPrivIndex
amd
render/picture.c
PictureScreenPrivateIndex
vmware intel
hw/xfree86/common/xf86Configure.c
ConfiguredMonitor
apm r128 radeon cirrus cyrix i740 mga neomagic nsc rendition
s3virge savage siliconmotion sis tdfx trident intel
hw/xfree86/common/xf86Globals.c
xf86Screens
**pretty much all drivers** did not list...
byte_reversed
vga
xf86ScreenIndex
i128 mga nsc
xf86ConfigDRI
glint
hw/xfree86/common/xf86Bus.c
resVgaShared
fbdev intel
resVgaIoShared
imstt ark atimisc chips mega s3virge savage sis tdfx
resVgaMemShared
imstt ark tseng
resVgaExclusive
vesa vga
hw/xfree86/modes/xf86Crtc.c
xf86CrtcConfigPrivateIndex
radeon nv avivo intel
hw/xfree86/os-support/shared/libc_wrapper.c
xf86errno
viaarena
xf86-video-cirrus/src/cir_driver.c
CIRPciChipsets
cirrus_alpine
------------------------------------------------------------------------
I would like to know if someone have been working on a similar idea, or
have sugestions, etc.
More information about the xorg
mailing list