What tasks does Graphics hardware perform and what steps does it follow to do so

fpgagraphicshardware

I am not intending to go into high end GPUs here. That is too advanced. What tasks does a basic graphics hardward perform? By basic perhaps we can go back in time and see what it did in the early days before we got into all this 3D graphics and pixel shaders world. I understand that it should be able to draw lines and write text and "rotate things", but that is layman's language. For engineers that work with these things, how would they describe the functions of a basic graphics hardware in technical terms?

Now usually in digital circuits there is some state machine based controller which implements the hardware functionality. I curious about how a basic graphics hardware works and would be good to see a basic example of it.

And finally, have people had to write a graphics hardware to implement on FPGA for an application which has a rather complex LCD display?

Best Answer

  • At first there was text display, which each character displayed from a character generator ROM, sometimes complemented with semigraphic characters (like Teletext, ZX-81 characters...)
  • Then came the raw framebuffer where the CPU had to paint each pixel (IBM : CGA, Hercules), sometimes with hardware assistance for overlay/masking colours (IBM : EGA, VGA multiplane), sometimes with an hardware cursor overlay (to avoid wasting time redrawing the cursor and erasing it each time the mouse moves)
  • Then came a few 2D graphic primitives :

    • BITBLT / Blitting. Copying rectangular areas on screen and/or to memory.
    • FILL : Filling rectangular areas with a solid colour.
    • Character display : Expanding 1bit per pixel character shape data to suitable colormaps.
    • Line drawing. The famous Brezenham algorithms.

These hardware acceleration features were usually done with fixed hardware logic. Sometimes, DSPs or special purpose CPUs (for example Texas Instruments TIGA chipsets) were used to offload the main CPU. These efforts were sometimes defeated when the cost of transferring data or programming the graphic accelerator exceeded the time required by the CPU for doing the work itself, especially when special effects (like transparency) were needed. 2D rotation is not used enough to reward hardware acceleration. In games, pre-rendered rotated sprites were stored in memory.

The hardware complexity and cost must be balanced with the time saved by the main CPU. Blitting and filling is very useful, drawing shapes like anti-aliased lines and Bezier curves are often beyond the capacity of 2D hardware.

(For a recent example of basic 2D acceleration in small ARM SOCs, look for "ST Chrom-ART Accelerator")