SlideShare una empresa de Scribd logo
1 de 34
Descargar para leer sin conexión
Introducción a Mesa: Caso
específico de los dispositivos
Raspberry Pi
Alejandro Piñeiro Iglesias
2023-10-28
Introducción a Mesa. Rasperry Pi.
Alejandro Piñeiro Iglesias
Sobre mí
● Desarrollador de Igalia desde el 2006
● Miembro del Graphics Team en Igalia
● Desarrollador de drivers gráficos desde el 2015
● Principalmente en los drivers libres de GPUs de Intel
y Broadcom
Introducción a Mesa. Rasperry Pi.
Alejandro Piñeiro Iglesias
Drivers gráficos?
● Además de la CPU, existen otros tipos de
procesadores, más especializados (DSP, VPU, etc)
● GPU (Graphics Processor Unit): procesador
especializado en el renderizado y tratamiento de
imagenes.
● Un driver gráfico es el sw que permite usar esa GPU
● Como se usa cada GPU depende del
modelo/fabricante
Introducción a Mesa. Rasperry Pi.
Alejandro Piñeiro Iglesias
Interfaces/APIs
● Existen varias APIs que abstraen/estandarizan el uso
de las funcionalidades de la GPU:
● OpenGL (1992)
● OpenGL ES (2003)
● Vulkan (2016)
Introducción a Mesa. Rasperry Pi.
Alejandro Piñeiro Iglesias
Ejemplo OpenGL ES
Introducción a Mesa. Rasperry Pi.
Alejandro Piñeiro Iglesias
Lenguajes de Shading
● Lenguajes de programación gráficos
● Diseñados para ser ejecutados directamente en la
GPU
● Cada API gráfica moderna usa al menos uno:
● GLSL: OpenGL y OpenGL ES
● SPIR-V: Vulkan
Introducción a Mesa. Rasperry Pi.
Alejandro Piñeiro Iglesias
Introducción a Mesa. Rasperry Pi.
Alejandro Piñeiro Iglesias
Quien los mantiene?
Introducción a Mesa. Rasperry Pi.
Alejandro Piñeiro Iglesias
Mesa
● Mesa es una librería open-source que implementa
soporte del OpenGL y Vulkan (y otras APIs) para una
gran variedad de hardware
● Fue creada por Brian Paul en los años 90
● La versión 1.0 fue publicada en Febrero de 1995
● La version actual es las 23.3.0
 Actualmente hay una release por trimestre: AÑO.YY
Introducción a Mesa. Rasperry Pi.
Alejandro Piñeiro Iglesias
Introducción a Mesa. Rasperry Pi.
Alejandro Piñeiro Iglesias
Comunidad
● La comunidad está formada por desarrolladores
voluntarios y múltiples empresas
Introducción a Mesa. Rasperry Pi.
Alejandro Piñeiro Iglesias
Funcionalidades (I)
● Traducir llamadas a las APIs a instrucciones que serán
ejecutadas por el HW
● Configuración del HW para la ejecución de los
shaders: configurar depth, stencil test, blend, etc
● Buscar soluciones para limitaciones HW: soporte de
tipos de 64 bits, falta de instrucciones en el ISA final,
etc.
● Indicar a la aplicación los límites del HW
Introducción a Mesa. Rasperry Pi.
Alejandro Piñeiro Iglesias
Funcionalidades (II)
● Se encarga de compilar los shaders (GLSL o SPIR-V)
● Hay un frontend compiler que produce como salida
un lenguaje intermedio llamado NIR
● Cada uno de los drivers de Mesa implementa un
backend compiler para obtener el código
ensamblador a partir de NIR
Introducción a Mesa. Rasperry Pi.
Alejandro Piñeiro Iglesias
Mesa CI
● Cualquier cambio en Mesa requiere pasar por varios
requisitos:
● Revisión por otro desarrollador
● Sin fallos en test suites: piglit, vk-gl-cts
● Vk-gl-cts es la test suite mantenida por Khronos. Es la
que se usa para determinar si un driver es conforme al
API de Khronos (OpenGL, Vulkan, etc)
Introducción a Mesa. Rasperry Pi.
Alejandro Piñeiro Iglesias
Drivers
● Intel (i965, i915, Iris, anvil, crocus)
● AMD (radeonsi, r600, radv)
● NVIDIA (nouveau, nvk)
● Vivante (etnaviv)
● Qualcomm Adreno (freedreno, turnip)
● Arm mali (lima, panfrost, panvk)
● Broadcom (vc4, v3d, v3dv)
Introducción a Mesa. Rasperry Pi.
Alejandro Piñeiro Iglesias
GLSL
Introducción a Mesa. Rasperry Pi.
Alejandro Piñeiro Iglesias
NIR
Introducción a Mesa. Rasperry Pi.
Alejandro Piñeiro Iglesias
Ensamblador (Broadcom)
Introducción a Mesa. Rasperry Pi.
Alejandro Piñeiro Iglesias
Broadcom GPU (I)
● Basada en tiling, en vez de renderizar toda la escena
de una pasada, la divide en “tiles” (mosaicos):
● Solo carga en memoria lo necesario para cada tile,
reduciendo la cantidad de memoria y ancho de
banda
● Optimización de la caché
● Arquitecturas de tiling es lo más habitual en GPU para
embebidos/mobiles
Introducción a Mesa. Rasperry Pi.
Alejandro Piñeiro Iglesias
Broadcom GPU (II)
● Soporte HW orientado a OpenGL ES y (desde
VideoCore VI) Vulkan
● Varias funcionales necesarias para las últimas
versiones de OpenGL no soportadas
● Subsistema principal son los QPUs (SIMD)
● Cada uno tiene dos unidades de procesamiento
aritmético (ALUs), lo que permite hasta dos
operaciones aritméticas por instrucción
Introducción a Mesa. Rasperry Pi.
Alejandro Piñeiro Iglesias
Raspberry Pi
● Serie de dispositivos embebidos desarrollados por
Raspberry Pi Ltd
● Objetivos originales orientados a la promoción de la
enseñanza de programación en escuelas
● Se han convertido en modelos muy populares y
extendiendo su rango de uso
● Procesador ARM, GPU Broadcom de la serie
VideoCore
Introducción a Mesa. Rasperry Pi.
Alejandro Piñeiro Iglesias
Raspberry Pi - timeline
● Raspberry Pi – 2012 (VideoCore IV)
● Raspberry Pi 2 – 2015 (VideoCore IV)
● Raspberry Pi 3 – 2016 (VideoCore IV)
● Raspberry Pi 4 – 2019 (VideoCore VI)
● Raspberry Pi 5 – 2023 (VideoCore VII)
Introducción a Mesa. Rasperry Pi.
Alejandro Piñeiro Iglesias
Raspberry Pi - drivers
● Raspberry Pi, Raspberry Pi 2, y Raspberry Pi 3 tienen el
driver de Mesa VC4, que soporta OpenGL y OpenGL ES
● Raspberry Pi 4 y Raspberry Pi 5 tienen el driver de
Mesa V3D que soporta OpenGL y OpenGL ES, y v3dv
que soporta Vulkan
● Inicialmente v3d se llamaba VC5, pero se cambio ya
que era posible soportar varias generaciones con el
mismo driver
Introducción a Mesa. Rasperry Pi.
Alejandro Piñeiro Iglesias
Raspberry Pi - experiencia
● Empezamos a involucrarnos a finales del 2018, un
poco antes del lanzamiento oficial de la Raspberry Pi 4
● VC4 y V3D ya existían, creados inicialmente por
Broadcom
● Trabajo inicial basado en consolidar los drivers, y
extender su funcionalidad (nuevas extensiones) en
todos los dispositivos, pero más trabajo en la rpi4
● Rpi4 Oficialmente OpenGL ES 3.1 desde 2020-01
Introducción a Mesa. Rasperry Pi.
Alejandro Piñeiro Iglesias
Raspberry Pi – v3dv (I)
● Driver de Vulkan inicialmente para la rpi4
● “De cero”: se intentó reutilizar todo lo posible:
● El frontend de Mesa proporciona varias
funcionalidades (conversion de SPIR-V a NIR,
abstracciones de Mesa etc)
● Varios componentes de v3d se reutilizaron: definición
de los comandos de la GPU, definición del ISA,
simulador, etc
Introducción a Mesa. Rasperry Pi.
Alejandro Piñeiro Iglesias
Raspberry Pi – v3dv (II)
● Desarrollo inicial lo empezó Iago Toral
● Una vez que hubo una base funcional (posible ejecutar
programas sencillos) se incorporó Alejandro Piñeiro, y
se empezaron a dividir tareas
● Objetivo inicial conseguir la funcionalidad mínima de
Vulkan 1.0 (con unas pocas excepciones)
Introducción a Mesa. Rasperry Pi.
Alejandro Piñeiro Iglesias
Raspberry Pi – v3dv (III)
● [Noviembre 2019] Inicio
● [Enero 2020] Triangulo básico
● [Agosto 2020] Vulkan 1.0 minima
● [Octubre 2020] Vulkan 1.0 conforme
● [Diciembre 2020] Trabajo en rendimiento
● [Diciembre 2021] Vulkan 1.1 conforme
● [Julio 2022] Vulkan 1.2 conforme
Introducción a Mesa. Rasperry Pi.
Alejandro Piñeiro Iglesias
Raspberry Pi – v3dv (IV)
Introducción a Mesa. Rasperry Pi.
Alejandro Piñeiro Iglesias
Raspberry Pi – rpi5 (I)
● Incremento significativo en rendimiento y
funcionalidad:
● 8 render targets (4 en la rpi4)
● Incremento en varios límites
● Más formatos de imagen
● Más operaciones del procesador
● FullDrawIndexUint32, depthClamp, depthBounds,
scalarBlockLayout, etc
Introducción a Mesa. Rasperry Pi.
Alejandro Piñeiro Iglesias
Raspberry Pi – rpi5 (II)
● Trabajo inicial totalmente basado en el simulador (aún
no había dispositivo)
● Como con la rpi4, se hizo un trabajo inicial individual,
hasta llegar a una funcionalidad base (triangulo),
luego se incorporó un segundo desarrollador
Introducción a Mesa. Rasperry Pi.
Alejandro Piñeiro Iglesias
Raspberry Pi – rpi5 (III)
● Cambios significativos en los comandos, en el ISA y en
los registros.
● Aún así se inició bajo la idea de que no se necesitaría
un nuevo driver, sino codepaths para cada versión
● Quedó confirmado una vez el driver estuvo terminado
(pasando CTS)
● Con el simulador no se pudieron hacer pruebas con
aplicaciones reales
Introducción a Mesa. Rasperry Pi.
Alejandro Piñeiro Iglesias
Raspberry Pi – rpi5 (IV)
● Llega el dispositivo!
● Primero se necesita dar soporte en el kernel de Linux
de la nueva GPU
● Sorpresas
● Diferencia en gestión de compute shaders
● Documentación incompleta
● Version HW final diferente (7.1.2 vs 7.1.6)
● Testeo con aplicaciones reales
Introducción a Mesa. Rasperry Pi.
Alejandro Piñeiro Iglesias
Raspberry Pi – rpi5 (V)
● El 28 de Septiembre se hace el anuncio oficial.
● El mismo día se manda el código para integración en
el repositorio upstream de Mesa
● El 14 de Octubre el soporte para la rpi5 se integra
● Siguiente:
● Pasar el conformance de Khronos (CTS)
● Arreglar posibles issues de los usuarios
● Seguir con la evolución del driver
Introducción a Mesa. Rasperry Pi.
Alejandro Piñeiro Iglesias
Preguntas?
www.igalia.com/jobs

Más contenido relacionado

Similar a Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia

Programación de videojuegos con Godot Engine
Programación de videojuegos con Godot EngineProgramación de videojuegos con Godot Engine
Programación de videojuegos con Godot Enginepythoncanarias
 
Servidores de mapas en alta disponibilidad
Servidores de mapas en alta disponibilidadServidores de mapas en alta disponibilidad
Servidores de mapas en alta disponibilidadInclamSoft
 
Android NDK y optimizacion para x86
Android NDK y optimizacion para x86Android NDK y optimizacion para x86
Android NDK y optimizacion para x86Software Guru
 
2016 11-09-urjc-fpgas-libres
2016 11-09-urjc-fpgas-libres2016 11-09-urjc-fpgas-libres
2016 11-09-urjc-fpgas-libresobijuan_cube
 
Monta tu Centro Multimedia con Raspberry Pi
Monta tu Centro Multimedia con Raspberry PiMonta tu Centro Multimedia con Raspberry Pi
Monta tu Centro Multimedia con Raspberry PiAlvaro García Loaisa
 
201910 valencia gnu linux es
201910 valencia gnu  linux es201910 valencia gnu  linux es
201910 valencia gnu linux esGuillermo Amat
 
Integración de ROS (Robot Operating System) con las plataformas Arduino y Ras...
Integración de ROS (Robot Operating System) con las plataformas Arduino y Ras...Integración de ROS (Robot Operating System) con las plataformas Arduino y Ras...
Integración de ROS (Robot Operating System) con las plataformas Arduino y Ras...Alvaro Angel Romero Gandul
 
Computación Heterogénea: Aplicaciones y Modelado de Rendimiento
Computación Heterogénea: Aplicaciones y Modelado de RendimientoComputación Heterogénea: Aplicaciones y Modelado de Rendimiento
Computación Heterogénea: Aplicaciones y Modelado de RendimientoUnai Lopez-Novoa
 
.NET Core 1.0 y ASP.NET Core 1.0
.NET Core 1.0 y ASP.NET Core 1.0.NET Core 1.0 y ASP.NET Core 1.0
.NET Core 1.0 y ASP.NET Core 1.0Luis Ruiz Pavón
 
Gpu ii
Gpu iiGpu ii
Gpu iiecci
 
S3 - Configuraciones para sistemas de computación especializados.pptx
S3 - Configuraciones para sistemas de computación especializados.pptxS3 - Configuraciones para sistemas de computación especializados.pptx
S3 - Configuraciones para sistemas de computación especializados.pptxRicardoPisco6
 
Miguel angel pastor moreno
Miguel angel pastor morenoMiguel angel pastor moreno
Miguel angel pastor morenoSam Gutierrez M
 

Similar a Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia (20)

Programación de videojuegos con Godot Engine
Programación de videojuegos con Godot EngineProgramación de videojuegos con Godot Engine
Programación de videojuegos con Godot Engine
 
Servidores de mapas en alta disponibilidad
Servidores de mapas en alta disponibilidadServidores de mapas en alta disponibilidad
Servidores de mapas en alta disponibilidad
 
Android NDK y optimizacion para x86
Android NDK y optimizacion para x86Android NDK y optimizacion para x86
Android NDK y optimizacion para x86
 
01 - Introducción al lenguaje C
01 - Introducción al lenguaje C01 - Introducción al lenguaje C
01 - Introducción al lenguaje C
 
Gpu Lorena[1]
Gpu Lorena[1]Gpu Lorena[1]
Gpu Lorena[1]
 
04 android studio
04 android studio04 android studio
04 android studio
 
2016 11-09-urjc-fpgas-libres
2016 11-09-urjc-fpgas-libres2016 11-09-urjc-fpgas-libres
2016 11-09-urjc-fpgas-libres
 
Monta tu Centro Multimedia con Raspberry Pi
Monta tu Centro Multimedia con Raspberry PiMonta tu Centro Multimedia con Raspberry Pi
Monta tu Centro Multimedia con Raspberry Pi
 
201910 valencia gnu linux es
201910 valencia gnu  linux es201910 valencia gnu  linux es
201910 valencia gnu linux es
 
Integración de ROS (Robot Operating System) con las plataformas Arduino y Ras...
Integración de ROS (Robot Operating System) con las plataformas Arduino y Ras...Integración de ROS (Robot Operating System) con las plataformas Arduino y Ras...
Integración de ROS (Robot Operating System) con las plataformas Arduino y Ras...
 
Computación Heterogénea: Aplicaciones y Modelado de Rendimiento
Computación Heterogénea: Aplicaciones y Modelado de RendimientoComputación Heterogénea: Aplicaciones y Modelado de Rendimiento
Computación Heterogénea: Aplicaciones y Modelado de Rendimiento
 
.NET Core 1.0 y ASP.NET Core 1.0
.NET Core 1.0 y ASP.NET Core 1.0.NET Core 1.0 y ASP.NET Core 1.0
.NET Core 1.0 y ASP.NET Core 1.0
 
Gpu ii
Gpu iiGpu ii
Gpu ii
 
Introduccion fpga
Introduccion fpgaIntroduccion fpga
Introduccion fpga
 
Moodle
MoodleMoodle
Moodle
 
S3 - Configuraciones para sistemas de computación especializados.pptx
S3 - Configuraciones para sistemas de computación especializados.pptxS3 - Configuraciones para sistemas de computación especializados.pptx
S3 - Configuraciones para sistemas de computación especializados.pptx
 
Kubuntu - Aplicaciones
Kubuntu - AplicacionesKubuntu - Aplicaciones
Kubuntu - Aplicaciones
 
Miguel angel pastor moreno
Miguel angel pastor morenoMiguel angel pastor moreno
Miguel angel pastor moreno
 
Raspberry pi
Raspberry piRaspberry pi
Raspberry pi
 
Raspberry Pi
Raspberry PiRaspberry Pi
Raspberry Pi
 

Más de Igalia

Running JS via WASM faster with JIT
Running JS via WASM      faster with JITRunning JS via WASM      faster with JIT
Running JS via WASM faster with JITIgalia
 
To crash or not to crash: if you do, at least recover fast!
To crash or not to crash: if you do, at least recover fast!To crash or not to crash: if you do, at least recover fast!
To crash or not to crash: if you do, at least recover fast!Igalia
 
Implementing a Vulkan Video Encoder From Mesa to GStreamer
Implementing a Vulkan Video Encoder From Mesa to GStreamerImplementing a Vulkan Video Encoder From Mesa to GStreamer
Implementing a Vulkan Video Encoder From Mesa to GStreamerIgalia
 
8 Years of Open Drivers, including the State of Vulkan in Mesa
8 Years of Open Drivers, including the State of Vulkan in Mesa8 Years of Open Drivers, including the State of Vulkan in Mesa
8 Years of Open Drivers, including the State of Vulkan in MesaIgalia
 
2023 in Chimera Linux
2023 in Chimera                    Linux2023 in Chimera                    Linux
2023 in Chimera LinuxIgalia
 
Building a Linux distro with LLVM
Building a Linux distro        with LLVMBuilding a Linux distro        with LLVM
Building a Linux distro with LLVMIgalia
 
turnip: Update on Open Source Vulkan Driver for Adreno GPUs
turnip: Update on Open Source Vulkan Driver for Adreno GPUsturnip: Update on Open Source Vulkan Driver for Adreno GPUs
turnip: Update on Open Source Vulkan Driver for Adreno GPUsIgalia
 
Graphics stack updates for Raspberry Pi devices
Graphics stack updates for Raspberry Pi devicesGraphics stack updates for Raspberry Pi devices
Graphics stack updates for Raspberry Pi devicesIgalia
 
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOSDelegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOSIgalia
 
MessageFormat: The future of i18n on the web
MessageFormat: The future of i18n on the webMessageFormat: The future of i18n on the web
MessageFormat: The future of i18n on the webIgalia
 
Replacing the geometry pipeline with mesh shaders
Replacing the geometry pipeline with mesh shadersReplacing the geometry pipeline with mesh shaders
Replacing the geometry pipeline with mesh shadersIgalia
 
I'm not an AMD expert, but...
I'm not an AMD expert, but...I'm not an AMD expert, but...
I'm not an AMD expert, but...Igalia
 
Status of Vulkan on Raspberry
Status of Vulkan on RaspberryStatus of Vulkan on Raspberry
Status of Vulkan on RaspberryIgalia
 
Enable hardware acceleration for GL applications without glamor on Xorg modes...
Enable hardware acceleration for GL applications without glamor on Xorg modes...Enable hardware acceleration for GL applications without glamor on Xorg modes...
Enable hardware acceleration for GL applications without glamor on Xorg modes...Igalia
 
Async page flip in DRM atomic API
Async page flip in DRM  atomic APIAsync page flip in DRM  atomic API
Async page flip in DRM atomic APIIgalia
 
From the proposal to ECMAScript – Step by Step
From the proposal to ECMAScript – Step by StepFrom the proposal to ECMAScript – Step by Step
From the proposal to ECMAScript – Step by StepIgalia
 
Migrating Babel from CommonJS to ESM
Migrating Babel     from CommonJS to ESMMigrating Babel     from CommonJS to ESM
Migrating Babel from CommonJS to ESMIgalia
 
The rainbow treasure map: Advanced color management on Linux with AMD/Steam D...
The rainbow treasure map: Advanced color management on Linux with AMD/Steam D...The rainbow treasure map: Advanced color management on Linux with AMD/Steam D...
The rainbow treasure map: Advanced color management on Linux with AMD/Steam D...Igalia
 
Freedreno on Android – XDC 2023
Freedreno on Android          – XDC 2023Freedreno on Android          – XDC 2023
Freedreno on Android – XDC 2023Igalia
 
On-going challenges in the Raspberry Pi driver stack – XDC 2023
On-going challenges in the Raspberry Pi driver stack – XDC 2023On-going challenges in the Raspberry Pi driver stack – XDC 2023
On-going challenges in the Raspberry Pi driver stack – XDC 2023Igalia
 

Más de Igalia (20)

Running JS via WASM faster with JIT
Running JS via WASM      faster with JITRunning JS via WASM      faster with JIT
Running JS via WASM faster with JIT
 
To crash or not to crash: if you do, at least recover fast!
To crash or not to crash: if you do, at least recover fast!To crash or not to crash: if you do, at least recover fast!
To crash or not to crash: if you do, at least recover fast!
 
Implementing a Vulkan Video Encoder From Mesa to GStreamer
Implementing a Vulkan Video Encoder From Mesa to GStreamerImplementing a Vulkan Video Encoder From Mesa to GStreamer
Implementing a Vulkan Video Encoder From Mesa to GStreamer
 
8 Years of Open Drivers, including the State of Vulkan in Mesa
8 Years of Open Drivers, including the State of Vulkan in Mesa8 Years of Open Drivers, including the State of Vulkan in Mesa
8 Years of Open Drivers, including the State of Vulkan in Mesa
 
2023 in Chimera Linux
2023 in Chimera                    Linux2023 in Chimera                    Linux
2023 in Chimera Linux
 
Building a Linux distro with LLVM
Building a Linux distro        with LLVMBuilding a Linux distro        with LLVM
Building a Linux distro with LLVM
 
turnip: Update on Open Source Vulkan Driver for Adreno GPUs
turnip: Update on Open Source Vulkan Driver for Adreno GPUsturnip: Update on Open Source Vulkan Driver for Adreno GPUs
turnip: Update on Open Source Vulkan Driver for Adreno GPUs
 
Graphics stack updates for Raspberry Pi devices
Graphics stack updates for Raspberry Pi devicesGraphics stack updates for Raspberry Pi devices
Graphics stack updates for Raspberry Pi devices
 
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOSDelegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
 
MessageFormat: The future of i18n on the web
MessageFormat: The future of i18n on the webMessageFormat: The future of i18n on the web
MessageFormat: The future of i18n on the web
 
Replacing the geometry pipeline with mesh shaders
Replacing the geometry pipeline with mesh shadersReplacing the geometry pipeline with mesh shaders
Replacing the geometry pipeline with mesh shaders
 
I'm not an AMD expert, but...
I'm not an AMD expert, but...I'm not an AMD expert, but...
I'm not an AMD expert, but...
 
Status of Vulkan on Raspberry
Status of Vulkan on RaspberryStatus of Vulkan on Raspberry
Status of Vulkan on Raspberry
 
Enable hardware acceleration for GL applications without glamor on Xorg modes...
Enable hardware acceleration for GL applications without glamor on Xorg modes...Enable hardware acceleration for GL applications without glamor on Xorg modes...
Enable hardware acceleration for GL applications without glamor on Xorg modes...
 
Async page flip in DRM atomic API
Async page flip in DRM  atomic APIAsync page flip in DRM  atomic API
Async page flip in DRM atomic API
 
From the proposal to ECMAScript – Step by Step
From the proposal to ECMAScript – Step by StepFrom the proposal to ECMAScript – Step by Step
From the proposal to ECMAScript – Step by Step
 
Migrating Babel from CommonJS to ESM
Migrating Babel     from CommonJS to ESMMigrating Babel     from CommonJS to ESM
Migrating Babel from CommonJS to ESM
 
The rainbow treasure map: Advanced color management on Linux with AMD/Steam D...
The rainbow treasure map: Advanced color management on Linux with AMD/Steam D...The rainbow treasure map: Advanced color management on Linux with AMD/Steam D...
The rainbow treasure map: Advanced color management on Linux with AMD/Steam D...
 
Freedreno on Android – XDC 2023
Freedreno on Android          – XDC 2023Freedreno on Android          – XDC 2023
Freedreno on Android – XDC 2023
 
On-going challenges in the Raspberry Pi driver stack – XDC 2023
On-going challenges in the Raspberry Pi driver stack – XDC 2023On-going challenges in the Raspberry Pi driver stack – XDC 2023
On-going challenges in the Raspberry Pi driver stack – XDC 2023
 

Último

FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxJOSEMANUELHERNANDEZH11
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxMariaBurgos55
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 

Último (20)

FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptx
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptx
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 

Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia

  • 1. Introducción a Mesa: Caso específico de los dispositivos Raspberry Pi Alejandro Piñeiro Iglesias 2023-10-28
  • 2. Introducción a Mesa. Rasperry Pi. Alejandro Piñeiro Iglesias Sobre mí ● Desarrollador de Igalia desde el 2006 ● Miembro del Graphics Team en Igalia ● Desarrollador de drivers gráficos desde el 2015 ● Principalmente en los drivers libres de GPUs de Intel y Broadcom
  • 3. Introducción a Mesa. Rasperry Pi. Alejandro Piñeiro Iglesias Drivers gráficos? ● Además de la CPU, existen otros tipos de procesadores, más especializados (DSP, VPU, etc) ● GPU (Graphics Processor Unit): procesador especializado en el renderizado y tratamiento de imagenes. ● Un driver gráfico es el sw que permite usar esa GPU ● Como se usa cada GPU depende del modelo/fabricante
  • 4. Introducción a Mesa. Rasperry Pi. Alejandro Piñeiro Iglesias Interfaces/APIs ● Existen varias APIs que abstraen/estandarizan el uso de las funcionalidades de la GPU: ● OpenGL (1992) ● OpenGL ES (2003) ● Vulkan (2016)
  • 5. Introducción a Mesa. Rasperry Pi. Alejandro Piñeiro Iglesias Ejemplo OpenGL ES
  • 6. Introducción a Mesa. Rasperry Pi. Alejandro Piñeiro Iglesias Lenguajes de Shading ● Lenguajes de programación gráficos ● Diseñados para ser ejecutados directamente en la GPU ● Cada API gráfica moderna usa al menos uno: ● GLSL: OpenGL y OpenGL ES ● SPIR-V: Vulkan
  • 7. Introducción a Mesa. Rasperry Pi. Alejandro Piñeiro Iglesias
  • 8. Introducción a Mesa. Rasperry Pi. Alejandro Piñeiro Iglesias Quien los mantiene?
  • 9. Introducción a Mesa. Rasperry Pi. Alejandro Piñeiro Iglesias Mesa ● Mesa es una librería open-source que implementa soporte del OpenGL y Vulkan (y otras APIs) para una gran variedad de hardware ● Fue creada por Brian Paul en los años 90 ● La versión 1.0 fue publicada en Febrero de 1995 ● La version actual es las 23.3.0  Actualmente hay una release por trimestre: AÑO.YY
  • 10. Introducción a Mesa. Rasperry Pi. Alejandro Piñeiro Iglesias
  • 11. Introducción a Mesa. Rasperry Pi. Alejandro Piñeiro Iglesias Comunidad ● La comunidad está formada por desarrolladores voluntarios y múltiples empresas
  • 12. Introducción a Mesa. Rasperry Pi. Alejandro Piñeiro Iglesias Funcionalidades (I) ● Traducir llamadas a las APIs a instrucciones que serán ejecutadas por el HW ● Configuración del HW para la ejecución de los shaders: configurar depth, stencil test, blend, etc ● Buscar soluciones para limitaciones HW: soporte de tipos de 64 bits, falta de instrucciones en el ISA final, etc. ● Indicar a la aplicación los límites del HW
  • 13. Introducción a Mesa. Rasperry Pi. Alejandro Piñeiro Iglesias Funcionalidades (II) ● Se encarga de compilar los shaders (GLSL o SPIR-V) ● Hay un frontend compiler que produce como salida un lenguaje intermedio llamado NIR ● Cada uno de los drivers de Mesa implementa un backend compiler para obtener el código ensamblador a partir de NIR
  • 14. Introducción a Mesa. Rasperry Pi. Alejandro Piñeiro Iglesias Mesa CI ● Cualquier cambio en Mesa requiere pasar por varios requisitos: ● Revisión por otro desarrollador ● Sin fallos en test suites: piglit, vk-gl-cts ● Vk-gl-cts es la test suite mantenida por Khronos. Es la que se usa para determinar si un driver es conforme al API de Khronos (OpenGL, Vulkan, etc)
  • 15. Introducción a Mesa. Rasperry Pi. Alejandro Piñeiro Iglesias Drivers ● Intel (i965, i915, Iris, anvil, crocus) ● AMD (radeonsi, r600, radv) ● NVIDIA (nouveau, nvk) ● Vivante (etnaviv) ● Qualcomm Adreno (freedreno, turnip) ● Arm mali (lima, panfrost, panvk) ● Broadcom (vc4, v3d, v3dv)
  • 16. Introducción a Mesa. Rasperry Pi. Alejandro Piñeiro Iglesias GLSL
  • 17. Introducción a Mesa. Rasperry Pi. Alejandro Piñeiro Iglesias NIR
  • 18. Introducción a Mesa. Rasperry Pi. Alejandro Piñeiro Iglesias Ensamblador (Broadcom)
  • 19. Introducción a Mesa. Rasperry Pi. Alejandro Piñeiro Iglesias Broadcom GPU (I) ● Basada en tiling, en vez de renderizar toda la escena de una pasada, la divide en “tiles” (mosaicos): ● Solo carga en memoria lo necesario para cada tile, reduciendo la cantidad de memoria y ancho de banda ● Optimización de la caché ● Arquitecturas de tiling es lo más habitual en GPU para embebidos/mobiles
  • 20. Introducción a Mesa. Rasperry Pi. Alejandro Piñeiro Iglesias Broadcom GPU (II) ● Soporte HW orientado a OpenGL ES y (desde VideoCore VI) Vulkan ● Varias funcionales necesarias para las últimas versiones de OpenGL no soportadas ● Subsistema principal son los QPUs (SIMD) ● Cada uno tiene dos unidades de procesamiento aritmético (ALUs), lo que permite hasta dos operaciones aritméticas por instrucción
  • 21. Introducción a Mesa. Rasperry Pi. Alejandro Piñeiro Iglesias Raspberry Pi ● Serie de dispositivos embebidos desarrollados por Raspberry Pi Ltd ● Objetivos originales orientados a la promoción de la enseñanza de programación en escuelas ● Se han convertido en modelos muy populares y extendiendo su rango de uso ● Procesador ARM, GPU Broadcom de la serie VideoCore
  • 22. Introducción a Mesa. Rasperry Pi. Alejandro Piñeiro Iglesias Raspberry Pi - timeline ● Raspberry Pi – 2012 (VideoCore IV) ● Raspberry Pi 2 – 2015 (VideoCore IV) ● Raspberry Pi 3 – 2016 (VideoCore IV) ● Raspberry Pi 4 – 2019 (VideoCore VI) ● Raspberry Pi 5 – 2023 (VideoCore VII)
  • 23. Introducción a Mesa. Rasperry Pi. Alejandro Piñeiro Iglesias Raspberry Pi - drivers ● Raspberry Pi, Raspberry Pi 2, y Raspberry Pi 3 tienen el driver de Mesa VC4, que soporta OpenGL y OpenGL ES ● Raspberry Pi 4 y Raspberry Pi 5 tienen el driver de Mesa V3D que soporta OpenGL y OpenGL ES, y v3dv que soporta Vulkan ● Inicialmente v3d se llamaba VC5, pero se cambio ya que era posible soportar varias generaciones con el mismo driver
  • 24. Introducción a Mesa. Rasperry Pi. Alejandro Piñeiro Iglesias Raspberry Pi - experiencia ● Empezamos a involucrarnos a finales del 2018, un poco antes del lanzamiento oficial de la Raspberry Pi 4 ● VC4 y V3D ya existían, creados inicialmente por Broadcom ● Trabajo inicial basado en consolidar los drivers, y extender su funcionalidad (nuevas extensiones) en todos los dispositivos, pero más trabajo en la rpi4 ● Rpi4 Oficialmente OpenGL ES 3.1 desde 2020-01
  • 25. Introducción a Mesa. Rasperry Pi. Alejandro Piñeiro Iglesias Raspberry Pi – v3dv (I) ● Driver de Vulkan inicialmente para la rpi4 ● “De cero”: se intentó reutilizar todo lo posible: ● El frontend de Mesa proporciona varias funcionalidades (conversion de SPIR-V a NIR, abstracciones de Mesa etc) ● Varios componentes de v3d se reutilizaron: definición de los comandos de la GPU, definición del ISA, simulador, etc
  • 26. Introducción a Mesa. Rasperry Pi. Alejandro Piñeiro Iglesias Raspberry Pi – v3dv (II) ● Desarrollo inicial lo empezó Iago Toral ● Una vez que hubo una base funcional (posible ejecutar programas sencillos) se incorporó Alejandro Piñeiro, y se empezaron a dividir tareas ● Objetivo inicial conseguir la funcionalidad mínima de Vulkan 1.0 (con unas pocas excepciones)
  • 27. Introducción a Mesa. Rasperry Pi. Alejandro Piñeiro Iglesias Raspberry Pi – v3dv (III) ● [Noviembre 2019] Inicio ● [Enero 2020] Triangulo básico ● [Agosto 2020] Vulkan 1.0 minima ● [Octubre 2020] Vulkan 1.0 conforme ● [Diciembre 2020] Trabajo en rendimiento ● [Diciembre 2021] Vulkan 1.1 conforme ● [Julio 2022] Vulkan 1.2 conforme
  • 28. Introducción a Mesa. Rasperry Pi. Alejandro Piñeiro Iglesias Raspberry Pi – v3dv (IV)
  • 29. Introducción a Mesa. Rasperry Pi. Alejandro Piñeiro Iglesias Raspberry Pi – rpi5 (I) ● Incremento significativo en rendimiento y funcionalidad: ● 8 render targets (4 en la rpi4) ● Incremento en varios límites ● Más formatos de imagen ● Más operaciones del procesador ● FullDrawIndexUint32, depthClamp, depthBounds, scalarBlockLayout, etc
  • 30. Introducción a Mesa. Rasperry Pi. Alejandro Piñeiro Iglesias Raspberry Pi – rpi5 (II) ● Trabajo inicial totalmente basado en el simulador (aún no había dispositivo) ● Como con la rpi4, se hizo un trabajo inicial individual, hasta llegar a una funcionalidad base (triangulo), luego se incorporó un segundo desarrollador
  • 31. Introducción a Mesa. Rasperry Pi. Alejandro Piñeiro Iglesias Raspberry Pi – rpi5 (III) ● Cambios significativos en los comandos, en el ISA y en los registros. ● Aún así se inició bajo la idea de que no se necesitaría un nuevo driver, sino codepaths para cada versión ● Quedó confirmado una vez el driver estuvo terminado (pasando CTS) ● Con el simulador no se pudieron hacer pruebas con aplicaciones reales
  • 32. Introducción a Mesa. Rasperry Pi. Alejandro Piñeiro Iglesias Raspberry Pi – rpi5 (IV) ● Llega el dispositivo! ● Primero se necesita dar soporte en el kernel de Linux de la nueva GPU ● Sorpresas ● Diferencia en gestión de compute shaders ● Documentación incompleta ● Version HW final diferente (7.1.2 vs 7.1.6) ● Testeo con aplicaciones reales
  • 33. Introducción a Mesa. Rasperry Pi. Alejandro Piñeiro Iglesias Raspberry Pi – rpi5 (V) ● El 28 de Septiembre se hace el anuncio oficial. ● El mismo día se manda el código para integración en el repositorio upstream de Mesa ● El 14 de Octubre el soporte para la rpi5 se integra ● Siguiente: ● Pasar el conformance de Khronos (CTS) ● Arreglar posibles issues de los usuarios ● Seguir con la evolución del driver
  • 34. Introducción a Mesa. Rasperry Pi. Alejandro Piñeiro Iglesias Preguntas? www.igalia.com/jobs