I noticed this note on Tim Roberts' web page for S3/Savage drivers for XFree86 (it is his driver currently in the Redhat 9.0 distribution) dated yesterday: http://probo.probo.com/pipermail/savage40/2003-July/000038.html The note points to a VIA/S3 driver for all Savage chipsets http://www.linux.org.uk/~alan/S3.zip that is supposed to be from VIA/S3 themselves. He seems to think it contains all of his patches, and to quote his note it: "* Supports all of the Savage chips * Supports video4linux for videoport/zoomvideo * Supports the Chrontel TV part on ProSavageDDR motherboards * Supports MPEG motion compensation acceleration (XvMC) and * Supports DRI and OpenGL" (It's not on that VIA/S3 appears not to have kept him in the loop on the development... anyhow...) Google and a quick read through this mailing list didn't turn up any other references to these new drivers. Also, I noted that the current XFree86 package 4.3.0-15 on Rawhide still uses the 1.1.27t version of Tim Roberts driver. So in deep ignorance of the XFree86 source code, imake and other essentials and packages I dived in to see if I could get it to work. To make a long story short, the driver seems to want XFree 4.2.0, not 4.3.0 and as much as I hacked away at it, I couldn't get the darn thing to compile. I just don't know enough about the XFree source code to be useful, so I have leave it to the experts. Sorry, I gave it a shot. Anyhow, it would be great to see 3D support for ProSavage in a release of XFree86! Best regards --- Simon ------------------------------------------------------------ If it helps, here's the long story... I grabbed the SRPM for XFree86 4.3.0 from Rawhide and did a full build in my RPM Package build tree. I noticed that it still seems to be using the Tim Roberts driver, specifically the 1.1.27t version which he now appears to consider out of date. So... after the build of XFree 4.3.0-15 was done I tried to apply the driver to the tree, but that didn't work right off the bat. I had to talk the ./install script into working on the 4.3.0 tree by changing line 448 to XVERSION=430 and then the install script's hack on the xc/config/cf/xfree86.cf failed. Reading the install script I made the changes to the config file that it seemed to be attempting (it was set up for the 4.2.0 config file and seems to have botched the update). I've attached the diff. I had to hack the includes in the Makefile under xc/programs/Xserver/hw/xfree86/drivers/savage to get the 2D driver to compile, but that's probably my ignorance of imake at play. Compiling the 3D driver didn't work at first. It is under xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel and is built with make -f Makefile.linux savage.o I got the error: drm_vm.h:459: warning: implicit declaration of function `DRM_RPR_ARG' drm_vm.h:459: parse error before "vma" I found the offending definition in drivers/char/drm/drmP.h in the kernel source code, (apparently unconditionally defined) and this file is included in drm_vm.h also unconditionally.... I just banged in the definition and continued. Also in savage.c:103 I got the error savage_drv.c:103: warning: passing arg 1 of `remap_page_range_R2baf18f2' makes pointer from integer without a cast savage_drv.c:103: incompatible type for argument 4 of `remap_page_range_R2baf18f2' savage_drv.c:103: too few arguments to function `remap_page_range_R2baf18f2' >From what I_could tell from include/linux/mm.h the function in question is unchanged for a while (I'm not sure how S3 got this to compile without the argument). It seems to be missing the first struct vm_area_struct *vma argument of remap_page_range. From the context and digging in the linux headers the argument seemed to want to be ¤t->mm->mmap, I modified the code just to put that there. I got a warning about the pointer type, which confused me. I'm wondering if the remap_page_range got redefined somewhere... I also got an error savage_drv.c: In function `savage_free_cont_mem': savage_drv.c:219: too many arguments to function `do_munmap_Re8e2cc57' but this appeared to be just an extra parameter in the line, which I changed to read: if ( do_munmap(current->mm,cont_mem.linear,size)!=0) That at least got the 3D driver to compile, albeit with scads of warnings about deprecated C. (Frankly it amazes me that there are masochists in the world who write more than 10 KSLOC systems in C and it's kin... but each his own, I suppose...) The second part of the 3D driver, which lived under xc/lib/GL/mesa/src/drv/savage _really_ didn't want to compile. My tinkering didn't get it to compile for me. The promised directory for the XvMC didn't appear under xc/lib/XvMC/hw/savage so I copied it from the LinuxDriver/XvMC directory in the supplied package tar cp -r XvMC ~/Packages/BUILD/XFree86-4.3.0/xc/lib/XvMC/hw/savage Building this, however, was a real no-go. Even a few Makefile fiddles and definitions couldn't get this to compile cleanly. diff xfree86.cf.orig xfree86.cf 393c393 < # define DriDrivers gamma i810 i830 mga r128 radeon r200 \ --- > # define DriDrivers gamma savage i810 i830 mga r128 radeon r200 \ 1368a1369,1371 > # ifndef GlxBuiltInSavage > # define GlxBuiltInSavage NO > # endif 1377a1381 > GlxBuiltInSavage || \ 1392a1397 > GlxBuiltInSavage || \ 1402a1408,1410 > # if GlxBuiltInSavage > # define DriDrivers savage > # endif _______________________________________________ xfree86-list mailing list xfree86-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/xfree86-list IRC: #xfree86 on irc.redhat.com