SlideShare uma empresa Scribd logo
1 de 46
Baixar para ler offline
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
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?

Mais conteúdo relacionado

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

Colegio de estudios científicos y ...
Colegio de estudios científicos y                                            ...Colegio de estudios científicos y                                            ...
Colegio de estudios científicos y ...
maria-sandoval
 
Colegio de estudios científicos y ...
Colegio de estudios científicos y                                            ...Colegio de estudios científicos y                                            ...
Colegio de estudios científicos y ...
maria-sandoval
 
Colegio de estudios científicos y ...
Colegio de estudios científicos y                                            ...Colegio de estudios científicos y                                            ...
Colegio de estudios científicos y ...
maria-sandoval
 
Auto cad 2013 de los fundamentos a la presentación detallada
Auto cad 2013 de los fundamentos a la presentación detalladaAuto cad 2013 de los fundamentos a la presentación detallada
Auto cad 2013 de los fundamentos a la presentación detallada
León Leon
 

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

Andrid studio
Andrid studioAndrid studio
Andrid studio
 
04 android studio
04 android studio04 android studio
04 android studio
 
Colegio de estudios científicos y ...
Colegio de estudios científicos y                                            ...Colegio de estudios científicos y                                            ...
Colegio de estudios científicos y ...
 
Colegio de estudios científicos y ...
Colegio de estudios científicos y                                            ...Colegio de estudios científicos y                                            ...
Colegio de estudios científicos y ...
 
Colegio de estudios científicos y ...
Colegio de estudios científicos y                                            ...Colegio de estudios científicos y                                            ...
Colegio de estudios científicos y ...
 
Direct Xy Open Gl
Direct Xy Open GlDirect Xy Open Gl
Direct Xy Open Gl
 
Slide share software
Slide share softwareSlide share software
Slide share software
 
Optimización del rendimiento
Optimización del rendimientoOptimización del rendimiento
Optimización del rendimiento
 
Frameworks para el desarrollo de juegos para dispositivo móviles
Frameworks para el desarrollo de juegos para dispositivo móvilesFrameworks para el desarrollo de juegos para dispositivo móviles
Frameworks para el desarrollo de juegos para dispositivo móviles
 
Trabajo autonomo 1
Trabajo autonomo 1Trabajo autonomo 1
Trabajo autonomo 1
 
Miguel angel pastor moreno
Miguel angel pastor morenoMiguel angel pastor moreno
Miguel angel pastor moreno
 
GPUs para Científicos
GPUs para CientíficosGPUs para Científicos
GPUs para Científicos
 
Alexi95
Alexi95Alexi95
Alexi95
 
Jordy
JordyJordy
Jordy
 
Jordy
JordyJordy
Jordy
 
Auto cad 2013 de los fundamentos a la presentación detallada
Auto cad 2013 de los fundamentos a la presentación detalladaAuto cad 2013 de los fundamentos a la presentación detallada
Auto cad 2013 de los fundamentos a la presentación detallada
 
Fase1 grupo103380 76%20(1)
Fase1 grupo103380 76%20(1)Fase1 grupo103380 76%20(1)
Fase1 grupo103380 76%20(1)
 
Gpu Lorena[1]
Gpu Lorena[1]Gpu Lorena[1]
Gpu Lorena[1]
 
Windows8trabajo
Windows8trabajoWindows8trabajo
Windows8trabajo
 
Versión del Software
Versión del SoftwareVersión del Software
Versión del Software
 

Mais de Igalia

Building End-user Applications on Embedded Devices with WPE
Building End-user Applications on Embedded Devices with WPEBuilding End-user Applications on Embedded Devices with WPE
Building End-user Applications on Embedded Devices with WPE
Igalia
 
Automated Testing for Web-based Systems on Embedded Devices
Automated Testing for Web-based Systems on Embedded DevicesAutomated Testing for Web-based Systems on Embedded Devices
Automated Testing for Web-based Systems on Embedded Devices
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 JIT
Igalia
 

Mais de Igalia (20)

A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Building End-user Applications on Embedded Devices with WPE
Building End-user Applications on Embedded Devices with WPEBuilding End-user Applications on Embedded Devices with WPE
Building End-user Applications on Embedded Devices with WPE
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Automated Testing for Web-based Systems on Embedded Devices
Automated Testing for Web-based Systems on Embedded DevicesAutomated Testing for Web-based Systems on Embedded Devices
Automated Testing for Web-based Systems on Embedded Devices
 
Embedding WPE WebKit - from Bring-up to Maintenance
Embedding WPE WebKit - from Bring-up to MaintenanceEmbedding WPE WebKit - from Bring-up to Maintenance
Embedding WPE WebKit - from Bring-up to Maintenance
 
Optimizing Scheduler for Linux Gaming.pdf
Optimizing Scheduler for Linux Gaming.pdfOptimizing Scheduler for Linux Gaming.pdf
Optimizing Scheduler for Linux Gaming.pdf
 
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...
 

Último

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 

Último (10)

Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 

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
  • 21.
  • 22.
  • 23.
  • 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/