Path: utzoo!utgpu!water!watmath!watcgl!ksbooth From: ksbooth@watcgl.waterloo.edu (Kelly Booth) Newsgroups: comp.graphics Subject: Re: Grey Scale Slope Content Index Message-ID: <3490@watcgl.waterloo.edu> Date: 5 Mar 88 13:29:53 GMT References: <1988Feb29.223957.20454@lsuc.uucp> <704@bearcat.rutgers.edu> Reply-To: ksbooth@watcgl.waterloo.edu (Kelly Booth) Organization: U. of Waterloo, Ontario Lines: 71 Bcc: ksbooth In article <704@bearcat.rutgers.edu> lou@bearcat.rutgers.edu (Lou Steinberg) writes: > >........................... This assumes the palette for each pixel >is the same. Hmm.. interesting idea: if alternate pixels, say, used >different palettes we could get a better brightness resolution for all >spatial resolutions above 1 pixel, using only a few more bits of >memory (to hold the second palette).) This idea has in fact been proposed in a paper we wrote some years ago. The suggestion was to generalize the video output of a frame buffer "just a little" by considering a pixel as it comes out of the frame buffer to have more than just the standard RGB fields (at the time we wrote the paper, Z-buffers were common, but the Z-field was not part of the output, just the input -- since then the A (or alpha/opacity) channel has become popular and is treated both on input and output). The "generalized" pixel would be "R:G:B:A:X:Y:Z:...". The relevant point here is that the X and Y address for the pixel is already available implicitly in the video board. It could be passed to the color look up tables (LUTs). This would of course add 20 extra data bits (for a 1024x1024 display), which would make the LUTs way too big if these bits were simply used as additional addressing bits. The proposal was to pass all of the generalized pixel through a cross-bar switch similar to what is implemented in the Adage/Ikonas RDS 3000 frame buffer. For those not familiar with the Ikonas cross-bar, it considers each pixel to be a 32-bit quantity from the frame buffer (assuming you have that many bit planes) plus two "magic" bits that are not explicitly stored in the frame buffer but can be things like overlay and cursor information. From these, 24 bits are selected by setting a register for each output bit that selects one of the input bits (or a constant value). If the XY bits were also part of the input (which would fairly easy to do), the cross-bar switch could be set to pass the low-order bits of X and Y as part of the RGB bits into the LUT. This would achieve what Steinberg proposes. Of course to get full color resolution, one would want probably 10-bit or even 12-bit inputs to the LUT to enable at least 8 full bits of color information in addition to the extra funny bits that effectively select alternate LUTs depending on the XY coordinates of a pixel. Note: Using the cross-bar switch, the same input bit can be sent to multiple output bits. Thus the low-order X or Y bits could be sent to each of the RGB output buts if the cross-bar were configured (in software) to do this. For smaller frame buffers (with maybe only 8 bits in the frame buffer to start with), 10-bit input to the LUTs is really not an extravagance. The chips used for LUTs in fact often support 10 bits in even if the frame buffer only has 8 bits in. Early frame buffers for image processing had 12-bit input to the LUTs. The cross-bar switch is not trivial. But if "all" frame buffers had one, there would be a standard chip for it. It is almost certainly possible to make a combined cross-bar/LUT chip that would be almost as cheap as the current LUTs if there were sufficient demand. The problem is that most hardware designers don't look at the applications people have for frame buffers, so these features are deemed too costly. Credits: The idea for the Ikonas cross-bar switch came from Henry Fuchs at UNC. It was implemented by Nick England (co-founder of Ikonas with Mary Whitton, both of whom now work for Transcept as part of Sun). The idea of switching palettes (LUTs) is implicit in the overlay techniques in many frame buffers (this was one thing that the Ikonas cross-bar switch and LUT supported) and is similar to the idea of "sprites", where certain bit patterns in the frame buffer trigger selection of alternate output images for certain regions of the screen.