Frequently Asked Questions about GGI 

written by Jon Taylor

last update on 8-7-97


Section 1: Introduction and overview

Here are some of the advantages of this approach:

Section 2: The Details

  • The KGI video card drivers: These are very similar to other Linux kernel device drivers, such as the sound drivers or ethernet drivers. They plug into the KGI subsystem and provide highly detailed and card-specific hardware control of all video cards in a system. They consist of five submodules:
  • The chipset driver: The heart of the video driver. Controls mode setting, register-level programming, multiheading, font handling, and other such base functionality.
  • The RAMDAC driver: RAMDAC is an abbreviation for Random Access Memory Digital-To-Analog converter. It is the circuitry on a video card which converts bits in video memory to analog signals that get sent to your monitor. This driver controls aspects of mode setting, palette handling, and sometimes other card-specific functions like video overlaying.
  • The clockchip driver: The frequencies at which the display signal scans horizontally and vertically on the monitor to draw each individual frame are driven by clock frequencies synthesized by the clock chip. This driver takes requests for video modes and algorithmically synthesizes appropriate clock frequencies and the register programming needed to implement them.
  • The monitor driver: This driver does not control any hardware. It is just a set of mode timing constraints corresponding to the monitor's ability to synchronize with video signal frequencies. Video card can almost always send a video signal with higher frequency than any monitor can handle, so this info is necessary for the other drivers to be able to program valid modes.
  • The acceleration driver: Most video cards have built-in hardware-assisted drawing functions of some kind, often referred to as hardware accelerations. These can be simple functions like drawing lines or copying rectangular areas, or they can be complex 3D functions like shading, transparency or polygon drawing. This driver exports ioctl sets corresponding to the present hardware acceleration functions.
  • The input device drivers: These drivers plug into the KGI, much as the video card drivers do, but these drivers handle input devices like keyboards, mice, joysticks, touchpads, etc.
  • EvStack (kernel subsection): EvStack is the heart of the new hyper-flexible and hyper-extensible Linux console IO routines. It is designed to operate congruently in userspace and in the kernel.
  • EvStack (userspace subsection): These stacks can be dynamically loaded and unloaded by individual applications or libraries.
  • LibGGI: Basic 2D graphics and input library which utilizes the KGI interface to the kernel. Dynamic ELF-based loading and unloading of modular library subsystems allows for transparent integration of hardware acceleration support on a per-card basis.
  • XGGI: GGI-Using X server. Currently unaccelerated, but a modular architecture similar to LibGGI's is planned for acceleration support. Will not need to be suid root to run.
  • SVGALib-GGI: A drop-in replacement for libvga.so and libvgagl.so that uses the GGI instead of programming the hardware directly. Will not need to be suid root to run, nor will the programs that use it! Currently ELF only, an a.out DLL jumptable library (Doom!) is planned.
  • Mesa-GGI: A port of the free OpenGL clone library that uses the GGI. Currently runs unaccelerated, but full per-card acceleration support is planned.
  • Berlin: The Berlin Project is designing a replacement for X11. They are not technically part of the GGI project, but Berlin is being designed to run on top of the GGI first.

Section 3: Who, what, where, when, why and how