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.