Content deleted Content added
all evidence indicates ggi is dead. no releases or announcements for 10+ years |
Abhijithxlr8 (talk | contribs) m I added a citation to support the stated goals of the General Graphics Interface project, particularly around portability, API integration, and security. This provides a verifiable source that confirms the technical objectives described, improving the reliability and neutrality of the article. Tags: citing a blog or free web host Visual edit |
||
(39 intermediate revisions by 17 users not shown) | |||
Line 1:
{{More citations needed|date=April 2025}}
{{Infobox software
| name = General Graphics Interface
Line 29 ⟶ 30:
| genre = [[Application programming interface]]
| license = [[MIT license]]
| website = {{URL|
}}
'''General Graphics Interface''' ('''GGI''') was a project that aimed to develop a reliable, stable and fast [[computer graphics]] system that works everywhere.<ref name="IncHall2001">{{cite book|author1=Loki Software, Inc|author2=John R. Hall|title=Programming Linux Games|url=https://books.google.com/books?id=7eAPUdU3hRUC&pg=PA56|year=2001|publisher=No Starch Press|isbn=978-1-886411-49-4|page=56}}</ref> The intent was to allow for any program using GGI to run on any [[computing platform]] supported by it, requiring at most a [[compiler|recompilation]]. GGI is [[free and open-source software]], subject to the requirements of the [[MIT License]].
The GGI project, and its related projects such as KGI, are generally acknowledged to be dead.<ref>{{Cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=OTYyNg|title=The Kernel Graphics Interface (KGI) Is Effectively Dead - Phoronix|last=Larabel|first=Michael|date=3 July 2011|website=www.phoronix.com|access-date=2019-06-08}}</ref>
==Goals==
The project was originally started to make switching back and forth between [[Virtual console (computer user-interface)|virtual consoles]], [[svgalib]], and the X [[display server]] subsystems on [[Linux]] more reliable. The goals were:
*Portability through a flexible and extensible [[API]] for the applications. This avoids bloat in the applications by only getting what they use.{{Clarify|date=January 2009}}<ref>{{
*Portability in cross-platform and in backends{{Clarify|date=January 2009}}
*Security in the sense of requiring as few privileges as possible
Line 47 ⟶ 50:
==History==
Andreas Beck and Steffen Seeger founded '''The GGI Project''' in 1994 after some experimental precursors that were called "scrdrv".<ref>{{cite web|url=https://www.linuxjournal.com/article/160|title=Linux-GGI Project|first=Andreas|last=Beck|date=1996-11-01|access-date=2023-12-20|website=[[Linux Journal]]}}</ref>
Development of scrdrv was motivated by the problems caused by coexisting but not very well cooperating graphics environments (mainly [[X Window System|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
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.
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
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
GGI 2.0.2 was released in December 2002. The most user visible change was from the scratch re-designed X backend. Another noticeable change was the huge documentation improvement. Last, but not least, the release cycles changed. From this release on, there was a development and a stable tree. The stable tree is open for bugfixes only, the development tree got the name, following the BSD scheme, -current.
GGI 2.1.x runs on many Operating Systems: [[GNU Hurd]], [[Linux]], [[*BSD]], [[System V]], [[Mac OS X]] and
▲GGI 2.1.x runs on many Operating Systems: [[GNU Hurd]], [[Linux]], [[*BSD]], [[System V]], [[Mac OS X]] and [[MS Windows]]. Support for more hardware platforms has been added. [[NetBSD]] even created a binary package for NetBSD/Vax! A new GGI library on top of libgii called libgiigic has been added. It allows to combine user actions with events at run time.
GGI 2.2 was released in December 2005. The target auto detection has been reworked and was no longer linux centric. GGI replaced its own integer datatypes with ANSI C99 types for more portability. A target for Quartz has been added. Mac OS X users no longer depend on X11 but still can use the X11 backend. The most user visible change, however, was the support for static linked in targets.
Line 75 ⟶ 72:
Latest release is GGI 2.2.2, a bugfix release in the GGI 2.2.x stable series. It was released in January 2007.
==
[[Source port]]s of [[first-person shooter]]s ''[[Doom (1993 video game)|Doom]]'', ''[[Heretic (video game)|Heretic]]'', ''[[Quake (video game)|Quake]]'' and ''[[Descent (video game)|Descent]]'' were ported to use GGI,<ref>{{cite web|url=http://ibiblio.org/ggicore/links.html|title=Software using GGI|website=[[ibiblio]]|access-date=2023-12-20}}</ref><ref>{{cite web|url=https://www.linuxjournal.com/article/2998|title=LibGGI: Yet Another Graphics API|first=Andreas|last=Beck|date=1998-09-01|access-date=2023-12-20|website=[[Linux Journal]]}}</ref> with a [[Doom modding#Editing|Linux Doom Editor]] also being based on it.<ref>{{cite web|url=http://interreality.org/~tetron/technology/lde/|title=LDE - Linux Doom Editor|first=Peter|last=Amstutz|website=Interreality|date=2002-08-09|access-date=2024-01-23}}</ref> It was also supported by the [[arcade video game|arcade styled]] ''Heroes'',<ref>{{cite web|url=https://discourse.libsdl.org/t/announcing-heroes-0-7/3553|title=Announcing Heroes 0.7|first=Alexandre|last=Duret-Lutz|date=November 2000|website=[[Simple DirectMedia Layer]]}}</ref> a [[Snake (video game genre)|snake]] game, and ''Thrust'', inspired by the [[Commodore 64]] game ''[[Thrust (video game)|Thrust]]'',<ref>{{cite web|url=https://identicalsoftware.com/games/inertiablast|website=Identical Software|first=Dennis|last=Payne|title=Inertia Blast|date=2021-09-19|access-date=2024-01-21 }}</ref> as well as the [[platform game]]s ''U.R.B.A.N The Cyborg Project''<ref>{{cite web |last=Wilson |first=Hamish | date=2024-03-12 | title=Building a Retro Linux Gaming Computer Part 40: The Cyborg Project | url=https://www.gamingonlinux.com/2024/03/building-a-retro-linux-gaming-computer-part-40-the-cyborg-project/ | website=GamingOnLinux | access-date=2024-03-13}}</ref> and ''Dave Gnukem'',<ref>{{cite web|url=https://lwn.net/2000/0106/bigpage.php3|title=Software Announcements|date=2000-01-06|access-date=2024-01-21|website=Linux Weekly News}}</ref> inspired by the original ''[[Duke Nukem (video game)|Duke Nukem]]'' for [[MS-DOS]]. GGI was also available as a video driver within the [[Simple DirectMedia Layer]] until version 2x.<ref name="sdl-faq">{{cite web |title=FAQ: Using SDL |url=https://wiki.libsdl.org/FAQUsingSDL |website=wiki.libsdl.org}}</ref>
==See also==
Line 91 ⟶ 82:
* [[Linux framebuffer]]
* [[SVGALib]]
==References==
{{Reflist}}
{{Refbegin}}
*[http://www.ggi.ps.pl/docs/faq.html The GGI Project Frequently Asked Questions List] {{Webarchive|url=https://web.archive.org/web/20060709013716/http://www.ggi.ps.pl/docs/faq.html |date=2006-07-09 }}
*[https://lwn.net/1998/0226/#kernel Linux Weekly News - February 26, 1998, section: Kernel]
*[http://marc.info/?l=linux-kernel&m=89089527200744&w=2 GGI Project Unhappy On Linux]
*Christopher Browne's Web Pages: [https://web.archive.org/web/20061017132732/http://cbbrowne.com/info/ggi.html The X Window System, 15. GGI - General Graphical Interface]
*Peter Amstutz: [https://web.archive.org/web/20070430133624/http://www.tfn.net/~amstpi/techoverview.html An Overview of the GGI Project] 1998
*[http://www.linuxjournal.com/article/0160 Linux-GGI Project] {{Webarchive|url=https://web.archive.org/web/20061103092544/http://www.linuxjournal.com/article/0160 |date=2006-11-03 }} LinuxJournal article by Steffen Seeger and Andreas Beck 1996
{{Refend}}
Line 109 ⟶ 99:
[[Category:Application programming interfaces]]
[[Category:C (programming language) libraries]]
[[Category:Cross-platform software]]
[[Category:Free computer libraries]]
Line 115 ⟶ 105:
[[Category:Linux APIs]]
[[Category:Video game development software]]
[[Category:Video game development software for Linux]]
|