Emulation of the Dupont Pixel (Benchmark technologies) GiP

The Dupont Pixel GiP was a state of the art graphics device (in the early 90's). It provided fast operation, nice fonts and was based on a bitplane architecture. It supports multi channel output, with each GiP having upto four video channels. Originally based on a PC bus interface to the cardset (originally freestanding deskside box but eventually crammed into a 6u rackmount enclosure). The VME interface is one per GiP, so for an 8 monitor system two GiPs and two cards would be required.

Having said all of that, the hardware was complicated and tends to fail or degrade affecting the image quality, and as yet we don't know of any support or repair options for this complex piece of hardware. A quick glance at the inside of one of these in the rackmount form and you'll see many high density cards packed together closely, which probably explains the failures.

Emulating the GiP isn't an easy option - there is no documentation anywhere and it is highly programmable with the ability to download microcode. The microcode sources are usually unavailable and in any case documentation for the microcode itself is impossible to find.

So a software emulation based on the primitives, rather than the microcode, was the only solution. This mean hours of working through captured  VME Short IO command sequences to figure out the primitives.

One of the big gains was when we figured out how to map fonts - although the emulation can decode the GiP format bitmap fonts (which have variable kerning) we found that advances in font rendering on X meant that we would get much nicer font rendering by using X11 Text primitives - and a performance gain

All in all this emulation took us nearly a year to get working, the first real breakthrough was when we were able to use the diagnostics tool which conveniently tested a set of primitives at a time - which really allowed us to gain an insight into the commands and refine the command processor to a point at which we could draw lines, circles and text, all in the wrong colour, in the wrong place:

Next we refined the emulation so that we had something almost right so it looked like this, the colours are wrong and the bitplane overly didn't work.

The we worked out how to the overlay bitplane worked - this required considerable extra work to emulate and changing to use a dual backing store - one for each conceptual plane with merging of the dual pixmaps to produce the display, finally we could also provide the hardware cursor.

Then we figured out the colours

Finally we ended up with an exact working emulation