Firefox trae el fuego: cambiando de GLX a EGL

Puede (o no) ha escuchado que Firefox se está moviendo de GLX a EGL para la pila de gráficos de Linux. Es un indicador de qué manera las mareas se mueven en el mundo del software. Veamos lo que significa, por qué importa, y por qué es genial.

Una pila de gráficos es un sistema complejo con numerosas capas. Pero en Linux, debe haber una interfaz entre algo como OpenGL y un sistema de ventanas como X11. X11 ofrece un marco fundamental para dibujar y mover ventanas alrededor de una pantalla, capturar la entrada del usuario y la identificación de enfoque, pero poco más. Un servidor X11 es solo un programa que administra todas las ventanas (clientes). Cada ventana en X11 se considera un cliente. Un cliente se conecta al servidor a través de un socket de proceso UNIX o Internet.

OpenGL se centra en qué dibujar dentro de los confines del espacio de pantalla dado por el sistema de ventanas. GLX (que representa la extensión OpenGL al sistema de ventanas X) fue desarrollada originalmente por gráficos de silicona. Ha cambiado a lo largo de los años, adquiriendo soporte de aceleración de hardware y DRI (Interfaz de representación directa). DRI es una forma de que OpenGL hable directamente con el hardware gráfico si el servidor y el cliente están en la misma computadora. En su núcleo, GLX ofrece funciones de OpenGL a X11, agrega al protocolo X al permitir que se envíen comandos de representación en 3D, y una extensión que lea los comandos de representación y los pasa a OpenGL.

EGL (Biblioteca de gráficos del sistema incorporada) es un sucesor de GLX, pero comenzó con un ambiente diferente en mente. Inicialmente, el enfoque fue sistemas integrados, y dispositivos como Android, Raspberry Pi y BlackBerry fuertemente apoyados en EGL para sus necesidades gráficas. Finalmente, sin embargo, Wayland eligió usar EGL a medida que GLx trajo dependencias X11, y EGL proporciona un acceso más cercano al hardware.

Cuando Martin Stránský inicialmente agregó apoyo Wayland a Firefox, usó EGL en lugar de GLX. Además, la implementación de Wayland tenía un tampón de GPU de copia cero a través de DMABUF (un subsistema de kernel de Linux para compartir buffers). Desafortunadamente, Firefox no pudo encender este rendimiento mejorado de Webgl para X11 (existió, pero nunca fue bastante estable). Sin embargo, las características seguían convenciendo a Wayland (y, en consecuencia, EGL) un ciudadano mucho más de primera clase. Ahora EGL se habilitará de forma predeterminada en Firefox 94+ con los choferes de Mesa 21+ (MESA es una implementación de OpenGL, Vulkan y otras especificaciones que traducen los comandos en instrucciones que la GPU puede entender).

¿Por qué esta reubicación importa?

Como se mencionó anteriormente, EGL tiene dos características cruciales: tampones compartidos de copia cero y soporte de daños parciales. Zero-Copy implica que WebGl puede ser sandboxed y rápido. Daño parcial implica que toda la ventana no necesita ser redimida si solo se cambia una pequeña parte, ahorrando energía. Este cambio también habla con las mareas en curso en el mundo del software. Lenta pero seguramente, el mundo se está moviendo hacia el estilo EGL / WAYLAND de composición. Este cambio implica principalmente menos abstracciones y capas y un acceso más cercano al hardware. Los beneficios de EGL simplemente son más nuevos y (con suerte) menos buggy con casos de borde inusuales. Además, la ejecución de Wayland de forma nativa por defecto en Firefox en lugar de a través de Xwayland es un cambio significativo.

AneCDOTY, las personas que lo han intentado decir, las ganancias de rendimiento han sido estelares, especialmente al ver videos. El búfer compartido ayuda como, para numerosas GPU, el video está decodificado (convertir la corriente comprimida como H.264 en un mapa de bits crudo) y luego se compone. Tener un búfer compartido y un acceso más cercano al hardware permite que la GPU transfiera ese marco decodificado directamente en el tampón del compositor, en lugar de hacer un viaje a la RAM de la CPU y retroceder a la GPU para las máquinas NUMA.

A numerosos de nosotros, Firefox y otros programas extremadamente complejos son cajas misteriosas de la magia. Una mirada adentro para ver a las personas dedicadas que las hacen y cómo toman decisiones y pesan las compensaciones son fascinantes.

¿Curioso acerca de mucho más internals Linux? ¿Por qué no sumergirse en un viaje a Main ()?

Leave a Reply

Your email address will not be published. Required fields are marked *