General Graphics Interface

General Graphics Interface
Developer(s)GGI developers
Stable release
2.2.2 / January 27, 2007; 17 years ago (2007-01-27)
TypeApplication programming interface
LicenseMIT license
Websitewww.ibiblio.org/ggicore/index.html

General Graphics Interface (GGI) was a project that aimed to develop a reliable, stable and fast computer graphics system that works everywhere.[1] The intent was to allow for any program using GGI to run on any computing platform supported by it, requiring at most a 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.[2]

Goals

The project was originally started to make switching back and forth between 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.[clarification needed][citation needed]
  • Portability in cross-platform and in backends[clarification needed]
  • Security in the sense of requiring as few privileges as possible

The GGI framework is implemented by a set of portable user-space libraries, with an array of different backends or targets (e.g. Linux framebuffer, X11, Quartz, DirectX), of which the two most fundamental are LibGII (for input-handling) and LibGGI (for graphical output). All other packages add features to these core libraries, and so depend on one or both of them.

Some targets talk to other targets. These are called pseudo targets. Pseudo targets can be combined and work like a pipeline.

One example: display-palemu, for example, emulates palette mode on truecolor modes. This allows users to run applications in palette mode even on machines where no palette mode would be available otherwise. display-tile splits large virtual display into many smaller pieces. You can spread them on multiple monitors or even forward them over a network.

History

Andreas Beck and Steffen Seeger founded The GGI Project in 1994 after some experimental precursors that were called "scrdrv".[3]

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 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.

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[4] about GGI stating, "I think that 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[5]) 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 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 Microsoft 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 higher-level 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 higher-level API. libggiwmh provides functionality for windowed only targets, at that time this was only X. libggimisc provided some basic stuff like vga splitline.

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.

November 2004, the last bugfix from the GGI 2.0.x stable tree was released in favour for a new GGI 2.1.x stable tree.

GGI 2.1.x runs on many Operating Systems: GNU Hurd, Linux, *BSD, System V, Mac OS X and Microsoft 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.

Latest release is GGI 2.2.2, a bugfix release in the GGI 2.2.x stable series. It was released in January 2007.

Adoption

Source ports of first-person shooters Doom, Heretic, Quake and Descent were ported to use GGI,[6][7] with a Linux Doom Editor also being based on it.[8] It was also supported by the arcade styled Heroes,[9] a snake game, and Thrust, inspired by the Commodore 64 game Thrust,[10] as well as the platform games U.R.B.A.N The Cyborg Project[11] and Dave Gnukem,[12] inspired by the original Duke Nukem for MS-DOS. GGI was also available as a video driver within the Simple DirectMedia Layer until version 2x.[13]

Status as of 2006

The GGI Project was moving onward to the GGI 3.0 release.[when?] libgii had been re-designed. The input handling had been replaced with a reactor event model, which is more flexible than using select() on a file descriptor. This also simplified the input-drivers in general, particularly for those who don't use file descriptors such as input-quartz. libgg had been moved out into a separate library.

libggi had merged some targets into one sublib, multi with tile and mono text with palemu. libggi also had gotten a new VNC target, which allowed to run any application as a VNC server.

In GGI 3.0, the extension mechanism had been re-designed from scratch to simplify interactions between the extensions and the core libs. This required a little API change.

See also

References

  1. ^ Loki Software, Inc; John R. Hall (2001). Programming Linux Games. No Starch Press. p. 56. ISBN 978-1-886411-49-4.
  2. ^ Larabel, Michael (3 July 2011). "The Kernel Graphics Interface (KGI) Is Effectively Dead - Phoronix". www.phoronix.com. Retrieved 2019-06-08.
  3. ^ Beck, Andreas (1996-11-01). "Linux-GGI Project". Linux Journal. Retrieved 2023-12-20.
  4. ^ marc.info
  5. ^ linux-kongress.org
  6. ^ "Software using GGI". ibiblio. Retrieved 2023-12-20.
  7. ^ Beck, Andreas (1998-09-01). "LibGGI: Yet Another Graphics API". Linux Journal. Retrieved 2023-12-20.
  8. ^ Amstutz, Peter (2002-08-09). "LDE - Linux Doom Editor". Interreality. Retrieved 2024-01-23.
  9. ^ Duret-Lutz, Alexandre (November 2000). "Announcing Heroes 0.7". Simple DirectMedia Layer.
  10. ^ Payne, Dennis (2021-09-19). "Inertia Blast". Identical Software. Retrieved 2024-01-21.
  11. ^ Wilson, Hamish (2024-03-12). "Building a Retro Linux Gaming Computer Part 40: The Cyborg Project". GamingOnLinux. Retrieved 2024-03-13.
  12. ^ "Software Announcements". Linux Weekly News. 2000-01-06. Retrieved 2024-01-21.
  13. ^ "FAQ: Using SDL". wiki.libsdl.org.

Read other articles:

This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Leopold, Grand Duke of Baden – news · newspapers · books · scholar · JSTOR (August 2008) (Learn how and when to remove this template message) Grand Duke of Baden LeopoldPortrait by Franz Xaver Winterhalter (1831)Grand Duke of BadenReign30 March 1830 – 24 Apri...

BlindСингл Korn з альбому 'Korn'Випущений 1994Формат CDЖанр Ню-металТривалість 4:19Лейбл Epic RecordsПродюсер Ross RobinsondХронологія синглів Korn Попередній Christmas Song(1993) Need To(1995) Наступний Музичне відео «Blind» на YouTube Blind  — перший сингл американської ню-метал — групи Korn . Пісня з'явилас...

Dulang berisi makanan yang dijunjung oleh perempuan Minangkabau di Arosuka, Kabupaten Solok. Dulang, pane, atau talam adalah nampan berbentuk lingkaran yang permukaannya datar dan biasanya berbibir pada tepinya.[1] Dulang dapat dibuat dari kayu atau kuningan. Di Minangkabau, dulang selalu digunakan dalam upacara adat sebagai wadah untuk membawa makanan dalam piring-piring yang ditumpuk dan ditutup dengan kain dalamak.[2] Di Pulau Jawa, dulang biasa digunakan dalam proses memas...

Czerwone Gitary (2023) Die Band Czerwone Gitary (deutsch: Rote Gitarren) ist eine der populärsten Bands der polnischen Musikgeschichte und bekannt als „die polnischen Beatles“[1]. Inhaltsverzeichnis 1 Geschichte 2 Besetzung 2.1 Aktuelle Besetzung 2.2 Ehemalige Bandmitglieder 3 Diskografie 3.1 Studioalben 3.2 CDs (deutschsprachig) 3.3 Singles (deutschsprachig) 3.4 Videoalben 4 Literatur 5 Weblinks 6 Einzelnachweise Geschichte Die im deutschsprachigen Raum unter dem Namen Die Roten...

除特别注明外,本文所有时间均以中时区时间(UTC±0)为准。 英雄联盟全球总决赛2021年赛事资料赛事《英雄联盟》地点 冰島雷克雅未克日期10月5日—11月6日主办方拳头游戏比赛形式入围赛:10队进行单循环赛(10月5日-10月9日)小组赛:16队进行双循环赛(10月11日-10月18日)淘汰赛:8队进行单败淘汰赛(10月22日-11月6日)场馆 雷克雅未克温泉谷体育大厅队伍22(10入围赛 �...

Australian blues musician (born 1976) Ash GrunwaldBackground informationBirth nameAshley Mark GroenewaldBorn (1976-09-05) 5 September 1976 (age 47)OriginMelbourne, Victoria, AustraliaOccupation(s)Musician, songwriter, authorInstrument(s) Vocals guitar harmonica lapsteel stomp box Years active2001–presentLabels Black Market Head Records Delta Groove Bloodline Music Websiteashgrunwald.comMusical artist Ash Grunwald (born Ashley Mark Groenewald, 5 September 1976) is an Australian blues mu...

Anime TV series and net animation The Dragon DentistThe title card for the original short anime.龍の歯医者(Ryū no Haisha)Created byŌtarō Maijō Original net animationDirected byŌtarō MaijōProduced byTomoyuki OgataWritten byŌtarō MaijōMusic byYoshitaka KoyamaStudioKharaLicensed byUK: Anime LimitedReleasedOctober 2014 (TIFF)7 November 2014 (online)26 August 2016 (re-release)Runtime9 minutes Anime television seriesDirected byKazuya TsurumakiProduc...

137th running of the Preakness Stakes 137th Preakness StakesThe Preakness StakesThe Middle Jewel of the Triple Crown The Run for the Black-Eyed SusansLocationPimlico Race Course, Baltimore, Maryland, United StatesDateMay 19, 2012Winning horseI'll Have AnotherJockeyMario GutierrezTrainerDoug O'NeillConditionsFastSurfaceDirtAttendance 121,309← 20112013 → The 2012 Preakness Stakes was the 137th running of the Preakness Stakes thoroughbred horse race. The race took place on ...

Name of several types of blood-sucking fly For other uses, see Sandfly (disambiguation). Sandflea redirects here. The term may also refer to members of the family Talitridae. This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Sandfly – news · newspapers · books · scholar · JSTOR (June 2011) (Learn how and when ...

Wearn FieldWearn Field, 1929 Sanborn Insurance MapFormer namesHayman ParkLocationS Graham St & Winona St, Charlotte, North Carolina 28203OwnerJ.H. WearnField sizeLeft Field – ft Center Field – ftRight Field – ftSurfaceGrassOpened1912Closed1940TenantsCharlotte Hornets (1912-1940) Buffalo Bisons (IL) (spring training) (1913)Philadelphia Phillies (NL) (spring training) (1919)Syracuse Chiefs (IL) (spring training) (1935, 1937) Wearn Field was a ballpark located in Charlotte, North Carol...

Bus operator in South-East England MetrobusAlexander Dennis Enviro 200 in Brighton in June 2018, with a Route 270 service from East GrinsteadParentGo-Ahead GroupFoundedJuly 1983HeadquartersCrawleyService areaEast SurreyWest SussexNorth-west KentLondonService typeBus servicesRoutes70[1]HubsCrawleyFleet180 (August 2023),[2] 157 currently operating[3]Websitewww.metrobus.co.uk Metrobus Limited,[4] trading as Metrobus, is a bus operator with routes in parts of Surre...

Ukrainian singer and songwriter (born 1982) In this name that follows Eastern Slavic naming conventions, the patronymic is Oleksandrivna and the family name is Meikher. Nadia MeiherНадія Олександрівна УржумцеваBackground informationBirth nameНадія Олександрівна МейхерBorn (1982-04-10) 10 April 1982 (age 41)Zbruchivka, Volochysk Raion, Ukrainian SSR, Soviet UnionOriginUkraineGenrespopOccupation(s)singeractressYears active2000–presen...

Chemical compound HydroxynefazodoneClinical dataOther namesOH-NEFPharmacokinetic dataElimination half-life1.5–4 hours[1]Identifiers IUPAC name 2-[3-[4-(3-Chlorophenyl)piperazin-1-yl]propyl]-5-(1-hydroxyethyl)-4-(2-phenoxyethyl)-1,2,4-triazol-3-one CAS Number98159-82-1 98159-83-2 (dihydrochloride)PubChem CID11755137ChemSpider9929840UNII325402PVUUCompTox Dashboard (EPA)DTXSID10471904 Chemical and physical dataFormulaC25H32ClN5O3Molar mass486.01 g·mol−13D model (JSmol)Interacti...

Former hall of the University of Oxford New Inn HallUniversity of OxfordHannington Hall in St Peter's College, Oxford, the surviving part of New Inn Hall's Cramer Building.LocationNew Inn Hall StreetCoordinates51°45′08″N 1°15′37″W / 51.7522°N 1.2603°W / 51.7522; -1.2603Latin nameAula Novi Hospitii [1]Establishedc. 1360Closed1887 (incorporated into Balliol College)Principalsee belowMapLocation in Oxford city centre New Inn Hall was one of the earlies...

Australian chemist For other people named David Craig, see David Craig (disambiguation). David CraigAO FRS FAA FRSNBornDavid Parker Craig(1919-12-23)23 December 1919Sydney, New South WalesDied1 July 2015(2015-07-01) (aged 95)Canberra, Australian Capital TerritoryAlma materUniversity of Sydney (BSc [Hons], MSc)University College London (PhD)SpouseVeronica (Ronia) Bryden-BrownChildrenAndrewHughMary LouiseDouglasScientific careerInstitutionsUniversity of SydneyUniversity Co...

YouTube Videoportal Sprachen Deutsch, 75 weitere Gründer Chad HurleySteve ChenJawed Karim Betreiber YouTube, LLCTochtergesellschaft der Google LLC Redaktion Neal Mohan (CEO) Registrierung Google-Konto (optional;zum Hochladen, Abonnieren, Kommentieren und Bewerten) Online seit 14. Feb. 2005 (aktualisiert 6. Feb. 2022) https://www.youtube.com/ YouTube (Aussprache [ˈjuːtuːb oder ˈjuːtjuːb]) ist ein 2005 gegründetes Videoportal des US-amerikanischen Unternehmens YouTube, LLC...

River in the United StatesLong CreekLong Creek feeding into Clark Pond from the northwestLocationCountryUnited StatesPhysical characteristicsMouthFore River • locationSouth Portland, Maine • coordinates43°38′02″N 70°19′27″W / 43.63377981°N 70.3240438°W / 43.63377981; -70.3240438Length3.8 mi (6.1 km) Long Creek is a freshwater stream in southern Maine, United States. It is a tributary of the Fore River, into whi...

This article is about a central African people. For other uses, see Mandara (disambiguation). Mandara peopleMandara people were a part of a SultanateRegions with significant populations Cameroon Nigeria  ChadLanguagesWandala language[1]ReligiontraditionalRelated ethnic groupsMura people, Malgwa people The Mandara people, also known as Wandala or Mandwara, are a Central African traditionalist ethnic group found in north Cameroon northeastern Nigeria, and southeastern Cha...

Cratere BachTipoCrater PianetaMercurio Dati topograficiCoordinate69°52′12″S 102°59′24″W / 69.87°S 102.99°W-69.87; -102.99Coordinate: 69°52′12″S 102°59′24″W / 69.87°S 102.99°W-69.87; -102.99 MagliaH-15 Bach Diametro214 km Localizzazione Modifica dati su Wikidata · Manuale Bach è un cratere d'impatto presente sulla superficie di Mercurio, a 69,87° di latitudine sud e 102,99° di longitudine ovest. Il suo diametro è pari a 214,29&#...

Edgar Harkness Gray Edgar Harkness Gray (1813–1894) was a Baptist clergyman who served as Chaplain of the Senate. Early years Edgar Harkness Gray was born on November 28, 1813, in Bridport, Vermont, the son of Daniel Gray and his second wife, Mary “Amy” Bosworth. Gray graduated from Colby College (then Waterville College) in 1838. Upon his ordination he became the pastor of the Baptist Church in Freeport, Maine (1839).[1] Ministry Following ordination Gray served the Baptist con...