Subject: Re: modular-xorg-server-1.2.0: additional patches
To: None <pkgsrc-users@netbsd.org>
From: Blair Sadewitz <blair.sadewitz@gmail.com>
List: pkgsrc-users
Date: 01/25/2007 12:52:05
Wow, I never would've guessed that it wasn't supposed to link against
pthread, as its configure script seems to explicitly try to do this;
am I missing something here?

One more thing that I've noticed is that xorg-server does not include
any sane CPPFLAGS/LDFLAGS for GL/GLX.  It tries to glean them from
glproto.pc and glitz-glx.pc (?), but the default distribution never
provides them.  I do not understand the logic of this.

  I'm unclear on how necessary it is for it to build Mesa into the
server though; I always assumed it was what was supposed to happen
simply because the monolithic distributions did it.  If we are to
build mesa into the server, at the very least we need to pass
-D__GLX_ALIGN64 where appropriate to GLX_CFLAGS, right (is there a
GLX_CPPFLAGS?).  I noticed that our Mesa package doesn't use
__GLX_ALIGN64, but does add a check for _LP64.  However, it looks to
me like there are a few bits of code that are enabled by __GLX_ALIGN64
that aren't included if _LP64 alone is defined.  Both XFree86 and Xorg
6.9.0 built GLX with this flag on amd64.  Is this not relevant when
not building it into the server?

I will get you the build log with -Wall soon, and appreciate your
offer to look through it, as I was going to build it with -Werror and
try to fix the stuff myself, but you would be a lot more apt to do
this than I.  I really dont understand why the developers chose in
some places to define their own int types; it is utterly insane.  The
C99 int types aren't there just to look pretty. Sure, their code may
work on linux only, but then why bother doing it at all?  Must be
along the lines of the infamous linus torvalds "kernel debuggers are
for the proliteriat" logic.

Insofar as I understand the issue, x86emu is necessary on non-i386
platforms to use many video cards, however dysfunctional, antiquated,
and/or nonexistent the int10 layer's support for extended BIOS calls
may be.  For me (using the i810 driver with the 945G), the only thing
it gets right is VBE 2.0 calls.  The rest are deemed "unsupported",
and so delightfully my 80x50 text mode is not restored when the server
exits.  I once used server 1.1.99.903 with the CVS version of
xf86-video-intel and the 80x50 mode was restored, but alas it seems my
joy was short-lived. :(  I wonder whether this problem is due to
x86emu itself or 64-bit problems, but my money's on the former.  I
wonder if windows XP 64-bit uses a real-mode emulator ...

I think the best version of x86emu is actually in LinuxBIOSv2; theirs
even has support for most standard PC BIOS interrupts/calls, not just
int10 (it is a BIOS, after all).
I have gotten so frustrated with this issue that I've tried to put
this into the kernel in order to wrap i386_vm86() around it, but it's
a lot harder than it looks for someone with my level of experience. ;)
 I think for a seasoned developer, though, this might only take a day
or so of work or less.

--Blair

--
Support WFMU-FM: free-form radio for the masses!

<http://www.wfmu.org/>
91.1 FM Jersey City, NJ
90.1 FM Mt. Hope, NY

"The Reggae Schoolroom":
<http://www.wfmu.org/playlists/RS/>