GLX ( sigla de "Open GL Extension to the X Window System") es una extensión del protocolo principal del X Window System que proporciona una interfaz entre OpenGL y el X Window System , así como extensiones del propio OpenGL. Permite que los programas que deseen utilizar OpenGL lo hagan dentro de una ventana proporcionada por el X Window System. GLX distingue dos "estados": estado indirecto y estado directo.
Silicon Graphics desarrolló GLX como parte de su esfuerzo por soportar OpenGL en el X Window System . En 1999, SGI lanzó GLX bajo una licencia de código abierto , [2] lo que le permitió incorporarse en la versión 4.0 del código fuente de XFree86 en 2000. A partir de ahí, el código fue heredado por la versión bifurcada de X.Org Foundation del X Window System X11R6.7.0. El 19 de septiembre de 2008, SGI creó una nueva Licencia SGI FreeB Versión 2.0, que "ahora refleja la licencia libre X11 utilizada por X.Org" y "cumple con la definición ampliamente aceptada de 'libre' de la comunidad de software libre y de código abierto". [3] En 2009, la Free Software Foundation respaldó la Licencia Libre SGI B como una licencia de software libre y a GLX como un importante proyecto de gráficos de software libre . [4] [5] A partir de 2011, GLX ha alcanzado la versión 1.4.
La primera implementación interna de la API GLX, llamada GLcore, [6] cargó una versión del renderizador de software de Mesa dentro del servidor X y renderizó los comandos OpenGL en una ventana o mapa de píxeles. Con el desarrollo de DRI , se agregó la capacidad de usar OpenGL acelerado por hardware a través de contextos directos (utilizado principalmente por videojuegos ). En 2006, la popularización del servidor X anidado Xgl y el administrador de ventanas de composición Compiz condujeron al desarrollo de Accelerated Indirect GLX ( AIGLX ). AIGLX brinda aceleración de hardware a las aplicaciones GLX (contexto indirecto) al cargar el controlador DRI de Mesa dentro del servidor X. Este método permite compartir objetos GL entre clientes X que usan contextos indirectos (todos están en el mismo espacio de direcciones en el servidor X) y también entre un cliente X y el administrador de ventanas de composición, acelerando así la composición. En 2008, la vinculación en GLcore al renderizador de software Mesa se reescribió como un módulo de interfaz DRI, llamado , mejorando el acoplamiento de Mesa y el servidor X. También en el año 2008 se introdujo el nuevo DRI2 para reemplazar a DRI, y con él un nuevo modelo basado en la configuración del modo Kernel . En 2011, comenzó el proyecto Glamor , con el objetivo de agregar un controlador X 2D acelerado por hardware genérico basado en OpenGL. En 2013, Adam Jackson realizó una importante reescritura del código GLX para consolidar los diversos caminos de Glamor, renderizado indirecto, ... a un camino único hacia la biblioteca libGL de OpenGL. [7]swrast_dri.so
GLX consta de tres partes:
Si el cliente y el servidor se ejecutan en el mismo equipo y hay una tarjeta gráfica 3D acelerada que utiliza un controlador adecuado, DRI puede omitir los dos primeros componentes . En este caso, la aplicación cliente puede acceder directamente al hardware de video a través de varias capas API.