A visual is simply a thing you can draw on. For example, a Virtual Console in fullscreen-mode, an X window, an invisible memory area, or a printer. It is identified by its handle of type ggi_visual_t, which is given to all drawing functions to indicate which visual to operate on.
Note: Some functions involving drawing, color, palette and frames do not work until you have set a mode on a visual.
Each visual is completely independent of other visuals. You can use these visuals to display on multiple monitors and/or in multiple windows or to work on "virtual" graphics devices like in-memory pixmaps or even PPM files on disk.
Most LibGGI functions are passed a visual returned by ggiOpen to know where they should operate on.
ggi_visual_t is opaque to the user. Do not try to access any part of the structure directly. It may change without notice.