SlideShare una empresa de Scribd logo
1 de 36
Descargar para leer sin conexión
Embedded Graphics
Drivers in Mesa
About GPUs
• It is a specialized electronic circuit designed to
rapidly manipulate and alter memory to accelerate
the creation of images in a frame buffer intended
for output to a display device. Wikipedia.
• They are becoming increasingly general purpose
processors that can run programs (shaders).
• They are highly threaded and typically use SIMD to
operate on multiple inputs at the same time.
• Still contain fixed function pieces for graphics-
specific functions:
• Texture sampling
• Primitive assembly
• etc
Linux graphics stack
based on diagram by Shmuel Csaba Otto Traian; GNU FDL 1.3+ and CC-BY-SA 3.0+; created 2014-03-02, last updated 2015-05-30
System Call Interface (SCI)
Hardware
Linux kernel
Wayland Compositor or
X server
3D
computer
game
DRM
GPU
Mesa 3D
DRM
library Subroutines
Graphics
RAM
Display
controller
KMS
Screen
Game engine
Geometry
data
Texture
data
Sound
data
X11 protocol
Wayland
protocol
or
or
Graphics APIs
• OpenGL 1.0 was released in January 1992 by
Silicon Graphics (SGI).
• Based around SGI hardware of the time which had
very fixed functionality.
• Eg, explicit API to draw a triangle with a colour:
/* Set a blue colour */
glColor3f(0.0f, 0.0f, 1.0f);
/* Draw a triangle, describing its points */
glBegin(GL_TRIANGLES);
glVertex3f(0.0f,1.0f,0.0f);
glVertex3f(-1.0f,-1.0f,0.0f);
glVertex3f(1.0f,-1.0f,0.0f);
glEnd();
• In 2004 OpenGL 2.0 was released.
• Introduced the concept of shaders.
• Can now influence the rendering with programs
called shaders.
• Eg, choose a colour programatically:
void main()
{
/* Choose the colour based on the X-position of the pixel */
gl_FragColor = vec4(gl_FragCoord.x * 0.008 - 1.0, 0.0, 0.0, 1.0);
}
• In later versions of GL more and more functionality
is moved into the programmable shaders.
• Much more programmable, much less fixed-
function.
• Inputs are more often given in buffers rather than
via API calls.
• Eg, vertex data now in a buffer:
# Position Colour
-1 -1 0xff0000ff
0 -1 0xff0000ff
-1 0 0xff0000ff
0 -1 0xff0000ff
-1 0 0xff0000ff
0 0 0xff0000ff
Buffer containing
vertices
glVertexAttribPointer(0, 2, GL_FLOAT,
GL_FALSE, 12, 0);
glVertexAttribPointer(1, 4, GL_UNSIGNED_BYTE,
GL_TRUE, 12, 8);
Commands describing
buffer layout
OpenGL ES
• Simplified version of OpenGL targetting embedded
devices.
• Removes most of the legacy cruft and things that
are hard to implement in hardware.
• Is increasingly similar to modern versions of
OpenGL which also try to deprecate old
functionality.
• Vulkan 1.0 released in 2016
• Clean break from legacy OpenGL
• Much less driver overhead
• Everything is specified in buffers
• The application has the responsibility to manage
buffers and synchronisation.
• Harder to use but allows applications to exploit the
hardware better
• Suitable for both embedded and desktop hardware
Mesa
• Open-source implementation of the OpenGL and
Vulkan specifications for a variety of hardware on
user-space as a library.
• The Mesa project was originally started by Brian
Paul.
• Version 1.0 released in February 1995.
• Originally used only software rendering
• Now has support for many different hardware
devices
• Current version is 19.2.
• There are drivers for:
• Intel (i965, i915, anv)
• AMD (radv, radeonsi, r600)
• NVIDIA (nouveau)
• Imagination Technologies (imx)
• Broadcom (vc4, vc5)
• Qualcomm (freedreno)
• Software renderers (classic swrast, softpipe,
llvmpipe, OpenSWR)
• VMware virtual GPU
• Etc
• Supports:
• OpenGL 4.6
• OpenGL ES 3.2
• Vulkan 1.1
• All are the latest versions
• Caveat: not all drivers support the latest version
Architecture of Mesa
GalliumDRI
Mesa
state tracker
Application
i965
Freedreno
Panfrost
nvc0
vc4
r600
Mesa
Drivers
OpenGL
API
Callback interface for
drivers
Shared state tracker
for simpler
driver interface
State tracker to
manage GL API
• Mesa has a loader that selects the driver by asking
for the vendor id, chip id... from the kernel driver
via DRM.
• There is a map of PCI IDs and user-space Mesa
drivers.
• When it is found, Mesa loads the respective driver
and sees if the driver succeeds
• In case of failure, the loader tries software
renderers.
• It is possible to force software renderer
• LIBGL ALWAYS SOFTWARE=1
• The GL API is filtered through the Mesa state
tracker into a simpler set of callbacks into the
driver.
• This handles many things such as GL’s weird
object management.
• Unifies different APIs from different versions of
GL.
• For the i965 Intel driver, these callbacks are
handled directly.
• For most other drivers, Gallium is used as an extra
layer.
• This handles even more state tracking such as
caching state objects.
• Drivers have even less code to implement.
Compiler architecture
GLSL IR
GLSL shader
i965
Freedreno
llvmpipe
radeonsi
vc4
r600
Mesa
Drivers
Abstract syntax
tree
SPIR-V shader
LLVM
TGSINIR
Used in Vulkan
or optionally in
OpenGL 4.6
Shader compiled
to SPIR-V by
application
High-level
intermediate
representation
Lowlevel IR
many optimisations
performed here
IR
used
by
G
allium
External general
compiler project
GLSL example
uniform vec4 args1, args2;
void main()
{
gl_FragColor = log2(args1) + args2;
}
GLSL IR
GLSL IR for native fragment shader 3:
(
(declare (location=2 shader_out ) vec4 gl_FragColor)
(declare (location=0 uniform ) vec4 args1)
(declare (location=1 uniform ) vec4 args2)
( function main
(signature void
(parameters)
(
(assign (xyzw)
(var_ref gl_FragColor)
(expression vec4 + (expression vec4 log2 (var_ref args1) )
(var_ref args2) ) )
))
)
)
NIR
impl main {
block block_0:
/* preds: */
vec1 32 ssa_0 = load_const (0x00000000 /* 0.000000 */)
vec4 32 ssa_1 = intrinsic load_uniform (ssa_0) (0, 16, 160)
vec1 32 ssa_2 = flog2 ssa_1.x
vec1 32 ssa_3 = flog2 ssa_1.y
vec1 32 ssa_4 = flog2 ssa_1.z
vec1 32 ssa_5 = flog2 ssa_1.w
vec4 32 ssa_6 = intrinsic load_uniform (ssa_0) (16, 16, 160)
vec1 32 ssa_7 = fadd ssa_2, ssa_6.x
vec1 32 ssa_8 = fadd ssa_3, ssa_6.y
vec1 32 ssa_9 = fadd ssa_4, ssa_6.z
vec1 32 ssa_10 = fadd ssa_5, ssa_6.w
vec4 32 ssa_11 = vec4 ssa_7, ssa_8, ssa_9, ssa_10
intrinsic store_output (ssa_11, ssa_0) (4, 15, 0, 160)
/* succs: block_1 */
block block_1:
}
Intel i965 instruction set
START B0 (54 cycles)
math log(16) g3<1>F g2<0,1,0>F null<8,8,1>F
math log(16) g5<1>F g2.1<0,1,0>F null<8,8,1>F
math log(16) g7<1>F g2.2<0,1,0>F null<8,8,1>F
math log(16) g9<1>F g2.3<0,1,0>F null<8,8,1>F
add(16) g120<1>F g3<8,8,1>F g2.4<0,1,0>F
add(16) g122<1>F g5<8,8,1>F g2.5<0,1,0>F
add(16) g124<1>F g7<8,8,1>F g2.6<0,1,0>F
add(16) g126<1>F g9<8,8,1>F g2.7<0,1,0>F
sendc(16) null<1>UW g120<8,8,1>UD 0x90031000
render MsgDesc: RT write SIMD16 LastRT mlen 8 rlen 0
END B0
Embedded drivers
Freedreno
• For Qualcomm Adreno devices
• Started by Rob Clark in 2012
• Reversed engineered
• Supports GL 3.1 and GLES 3.1
• Continued development by Google and Igalia
Devices
• Phones/Tablets:
• Nexus 4 (a3xx)
• Nexus 7 Flo (a3xx)
• Pixel 3a (a6xx)
• ARM boards:
• Inforce 6540 (a4xx)
• Inforce 6640 (a5xx)
• bSTem (a3xx)
• apq8074 dragonboard (a3xx)
vc4
• For Broadcom VideoCore IV GPUs
• Used in the Raspberry Pi 3
• Written by Eric Anholt while working at Broadcom
• Developed using the released docs from Broadcom
• Supports OpenGL ES 3.1
• Under continued development including by Igalia
vc3d
• Project to create a driver for the VideoCore VI GPU
in the Rasperry Pi 4
• Very different architecture to the previous one
• Also started by Eric Anholt
• Being continued by Igalia
Panfrost
• For ARM Mali Txxx (Midgard) and Gxx (Bifrost) GPUs
• Used in Chromebooks
• Started by Alyssa Rosenzweig
• Reverse engineered
• Merged into Mesa master
• ARM is now contributing to it too
• Demo from XDC 2019 shows running desktop GL
2.0
• They are looking to support GL 3.0 and Vulkan
Thanks
Questions?

Más contenido relacionado

La actualidad más candente

Linux memory-management-kamal
Linux memory-management-kamalLinux memory-management-kamal
Linux memory-management-kamalKamal Maiti
 
Linux kernel debugging
Linux kernel debuggingLinux kernel debugging
Linux kernel debuggingHao-Ran Liu
 
[Unite Seoul 2019] Mali GPU Architecture and Mobile Studio
[Unite Seoul 2019] Mali GPU Architecture and Mobile Studio [Unite Seoul 2019] Mali GPU Architecture and Mobile Studio
[Unite Seoul 2019] Mali GPU Architecture and Mobile Studio Owen Wu
 
SIGGRAPH Asia 2008 Modern OpenGL
SIGGRAPH Asia 2008 Modern OpenGLSIGGRAPH Asia 2008 Modern OpenGL
SIGGRAPH Asia 2008 Modern OpenGLMark Kilgard
 
CICS error and exception handling-recovery and restart-session 6
CICS error and exception handling-recovery and restart-session 6CICS error and exception handling-recovery and restart-session 6
CICS error and exception handling-recovery and restart-session 6Srinimf-Slides
 
Understaing Android EGL
Understaing Android EGLUnderstaing Android EGL
Understaing Android EGLSuhan Lee
 
Siggraph2016 - The Devil is in the Details: idTech 666
Siggraph2016 - The Devil is in the Details: idTech 666Siggraph2016 - The Devil is in the Details: idTech 666
Siggraph2016 - The Devil is in the Details: idTech 666Tiago Sousa
 

La actualidad más candente (9)

Linux memory-management-kamal
Linux memory-management-kamalLinux memory-management-kamal
Linux memory-management-kamal
 
Linux kernel debugging
Linux kernel debuggingLinux kernel debugging
Linux kernel debugging
 
Intel i7
Intel i7Intel i7
Intel i7
 
[Unite Seoul 2019] Mali GPU Architecture and Mobile Studio
[Unite Seoul 2019] Mali GPU Architecture and Mobile Studio [Unite Seoul 2019] Mali GPU Architecture and Mobile Studio
[Unite Seoul 2019] Mali GPU Architecture and Mobile Studio
 
SIGGRAPH Asia 2008 Modern OpenGL
SIGGRAPH Asia 2008 Modern OpenGLSIGGRAPH Asia 2008 Modern OpenGL
SIGGRAPH Asia 2008 Modern OpenGL
 
CICS error and exception handling-recovery and restart-session 6
CICS error and exception handling-recovery and restart-session 6CICS error and exception handling-recovery and restart-session 6
CICS error and exception handling-recovery and restart-session 6
 
Understaing Android EGL
Understaing Android EGLUnderstaing Android EGL
Understaing Android EGL
 
Siggraph2016 - The Devil is in the Details: idTech 666
Siggraph2016 - The Devil is in the Details: idTech 666Siggraph2016 - The Devil is in the Details: idTech 666
Siggraph2016 - The Devil is in the Details: idTech 666
 
OpenCL 3.0 Reference Guide
OpenCL 3.0 Reference GuideOpenCL 3.0 Reference Guide
OpenCL 3.0 Reference Guide
 

Similar a Embedded Graphics Drivers in Mesa (ELCE 2019)

The Architecture of Intel Processor Graphics: Gen 11
The Architecture of Intel Processor Graphics: Gen 11The Architecture of Intel Processor Graphics: Gen 11
The Architecture of Intel Processor Graphics: Gen 11DESMOND YUEN
 
The Architecture of 11th Generation Intel® Processor Graphics
The Architecture of 11th Generation Intel® Processor GraphicsThe Architecture of 11th Generation Intel® Processor Graphics
The Architecture of 11th Generation Intel® Processor GraphicsIntel® Software
 
The next generation of GPU APIs for Game Engines
The next generation of GPU APIs for Game EnginesThe next generation of GPU APIs for Game Engines
The next generation of GPU APIs for Game EnginesPooya Eimandar
 
Mesa and Its Debugging, Вадим Шовкопляс
Mesa and Its Debugging, Вадим ШовкоплясMesa and Its Debugging, Вадим Шовкопляс
Mesa and Its Debugging, Вадим ШовкоплясSigma Software
 
Advanced Graphics Workshop - GFX2011
Advanced Graphics Workshop - GFX2011Advanced Graphics Workshop - GFX2011
Advanced Graphics Workshop - GFX2011Prabindh Sundareson
 
Dynamic sorting algorithm vizualizer.pdf
Dynamic sorting algorithm vizualizer.pdfDynamic sorting algorithm vizualizer.pdf
Dynamic sorting algorithm vizualizer.pdfAgneshShetty
 
0xdroid osdc-2010-100426084937-phpapp02
0xdroid osdc-2010-100426084937-phpapp020xdroid osdc-2010-100426084937-phpapp02
0xdroid osdc-2010-100426084937-phpapp02chon2010
 
Seminar presentation on OpenGL
Seminar presentation on OpenGLSeminar presentation on OpenGL
Seminar presentation on OpenGLMegha V
 
NIOS II Processor.ppt
NIOS II Processor.pptNIOS II Processor.ppt
NIOS II Processor.pptAtef46
 
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
 
On-going challenges in the Raspberry Pi driver stack: OpenGL 3, Vulkan and mo...
On-going challenges in the Raspberry Pi driver stack: OpenGL 3, Vulkan and mo...On-going challenges in the Raspberry Pi driver stack: OpenGL 3, Vulkan and mo...
On-going challenges in the Raspberry Pi driver stack: OpenGL 3, Vulkan and mo...Juan A. Suárez Romero
 
[Android Codefest Germany] Adding x86 target to your Android app by Xavier Ha...
[Android Codefest Germany] Adding x86 target to your Android app by Xavier Ha...[Android Codefest Germany] Adding x86 target to your Android app by Xavier Ha...
[Android Codefest Germany] Adding x86 target to your Android app by Xavier Ha...BeMyApp
 
LMG Lightning Talks - SFO17-205
LMG Lightning Talks - SFO17-205LMG Lightning Talks - SFO17-205
LMG Lightning Talks - SFO17-205Linaro
 
Vpu technology &gpgpu computing
Vpu technology &gpgpu computingVpu technology &gpgpu computing
Vpu technology &gpgpu computingArka Ghosh
 
Vpu technology &gpgpu computing
Vpu technology &gpgpu computingVpu technology &gpgpu computing
Vpu technology &gpgpu computingArka Ghosh
 
Vpu technology &gpgpu computing
Vpu technology &gpgpu computingVpu technology &gpgpu computing
Vpu technology &gpgpu computingArka Ghosh
 
Vpu technology &gpgpu computing
Vpu technology &gpgpu computingVpu technology &gpgpu computing
Vpu technology &gpgpu computingArka Ghosh
 
Challenges in GPU compilers
Challenges in GPU compilersChallenges in GPU compilers
Challenges in GPU compilersAnastasiaStulova
 

Similar a Embedded Graphics Drivers in Mesa (ELCE 2019) (20)

The Architecture of Intel Processor Graphics: Gen 11
The Architecture of Intel Processor Graphics: Gen 11The Architecture of Intel Processor Graphics: Gen 11
The Architecture of Intel Processor Graphics: Gen 11
 
The Architecture of 11th Generation Intel® Processor Graphics
The Architecture of 11th Generation Intel® Processor GraphicsThe Architecture of 11th Generation Intel® Processor Graphics
The Architecture of 11th Generation Intel® Processor Graphics
 
The next generation of GPU APIs for Game Engines
The next generation of GPU APIs for Game EnginesThe next generation of GPU APIs for Game Engines
The next generation of GPU APIs for Game Engines
 
Mesa and Its Debugging, Вадим Шовкопляс
Mesa and Its Debugging, Вадим ШовкоплясMesa and Its Debugging, Вадим Шовкопляс
Mesa and Its Debugging, Вадим Шовкопляс
 
Advanced Graphics Workshop - GFX2011
Advanced Graphics Workshop - GFX2011Advanced Graphics Workshop - GFX2011
Advanced Graphics Workshop - GFX2011
 
Dynamic sorting algorithm vizualizer.pdf
Dynamic sorting algorithm vizualizer.pdfDynamic sorting algorithm vizualizer.pdf
Dynamic sorting algorithm vizualizer.pdf
 
0xdroid osdc-2010-100426084937-phpapp02
0xdroid osdc-2010-100426084937-phpapp020xdroid osdc-2010-100426084937-phpapp02
0xdroid osdc-2010-100426084937-phpapp02
 
Seminar presentation on OpenGL
Seminar presentation on OpenGLSeminar presentation on OpenGL
Seminar presentation on OpenGL
 
NIOS II Processor.ppt
NIOS II Processor.pptNIOS II Processor.ppt
NIOS II Processor.ppt
 
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
 
On-going challenges in the Raspberry Pi driver stack: OpenGL 3, Vulkan and mo...
On-going challenges in the Raspberry Pi driver stack: OpenGL 3, Vulkan and mo...On-going challenges in the Raspberry Pi driver stack: OpenGL 3, Vulkan and mo...
On-going challenges in the Raspberry Pi driver stack: OpenGL 3, Vulkan and mo...
 
[Android Codefest Germany] Adding x86 target to your Android app by Xavier Ha...
[Android Codefest Germany] Adding x86 target to your Android app by Xavier Ha...[Android Codefest Germany] Adding x86 target to your Android app by Xavier Ha...
[Android Codefest Germany] Adding x86 target to your Android app by Xavier Ha...
 
LMG Lightning Talks - SFO17-205
LMG Lightning Talks - SFO17-205LMG Lightning Talks - SFO17-205
LMG Lightning Talks - SFO17-205
 
Vpu technology &gpgpu computing
Vpu technology &gpgpu computingVpu technology &gpgpu computing
Vpu technology &gpgpu computing
 
LEGaTO Integration
LEGaTO IntegrationLEGaTO Integration
LEGaTO Integration
 
Programar para GPUs
Programar para GPUsProgramar para GPUs
Programar para GPUs
 
Vpu technology &gpgpu computing
Vpu technology &gpgpu computingVpu technology &gpgpu computing
Vpu technology &gpgpu computing
 
Vpu technology &gpgpu computing
Vpu technology &gpgpu computingVpu technology &gpgpu computing
Vpu technology &gpgpu computing
 
Vpu technology &gpgpu computing
Vpu technology &gpgpu computingVpu technology &gpgpu computing
Vpu technology &gpgpu computing
 
Challenges in GPU compilers
Challenges in GPU compilersChallenges in GPU compilers
Challenges in GPU compilers
 

Más de Igalia

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?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 WPEIgalia
 
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...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 DevicesIgalia
 
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 MaintenanceIgalia
 
Optimizing Scheduler for Linux Gaming.pdf
Optimizing Scheduler for Linux Gaming.pdfOptimizing Scheduler for Linux Gaming.pdf
Optimizing Scheduler for Linux Gaming.pdfIgalia
 
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
 
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por IgaliaIntroducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por IgaliaIgalia
 
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
 

Más 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
 
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por IgaliaIntroducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
 
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
 

Último

2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 

Último (20)

2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 

Embedded Graphics Drivers in Mesa (ELCE 2019)

  • 2. About GPUs • It is a specialized electronic circuit designed to rapidly manipulate and alter memory to accelerate the creation of images in a frame buffer intended for output to a display device. Wikipedia.
  • 3. • They are becoming increasingly general purpose processors that can run programs (shaders). • They are highly threaded and typically use SIMD to operate on multiple inputs at the same time. • Still contain fixed function pieces for graphics- specific functions: • Texture sampling • Primitive assembly • etc
  • 5. based on diagram by Shmuel Csaba Otto Traian; GNU FDL 1.3+ and CC-BY-SA 3.0+; created 2014-03-02, last updated 2015-05-30 System Call Interface (SCI) Hardware Linux kernel Wayland Compositor or X server 3D computer game DRM GPU Mesa 3D DRM library Subroutines Graphics RAM Display controller KMS Screen Game engine Geometry data Texture data Sound data X11 protocol Wayland protocol or or
  • 7.
  • 8. • OpenGL 1.0 was released in January 1992 by Silicon Graphics (SGI). • Based around SGI hardware of the time which had very fixed functionality. • Eg, explicit API to draw a triangle with a colour: /* Set a blue colour */ glColor3f(0.0f, 0.0f, 1.0f); /* Draw a triangle, describing its points */ glBegin(GL_TRIANGLES); glVertex3f(0.0f,1.0f,0.0f); glVertex3f(-1.0f,-1.0f,0.0f); glVertex3f(1.0f,-1.0f,0.0f); glEnd();
  • 9. • In 2004 OpenGL 2.0 was released. • Introduced the concept of shaders. • Can now influence the rendering with programs called shaders. • Eg, choose a colour programatically: void main() { /* Choose the colour based on the X-position of the pixel */ gl_FragColor = vec4(gl_FragCoord.x * 0.008 - 1.0, 0.0, 0.0, 1.0); }
  • 10. • In later versions of GL more and more functionality is moved into the programmable shaders. • Much more programmable, much less fixed- function. • Inputs are more often given in buffers rather than via API calls. • Eg, vertex data now in a buffer: # Position Colour -1 -1 0xff0000ff 0 -1 0xff0000ff -1 0 0xff0000ff 0 -1 0xff0000ff -1 0 0xff0000ff 0 0 0xff0000ff Buffer containing vertices glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 12, 0); glVertexAttribPointer(1, 4, GL_UNSIGNED_BYTE, GL_TRUE, 12, 8); Commands describing buffer layout
  • 11. OpenGL ES • Simplified version of OpenGL targetting embedded devices. • Removes most of the legacy cruft and things that are hard to implement in hardware. • Is increasingly similar to modern versions of OpenGL which also try to deprecate old functionality.
  • 12.
  • 13. • Vulkan 1.0 released in 2016 • Clean break from legacy OpenGL • Much less driver overhead • Everything is specified in buffers • The application has the responsibility to manage buffers and synchronisation. • Harder to use but allows applications to exploit the hardware better • Suitable for both embedded and desktop hardware
  • 14. Mesa
  • 15. • Open-source implementation of the OpenGL and Vulkan specifications for a variety of hardware on user-space as a library. • The Mesa project was originally started by Brian Paul. • Version 1.0 released in February 1995. • Originally used only software rendering • Now has support for many different hardware devices • Current version is 19.2.
  • 16. • There are drivers for: • Intel (i965, i915, anv) • AMD (radv, radeonsi, r600) • NVIDIA (nouveau) • Imagination Technologies (imx) • Broadcom (vc4, vc5) • Qualcomm (freedreno) • Software renderers (classic swrast, softpipe, llvmpipe, OpenSWR) • VMware virtual GPU • Etc
  • 17. • Supports: • OpenGL 4.6 • OpenGL ES 3.2 • Vulkan 1.1 • All are the latest versions • Caveat: not all drivers support the latest version
  • 18.
  • 20. GalliumDRI Mesa state tracker Application i965 Freedreno Panfrost nvc0 vc4 r600 Mesa Drivers OpenGL API Callback interface for drivers Shared state tracker for simpler driver interface State tracker to manage GL API
  • 21. • Mesa has a loader that selects the driver by asking for the vendor id, chip id... from the kernel driver via DRM. • There is a map of PCI IDs and user-space Mesa drivers. • When it is found, Mesa loads the respective driver and sees if the driver succeeds • In case of failure, the loader tries software renderers. • It is possible to force software renderer • LIBGL ALWAYS SOFTWARE=1
  • 22. • The GL API is filtered through the Mesa state tracker into a simpler set of callbacks into the driver. • This handles many things such as GL’s weird object management. • Unifies different APIs from different versions of GL. • For the i965 Intel driver, these callbacks are handled directly. • For most other drivers, Gallium is used as an extra layer. • This handles even more state tracking such as caching state objects. • Drivers have even less code to implement.
  • 24. GLSL IR GLSL shader i965 Freedreno llvmpipe radeonsi vc4 r600 Mesa Drivers Abstract syntax tree SPIR-V shader LLVM TGSINIR Used in Vulkan or optionally in OpenGL 4.6 Shader compiled to SPIR-V by application High-level intermediate representation Lowlevel IR many optimisations performed here IR used by G allium External general compiler project
  • 25. GLSL example uniform vec4 args1, args2; void main() { gl_FragColor = log2(args1) + args2; }
  • 26. GLSL IR GLSL IR for native fragment shader 3: ( (declare (location=2 shader_out ) vec4 gl_FragColor) (declare (location=0 uniform ) vec4 args1) (declare (location=1 uniform ) vec4 args2) ( function main (signature void (parameters) ( (assign (xyzw) (var_ref gl_FragColor) (expression vec4 + (expression vec4 log2 (var_ref args1) ) (var_ref args2) ) ) )) ) )
  • 27. NIR impl main { block block_0: /* preds: */ vec1 32 ssa_0 = load_const (0x00000000 /* 0.000000 */) vec4 32 ssa_1 = intrinsic load_uniform (ssa_0) (0, 16, 160) vec1 32 ssa_2 = flog2 ssa_1.x vec1 32 ssa_3 = flog2 ssa_1.y vec1 32 ssa_4 = flog2 ssa_1.z vec1 32 ssa_5 = flog2 ssa_1.w vec4 32 ssa_6 = intrinsic load_uniform (ssa_0) (16, 16, 160) vec1 32 ssa_7 = fadd ssa_2, ssa_6.x vec1 32 ssa_8 = fadd ssa_3, ssa_6.y vec1 32 ssa_9 = fadd ssa_4, ssa_6.z vec1 32 ssa_10 = fadd ssa_5, ssa_6.w vec4 32 ssa_11 = vec4 ssa_7, ssa_8, ssa_9, ssa_10 intrinsic store_output (ssa_11, ssa_0) (4, 15, 0, 160) /* succs: block_1 */ block block_1: }
  • 28. Intel i965 instruction set START B0 (54 cycles) math log(16) g3<1>F g2<0,1,0>F null<8,8,1>F math log(16) g5<1>F g2.1<0,1,0>F null<8,8,1>F math log(16) g7<1>F g2.2<0,1,0>F null<8,8,1>F math log(16) g9<1>F g2.3<0,1,0>F null<8,8,1>F add(16) g120<1>F g3<8,8,1>F g2.4<0,1,0>F add(16) g122<1>F g5<8,8,1>F g2.5<0,1,0>F add(16) g124<1>F g7<8,8,1>F g2.6<0,1,0>F add(16) g126<1>F g9<8,8,1>F g2.7<0,1,0>F sendc(16) null<1>UW g120<8,8,1>UD 0x90031000 render MsgDesc: RT write SIMD16 LastRT mlen 8 rlen 0 END B0
  • 30. Freedreno • For Qualcomm Adreno devices • Started by Rob Clark in 2012 • Reversed engineered • Supports GL 3.1 and GLES 3.1 • Continued development by Google and Igalia
  • 31. Devices • Phones/Tablets: • Nexus 4 (a3xx) • Nexus 7 Flo (a3xx) • Pixel 3a (a6xx) • ARM boards: • Inforce 6540 (a4xx) • Inforce 6640 (a5xx) • bSTem (a3xx) • apq8074 dragonboard (a3xx)
  • 32. vc4 • For Broadcom VideoCore IV GPUs • Used in the Raspberry Pi 3 • Written by Eric Anholt while working at Broadcom • Developed using the released docs from Broadcom • Supports OpenGL ES 3.1 • Under continued development including by Igalia
  • 33. vc3d • Project to create a driver for the VideoCore VI GPU in the Rasperry Pi 4 • Very different architecture to the previous one • Also started by Eric Anholt • Being continued by Igalia
  • 34. Panfrost • For ARM Mali Txxx (Midgard) and Gxx (Bifrost) GPUs • Used in Chromebooks • Started by Alyssa Rosenzweig • Reverse engineered • Merged into Mesa master • ARM is now contributing to it too • Demo from XDC 2019 shows running desktop GL 2.0 • They are looking to support GL 3.0 and Vulkan
  • 35.