understanding hardware acceleration on mobile browsers

67
Understanding Hardware Acceleration on Mobile Browsers Ariya Hidayat

Upload: ariya-hidayat

Post on 24-May-2015

8.236 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Understanding Hardware Acceleration on Mobile Browsers

Understanding Hardware Acceleration on Mobile Browsers Ariya Hidayat

Page 2: Understanding Hardware Acceleration on Mobile Browsers
Page 3: Understanding Hardware Acceleration on Mobile Browsers

whoami

Page 4: Understanding Hardware Acceleration on Mobile Browsers

Challenges

Page 5: Understanding Hardware Acceleration on Mobile Browsers

Game vs Web

Page 6: Understanding Hardware Acceleration on Mobile Browsers

Game

Animation

Physics

Textured objects

Text

Transformation

Page 7: Understanding Hardware Acceleration on Mobile Browsers

Large Area, but Still Bounded

Page 8: Understanding Hardware Acceleration on Mobile Browsers

Web Page

Images

Text

Page 9: Understanding Hardware Acceleration on Mobile Browsers

From Wave to Pixels

Layout engine

Network stack

GraphicsJavaScript engine

User interface

Page 10: Understanding Hardware Acceleration on Mobile Browsers

WebKit Components

WebKit Library

JavaScriptCore

WebCore

HTMLrendering

SVG

DOM CSS

Page 11: Understanding Hardware Acceleration on Mobile Browsers

Platform Abstraction

Network Unicode Clipboard

Graphics Theme Events

Thread Geolocation Timer

Page 12: Understanding Hardware Acceleration on Mobile Browsers

Graphics Abstraction

Mac Chromium Qt

CoreGraphicsSkia

QPainter

graphics stack

GraphicsContext

Page 13: Understanding Hardware Acceleration on Mobile Browsers

Mobile Device

Touch interface

GPU

CPU

Radio

Power

Page 14: Understanding Hardware Acceleration on Mobile Browsers

Graphics Processor

Divide and conquer

Very specific purpose

Page 15: Understanding Hardware Acceleration on Mobile Browsers

Relationship

CPU GPU

Page 16: Understanding Hardware Acceleration on Mobile Browsers

SoC = System-on-a-Chip

Page 17: Understanding Hardware Acceleration on Mobile Browsers

Fundamental Physical Limitations

1.Available memory2.Bus bandwith3.Speed difference

Page 18: Understanding Hardware Acceleration on Mobile Browsers

Optimized for Games

Transformation

Textured triangles

Fixed geometry

Parallelism

Page 19: Understanding Hardware Acceleration on Mobile Browsers

Challenges

Predictable contents (assets) ✔Mostly text ✔Mostly images ✔

immediateInitial response

Page 20: Understanding Hardware Acceleration on Mobile Browsers

http://www.trollquotes.org/619-super-spider-bat-troll-quote/

Page 21: Understanding Hardware Acceleration on Mobile Browsers

Primitive Drawing

Page 22: Understanding Hardware Acceleration on Mobile Browsers

Path is Everything

Path

Triangle Rectangle

PolygonEllipse

Page 23: Understanding Hardware Acceleration on Mobile Browsers

Stroke = Outline

Solid Dashed Dotted Textured

Page 24: Understanding Hardware Acceleration on Mobile Browsers

Brush = Fill

SolidNone Gradient Textured

Page 25: Understanding Hardware Acceleration on Mobile Browsers

Smooth via Antialiasing

Multiple levels of transparency

Perfect for parallelism

Page 26: Understanding Hardware Acceleration on Mobile Browsers

Path Approximation

Curves

Polygon

Page 27: Understanding Hardware Acceleration on Mobile Browsers

Gradient: Expensive

CPU: sequential, tedious

GPU: parallel, still a lot of work

Page 28: Understanding Hardware Acceleration on Mobile Browsers

Blur Shadow: Really Posh

Involved pixel “blending”

GPU: parallel, still tedious

Page 29: Understanding Hardware Acceleration on Mobile Browsers

Transformation

Scaling

RotationPerspective

Page 30: Understanding Hardware Acceleration on Mobile Browsers

Text Rasterization

Page 31: Understanding Hardware Acceleration on Mobile Browsers

Font Atlas

Bye

Buffer

Page 32: Understanding Hardware Acceleration on Mobile Browsers

Simple to Complex

Hello!

Simple shapeSolid color

CurvesGradient brushTextured stroke

Blur shadowSerif textRotated

Make it as an image

Page 33: Understanding Hardware Acceleration on Mobile Browsers

Backing Store

Page 34: Understanding Hardware Acceleration on Mobile Browsers

Maps

Tile

Page 35: Understanding Hardware Acceleration on Mobile Browsers

Pinch to Zoom

when you pinch...

Page 36: Understanding Hardware Acceleration on Mobile Browsers

Responsive Interface

Processor

Rendering

User interaction

decoupled

Page 37: Understanding Hardware Acceleration on Mobile Browsers

Rendering vs Interaction

Web Page

Backing StoreScreen

Rendering

User interaction

Page 38: Understanding Hardware Acceleration on Mobile Browsers

Checkerboard Pattern

Page 39: Understanding Hardware Acceleration on Mobile Browsers

Progressive Rendering

Crisp but slow

Fast but blurry

Page 40: Understanding Hardware Acceleration on Mobile Browsers

Tiling System

CPU GPU

........

Texture upload

Page 41: Understanding Hardware Acceleration on Mobile Browsers

Tile Transformation

Panning = Translation Zooming = Scaling

Page 42: Understanding Hardware Acceleration on Mobile Browsers

Backing Store Support

Texture-based

Vector-based

Honeycomb and later

Page 43: Understanding Hardware Acceleration on Mobile Browsers

Y U NOposition:fixed

Page 44: Understanding Hardware Acceleration on Mobile Browsers

Layer & Compositing

Page 45: Understanding Hardware Acceleration on Mobile Browsers

Mechanics of Animation

Initialization

Animation step

“Hey, this is good stuff. Keep it around as texture #42.”

“Apply [operation] to texture #42.”

Page 46: Understanding Hardware Acceleration on Mobile Browsers

Elements = Layer

Page 47: Understanding Hardware Acceleration on Mobile Browsers

Typical Animation

opacity, movement, scaling, rotation, ...

Page 48: Understanding Hardware Acceleration on Mobile Browsers

Immediate Mode

every animation tick

setInterval(function() {    box.draw(x, y);    x += 10;}, 20);

Page 49: Understanding Hardware Acceleration on Mobile Browsers

Scene Graph

box.drawInto(layer);setInterval(function() {    layer.translate(10, 0);}, 20);

Change transformation matrix

Page 50: Understanding Hardware Acceleration on Mobile Browsers

Logical 3-D

Page 51: Understanding Hardware Acceleration on Mobile Browsers

Keep the Textures

Page 52: Understanding Hardware Acceleration on Mobile Browsers

Compositing Support

Honeycomb and later

Page 53: Understanding Hardware Acceleration on Mobile Browsers

Well-known Trick

-webkit-transform: translateZ(0)

forcing 3-D transform

Not needed for CSS animation!

Page 54: Understanding Hardware Acceleration on Mobile Browsers

Magical Advice

Use translate3d for hardware acceleration

Misleading (at best)

Page 55: Understanding Hardware Acceleration on Mobile Browsers

Debugging in Safari

defaults write com.apple.Safari IncludeInternalDebugMenu 1

Page 56: Understanding Hardware Acceleration on Mobile Browsers

Compositing Indicators

Composited layer

Container layer

No texture

Overflow

Texture (number = upload)

Page 57: Understanding Hardware Acceleration on Mobile Browsers

Avoid Texture Reupload

No reupload Upload

OpacityPosition

SizeAnimation

Everything else!

“Hardware accelerated CSS”

Page 58: Understanding Hardware Acceleration on Mobile Browsers

Examples

Page 59: Understanding Hardware Acceleration on Mobile Browsers

Avoid Overcapacity

GPU = Limited silicon spaceLarge layer ➔ broken into “tiles”

Page 60: Understanding Hardware Acceleration on Mobile Browsers

Prepare & Reuse

Viewport

Hide the layer offscreen

Page 61: Understanding Hardware Acceleration on Mobile Browsers

Alpha Blending

Color change

Page 62: Understanding Hardware Acceleration on Mobile Browsers

Alpha Blending: The Trick

Blended with

Page 63: Understanding Hardware Acceleration on Mobile Browsers

Wrap-up

Page 64: Understanding Hardware Acceleration on Mobile Browsers

Hardware Acceleration

Drawing primitives

Backing stores

Layer & compositing

Page 65: Understanding Hardware Acceleration on Mobile Browsers

What Can We Learn?

Traditional graphics programming has been always full of tricks.

It will always be.

Page 66: Understanding Hardware Acceleration on Mobile Browsers

There is No Silver Bullet

Page 67: Understanding Hardware Acceleration on Mobile Browsers

Thank You

[email protected]

@AriyaHidayat

ariya.ofilabs.com