[net.graphics] What is "bitblt"?

gnu@l5.uucp (John Gilmore) (12/30/85)

In article <1038@utcs.uucp>, onn@utcs.uucp (Brian Onn) writes:
> In article <976@brl-tgr.ARPA> SECRIST%OAK.SAINET.MFENET@lll-mfe.arpa writes:
> Richard,  "bitblt" is a pseudonym for "bit-mapped block transfer", and from
> my understanding of it, it is a hardware device capable of moving data that
> is defined on bit boundaries from one location in memory to another.  It is
> used extensively in raster graphics hardware, to optimize line and area
> operations.   Unfortunately, that's about all I know on this subject.

Very close.  Bitblt (also known as RasterOp) is an operation that
combines two or more bit maps to produce a third.  The bit maps
are typically rectangular, can be aligned at any bit boundary in memory
(or in a frame store) and can usually be a sub-rectangle of a larger
one (thus, all the bits are not necessarily contiguous).  Typically,
these bit matrices are combined with Boolean functions (and, or, xor,
and-not, etc).  Fancy implementations will merge more than two bit
matrices at once (using a Boolean operation with three arguments) or
will do funny alignment things to make replicated patterns (like gray
stipple patterns) come out looking right.  

Typical bit maps are:  the screen; an icon; a letter of the alphabet; a
whole font of characters; a line segment; a block of black or white; a
window; a region to be scrolled; a region to be cleared; a cursor
(arrow, hourglass, etc).

Bitblt was invented for the Alto at Xerox Parc; there it was
implemented in microcode.  It has been done in hardware, CPU microcode,
software, and custom I/O chips since.  Modern processor chips (68020,
32016, I believe 80386) implement a one-word subset of bitblt which can
read or store bits from the middle of a word anywhere in memory.  This
can be used in the inner loop of a more complete software bitblt
implementation.  Most systems that do a lot of bit-mapped graphics
provide hardware support of one sort or another for bitblt.  Some, like
monochrome Suns, AT&T Blits, or the Atari ST, just provide fast access
to the frame buffer, a fast CPU, and tight software.

There's an excellent tutorial on bit-mapped graphics in the Siggraph
tutorials binders from a few years back.  Modern graphics textbooks
(eg Newman & Sproull _Principles of Interactive Computer Graphics_)
also cover it, though not as well from the bitblt point of view.