Panfrost
A reverse engineered FOSS driver for Mali Midgard and Bifrost GPUs
Panfrost A reverse engineered FOSS driver for Mali Midgard and - - PowerPoint PPT Presentation
Panfrost A reverse engineered FOSS driver for Mali Midgard and Bifrost GPUs Contributors Alyssa Rosenzweig Most of the Midgard RE/Driver development Connor Abbott Initial Midgard ISA RE Most of the Bifrost ISA RE Lyude
A reverse engineered FOSS driver for Mali Midgard and Bifrost GPUs
– Most of the Midgard RE/Driver development
– Initial Midgard ISA RE – Most of the Bifrost ISA RE
– Helped with Bifrost utilities (assembler+panwrap)
– Midgard (Mali Txxx) – Bifrost (Mali Gxx)
drivers and the open source kernel driver from ARM
with Mali GPUs have mainline drivers
embedded GPUs
Midgard
– NIR-based compiler supporting simple shaders
– Prototype Mesa driver
– ALU – Load/store unit – Texture unit
Midgard
– VMUL, VADD, SMUL, SADD, VLUT
– VMUL, SADD concurrent – VADD, SMUL, VLUT concurrent
pressure
chains” instead of true command streams
dependencies
– Shader core descriptor, fragment descriptor, etc
– Vertex: vertex shaders – Tiler: sorts triangles into tiles, passes down to fragment shader – Fragment: final rasterization over passed in tiles
GPUs
Midgard
and documented
Bifrost
unpacked by GPU at runtime
Bifrost
– Register read/write – FMA – ADD
instruction (skips register file, less power and spilling)
– Varying interpolation unit – Attribute fetching unit – Load/store unit – Texture unit
latency instructions
– Bypasses fixed-latency mechanism used for registers
13 in total
quadwords
quadwords
– Panwrap: provides userspace tracing/recording/replay – Midgard&Bifrost assembler – Shader runner
– Midgard&Bifrost disassembler
https://panfrost.freedesktop.org/building-panfros t-mesa.html