Hardware accelerated rendering in WebKit for android

17
How to Achieve 60 fps HW Rendering in WebKit for Android Xijun Chen

description

Introduce the HW accelerated rendering in WebKit for Android. Focus on the platform graphics level.

Transcript of Hardware accelerated rendering in WebKit for android

Page 1: Hardware accelerated rendering in WebKit for android

How to Achieve 60 fpsHW Rendering in WebKit for Android

Xijun Chen

Page 2: Hardware accelerated rendering in WebKit for android

2

Agenda

• Overview of rendering in Android WebKit

• Key process of rendering and bottlenecks

• Break bottlenecks• Details of HW rendering

Page 3: Hardware accelerated rendering in WebKit for android

3

Overview of rendering (flattened)

DOM Tree(Render Object Tree)

Render Layer Tree

Layout Painting

Screen

RasterizationContent

Web Contents

Page 4: Hardware accelerated rendering in WebKit for android

4

rendering bottleneck

Reasonscroll & zoom

(viewport change)

animation

content change

ImpactRasterization

Painting

Layout

Page 5: Hardware accelerated rendering in WebKit for android

5

Things we can do

• Reduce work• Avoid duplicate work (cache)• Avoid useless work (only work for visible

area)

• Parallelization• Bring complicate things to extra thread• Bring things to other graphics devices

Page 6: Hardware accelerated rendering in WebKit for android

6

Layers for cache

• Render Layer• Avoid layout• Separate the render objects to diff layer

• Graphics Layer (Layer Android)• Avoid painting• Merge render layers by graphic property

• Tile Grids• Avoid rasterization• Merge and raster android layers to Surfaces

with tile grids in it.• Composite and display Surface using GPU

Page 7: Hardware accelerated rendering in WebKit for android

7

Overview of rendering (composited)

DOM Tree(Render Object Tree)

Render Layer TreeDisplay Tree

(LayerAndroid Tree)

Layout Painting

Screen

Rasterization (SW)

Raste

rizati

on (H

W)

Tile Grid

Display (HW)

(Ren

derin

g thr

ead)

(GPU)

Page 8: Hardware accelerated rendering in WebKit for android

8

HW Rendering Structure

Drawing Collection

Painting Collection

Queued Collection

SurfaceCollectionManager Surfaces

SurfaceCollection

Surface Backing

Display Layers

Surface

Page 9: Hardware accelerated rendering in WebKit for android

9

HW Rendering Structure

Front TileGrid

Back TileGrid

Low Res TileGrid

SurfaceBacking

(0, 0) (0, 1)

(1, 0) (1, 1)

(2, 0) (2, 1)

TileGrid

TileGrid

ImageTexture

Page 10: Hardware accelerated rendering in WebKit for android

10

HW Rendering Structure

Front Texture

Back Texture

Tile Tile Texture

• TextureInfo• Size

Page 11: Hardware accelerated rendering in WebKit for android

11

HW Rendering Process

Page 12: Hardware accelerated rendering in WebKit for android

12

Some code – SurfaceCollectionManager::drawGL

Page 13: Hardware accelerated rendering in WebKit for android

13

Some code - SurfaceBacking::prepareGL

Page 14: Hardware accelerated rendering in WebKit for android

14

Some code - PaintTileOperation

TileGrid::prepareTile

Use painter to paint tile.The painter is either Surface or ImageTexture

Page 15: Hardware accelerated rendering in WebKit for android

15

Some code - Tile

Page 16: Hardware accelerated rendering in WebKit for android

16

Some code – Interact with GLTransferQueue::updateDirtyTiles

TileTexture::drawGL

Page 17: Hardware accelerated rendering in WebKit for android

17

Q & AThanks!