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