Top Banner
Panfrost Open Source Meets Arm GPUs
40

Open Source Meets Arm GPUs - memcpy.io · 2020-05-29 · Launched 2016 OpenGL ES 3.2 ... Open Source userspace driver Drivers Lima

Jun 21, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Open Source Meets Arm GPUs - memcpy.io · 2020-05-29 · Launched 2016 OpenGL ES 3.2 ... Open Source userspace driver Drivers Lima

PanfrostOpen Source Meets Arm GPUs

Page 2: Open Source Meets Arm GPUs - memcpy.io · 2020-05-29 · Launched 2016 OpenGL ES 3.2 ... Open Source userspace driver Drivers Lima

Open FirstOpen First

RobertFoss

@memcpy_io

Page 3: Open Source Meets Arm GPUs - memcpy.io · 2020-05-29 · Launched 2016 OpenGL ES 3.2 ... Open Source userspace driver Drivers Lima

3

Hardware

Page 4: Open Source Meets Arm GPUs - memcpy.io · 2020-05-29 · Launched 2016 OpenGL ES 3.2 ... Open Source userspace driver Drivers Lima

● Mali 2/4XX GPUs● Launched 2007● OpenGL ES 2.0● Found in Samsung S2

ArchitecturesUtgard

Page 5: Open Source Meets Arm GPUs - memcpy.io · 2020-05-29 · Launched 2016 OpenGL ES 3.2 ... Open Source userspace driver Drivers Lima

● Mali TXXX GPUs● Launched 2012● OpenGL ES 3.2● OpenCL 1.2● Vulkan 1.1● Found in Asus C100

ArchitecturesMidgard

Page 6: Open Source Meets Arm GPUs - memcpy.io · 2020-05-29 · Launched 2016 OpenGL ES 3.2 ... Open Source userspace driver Drivers Lima

● Mali GXX GPUs● Launched 2016● OpenGL ES 3.2● OpenCL 2.0● Vulkan 1.1● Found in Huawei Honor 10

ArchitecturesBifrost

Page 7: Open Source Meets Arm GPUs - memcpy.io · 2020-05-29 · Launched 2016 OpenGL ES 3.2 ... Open Source userspace driver Drivers Lima

● Mali G77 GPU● Launched 2019● OpenGL ES 3.2● OpenCL 2.0● Vulkan 1.1● Found in ???

ArchitecturesValhall

???

Page 8: Open Source Meets Arm GPUs - memcpy.io · 2020-05-29 · Launched 2016 OpenGL ES 3.2 ... Open Source userspace driver Drivers Lima

8

Drivers

Page 9: Open Source Meets Arm GPUs - memcpy.io · 2020-05-29 · Launched 2016 OpenGL ES 3.2 ... Open Source userspace driver Drivers Lima

● Supports all GPUs

DriversProprietary

Page 10: Open Source Meets Arm GPUs - memcpy.io · 2020-05-29 · Launched 2016 OpenGL ES 3.2 ... Open Source userspace driver Drivers Lima

● Supports all GPUs● Proprietary userspace driver

DriversProprietary

Page 11: Open Source Meets Arm GPUs - memcpy.io · 2020-05-29 · Launched 2016 OpenGL ES 3.2 ... Open Source userspace driver Drivers Lima

● Supports all GPUs● Proprietary userspace driver● Open Source kernel driver

DriversProprietary

Page 12: Open Source Meets Arm GPUs - memcpy.io · 2020-05-29 · Launched 2016 OpenGL ES 3.2 ... Open Source userspace driver Drivers Lima

● Supports all GPUs● Proprietary userspace driver● Open Source kernel driver● Kernel driver not upstreamable

DriversProprietary

Page 13: Open Source Meets Arm GPUs - memcpy.io · 2020-05-29 · Launched 2016 OpenGL ES 3.2 ... Open Source userspace driver Drivers Lima

● Supports Utgard

DriversLima

Page 14: Open Source Meets Arm GPUs - memcpy.io · 2020-05-29 · Launched 2016 OpenGL ES 3.2 ... Open Source userspace driver Drivers Lima

● Supports Utgard● Open Source userspace driver

DriversLima

Page 15: Open Source Meets Arm GPUs - memcpy.io · 2020-05-29 · Launched 2016 OpenGL ES 3.2 ... Open Source userspace driver Drivers Lima

● Supports Utgard● Open Source userspace driver● Open Source kernel driver

DriversLima

Page 16: Open Source Meets Arm GPUs - memcpy.io · 2020-05-29 · Launched 2016 OpenGL ES 3.2 ... Open Source userspace driver Drivers Lima

● Supports Utgard● Open Source userspace driver● Open Source kernel driver● Both upstreamed to Kernel & Mesa

DriversLima

Page 17: Open Source Meets Arm GPUs - memcpy.io · 2020-05-29 · Launched 2016 OpenGL ES 3.2 ... Open Source userspace driver Drivers Lima

● Supports Midgard

DriversPanfrost

Page 18: Open Source Meets Arm GPUs - memcpy.io · 2020-05-29 · Launched 2016 OpenGL ES 3.2 ... Open Source userspace driver Drivers Lima

● Supports Midgard● Targets adding Bifrost support

DriversPanfrost

Page 19: Open Source Meets Arm GPUs - memcpy.io · 2020-05-29 · Launched 2016 OpenGL ES 3.2 ... Open Source userspace driver Drivers Lima

● Supports Midgard● Targets adding Bifrost support● Open Source userspace driver

DriversPanfrost

Page 20: Open Source Meets Arm GPUs - memcpy.io · 2020-05-29 · Launched 2016 OpenGL ES 3.2 ... Open Source userspace driver Drivers Lima

● Supports Midgard● Targets adding Bifrost support● Open Source userspace driver● Open Source kernel driver

DriversPanfrost

Page 21: Open Source Meets Arm GPUs - memcpy.io · 2020-05-29 · Launched 2016 OpenGL ES 3.2 ... Open Source userspace driver Drivers Lima

● Supports Midgard● Targets adding Bifrost support● Open Source userspace driver● Open Source kernel driver● Both upstreamed to Kernel & Mesa

DriversPanfrost

Page 22: Open Source Meets Arm GPUs - memcpy.io · 2020-05-29 · Launched 2016 OpenGL ES 3.2 ... Open Source userspace driver Drivers Lima

22

History

Page 23: Open Source Meets Arm GPUs - memcpy.io · 2020-05-29 · Launched 2016 OpenGL ES 3.2 ... Open Source userspace driver Drivers Lima

History

Lima Prototype

Gxx Shader Loader

Lima Prototype #2

Panfrost Prototype

Panfrost W

ayland

Panfrost G

nome Shell

2012

2020

Reverse Engineering

Page 24: Open Source Meets Arm GPUs - memcpy.io · 2020-05-29 · Launched 2016 OpenGL ES 3.2 ... Open Source userspace driver Drivers Lima

History

Panfrost committe

d

Lima committed

2012

2020

Kernel and Mesa

Lima Prototype

Gxx Shader Loader

Lima Prototype #2

Panfrost Prototype

Panfrost W

ayland

Panfrost G

nome Shell

2012

2020

Reverse Engineering

Page 25: Open Source Meets Arm GPUs - memcpy.io · 2020-05-29 · Launched 2016 OpenGL ES 3.2 ... Open Source userspace driver Drivers Lima

25

Demo

Page 26: Open Source Meets Arm GPUs - memcpy.io · 2020-05-29 · Launched 2016 OpenGL ES 3.2 ... Open Source userspace driver Drivers Lima

26

What Comes Next

Page 27: Open Source Meets Arm GPUs - memcpy.io · 2020-05-29 · Launched 2016 OpenGL ES 3.2 ... Open Source userspace driver Drivers Lima

27

What Comes Next

● Improved OpenGL support

– Desktop OpenGL, OpenGL ES 3.X

Page 28: Open Source Meets Arm GPUs - memcpy.io · 2020-05-29 · Launched 2016 OpenGL ES 3.2 ... Open Source userspace driver Drivers Lima

28

What Comes Next

● Improved OpenGL support

● Wider hardware support

– Currently Mali T860 best tested

– More GPUs need enabling

Page 29: Open Source Meets Arm GPUs - memcpy.io · 2020-05-29 · Launched 2016 OpenGL ES 3.2 ... Open Source userspace driver Drivers Lima

29

What Comes Next

● Improved OpenGL support

● Wider hardware support

● Improved performance

Page 30: Open Source Meets Arm GPUs - memcpy.io · 2020-05-29 · Launched 2016 OpenGL ES 3.2 ... Open Source userspace driver Drivers Lima

30

What Comes Next

Panfrost

Proprietary

0 50 100 150 200 250 300 350 400 450 500

glmark2 score

Mali-T860, RK3399, Wayland & On-screen

Page 31: Open Source Meets Arm GPUs - memcpy.io · 2020-05-29 · Launched 2016 OpenGL ES 3.2 ... Open Source userspace driver Drivers Lima

31

What Comes Next

● Improved OpenGL support

● Wider hardware support

● Improved performance

– Currently faster in some tests

– Compiler intense tests often slower

Page 32: Open Source Meets Arm GPUs - memcpy.io · 2020-05-29 · Launched 2016 OpenGL ES 3.2 ... Open Source userspace driver Drivers Lima

32

What Comes Next

● Improved OpenGL support

● Wider hardware support

● Improved performance

● OpenCL

Page 33: Open Source Meets Arm GPUs - memcpy.io · 2020-05-29 · Launched 2016 OpenGL ES 3.2 ... Open Source userspace driver Drivers Lima

33

What Comes Next

● Improved OpenGL support

● Wider hardware support

● Improved performance

● OpenCL

● Vulkan

Page 34: Open Source Meets Arm GPUs - memcpy.io · 2020-05-29 · Launched 2016 OpenGL ES 3.2 ... Open Source userspace driver Drivers Lima

34

Why Open Source?

Page 35: Open Source Meets Arm GPUs - memcpy.io · 2020-05-29 · Launched 2016 OpenGL ES 3.2 ... Open Source userspace driver Drivers Lima

35

Why Open Source?● Long-term support

Page 36: Open Source Meets Arm GPUs - memcpy.io · 2020-05-29 · Launched 2016 OpenGL ES 3.2 ... Open Source userspace driver Drivers Lima

36

Why Open Source?● Long-term support

● High performance & conformance

Page 37: Open Source Meets Arm GPUs - memcpy.io · 2020-05-29 · Launched 2016 OpenGL ES 3.2 ... Open Source userspace driver Drivers Lima

37

Why Open Source?● Long-term support

● High performance & conformance

● Much simpler debugging

Page 38: Open Source Meets Arm GPUs - memcpy.io · 2020-05-29 · Launched 2016 OpenGL ES 3.2 ... Open Source userspace driver Drivers Lima

38

Why Open Source?● Long-term support

● High performance & conformance

● Much simpler debugging

● Old hardware receives new features

Page 39: Open Source Meets Arm GPUs - memcpy.io · 2020-05-29 · Launched 2016 OpenGL ES 3.2 ... Open Source userspace driver Drivers Lima

39

Why Open Source?● Long-term support

● High performance & conformance

● Much simpler debugging

● Old hardware receives new features

● No vendor lock-in

Page 40: Open Source Meets Arm GPUs - memcpy.io · 2020-05-29 · Launched 2016 OpenGL ES 3.2 ... Open Source userspace driver Drivers Lima

40

Thank you!