tech-x11 archive

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

Re: X11R7'fied Xsun servers



Hello,

On Sun, 19 Jul 2020 10:24:24 +0900
Izumi Tsutsui <tsutsui%ceres.dti.ne.jp@localhost> wrote:

> > > i know you've looked at porting towards newer xorg-server
> > > and had to revert the 1.18 back to 1.10 when we upgraded
> > > to 1.20, have you had any thought on what's needed there?
> > > 
> > > Michael?  how about you? :)  
> > 
> > Not my backyard ;)
> > No objections from me either.  
> 
> I've also managed to get working Xorg 1.20 based X11R7 Xsun servers :-)
> Most API changes between 1.10 and 1.20 are trivial so that
> we can follow other clients like xnest, xwin, and xquartz etc.
>  https://github.com/tsutsui/xorg-server-Xsun/commits/xorg-server-1.20

Nice!

> As Michael explained in another mail, I see annoying part
> is XFree86 based accellaration layer like XAA.
> (I have no idea for that part either..)

Let me elaborate on that a bit.
One of the differences between XAA and EXA is that XAA works on a
uniform coordinate space with the visible screen in the top left
corner, so all pixmaps in video memory have the same pitch. EXA on the
other hand uses byte offsets and variable pitches to access off-screen
memory.
For most non-ancient PCish graphics chips that's not a problem - some
of them don't even have a concept of coordinates. Many older, at the
time often high end graphics processors treat all video memory as one
uniform coordinate space though. Which fits XAA but not EXA.
Examples: SGI crime and newport, Sun CG6 and the ffb family, GLint (
and by extension Permedia 2 ), etc.
With the SGI chips having the distinction of not providing a mappable,
linear framebuffer. You get registers and (more or less) DMA
capability, but that's it.
I added EXA 'support' for cg6, ffb and permedia2 by making sure that
all pixmaps are aligned to the global pitch, which wastes a lot of
off-screen memory but otherwise works.
Ffb is different again in that we don't really care about the drawing
engine but the ALUs built into the memory chips - they can do things
like alpha blending ( think anti-aliased font rendering and
transparency ) at bus speed ( on an Ultra 60 that's 112 MHz * 64bit, so
about 1GB/s ). Basically you memcpy an alpha map into a magic video ram
range and that draws your anti-aliased character, transparency and all.
I'll eventually get to that with xorg, the ffb kernel driver renders
alpha fonts that way...
Long story short - SGI crime and newport aren't easily ported to EXA
and can't use wsfb, so sgimips, for now at least, must use an Xserver
which still has XAA support in order to have X at all. Which means 1.10.

have fun
Michael


Home | Main Index | Thread Index | Old Index