General Graphics Interface: Difference between revisions

Content deleted Content added
add cite for project being dead
remove redlinks to articles that will never exist; removed see also to deleted article
Line 53:
Development of scrdrv was motivated by the problems caused by coexisting but not very well cooperating graphics environments (mainly [[X]] and [[SVGAlib]]) under the Linux operating system at this time which frequently lead to lockups requiring a reboot. The first scrdrv design was heavily influenced by the graphics subsystem of the DJ DOS extender and some concepts from the [[Scanner Access Now Easy|SANE]] project. The basic problem that scrdrv solved was that it provided a kernel mode driver that knew enough of the video hardware to set up modes, thus allowing to get into a sane state even from a messed-up or crashed graphics application.
 
The first official version appeared in 1995. About 1996, GGI 1.0 was released under the LGPL license. GGI only consisted of the core lib named [[''libggi]]''. It included input handling, a set of 2d graphic primitives and some userspace drivers for graphic boards along with a Linux kernel patch with the userspace interface for the drivers. The patch was known as KGI, the Kernel Graphics Interface.
 
In 1997, GGI went into a complete re-design. Many new ideas and a decision from Linux made GGI to what it became in GGI 2.0 released in August 2001 under the MIT release.
Line 59:
In 1998, there was a big flame war on the linux kernel mailing list about getting KGI into the kernel. [[Linus Torvalds]] explained his concerns<ref>[http://marc.info/?l=linux-kernel&m=89089527200744&w=2 marc.info]</ref> about GGI stating, "I think that [[X Window System|X]] is good enough" and expressing concern regarding the overall direction of GGI.
 
During this time, another design idea called [[''EvStack]]'' also added to the flamewar. EvStack was a pretty much complete redesign of the input and output subsystem that allowed for events (thus the "Ev") to flow through a "Stack" of modules that can be configured to manipulate them. EvStack is a very powerful concept, allowing e.g. to have two keyboards attached to the same machine, one operating a text console on one graphics adapter and one operating a graphics console on the other (as was demonstrated on the Linux-Kongreß ´97<ref>[http://www.linux-kongress.org/1997/seegerbeck.html linux-kongress.org]</ref>) and even allows for having different keyboard layouts on different virtual consoles or attaching keyboards via network. However this came at the price of a huge patch to the input subsystem which did not seem acceptable. The modern Linux input event system allows programs (e.g. Xorg) to receive keyboard events other than through the console keyboard, allowing [[multiseat configuration|multiseat]] operation.
 
A set of talks about GGI, KGI and EvStack were given at LinuxExpo 98.
 
For GGI 2.0, KGI was split off and became its own project named [[''The KGI Project]]''. GGI 2.0 consisted of a set of libraries. During the 2.0 beta phase in late 1998 the license of the libraries was changed from LGPL to a MIT-style license. Much work was also done on the buildsystem to support more operating systems. It worked on FreeBSD, code for OpenBSD, NetBSD and even MS-Windows were there as well as some support for more hardware platforms.
 
Input handling was moved into a library called libgii. Generic GGI code was in libgg, a sublib within libgii. The core graphic library, libggi, has a lightweight set of graphic primitives that was common enough to write any kind of graphic application, while higherlevel API went into other libraries on top of libggi. These were called GGI extensions. libggi support a set of targets, most of them were Linux specific: fbdev, X, aa, vcsa, [[terminfo]] and some pseudo targets such as tile, multi, palemu and trueemu. The GGI extensions featured higherlevel API. libggiwmh provides functionality for windowed only targets, at that time this was only X. libggimisc provided some basic stuff like vga splitline.
Line 93:
* [[Linux framebuffer]]
* [[SVGALib]]
* [[XGGI]] – an X [[display server]] that uses GGI
 
==References==