LibGGI

General Graphics Interface

LibGGI is the central library in the GGI project, hence the name.

It provides an opaque interface to the display's acceleration functions. It was originally intended to allow user programs to interface with KGI, the GGI Kernel Graphics Interface, but other display types can be easily used by loading the appropriate "display target" (e.g. X, memory).

LibGGI consists of a main library (libggi.so) and a multitude of dynamic drivers. The library then loads the necessary "drivers" for the requested mode, taking hints from the graphics device if necessary. LibGGI can also load extension libraries, e.g. to provide enhanced 2D and 3D functions.

Branch 2.0

documentation | browse CVS

The branch tag for 2.0.x is branch_2_0. See the CVS documentation on how to getting it.

We have stopped maintaining this branch with the release of libggi 2.0.7 in favour to branch 2.1. However, this branch can be reopened, once a volunteer takes over the maintainership of this branch.

Branch 2.1

documentation | browse CVS

The branch tag for 2.1.x is branch-2-1. See the CVS documentation on how to getting it.

We have stopped maintaining this branch with the release of libggi 2.1.2 in favour to branch 2.2. However, this branch can be reopened, once a volunteer takes over the maintainership of this branch.

Branch 2.2

documentation | browse CVS

The branch tag for 2.2.x is branch-2-2. See the CVS documentation on how to getting it.

Significant changes since libggi 2.2.2:

  • Build system: Fix build of shared version of fbdev/directfbglobal
  • generic-linear-8: Fix bug in the crossblit from 8bit to 8bit visuals
  • display-directx(7): Fix bug where the activation of the screen saver and take-over using remote desktop made the library stop drawing, with a black window as the result.
  • display-directx(7): Fix bug in pixel format handling causing failures on some hardware in fullscreen mode, but it may not have been limited to fullscreen mode.
  • display-palemu(7): Track dirty region correctly
  • display-trueemu(7): Track dirty region correctly
  • display-monotext(7): Track dirty region correctly
  • display-tile(7): There is no support for packed get/put. Handle mode requests properly.
  • demo(1): Avoid failures on unpacked subbyte modes.
  • display-tile(7): Record frame canges.
  • display-x(7): Colors are correct now, where remote machine is of different endian type.
  • display-quartz(7): Fix ggiFlush()
  • display-fbdev(7): Fix one build error when building directfb support.
  • generic-linear-4: Fix copy/paste bug when getting pixels
  • display-x(7): Fix hang with -inwin option. From Albert Graef.

If you encounter any problems or have any questions or fixes, please contact us.

Have a look into the patch tracker. There may be bugfixes that are waiting for feedback to get into this tree.

Development tree

documentation | browse CVS

Significant changes since libggi 2.2.x:

  • Instruct libgg to not try to load dynamic modules when static libggi is used.
  • display-fbdev(7): Add accelerator sublib for 3DLabs Permedia 2 and Permedia 2V cards. Requires pm2fb kernel module loaded.
  • display-auto(7): It has been replaced with corresponding alias entries in libggi.conf. That means, it exists virtually now
  • display-vnc(7): New target that allows vnc viewers to connect to libggi applications.
  • display-x(7): Absolute pointer coordinates are correct when multiple frames are used.
  • display-quartz(7): Default mode now is 90% of screen resolution. This matches ggiSetMode(3) documentation.
  • display-quartz(7): Fix bug which caused strange stretching effects with ggiFlushRegion(3).
  • generic-linear-2-r: New default renderer.
  • Possible to specify subschemes in the mode descriptions used by GGI_DEFMODE, ggiParseMode and ggi*PrintMode.
  • generic-linear-1: Add support for packed modes.
  • generic-linear-1-r, generic-linear-2: Add support for packed modes and optimized horizontal and vertical lines.
  • Reworking of extension mechanism makes libggi's extension function superflous. These changes does not impact applications: - Removed ggiExtensionRegister, ggiExtensionUnregister - Removed ggiExtensionAttach, ggiExtensionDetach - Removed ggiExtensionLoadDL - Removed ggi_extid datatype - Removed LIBGGI_EXT, LIBGGI_EXTAC and LIBGGI_EXT_CHECK macros
  • display-file(7): Add YUV write support.
  • display-tile(7): Translate absolute pointer coordinates from child visuals at a origin different from (0,0).
  • new API: ggiSNPrintMode(3) replaces ggiSPrintMode(3).
  • display-memory(7): The generic-planar renderer works on 16 bit entities, match this when setting up the pixel planar directbuffer.
  • display-memory(7): No longer requires the visible and virtual x-sizes for sub-byte modes to be aligned in the last byte of each line.
  • generic-linear-1, generic-linear-1-r: Fix crash on x-size aligned resolutions
  • generic-linear-2, generic-linear-2-r: Fix crash on x-size aligned resolutions