running android graphics stack - fosdem · – not compatible with current abi. ... - opengl,...

76
Running Android on the Mainline Graphics Stack Robert Foss @memcpy_io

Upload: others

Post on 17-Aug-2020

12 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Running Android on the Mainline Graphics Stack

Robert Foss

@memcpy_io

Page 2: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

● Android History● Android on Mainline● Current Status● Big Picture

Agenda

Page 3: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Android History

Page 4: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

v3.10 v3.14 v3.18 v4.4 v4.90

500000

1000000

1500000

2000000

2500000

3000000

3500000

4000000

Qualcomm diff with mainline, # lines

Android History

Page 5: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Android History

● Android forked the Kernel

Page 6: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Android History

● Android forked the Kernel– Better Graphics stack was needed

Page 7: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Android History

● Android forked the Kernel– Better Graphics stack was needed– Support for low power was lacking

Page 8: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Android History

● Android forked the Kernel– Better Graphics stack was needed– Support for low power was lacking– Support for atomic operations

Page 9: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Android History

● Android forked the Kernel● Android Atomic Display Framework created

Page 10: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Android History

● Android forked the Kernel● Android Atomic Display Framework created

– Not extensible or generic

Page 11: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Android History

● Android forked the Kernel● Android Atomic Display Framework created

– Not extensible or generic– Only atomic for plane updates

Page 12: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Android History

● Android forked the Kernel● Android Atomic Display Framework created

– Not extensible or generic– Only atomic for plane updates– Not compatible with current ABI

Page 13: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Android History

● Android forked the Kernel● Android Atomic Display Framework created

– Not extensible or generic– Only atomic for plane updates– Not compatible with current ABI– Not upstreamable

Page 14: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Android History

● Android forked the Kernel● Android Atomic Display Framework created● Mainline Atomic KMS ABI introduced

Page 15: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Android History

● Android forked the Kernel● Android Atomic Display Framework created● Mainline Atomic KMS ABI introduced

– Supports the ADF usecases

Page 16: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Android History

● Android forked the Kernel● Android Atomic Display Framework created● Mainline Atomic KMS ABI introduced

– Supports the ADF usecases– Uses Properties to be generic

Page 17: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Android History

● Android forked the Kernel● Android Atomic Display Framework created● Mainline Atomic KMS ABI introduced

– Supports the ADF usecases– Uses Properties to be generic– Is now replacing ADF in vendor drivers

Page 18: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Android on Mainline

Page 19: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Android Graphics Stack

Kernel

Vendor driver

HWC2

SurfaceFlinger

Apps

HWC2

Page 20: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Android Graphics Stack

Kernel

Vendor driver

HWC2

SurfaceFlinger

Apps

HWC2

Subtitle Karla regular28pt

The Really Good Stuff ™

Page 21: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Android Graphics Stack

Kernel

Vendor driver

HWC2

SurfaceFlinger

Apps

HWC2

Subtitle Karla regular28pt

The Really Good Stuff ™ - No really, this is the whole point!

Page 22: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Android Graphics Stack

Kernel

Vendor driver

HWC2

SurfaceFlinger

Apps

HWC2

Subtitle Karla regular28pt

Interface between applications and hardware

Page 23: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Android Graphics Stack

Kernel

Vendor driver

HWC2

SurfaceFlinger

Apps

HWC2

Subtitle Karla regular28pt

Page 24: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Android Graphics Stack

Kernel

Vendor driver

HWC2

SurfaceFlinger

Apps

HWC2

Subtitle Karla regular28pt

Status Bar

Page 25: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Android Graphics Stack

Kernel

Vendor driver

HWC2

SurfaceFlinger

Apps

HWC2

Subtitle Karla regular28pt

Navig

ati

on

Bar

Status Bar

Page 26: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Android Graphics Stack

Kernel

Vendor driver

HWC2

SurfaceFlinger

Apps

HWC2

Subtitle Karla regular28pt

Navig

ati

on

Bar

Status Bar

Background

Page 27: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Android Graphics Stack

Kernel

Vendor driver

HWC2

SurfaceFlinger

Apps

HWC2

Subtitle Karla regular28pt

SurfaceFlinger speaks HWC to the Composer

Page 28: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Android Graphics StackWhat does the Hardware Composer do?

Page 29: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Android Graphics StackWhat does the Hardware Composer do?

Get LayersThrough HWC API

Page 30: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Android Graphics StackWhat does the Hardware Composer do?

Get LayersThrough HWC API

Optimize Layers for

Display

Page 31: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Android Graphics StackWhat does the Hardware Composer do?

Get LayersThroughHWC API

Optimize Layers for

Display

OutputLayers To

Display HW

Page 32: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Android Graphics Stack

Kernel

Vendor driver

HWC2

SurfaceFlinger

Apps

HWC2

Subtitle Karla regular28pt

The non-kernel part of the graphics driver

Page 33: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Android Graphics Stack

Kernel

Vendor driver

HWC2

SurfaceFlinger

Apps

HWC2

Subtitle Karla regular28pt

The non-kernel part of the graphics driver - OpenGL, Vulkan, memory allocator, etc.

Page 34: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Android Graphics Stack

Kernel

Vendor driver

HWC2

SurfaceFlinger

Apps

HWC2

Subtitle Karla regular28pt

The non-kernel part of the graphics driver - OpenGL, Vulkan, memory allocator, etc. - Hardware Composer

Page 35: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Android Graphics Stack

Kernel

Vendor driver

HWC2

SurfaceFlinger

Apps

HWC2

Subtitle Karla regular28pt

The Linux Kernel

Page 36: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Mainline Graphics Stack

● Mainline now has good Graphics ABI

Page 37: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Mainline Graphics Stack

● Mainline now has good Graphics ABI● Google Pixel C shipped using Atomic KMS

Page 38: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Mainline Graphics Stack

● Mainline now has good Graphics ABI● Google Pixel C shipped using Atomic KMS

– Android requires HWC implementation

Page 39: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Mainline Graphics Stack

● Mainline now has good Graphics ABI● Google Pixel C shipped using Atomic KMS

– Android requires HWC implementation– Mesa and the Kernel does not implement it

Page 40: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Mainline Graphics Stack

● Mainline now has good Graphics ABI● Google Pixel C shipped using Atomic KMS

– Android requires HWC implementation– Mesa and the Kernel does not implement it– drm_hwcomposer does!

Page 41: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Mainline Graphics StackWhat is the Hardware Composer?

Kernel

Vendor driver

HWC2

SurfaceFlinger

Apps

HWC2

Page 42: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Mainline Graphics Stack

Proprietary}

What is the Hardware Composer?

Kernel

Vendor driver

HWC2

SurfaceFlinger

Apps

HWC2

Page 43: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Mainline Graphics Stack

Kernel

SurfaceFlinger

Apps

HWC2

???

What is the Hardware Composer?

Kernel

Vendor driver

HWC2

SurfaceFlinger

Apps

HWC2

Page 44: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Mainline Graphics StackWhat is the Hardware Composer?

Kernel

SurfaceFlinger

Apps

HWC2

drm_hwc

Kernel

Vendor driver

HWC2

SurfaceFlinger

Apps

HWC2

Driver

Page 45: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Mainline Graphics Stack

Kernel

SurfaceFlinger

Apps

HWC2

DRM

drm_hwc

libdrmmesa{

What is the Hardware Composer?

Kernel

Vendor driver

HWC2

SurfaceFlinger

Apps

HWC2

Kernel

SurfaceFlinger

Apps

HWC2

drm_hwc

Driver

Page 46: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Mainline Graphics Stack

Kernel

SurfaceFlinger

Apps

HWC2

DRM

drm_hwc

libdrmmesa {

What is the Hardware Composer?

Kernel

Vendor driver

HWC2

SurfaceFlinger

Apps

HWC2

Kernel

SurfaceFlinger

Apps

HWC2

drm_hwc

Driver

Kernel

SurfaceFlinger

Apps

HWC2

DRM

drm_hwc

mesagralloc libdrm

Page 47: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

drm_hwcomposerHWC2

Page 48: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

drm_hwcomposerHWC2

● Android added bufer Fence support

Page 49: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

drm_hwcomposerHWC2

● Android added bufer Fence support– Ensures ordering between operations

Page 50: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

drm_hwcomposerHWC2

● Android added bufer Fence support– Ensures ordering between operations– Synchronizes bufer sharing

Page 51: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

drm_hwcomposerHWC2

● Android added bufer Fence support● HWC version 2 is improved using Fences

Page 52: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

drm_hwcomposerHWC2

● Android added bufer Fence support● HWC version 2 is improved using Fences● Mainline received Fence support

Page 53: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

drm_hwcomposerHWC2

● Android added bufer Fence support● HWC version 2 is improved using Fences● Mainline received Fence support● drm_hwcomposer implemented HWC2

Page 54: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

drm_hwcomposer

● Previously hosted within ChromiumOS

Project Hosting

Page 55: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

drm_hwcomposer

● Previously hosted within ChromiumOS● Now hosted on Freedesktop.org

Project Hosting

Page 56: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

drm_hwcomposer

● Previously hosted within ChromiumOS● Now hosted on Freedesktop.org

– Thanks Google:● Sean Paul● Puneet Kumar● Marissa Wall

Project Hosting

Page 57: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

drm_hwcomposer

● Previously hosted within ChromiumOS● Now hosted on Freedesktop.org● GitLab instance on Freedesktop.org soon!

Project Hosting

Page 58: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Current Status

Page 59: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Current statusTested platforms

Page 60: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Current status

● iMX6– GPU: Vivante GC3000

Tested platforms

Page 61: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Current status

● Dragonboard 410c– GPU: Adreno 306

Tested platforms

Page 62: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Current status

● HiKey 960– GPU: Mali G71

Under Development

Page 63: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Big Picture

Page 64: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Big PictureMerge Android Features

Page 65: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Big PictureMerge Android Features

● A new feature is introduced in Android

Page 66: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Big PictureMerge Android Features

● A new feature is introduced in Android● Slowly migrated into the kernel

Page 67: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Big PictureMerge Android Features

● A new feature is introduced in Android● Slowly migrated into the kernel● This does not to apply to all subsystems

Page 68: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

5.00%

6.50%

3.50%

13.40%

11.90%

11.90%

3.30%

7.10%

5.40%

Qualcomm v4.9 Diff

arch/arm64/

arch/

drivers/clk/

drivers/gpu/

drivers/media/

drivers/platform/

drivers/power/

drivers/soc/qcom/

include/

Big PictureMerge Android Features

Page 69: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Big PictureMerge Android Features

● A new feature is introduced in Android● Slowly migrated into the kernel● This does not to apply to all subsystems● The dif for drivers seem fairly constant

Page 70: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

v3.10 v3.14 v3.18 v4.4 v4.90

500000

1000000

1500000

2000000

2500000

3000000

3500000

4000000

Qualcomm diff with mainline, # lines

Big PictureMerge Android Features

Page 71: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Big PicturePush industry towards Open Source

Page 72: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Big PicturePush industry towards Open Source

● Increase device development speed

Page 73: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Big PicturePush industry towards Open Source

● Increase device development speed● Lower driver development costs

Page 74: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Big PicturePush industry towards Open Source

● Increase device development speed● Lower driver development costs● Increase driver quality

Page 75: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Big PicturePush industry towards Open Source

● Increase device development speed● Lower driver development costs● Increase driver quality● Push Open Source adoption forward

Page 76: Running Android Graphics Stack - FOSDEM · – Not compatible with current ABI. ... - OpenGL, Vulkan, memory allocator, etc. Android Graphics Stack Kernel Vendor driver HWC2 SurfaceFlinger

Running Android on the Mainline Graphics Stack

Any questions?