일반 그래픽스 인터페이스
General Graphics Interface개발자 | GGI 개발자 |
---|---|
안정된 릴리스 | 2.2.2 / 2007년 1월 27일; 전 ( |
유형 | 응용 프로그램 프로그래밍 인터페이스 |
면허증. | MIT 라이선스 |
웹 사이트 | www |
GGI(General Graphics Interface)는 어디에서나 [1]사용할 수 있는 신뢰성 있고 안정적이며 빠른 컴퓨터 그래픽 시스템을 개발하는 것을 목표로 한 프로젝트입니다.그 목적은 GGI를 사용하는 모든 프로그램이 GGI에서 지원되는 컴퓨팅 플랫폼에서 실행될 수 있도록 하는 것이었습니다.또한 재컴파일이 필요했습니다.GGI는 MIT 라이선스의 요건을 따르는 무료 오픈 소스 소프트웨어입니다.
GGI 프로젝트와 KGI와 같은 관련 프로젝트는 일반적으로 [2]중단된 것으로 알려져 있다.
목표들
이 프로젝트는 원래 Linux에서 가상 콘솔, svgalib 및 X 디스플레이 서버 서브시스템 간의 전환을 보다 안정적으로 하기 위해 시작되었습니다.목표는 다음과 같습니다.
- 애플리케이션용 유연하고 확장 가능한 API를 통한 이식성.이것에 의해,[clarification needed][citation needed] 사용하는 것만을 취득하는 것으로, 애플리케이션의 번짐을 회피할 수 있습니다.
- 크로스 플랫폼 및 백엔드에서의[clarification needed] 휴대성
- 가능한 한 적은 권한을 필요로 하는 보안
GGI 프레임워크는 다양한 백엔드 또는 타깃(Linux framebuffer, X11, Quartz, DirectX 등)을 가진 일련의 휴대용 사용자 공간 라이브러리에 의해 구현됩니다.이 중 가장 기본적인 것은 LibGI(입력 처리용)와 LibGI(그래픽 출력용)입니다.다른 모든 패키지는 이러한 핵심 라이브러리에 기능을 추가하므로 둘 중 하나 또는 둘 모두에 의존합니다.
어떤 목표물은 다른 목표물과 대화한다.이것들은 의사 타겟이라고 불립니다.유사 타깃을 조합하여 파이프라인처럼 동작시킬 수 있습니다.
예를 들어 display-palemu는 Truecolor 모드에서 팔레트 모드를 에뮬레이트합니다.이를 통해 사용자는 팔레트 모드를 사용할 수 없는 머신에서도 팔레트 모드로 응용 프로그램을 실행할 수 있습니다.display-display는 대형 가상 디스플레이를 여러 개의 작은 조각으로 분할합니다.여러 모니터에 분산하거나 네트워크를 통해 전송할 수도 있습니다.
역사
Andreas Beck와 Steffen Seeger는 1994년 "scrdrv"라고 불리는 실험적인 선구자를 따라 GGI 프로젝트를 설립했습니다.
scrdrv의 개발은 현재 Linux 운영체제에서 그래픽 환경(주로 X와 SVGAlib)이 공존하고 있지만 그다지 잘 협력하고 있지 않아 종종 재부팅이 필요한 행업으로 이어지는 문제에서 비롯되었습니다.최초의 scrdrv 설계는 DJ DOS 익스텐더의 그래픽 서브시스템과 SANE 프로젝트의 개념에 크게 영향을 받았습니다.scrdrv가 해결한 기본적인 문제는 비디오 하드웨어에 대해 충분히 알고 있는 커널 모드 드라이버를 제공했기 때문에 그래픽스 어플리케이션이 엉망이 되거나 크래시 되어도 정상적인 상태가 될 수 있었다는 것입니다.
첫 번째 공식 버전은 1995년에 등장했다.1996년경, GGI 1.0은 LGPL 라이선스로 출시되었습니다.GGI는 libgi라는 이름의 핵심 lib로만 구성되어 있습니다.여기에는 입력 처리, 2D 그래픽 프리미티브 세트 및 그래픽 보드용 사용자 공간 드라이버와 드라이버용 사용자 공간 인터페이스를 갖춘 Linux 커널 패치가 포함되어 있습니다.이 패치는 커널 그래픽스 인터페이스인 KGI로 알려져 있습니다.
1997년, GGI는 전면적인 재설계에 들어갔습니다.2001년 8월 MIT 릴리즈에서 출시된 GGI 2.0의 새로운 아이디어와 Linux의 결정이 GGI를 만들었습니다.
1998년에는 커널에 KGI를 넣는 것에 대해 Linux 커널 메일링 리스트에 큰 불꽃 전쟁이 있었습니다.리누스 토발스는 GGI에 대해[3] X로도 충분하다고 생각한다며 GGI의 전반적인 방향에 우려를 표했다.
이 기간 동안 EvStack이라는 또 다른 설계 아이디어도 불꽃 튀는 데 일조했습니다.EvStack은 입력 및 출력 하위 시스템을 거의 완전히 재설계하여 이벤트("Ev")가 모듈 "스택"을 통해 흐를 수 있도록 했습니다.EvStack 것은 매우 강력한 개념, 예를 들어 2키보드를 같은 기계에 부착되어 있으면서 그래픽 어댑터에 대한 책 콘솔을 작동하고 어느 하나를(로 Linux-Kongreß ´97[4]에 입증되었다)에 그래픽 콘솔을 작동하고 심지어 다른 가상 콘솔 또는 attachin에 다른 키보드 레이아웃을 허용할 수 있도록 그것을 허락한다.g네트워크를 통한 키보드그러나 이는 허용할 수 없는 것처럼 보이는 입력 서브시스템에 대한 엄청난 패치의 대가를 치렀습니다.최신 Linux 입력 이벤트 시스템을 사용하면 프로그램(Xorg 등)이 콘솔 키보드를 통한 이벤트 이외의 키보드 이벤트를 수신할 수 있어 멀티시트를 조작할 수 있습니다.
LinuxExpo 98에서는 GGI, KGI 및 EvStack에 대한 일련의 논의가 이루어졌다.
GGI 2.0에서는 KGI가 분할되어 KGI 프로젝트라는 이름의 자체 프로젝트가 되었다.GGI 2.0은 일련의 라이브러리로 구성되었습니다.1998년 후반의 2.0 베타 단계에서 라이브러리의 라이센스가 LGPL에서 MIT 스타일의 라이센스로 변경되었습니다.더 많은 운영 체제를 지원하기 위해 빌드 시스템에서도 많은 작업이 수행되었습니다.FreeBSD, OpenBSD용 코드, NetBSD 및 Microsoft Windows에서 동작하고 있으며, 더 많은 하드웨어 플랫폼을 지원합니다.
입력 처리가 libgii라는 라이브러리로 이동되었습니다.범용 GGI 코드는 libgi 내의 서브lib인 libg에 있습니다.핵심 그래픽 라이브러리인 libgi는 모든 종류의 그래픽 애플리케이션을 작성할 수 있을 만큼 충분히 일반적인 경량 그래픽 프리미티브 세트를 가지고 있으며, 더 높은 수준의 API는 libgi 위에 있는 다른 라이브러리에 적용되었습니다.이것들은 GGI 확장이라고 불립니다.libgi는 일련의 타깃을 지원하며, 대부분은 Linux 전용입니다.fbdev, X, aa, vcsa, termfo 및 타일, 멀티, 팔레무, trueemu 등의 유사 타깃입니다.GGI 확장 기능에는 상위 레벨의 API가 탑재되어 있습니다.libgiwmh는 윈도우가 있는 타겟에만 기능을 제공합니다.그 당시에는 vga splitline과 같은 기본적인 몇 가지 기능을 제공하는 것은 X.
GGI 2.0.2는 2002년 12월에 출시되었습니다.사용자가 가장 많이 볼 수 있는 변경은 스크래치를 재설계한 X 백엔드입니다.또 다른 눈에 띄는 변화는 문서가 대폭 개선되었다는 것입니다.마지막으로 릴리즈 사이클이 변경되었습니다.이번 출시부터 개발과 안정적인 트리가 있었습니다.안정 트리는 버그 수정에만 열려 있으며, 개발 트리는 BSD 스킴에 따라 -current라는 이름을 얻었습니다.
2004년 11월, GGI 2.0.x 안정 트리의 마지막 버그 수정이 새로운 GGI 2.1.x 안정 트리를 위해 릴리스되었습니다.
GGI 2.1.x는 GNU Hurd, Linux, *BSD, System V, Mac OS X 및 Microsoft Windows의 많은 운영 체제에서 실행됩니다.하드웨어 플랫폼 지원이 추가되었습니다.NetBSD는 NetBSD/Vax용 바이너리 패키지까지 만들었습니다! libgiigic이라는 libgii 위에 새로운 GGI 라이브러리가 추가되었습니다.실행 시 이벤트와 사용자 작업을 결합할 수 있습니다.
GGI 2.2는 2005년 12월에 출시되었습니다.타겟 자동검출이 재작업되어 더 이상 Linux 중심이 아닙니다.GGI는 휴대성을 높이기 위해 자체 정수 데이터 유형을 ANSI C99 유형으로 대체했습니다.쿼츠의 대상이 추가되었습니다.Mac OS X 사용자는 더 이상 X11에 의존하지 않지만 X11 백엔드를 사용할 수 있습니다.그러나 사용자가 가장 많이 볼 수 있는 변경은 타깃에 연결된 정적 링크 지원입니다.
최신 릴리스는 GGI 2.2.2로, GGI 2.2.x 안정 시리즈의 버그 수정 릴리스입니다.2007년 1월에 발매되었습니다.
2006년 현재 상태
GGI 프로젝트는 GGI 3.0 릴리스로 [when?]진행되었습니다.libgii가 재설계되었습니다.입력처리는 파일 기술자에서 select()를 사용하는 것보다 유연한 리액터 이벤트모델로 대체되었습니다.이것에 의해, 특히 input-quartz등의 파일 기술자를 사용하지 않는 유저에게 있어서, 일반적으로 입력 드라이버의 심플화도 실현되었습니다.libgg는 다른 도서관으로 옮겨졌다.
libggi는 일부 타겟을 하나의 서브립으로 병합했습니다.타일 포함 멀티, 팔레무 포함 모노 텍스트입니다.libggi는 VNC 서버로서 모든 애플리케이션을 실행할 수 있는 새로운 VNC 타깃도 취득했습니다.
GGI 3.0에서, 확장 메커니즘은 확장과 코어 립 사이의 상호작용을 단순화하기 위해 처음부터 다시 설계되었습니다.이를 위해서는 API를 약간 변경해야 합니다.
「 」를 참조해 주세요.
레퍼런스
- ^ Loki Software, Inc; John R. Hall (2001). Programming Linux Games. No Starch Press. p. 56. ISBN 978-1-886411-49-4.
- ^ Larabel, Michael (3 July 2011). "The Kernel Graphics Interface (KGI) Is Effectively Dead - Phoronix". www.phoronix.com. Retrieved 2019-06-08.
- ^ marc.info
- ^ linux-kongress.org
- GGI 프로젝트의 FAQ 목록
- Linux Weekly News - 1998년 2월 26일, 섹션: 커널
- Linux에서 GGI 프로젝트가 불만족스러움
- Christopher Browne의 웹 페이지:X 윈도 시스템, 15. GGI - 일반 그래픽 인터페이스
- Peter Amstutz:1998년 GGI 프로젝트 개요
- Steffen Seeger와 Andreas Beck의 Linux-GGI Project Linux Journal 기사 1996