Intel dio a conocer hace poco que lanzó la versión inicial de un nuevo controlador para el kernel de Linux, con nombre clave «Xe», menciona que estos nuevos controladores están destinados para usar con GPU integradas y tarjetas gráficas discretas basadas en la arquitectura Intel Xe utilizada en gráficos integrados desde los procesadores Tiger Lake y tarjetas gráficas selectas de la familia Arc.
El objetivo del desarrollo de controladores es proporcionar un marco para admitir nuevos chips, no vinculado a un código para admitir plataformas más antiguas. También se anuncia un intercambio más activo del código Xe con otros componentes del subsistema DRM (Direct Rendering Manager).
El código se diseñó inicialmente para admitir varias arquitecturas de hardware y está disponible para pruebas en sistemas x86 y ARM.
Y es que los ingenieros de controladores de gráficos Linux de Intel han estado trabajando silenciosamente en un nuevo controlador Direct Rendering Manager para los gráficos Gen12/Xe más nuevos y han avanzado para evitar llevar el viejo equipaje del controlador i915
Esta es una presentación para Xe, un nuevo controlador para GPU Intel que admite ambos
plataformas integradas y discretas a partir de Tiger Lake (primera plataforma con Arquitectura Intel Xe). La intención de este nuevo piloto es tener una base fresca para trabajar desde eso no se ve obstaculizado por plataformas más antiguas, al mismo tiempo que toma el oportunidad de rediseñar nuestro controlador para aumentar el uso compartido en el drm subsistema, aprovechando y permitiéndonos contribuir más a otros componentes compartidos como TTM y drm/scheduler. El modelo de memoria se basa en VM bind que es similar a la implementación i915. Así mismo el execbuf La implementación para Xe es muy similar a execbuf3 en el i915
Se menciona que la implementación actual aún se considera como una opción experimental para discusión por parte de los desarrolladores, que aún no está lista para la integración en la parte principal del kernel. El trabajo en el antiguo controlador i915 no se detiene y su mantenimiento continuará. Está previsto que el nuevo controlador Xe esté listo durante 2023.
El código está en una etapa en la que ya es funcional y tiene experiencia
soporte para múltiples plataformas a partir de Tiger Lake, con soporte inicial
implementado en Mesa (para Iris y Anv, nuestros controladores OpenGL y Vulkan), así como
como en NEO (para OpenCL y Level0). Se ha publicado un Mesa MR [2] y NEO
La implementación se dará a conocer públicamente a principios del próximo año. También tenemos una suite. de IGT para XE que aparecerán en la lista de IGT en breve.
En el nuevo controlador, la mayor parte del código para interactuar con las pantallas se toma prestado del controlador i915 y, en el futuro, los desarrolladores planean garantizar el uso compartido de este código en ambos controladores para evitar la duplicación de componentes típicos (ahora dicho código es simplemente reconstruido dos veces, pero se están discutiendo opciones alternativas para compartir código).
El modelo de memoria en Xe está muy cerca de la implementación del modelo de memoria i915 y la implementación de execbuf es muy similar a execbuf3 del código i915. Para brindar soporte a las API de gráficos OpenGL y Vulkan, además del controlador para el kernel de Linux, el proyecto también ha preparado cambios para el funcionamiento de los controladores Iris y ANV Mesa a través del módulo Xe.
En su forma actual, el enlace Xe-Mesa ya es lo suficientemente maduro para ejecutar GNOME, navegadores y juegos basados en OpenGL y Vulkan, pero todavía hay algunos problemas y errores, entre otras cosas, que provocan fallas. Además, todavía no se ha realizado ningún trabajo de optimización del rendimiento.
Finalmente cabe mencionar que el plan de Intel es seguir trabajando en él y fusionarlo con Mesa en partes más pequeñas, pero su borrador principal para todo se mantendrá a medida que avanza para permitir una prueba más fácil.
Si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.