tech-x11 archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: Migrating ports from XFree86 to Xorg (Was: Changing default X11_TYPE from native to modular for some platforms)
Hello,
> I don't see how we can use wsfb, though. The genfb driver does not support
> the graphics card's text mode, which we need for acceptable performance
> on such slow hardware. Or am I missing something? So we still have the
> problem to make new Xorg drivers.
You can switch to graphics on ioctl(WSDISPLAYIO_SMODE, WSDISPLAYIO_MAPPED) and
back on WSDISPLAYIO_EMUL. Some drivers use it to switch the hardware to 24bit
for X while running the console in 8 bit. See cgfourteen, crmfb and ag10e for
example.
Also, vcons has a few tricks to speed up dumb framebuffers ( seriously, is the
blitter /that/ slow? ) - use VCONS_DONT_READ ( see for example the genfb,
cgfourteen and cgthree drivers ) which eliminates framebuffer reads and instead
just redraws whatever needs to be redrawn from the relevant text buffer which
gives a nice speedup on slow, dumb framebuffers.
If you run something VGA-ish in text mode you may also want to think about
implementing blitter support - Cirrus and S3 docs shouldn't be that hard to
find.
You will want to implement at least an accelerated putchar() using whatever
colour expansion scheme your hardware supports so you don't have to map the
framebuffer at all ( and VCONS_DONT_READ with an accelerated putchar() may
scroll faster than the blitter on some old hardware )
I don't know what caching modes the various 68k CPUs support, many more modern
ones support something that's still uncached but allows for write combining,
prefetching, relaxed ordering or any combination thereof, which is useful for
accessing device memory ( like framebuffers ). This can be enabled using the
BUS_SPACE_MAP_PREFETCHABLE flag in bus_space_(m)map() if your underlying pmap
supports it. I added support for this on PowerPC ( don't set the G bit for
relaxed ordering, buffering etc. ), ARM ( allow write buffering ), MIPS ( use
the 'accelerated' CCA if the CPU supports it ) - if your CPUs have anything
like this you may want to support it, any little speedup helps and on slow
hardware with dumb framebuffers it's often quite noticeable. Even if you have
hardware acceleration the Xserver will want to access video memory at some
point.
have fun
Michael
Home |
Main Index |
Thread Index |
Old Index