blob: 19d7203812c4090cbcbfd9301232a6eb8f48fe38 [file] [log] [blame]
reedde330ff2014-11-02 19:19:34 -08001Skia Update
2
3Skia : Overview
4- portable 2D graphics engine
reedbb8a0ab2014-11-03 22:32:07 -08005- src : geometry, images, text
6- attr: shaders, filters, antialiasing, blending
7- dst : raster, gpu, pdf, picture
reedde330ff2014-11-02 19:19:34 -08008
9Skia : Porting
10- C++ and some SIMD assembly
reedbb8a0ab2014-11-03 22:32:07 -080011- Fonts : CoreText, FreeType, GDI, DirectWrite
reedde330ff2014-11-02 19:19:34 -080012- Threads : wrappers for native apis
13- Memory : wrappers for [new, malloc, discardable]
14
reedbb8a0ab2014-11-03 22:32:07 -080015Skia : Clients
16- Blink : under the GraphicsContext hood
17- Chrome : ui/gfx and compositor
18- Android framework
19- third parties : e.g. Mozilla
20- sites.google.com/site/skiadocs
reedde330ff2014-11-02 19:19:34 -080021
reedbb8a0ab2014-11-03 22:32:07 -080022Skia In Blink
reedde330ff2014-11-02 19:19:34 -080023
24Skia In Blink : Fonts
reedbb8a0ab2014-11-03 22:32:07 -080025- SkTypeface and SkFontMgr : platform agnostic
reedde330ff2014-11-02 19:19:34 -080026- Runtime switch between GDI and DirectWrite
reedbb8a0ab2014-11-03 22:32:07 -080027- SkTextBlob to encapsulate runs of text
reedde330ff2014-11-02 19:19:34 -080028- Push LCD decision-making out of Blink
29
30Skia In Blink : Record-Time-Rasterization
31- Direct rendering during Paint pass
32-- Image scaling, filters
33-- SVG patterns, masks
34- Problematic in modern Blink
35-- CTM not always known/knowable
36-- Rendering backend not always known (gpu or cpu)
37-- Rasterization takes (too much) time
38
39Skia In Blink : RTR response
40- SkImageFilter w/ CPU and GPU implementations
reedbb8a0ab2014-11-03 22:32:07 -080041- FilterLevel : none, low, medium (mipmaps), high
reedde330ff2014-11-02 19:19:34 -080042- SkPicture for caching SVG
43- SkPicture + saveLayer() for masks
44-- PathOps for resolving complex paths
45- SkPictureShader for device-independent patterns
reedbb8a0ab2014-11-03 22:32:07 -080046
47Skia In Blink : Recording
48- GraphicsContext usuaually backed by SkPicture
49-- draw commands are recorded for later playback
50-- all parameters must be copied or (safely) ref'd
51-- may record more than is currently visible
52- Resulting picture may be replayed multiple times
53
54Skia In Blink : Recording response
55- New implementation
56- Optimized for recording speed
57-- shallow copies whenever possible
58-- rearchitect all Skia effects to be immutable
59- Reentrant-safe for playback in multiple threads
60-- also affected effect subclasses
61
62Skia In Blink : Playback
63- Separate pass for optimizations (optional)
64-- peep-holes rewrites
65-- compute bounding-box hierarchy for faster tiling
66-- can be done outside of Blink thread
67- GPU optimizations
68-- layer "hoisting"
69-- distance field fonts
70
71Skia : Roadmap
72
73Skia In Blink : Roadmap
74- GPU performance
75-- extended OpenGL features (e.g. geometry shaders)
76-- reordering for increased batching
77-- support for new low-level OpenGL APIs
78- Cross process support
79-- immediate mode ala SkGPipe
80-- serialize pictures
81
82Skia API Roadmap
83- Direct support for sRGB
84- Stable C API / ABI
85-- bindings for JS, Go, Python, Lua
86- Robust file format
87
88Demo
89