FreeBE/stub/notes.txt

87 lines
3.5 KiB
Plaintext

______ ____ ______ _____ ______
| ____| | _ \| ____| / / _ \| ____|
| |__ _ __ ___ ___| |_) | |__ / / |_| | |__
| __| '__/ _ \/ _ \ _ <| __| / /| _ | __|
| | | | | __/ __/ |_) | |____ / / | | | | |
|_| |_| \___|\___|____/|______/_/ |_| |_|_|
Stub driver implementation notes.
This is an example driver implementation, intended as a starting point
for anyone who wants to make a real driver for a specific card. It
provides all the essential VBE/AF functions, but it runs on top of your
existing VESA driver, using VESA calls to set the video mode and then
simple software drawing functions to emulate the hardware accelerated
operations. As such it is not useful in any practical way, but it does
work: just copy the vbeaf.drv file to c:\ and you should be able to use
it from any Allegro programs, or the SciTech VBETEST utility (run
"vbetest -f" to use VBE/AF rather than regular VESA).
This driver is not portable, because it uses DPMI calls to communicate
with VESA. This is no problem as long as it is being used with Allegro,
but the binary will not work on any other platforms until you have
removed all the VESA calls and are using direct hardware access for
everything.
This driver provides "accelerated" (emulated in software, and painfully
slow, but they look like hardware functions to the calling program),
versions of the VBE/AF routines:
WaitTillIdle()
SetMix()
Set8x8MonoPattern()
Set8x8ColorPattern()
Use8x8ColorPattern()
DrawScan()
DrawPattScan()
DrawColorPattScan()
DrawRect()
DrawPattRect()
DrawColorPattRect()
DrawLine()
DrawTrap()
PutMonoImage()
BitBlt()
BitBltSys()
SrcTransBlt()
SrcTransBltSys()
If you don't want to support all these in your driver, they should be
replaced with NULL pointers so the caller will know to use their normal
drawing code instead. VBE/AF provides many more routines than these, but
Allegro only uses the ones from that list, so it would be rather futile
to implement any others.
This driver supports the FreeBE/AF extension mechanism for enabling true
protected mode access to video memory. Uncomment the definition of
NO_HWPTR at the top of driver.c if you want to return to the standard
nearptr memory access.
If you comment out the definition of USE_ACCEL at the top of driver.c,
the emulated acceleration routines will be removed, leaving only a dumb
framebuffer driver. This may be useful to see what is the bare minimum of
functions that you need to include in a VBE/AF driver.
This driver implements the FreeBE/AF FAF_CFG_FEATURES extension
mechanism, which allows the installation program to selectively disable
some of the hardware accelerated drawing routines. Comment out the
definition of USE_FEATURES at the top of driver.c if you want to remove
this capability.
There is no support for hardware cursors, 8 bit DAC modes, or the refresh
rate control functions.
The VESA implementation assumes a single 64k memory bank, so it will not
function correctly on cards with dual banks or other granularities. This
won't be a problem for the real drivers, though, because you will know
the granularity in advance. VBE/AF only allows 4k or 64k, so other sizes
must be scaled up to 64k units.
By Shawn Hargreaves
shawn@talula.demon.co.uk