GLX
GLX는 "OpenGL Extension to the X Window System"을 의미하는 두문자어로, OpenGL과 X 윈도 시스템 간의 인터페이스를 제공하며 OpenGL 자체에 대한 확장도 제공하는 X 윈도 시스템 코어 프로토콜의 확장이다. 이는 OpenGL을 사용하려는 프로그램이 X 윈도 시스템이 제공하는 창 내에서 이를 수행할 수 있도록 한다. GLX는 간접 상태와 직접 상태의 두 가지 "상태"를 구별한다.
| 원저자 | SGI |
|---|---|
| 발표일 | 1992 |
| 안정화 버전 | 1.4
/ 2005년 12월 16일 |
| 프로그래밍 언어 | C |
| 라이선스 | SGI FreeB License[1] |
| 웹사이트 | dri.freedesktop.org/wiki/GLX/ |
GLX는 "OpenGL Extension to the X Window System"을 의미하는 두문자어로, OpenGL과 X 윈도 시스템 간의 인터페이스를 제공하며 OpenGL 자체에 대한 확장도 제공하는 X 윈도 시스템 코어 프로토콜의 확장이다. 이는 OpenGL을 사용하려는 프로그램이 X 윈도 시스템이 제공하는 창 내에서 이를 수행할 수 있도록 한다. GLX는 간접 상태와 직접 상태의 두 가지 "상태"를 구별한다.
역사
[편집]실리콘 그래픽스는 X 윈도 시스템에서 OpenGL을 지원하려는 노력의 일환으로 GLX를 개발했다. 1999년 SGI는 오픈 소스 사용권으로 GLX를 출시했으며,[2] 2000년 XFree86 소스 코드 버전 4.0에 포함되도록 했다. 거기서 코드는 X 윈도 시스템 X11R6.7.0의 포크된 X.Org 재단 버전으로 상속되었다. 2008년 9월 19일, SGI는 "X.Org에서 사용하는 자유 X11 라이선스를 이제 미러링한다"는 "새로운 SGI FreeB 라이선스 버전 2.0"을 만들었고, "자유 및 오픈 소스 소프트웨어 커뮤니티에서 널리 받아들여지는 '자유' 정의를 충족한다"고 밝혔다.[3] 2009년 자유 소프트웨어 재단은 SGI Free 라이선스 B를 자유 소프트웨어 사용권으로, GLX를 중요한 자유 소프트웨어 그래픽 프로젝트로 지지했다.[4][5] 2011년 기준으로 GLX는 버전 1.4에 도달했다.
GLcore[6]라고 불리는 GLX API의 첫 번째 내부 구현은 X 서버 내에 메사 소프트웨어 렌더러 버전을 로드하고 창이나 픽스맵에서 OpenGL 명령을 렌더링했다. DRI의 개발로 직접 컨텍스트를 통한 하드웨어 가속 OpenGL을 사용할 수 있는 기능이 추가되었다(주로 비디오 게임에서 사용됨). 2006년, 중첩된 Xgl X 서버와 컴피즈 합성 창 관리자의 보급으로 가속 간접 GLX(AIGLX)가 개발되었다. AIGLX는 X 서버 내에 Mesa DRI 드라이버를 로드하여 GLX (간접 컨텍스트) 애플리케이션에 하드웨어 가속을 제공한다. 이 방법은 간접 컨텍스트를 사용하는 X 클라이언트 간(모두 X 서버의 동일한 주소 공간에 있음) 및 X 클라이언트와 합성 창 관리자 간에 GL 객체를 공유할 수 있게 하여 합성을 가속한다. 2008년, Mesa 소프트웨어 렌더러에 대한 GLcore의 바인딩은 swrast_dri.so라고 불리는 DRI 인터페이스 모듈로 재작성되어 Mesa와 X 서버의 결합을 개선했다. 또한 2008년에 DRI를 대체하기 위해 새로운 DRI2가 도입되었고, 그와 함께 커널 모드 설정을 기반으로 하는 새로운 모델이 도입되었다. 2011년, OpenGL을 기반으로 하는 일반 하드웨어 가속 2D X 드라이버를 추가하는 것을 목표로 Glamor 프로젝트가 시작되었다. 2013년 아담 잭슨은 Glamor, 간접 렌더링 등 다양한 경로를 OpenGL 라이브러리 libGL의 하나의 고유한 경로로 통합하기 위해 GLX 코드를 대대적으로 재작성했다.[7]
-
X 서버 내부의 2D 드라이버
-
유타 GLX를 사용한 GLX를 통한 간접 렌더링
-
초기 직접 렌더링 인프라
-
마침내 모든 접근은 직접 렌더링 관리자를 통해 이루어진다
기능
[편집]
GLX는 세 가지 부분으로 구성된다.
- X 윈도 시스템 애플리케이션에 OpenGL 함수를 제공하는 API.
- 클라이언트(OpenGL 애플리케이션)가 3D 렌더링 명령을 X 서버(디스플레이를 담당하는 소프트웨어)로 보낼 수 있도록 하는 X 프로토콜의 확장. 클라이언트 및 서버 소프트웨어는 다른 컴퓨터에서 실행될 수 있다.
- 클라이언트로부터 렌더링 명령을 수신하여 설치된 OpenGL 라이브러리로 전달하는 X 서버의 확장.
클라이언트와 서버가 동일한 컴퓨터에서 실행되고 적합한 드라이버를 사용하는 가속 3D 그래픽 카드를 사용할 수 있는 경우, 앞의 두 구성 요소는 DRI를 통해 우회될 수 있다. 이 경우 클라이언트 애플리케이션은 여러 API 계층을 통해 비디오 하드웨어에 직접 액세스할 수 있다.
구현
[편집]- 메사 3D – 몇 가지 그래픽 API와 사용 가능한 자유-오픈 소스 장치 드라이버: 그래픽을 구현하는 자유-오픈 소스 라이브러리이며, 최후의 수단으로 메사 3D는 소프트웨어 렌더링 폴백도 제공한다.
- 그래픽 칩용 독점 장치 드라이버에는 GLX 구현도 포함되어 있다.
같이 보기
[편집]- WGL – OpenGL에 대한 동등한 마이크로소프트 윈도우 인터페이스
- CGL – OpenGL에 대한 동등한 macOS 인터페이스
- EGL – OpenGL ES 또는 VG와 기본 네이티브 플랫폼 창 시스템 간의 유사한 크로스 플랫폼 인터페이스
- GLUT – OpenGL 프로그램용 유틸리티 라이브러리
각주
[편집]- ↑ oss-project-owners (2012). “History and Most Recent Version of the SGI Free Software License B”. Silicon Graphics International. 2017년 4월 20일에 원본 문서에서 보존된 문서. 2017년 4월 11일에 확인함.
- ↑ Jon Leech (2012). “OpenGL Sample Implementation”. Silicon Graphics International. 2011년 5월 14일에 원본 문서에서 보존된 문서. 2017년 4월 11일에 확인함.
- ↑ “SGI Further Opens Its OpenGL Contributions”. 2008년 9월 19일. 2012년 2월 11일에 원본 문서에서 보존된 문서.
- ↑ Lee, Matt (2008년 9월 19일). “Thank you SGI, for freeing the GNU/Linux 3D desktop!”. Free Software Foundation. 2017년 4월 11일에 확인함.
- ↑ brett (2009년 1월 13일). “3D graphics are 100% free software”. Free Software Foundation. 2017년 4월 11일에 확인함.
- ↑ “DRI – GLcore”. freedesktop.org. 2016년 7월 20일. 2017년 4월 11일에 확인함.
- ↑ Jackson, Adam (2014년 2월 4일). “Rewriting GLX To Rewrite X”. Linux.conf.au. 2021년 12월 21일에 원본 문서에서 보존된 문서. 2017년 4월 11일에 확인함.