open source meets arm gpus - memcpy.io · 2020-05-29 · launched 2016 opengl es 3.2 ... open...

40
Panfrost Open Source Meets Arm GPUs

Upload: others

Post on 21-Jun-2020

4 views

Category:

Documents


0 download

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!