Por Iago Toral Quiroga.
Con motivo de la XDC 2018 que del día 26 al 28 de Septiembre tendrá lugar en la Facultad de Informática, queremos hacer una pequeña introducción a las APIs de gráficos para que todos los interesados en la temática podáis aprovechar y os
animéis a asistir a la conferencia internacional.
El proyecto Mesa 3D comenzó en el año 1993 como un proyecto personal de Brian Paul, quien estaba interesado en implementar una libreria sencilla de de gráficos 3D basada en al API de OpenGL. Desde entonces Mesa se ha convertido en uno de los proyectos de software libre más relevantes, contando con una importante inversión por parte de empresas del sector como Intel, AMD, Valve o RedHat entre otras, asi como de miembros de la comunidad de software libre.
Mesa proporciona implementaciones libres tanto de drivers hardware como software para una colección de APIs, entre las que se incluyen OpenGL y también Vulkan, el nuevo API de gráficos 3D del grupo Khronos, un API de más bajo nivel
orientada a sacar el máximo rendimiento del hardware GPU moderno.
Esta charla se centrará en dos aspectos principales: por una lado, dar una introducción al proyecto Mesa, cubriendo sus fundamentos, aplicaciones y evolución en los últimos años asi como el papel que juega en el stack gráfico de Linux, y por otro, dar una breve introducción al funcionamiento del hardware 3D moderno y como se explota desde APIs como OpenGL o Vulkan.
GPUL Labs Meetup
19 Setembro 2018
https://www.meetup.com/es-ES/GPUL-Labs/events/254337745/
26. ● Implementación de código abierto de EGL,
OpenGL, Vulkan y más APIs.
● Iniciado como un proyecto personal de
Brian Paul, versión 1.0 en 1995.
● Presente en todas las distribuciones de
Linux.
● Principalmente C, con algo de C++ y
python.
Mesa 3D – Introducción
29. ● Agosto 2014, Khronos anuncia OpenGL 4.5
● Mesa soporta OpenGL 3.3.
● Julio 2017, Khronos anuncia OpenGL 4.6
● Proceso de “conformance” abierto en Febrero de
2018.
● Driver Mesa Intel downstream “conformant” en dia 0.
● Trabajo en curso para llevar la versión conformance
a upstream.
Mesa 3D – Evolución
30. ● En 2015 Khronos anuncia Vulkan.
● Driver Mesa Intel (anvil) “conformant” dia
0.
● En Marzo de 2018 Khronos anuncia Vulkan
1.1.
● Driver Mesa Intel (anvil) “conformant” dia
0.
Mesa 3D – Evolución
32. Mesa 3D – Diseño
● Puntos de entrada en el API
● Validación / error-checking
● Estructuras de datos comunes
(shaders, texturas, framebuffers, etc)
● Conversiones de formatos de pixel
● Fallbacks “meta” y software
● Compiladores de shaders
(GLSL, SPIR-V, NIR)
● Utilidades (tablas hash, listas
enlazadas, algoritmos comunes, etc.)
● WynSys (integración con el entorno
de ventanas)
● Generación y optimización de codigo
nativo (shaders)
● “Blitting” engine
● Programación del estado de la GPU
● Comunicación con el Kernel
● Gestión de recursos del hardware
● Implementación de “hardware hooks” de
Mesa
Mesa front-endMesa front-end
Driver back-endDriver back-end
33. Mesa 3D – Diseño
GLSL Shader SPIR-V Shader
Parser GLSL AST
IR nativoCodigo nativo
App
Mesa
Driver
TGSI
GLSL IR NIROpt
LLVM IR
Opt
Opt
Opt
glslangValidator
OpenGL API Vulkan API (y OpenGL 4.6)
38. Mesa 3D – Variables de entorno
https://www.mesa3d.org/envvars.html
Captura de trazas, shaders GLSL, forzado o desactivado de
determinados comportamientos, ...
Obtener trazas de shaders en Intel GPUs:
INTEL_DEBUG=vs,tcs,tes,gs,fs
39. ● Mesa se construye con unos estándares de
calidad altos.
● Énfasis en la existencia de tests que permitan
validar las implementaciones.
● Piglit es un conjunto de tests para OpenGL y
OpenGL ES.
● Contiene decenas de miles de tests.
● Más de 30.000 tests añadidos desde 2014.
Mesa 3D – Calidad
40. ● Intel proporciona a miembros de la comunidad
acceso a su sistema de integración continua.
● Prueba ramas de desarrollo contra multiples
generaciones de hardware de Intel. Incluye
Piglit, CTS, dEQP y más.
● Requisitos mínimos de push:
● Sin regresiones en Piglit.
● Reviewed-by de otro desarrollador.
Mesa 3D – Calidad
41. ● Los drivers de Mesa están muy bien considerados
en términos de respetar las especificaciones
oficiales de Khronos.
● Desafortunadamente, otros drivers suelen relajar
sus implementaciones para corregir problemas de
aplicaciones / juegos :-(
● Linux no es “mainstream” para el sector de video
juegos. Testing y reporte de fallos menor que en
otras plataformas. Valve está invirtiendo en mejorar
esto.
Mesa 3D – Calidad
42. ● Mesa proporciona drivers hardware y software.
● Importante desarrollo y evolución en los últimos
años, especialmente por parte de Intel.
● Últimas versiones de OpenGL, OpenGL ES y
Vulkan soportadas.
● Estándares de calidad elevados, intenso trabajo
de testing a través de Piglit y otras plataformas.
Mesa 3D – Conclusiones