SlideShare una empresa de Scribd logo
static void
_f_do_barnacle_install_properties(GObjectClass
*gobject_class)
{
GParamSpec *pspec;
/* Party code attribute */
pspec = g_param_spec_uint64
(F_DO_BARNACLE_CODE,
"Barnacle code.",
"Barnacle code",
0,
G_MAXUINT64,
G_MAXUINT64 /*
default value */,
G_PARAM_READABLE
| G_PARAM_WRITABLE |
G_PARAM_PRIVATE);
g_object_class_install_property (gobject_class,
F_DO_BARNACLE_PROP_CODE,
Gráficos 3D en Linux con Mesa
Iago Toral Quiroga <itoral@igalia.com>
Contenidos
1. Introducción a los gráficos 3D
2. Interfaces de programación
3. Mesa
4. X Developers Conference (XDC)
Introducción a los gráficos 3D
Aplicaciones
Cine / TV
Juegos
Edición
Blender
Realidad Virtual
Desktop shells
Gnome Shell
Navegadores web
Epiphany Web Browser
Sistemas embebidos
Android
Y mucho más:
● Ingeniería y diseño industrial
● Medicina
● Simulación
● Formación
● Márketing y comunicación
● Etc.
Introducción a los gráficos 3D
Funcionamiento
sketchfab.com
sketchfab.com
wikipedia.org shadertoy.com
Vertex Shader
sketchfab.com
Tessellation Shader
panda3d.org
Rasterization
Sasha Willems
Fragment Shader
sketchfab.com
Interfaces de programación
Gráficos 3D en Linux con Mesa (GPUL Labs Meetup)
Gráficos 3D en Linux con Mesa (GPUL Labs Meetup)
Gráficos 3D en Linux con Mesa (GPUL Labs Meetup)
sketchfab.com
shadertoy.com
Mesa 3D
● 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
● Intel (i965, i915, anvil)
● AMD (radeonsi, r600, radv)
● NVIDIA (nouveau)
● Imagination (imx)
● Broadcom (vc4, vc5)
● Qualcomm (freedreno)
● Freescale (etnaviv)
Mesa 3D – Drivers de hardware
● AMD
● Broadcom
● Collabora
● Feral Interactive
● Google
● Igalia
● Intel
Mesa 3D – Participación corporativa
● NVIDIA
● Pengutronix
● RedHat
● Samsung
● Valve
● VMware
● 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
● 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
Mesa 3D – Estado actual
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
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)
Mesa 3D – Ejemplo (GLSL)
Mesa 3D – Ejemplo (SPIR-V)
Mesa 3D – Ejemplo (NIR)
Mesa 3D – Ejemplo (i965 asm)
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
● 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
● 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
● 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
● 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
X Developers Conference 2018
X Developers Conference (XDC)
https://xdc2018.x.org/
X Developers Conference (XDC)
¿Preguntas?

Más contenido relacionado

PDF
Instalar civilcad resumido
PPTX
Tarjetas De Video
PDF
Programación de videojuegos con Godot Engine
PDF
Buenooo opengl
PPTX
Unreal engine 4, Fases de desarrollo
DOCX
Sistema operativo windows
PDF
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
Instalar civilcad resumido
Tarjetas De Video
Programación de videojuegos con Godot Engine
Buenooo opengl
Unreal engine 4, Fases de desarrollo
Sistema operativo windows
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia

Similar a Gráficos 3D en Linux con Mesa (GPUL Labs Meetup) (20)

PPTX
Andrid studio
PPTX
04 android studio
DOCX
Colegio de estudios científicos y ...
DOCX
Colegio de estudios científicos y ...
DOCX
Colegio de estudios científicos y ...
ODP
Direct Xy Open Gl
PPTX
Slide share software
PDF
Optimización del rendimiento
PDF
Frameworks para el desarrollo de juegos para dispositivo móviles
DOCX
Trabajo autonomo 1
PDF
Miguel angel pastor moreno
PPS
GPUs para Científicos
PDF
parcial 1 Caso de Estudio Innovatech Solutions.pdf
PPTX
Alexi95
PPTX
DOCX
Auto cad 2013 de los fundamentos a la presentación detallada
PDF
Fase1 grupo103380 76%20(1)
PPTX
Gpu Lorena[1]
ODP
Windows8trabajo
Andrid studio
04 android studio
Colegio de estudios científicos y ...
Colegio de estudios científicos y ...
Colegio de estudios científicos y ...
Direct Xy Open Gl
Slide share software
Optimización del rendimiento
Frameworks para el desarrollo de juegos para dispositivo móviles
Trabajo autonomo 1
Miguel angel pastor moreno
GPUs para Científicos
parcial 1 Caso de Estudio Innovatech Solutions.pdf
Alexi95
Auto cad 2013 de los fundamentos a la presentación detallada
Fase1 grupo103380 76%20(1)
Gpu Lorena[1]
Windows8trabajo
Publicidad

Más de Igalia (20)

PDF
Life of a Kernel Bug Fix
PDF
Unlocking the Full Potential of WPE to Build a Successful Embedded Product
PDF
Advancing WebDriver BiDi support in WebKit
PDF
Jumping Over the Garden Wall - WPE WebKit on Android
PDF
Collective Funding, Governance and Prioritiation of Browser Engine Projects
PDF
Don't let your motivation go, save time with kworkflow
PDF
Solving the world’s (localization) problems
PDF
The Whippet Embeddable Garbage Collection Library
PDF
Nobody asks "How is JavaScript?"
PDF
Getting more juice out from your Raspberry Pi GPU
PDF
WebRTC support in WebKitGTK and WPEWebKit with GStreamer: Status update
PDF
Demystifying Temporal: A Deep Dive into JavaScript New Temporal API
PDF
CSS :has() Unlimited Power
PDF
Device-Generated Commands in Vulkan
PDF
Current state of Lavapipe: Mesa's software renderer for Vulkan
PDF
Vulkan Video is Open: Application showcase
PDF
Scheme on WebAssembly: It is happening!
PDF
EBC - A new backend compiler for etnaviv
PDF
RISC-V LLVM State of the Union
PDF
Device-Generated Commands in Vulkan
Life of a Kernel Bug Fix
Unlocking the Full Potential of WPE to Build a Successful Embedded Product
Advancing WebDriver BiDi support in WebKit
Jumping Over the Garden Wall - WPE WebKit on Android
Collective Funding, Governance and Prioritiation of Browser Engine Projects
Don't let your motivation go, save time with kworkflow
Solving the world’s (localization) problems
The Whippet Embeddable Garbage Collection Library
Nobody asks "How is JavaScript?"
Getting more juice out from your Raspberry Pi GPU
WebRTC support in WebKitGTK and WPEWebKit with GStreamer: Status update
Demystifying Temporal: A Deep Dive into JavaScript New Temporal API
CSS :has() Unlimited Power
Device-Generated Commands in Vulkan
Current state of Lavapipe: Mesa's software renderer for Vulkan
Vulkan Video is Open: Application showcase
Scheme on WebAssembly: It is happening!
EBC - A new backend compiler for etnaviv
RISC-V LLVM State of the Union
Device-Generated Commands in Vulkan
Publicidad

Último (20)

PPTX
Presentación PASANTIAS AuditorioOO..pptx
PPTX
Curso de generación de energía mediante sistemas solares
PPTX
historia_web de la creacion de un navegador_presentacion.pptx
PDF
TRABAJO DE TECNOLOGIA.pdf...........................
PDF
ADMINISTRACIÓN DE ARCHIVOS - TICS (SENA).pdf
PPTX
modulo seguimiento 1 para iniciantes del
PPTX
El uso de las TIC en la vida cotidiana..
PPTX
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
PDF
capacitación de aire acondicionado Bgh r 410
PPTX
Historia Inteligencia Artificial Ana Romero.pptx
PPTX
Sesion 1 de microsoft power point - Clase 1
PPT
introduccion a las_web en el 2025_mejoras.ppt
PPTX
Power Point Nicolás Carrasco (disertación Roblox).pptx
DOCX
Zarate Quispe Alex aldayir aplicaciones de internet .docx
PPT
El-Gobierno-Electrónico-En-El-Estado-Bolivia
PDF
Tips de Seguridad para evitar clonar sus claves del portal bancario.pdf
PDF
Influencia-del-uso-de-redes-sociales.pdf
PPTX
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
PDF
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
DOCX
Contenido Fundamentos de comunicaciones Fibra Optica (1).docx
Presentación PASANTIAS AuditorioOO..pptx
Curso de generación de energía mediante sistemas solares
historia_web de la creacion de un navegador_presentacion.pptx
TRABAJO DE TECNOLOGIA.pdf...........................
ADMINISTRACIÓN DE ARCHIVOS - TICS (SENA).pdf
modulo seguimiento 1 para iniciantes del
El uso de las TIC en la vida cotidiana..
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
capacitación de aire acondicionado Bgh r 410
Historia Inteligencia Artificial Ana Romero.pptx
Sesion 1 de microsoft power point - Clase 1
introduccion a las_web en el 2025_mejoras.ppt
Power Point Nicolás Carrasco (disertación Roblox).pptx
Zarate Quispe Alex aldayir aplicaciones de internet .docx
El-Gobierno-Electrónico-En-El-Estado-Bolivia
Tips de Seguridad para evitar clonar sus claves del portal bancario.pdf
Influencia-del-uso-de-redes-sociales.pdf
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
Contenido Fundamentos de comunicaciones Fibra Optica (1).docx

Gráficos 3D en Linux con Mesa (GPUL Labs Meetup)

  • 1. static void _f_do_barnacle_install_properties(GObjectClass *gobject_class) { GParamSpec *pspec; /* Party code attribute */ pspec = g_param_spec_uint64 (F_DO_BARNACLE_CODE, "Barnacle code.", "Barnacle code", 0, G_MAXUINT64, G_MAXUINT64 /* default value */, G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_PRIVATE); g_object_class_install_property (gobject_class, F_DO_BARNACLE_PROP_CODE, Gráficos 3D en Linux con Mesa Iago Toral Quiroga <itoral@igalia.com>
  • 2. Contenidos 1. Introducción a los gráficos 3D 2. Interfaces de programación 3. Mesa 4. X Developers Conference (XDC)
  • 3. Introducción a los gráficos 3D Aplicaciones
  • 11. Y mucho más: ● Ingeniería y diseño industrial ● Medicina ● Simulación ● Formación ● Márketing y comunicación ● Etc.
  • 12. Introducción a los gráficos 3D Funcionamiento
  • 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
  • 27. ● Intel (i965, i915, anvil) ● AMD (radeonsi, r600, radv) ● NVIDIA (nouveau) ● Imagination (imx) ● Broadcom (vc4, vc5) ● Qualcomm (freedreno) ● Freescale (etnaviv) Mesa 3D – Drivers de hardware
  • 28. ● AMD ● Broadcom ● Collabora ● Feral Interactive ● Google ● Igalia ● Intel Mesa 3D – Participación corporativa ● NVIDIA ● Pengutronix ● RedHat ● Samsung ● Valve ● VMware
  • 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
  • 31. Mesa 3D – Estado actual
  • 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)
  • 34. Mesa 3D – Ejemplo (GLSL)
  • 35. Mesa 3D – Ejemplo (SPIR-V)
  • 36. Mesa 3D – Ejemplo (NIR)
  • 37. Mesa 3D – Ejemplo (i965 asm)
  • 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
  • 44. X Developers Conference (XDC) https://xdc2018.x.org/