Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.3 4.3bsd-beta 6/6/85; site l5.uucp Path: utzoo!linus!decvax!ittatc!dcdwest!sdcsvax!ucbvax!ucdavis!lll-crg!l5!gnu From: gnu@l5.uucp (John Gilmore) Newsgroups: net.micro,net.graphics Subject: Re: What is "bitblt"? Message-ID: <370@l5.uucp> Date: Mon, 30-Dec-85 04:34:49 EST Article-I.D.: l5.370 Posted: Mon Dec 30 04:34:49 1985 Date-Received: Tue, 31-Dec-85 00:59:15 EST References: <976@brl-tgr.ARPA> <1038@utcs.uucp> Organization: Nebula Consultants in San Francisco Lines: 39 Xref: linus net.micro:12104 net.graphics:1338 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.