New ProSavage VIA KN/M266 Chipset Drivers with 3D/OpenGL/DRISupport ?!

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

  &current->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

[Red Hat General]     [Red Hat Watch]     [Red Hat Development]     [Kernel Development]     [Yosemite Camping]

  Powered by Linux