+ All Categories
Home > Documents > A modern 2D graphics library · 2016-07-06 · A modern 2D graphics library Introduction to Eduardo...

A modern 2D graphics library · 2016-07-06 · A modern 2D graphics library Introduction to Eduardo...

Date post: 10-Jul-2020
Category:
Upload: others
View: 8 times
Download: 0 times
Share this document with a friend
49
A modern 2D graphics library Introduction to Eduardo Lima Mitev [email protected] October 14th, 2014
Transcript
Page 1: A modern 2D graphics library · 2016-07-06 · A modern 2D graphics library Introduction to Eduardo Lima Mitev elima@igalia.com October 14th, 2014

A modern 2D graphics library

Introduction to

Eduardo Lima [email protected]

October 14th, 2014

Page 2: A modern 2D graphics library · 2016-07-06 · A modern 2D graphics library Introduction to Eduardo Lima Mitev elima@igalia.com October 14th, 2014

What is Skia?

Page 3: A modern 2D graphics library · 2016-07-06 · A modern 2D graphics library Introduction to Eduardo Lima Mitev elima@igalia.com October 14th, 2014

A library for drawing 2D Text, Geometries and Images

What is Skia?

Page 4: A modern 2D graphics library · 2016-07-06 · A modern 2D graphics library Introduction to Eduardo Lima Mitev elima@igalia.com October 14th, 2014

Focus on accurate, high qualityand high performance rendering

What is Skia?

Page 5: A modern 2D graphics library · 2016-07-06 · A modern 2D graphics library Introduction to Eduardo Lima Mitev elima@igalia.com October 14th, 2014

Cross-platform: Linux, Android,ChromeOS, Mac, Windows, ...

What is Skia?

and hardware architectures too:x86, x86_64, ARMv7, AArch64, MIPS, ...

Page 6: A modern 2D graphics library · 2016-07-06 · A modern 2D graphics library Introduction to Eduardo Lima Mitev elima@igalia.com October 14th, 2014

Open source, licensed underthe New BSD free software license

What is Skia?

Page 7: A modern 2D graphics library · 2016-07-06 · A modern 2D graphics library Introduction to Eduardo Lima Mitev elima@igalia.com October 14th, 2014

Figure 1. Skia in the software stack

Skia in a typical software stack

Page 8: A modern 2D graphics library · 2016-07-06 · A modern 2D graphics library Introduction to Eduardo Lima Mitev elima@igalia.com October 14th, 2014

Originally developed by Skia, Inc,acquired by Google in 2005,then released as open source

History

Page 9: A modern 2D graphics library · 2016-07-06 · A modern 2D graphics library Introduction to Eduardo Lima Mitev elima@igalia.com October 14th, 2014

Sponsored and managed by Google ever since

History

Page 10: A modern 2D graphics library · 2016-07-06 · A modern 2D graphics library Introduction to Eduardo Lima Mitev elima@igalia.com October 14th, 2014

Cairo, QPainter (Qt), Direct2D, Cocoa Drawing

Similar projects

Page 11: A modern 2D graphics library · 2016-07-06 · A modern 2D graphics library Introduction to Eduardo Lima Mitev elima@igalia.com October 14th, 2014

Why should I care?Lets hold on this one for a while...

Page 12: A modern 2D graphics library · 2016-07-06 · A modern 2D graphics library Introduction to Eduardo Lima Mitev elima@igalia.com October 14th, 2014

Who uses Skia?

Page 13: A modern 2D graphics library · 2016-07-06 · A modern 2D graphics library Introduction to Eduardo Lima Mitev elima@igalia.com October 14th, 2014

Who uses Skia?

Android Chromium Chrome Firefox Firefox OS

Page 14: A modern 2D graphics library · 2016-07-06 · A modern 2D graphics library Introduction to Eduardo Lima Mitev elima@igalia.com October 14th, 2014

Combined user-base could be above 1.5 billion

Who uses Skia?

Page 15: A modern 2D graphics library · 2016-07-06 · A modern 2D graphics library Introduction to Eduardo Lima Mitev elima@igalia.com October 14th, 2014

How Skia works?

Page 16: A modern 2D graphics library · 2016-07-06 · A modern 2D graphics library Introduction to Eduardo Lima Mitev elima@igalia.com October 14th, 2014

(Figure 2. High level architecture)

How Skia works?

Page 17: A modern 2D graphics library · 2016-07-06 · A modern 2D graphics library Introduction to Eduardo Lima Mitev elima@igalia.com October 14th, 2014

● Raster● OpenGL (ES)● PDF● XPS● Picture

Skia backends

Page 18: A modern 2D graphics library · 2016-07-06 · A modern 2D graphics library Introduction to Eduardo Lima Mitev elima@igalia.com October 14th, 2014

API overview

Page 19: A modern 2D graphics library · 2016-07-06 · A modern 2D graphics library Introduction to Eduardo Lima Mitev elima@igalia.com October 14th, 2014

SkCanvas: main drawing API(drawRect, drawText, drawLine, drawPath, etc)

API overview

Page 20: A modern 2D graphics library · 2016-07-06 · A modern 2D graphics library Introduction to Eduardo Lima Mitev elima@igalia.com October 14th, 2014

SkPaint: encapsulates styling of draw calls (color, path style, blending mode, font, etc)

API overview

Page 21: A modern 2D graphics library · 2016-07-06 · A modern 2D graphics library Introduction to Eduardo Lima Mitev elima@igalia.com October 14th, 2014

SkDevice: abstracts the backend (SkBitmapDevice, SkGpuDevice, SkPDFDevice, etc)

API overview

Page 22: A modern 2D graphics library · 2016-07-06 · A modern 2D graphics library Introduction to Eduardo Lima Mitev elima@igalia.com October 14th, 2014

SkPicture, SkPicturePlayback: records and replay draw operations

API overview

Page 23: A modern 2D graphics library · 2016-07-06 · A modern 2D graphics library Introduction to Eduardo Lima Mitev elima@igalia.com October 14th, 2014

Main features

Page 24: A modern 2D graphics library · 2016-07-06 · A modern 2D graphics library Introduction to Eduardo Lima Mitev elima@igalia.com October 14th, 2014

Linear transforms and perspective(3x3 matrices)

Main features

Page 25: A modern 2D graphics library · 2016-07-06 · A modern 2D graphics library Introduction to Eduardo Lima Mitev elima@igalia.com October 14th, 2014

Shaders, xfermodes, mask filters, path effects

Main features

Page 26: A modern 2D graphics library · 2016-07-06 · A modern 2D graphics library Introduction to Eduardo Lima Mitev elima@igalia.com October 14th, 2014

Antialiasing, transparency, filters

Main features

Page 27: A modern 2D graphics library · 2016-07-06 · A modern 2D graphics library Introduction to Eduardo Lima Mitev elima@igalia.com October 14th, 2014

Deferred drawing (SkDeferredCanvas, SkPicture)

Main features

Page 28: A modern 2D graphics library · 2016-07-06 · A modern 2D graphics library Introduction to Eduardo Lima Mitev elima@igalia.com October 14th, 2014

Subpixel text rendering

Main features

Page 29: A modern 2D graphics library · 2016-07-06 · A modern 2D graphics library Introduction to Eduardo Lima Mitev elima@igalia.com October 14th, 2014

Ganesh: the OpenGL(ES) backend

Page 30: A modern 2D graphics library · 2016-07-06 · A modern 2D graphics library Introduction to Eduardo Lima Mitev elima@igalia.com October 14th, 2014

Backend where most of the work is currently focused

Ganesh: the OpenGL(ES) backend

Page 31: A modern 2D graphics library · 2016-07-06 · A modern 2D graphics library Introduction to Eduardo Lima Mitev elima@igalia.com October 14th, 2014

Accelerates 2D Canvas in Chromium/Chrome and Firefox

Ganesh: the OpenGL(ES) backend

Page 32: A modern 2D graphics library · 2016-07-06 · A modern 2D graphics library Introduction to Eduardo Lima Mitev elima@igalia.com October 14th, 2014

Expected to accelerate full web content rendering in the future

Ganesh: the OpenGL(ES) backend

Page 33: A modern 2D graphics library · 2016-07-06 · A modern 2D graphics library Introduction to Eduardo Lima Mitev elima@igalia.com October 14th, 2014

Some features:

Ganesh: the OpenGL(ES) backend

● Accelerate and combine effects with on-demand shaders

● Batching and merging of draw operations● Geometry shaders● Accelerated path rendering if available

(NV_path_rendering)

Page 34: A modern 2D graphics library · 2016-07-06 · A modern 2D graphics library Introduction to Eduardo Lima Mitev elima@igalia.com October 14th, 2014

Performance

Page 35: A modern 2D graphics library · 2016-07-06 · A modern 2D graphics library Introduction to Eduardo Lima Mitev elima@igalia.com October 14th, 2014

Performance

Great tools available:● Benchmarks in Skia repository under /bench● Skia-telemetry● skiaperf.com

● Chromium/Chrome’s about:tracing can also help

Page 36: A modern 2D graphics library · 2016-07-06 · A modern 2D graphics library Introduction to Eduardo Lima Mitev elima@igalia.com October 14th, 2014

Performance

Lack of public benchmarks against similar libraries

Page 37: A modern 2D graphics library · 2016-07-06 · A modern 2D graphics library Introduction to Eduardo Lima Mitev elima@igalia.com October 14th, 2014

The future of Skia

Page 38: A modern 2D graphics library · 2016-07-06 · A modern 2D graphics library Introduction to Eduardo Lima Mitev elima@igalia.com October 14th, 2014

Roadmap

Backend work:● Enhance PDF for Android and Chrome● Many GPU backend changes

Page 39: A modern 2D graphics library · 2016-07-06 · A modern 2D graphics library Introduction to Eduardo Lima Mitev elima@igalia.com October 14th, 2014

Roadmap

Platform support:● C++11 enablement● GLSL ES 3.0

Page 40: A modern 2D graphics library · 2016-07-06 · A modern 2D graphics library Introduction to Eduardo Lima Mitev elima@igalia.com October 14th, 2014

Roadmap

APIs and New Features:● Shareable pictures across process boundaries● sRGB support, in partnership with Chrome

Page 41: A modern 2D graphics library · 2016-07-06 · A modern 2D graphics library Introduction to Eduardo Lima Mitev elima@igalia.com October 14th, 2014

Roadmap

Dev and Test Infrastructure:● New correctness testing framework● More frequent recapturing of web archives for

buildbot and cluster telemetry testing

Page 42: A modern 2D graphics library · 2016-07-06 · A modern 2D graphics library Introduction to Eduardo Lima Mitev elima@igalia.com October 14th, 2014

Contributing to Skia

Page 43: A modern 2D graphics library · 2016-07-06 · A modern 2D graphics library Introduction to Eduardo Lima Mitev elima@igalia.com October 14th, 2014

Three well defined roles:developer, contributor, committer

Contributing to Skia

Page 44: A modern 2D graphics library · 2016-07-06 · A modern 2D graphics library Introduction to Eduardo Lima Mitev elima@igalia.com October 14th, 2014

Report bugs to the issue tracker

Contributing to Skia

Page 45: A modern 2D graphics library · 2016-07-06 · A modern 2D graphics library Introduction to Eduardo Lima Mitev elima@igalia.com October 14th, 2014

Test: try Skia in your platform/hardware. Feed back!

Contributing to Skia

Page 46: A modern 2D graphics library · 2016-07-06 · A modern 2D graphics library Introduction to Eduardo Lima Mitev elima@igalia.com October 14th, 2014

Contribute code: fix bugs, implement features in the roadmap

Contributing to Skia

beginners, look for issues tagged GoodFirstBug

Page 47: A modern 2D graphics library · 2016-07-06 · A modern 2D graphics library Introduction to Eduardo Lima Mitev elima@igalia.com October 14th, 2014

Benchmark: compare Skia perf against other libraries in your platform/hardware; publish results!

Contributing to Skia

Page 48: A modern 2D graphics library · 2016-07-06 · A modern 2D graphics library Introduction to Eduardo Lima Mitev elima@igalia.com October 14th, 2014

https://sites.google.com/site/skiadocs/

For references and more info:

Page 49: A modern 2D graphics library · 2016-07-06 · A modern 2D graphics library Introduction to Eduardo Lima Mitev elima@igalia.com October 14th, 2014

Q & A

Thank you!


Recommended