| OLD | NEW |
| 1 Skia Update | 1 Skia Update |
| 2 | 2 |
| 3 Skia : Access |
| 4 - code.google.com/p/skia |
| 5 - sites.google.com/site/skiadocs |
| 6 |
| 3 Skia : Overview | 7 Skia : Overview |
| 4 - portable 2D graphics engine | 8 - portable graphics engine |
| 5 - src : geometry, images, text | 9 - 2D transformations + perspective |
| 6 - attr: shaders, filters, antialiasing, blending | 10 - primitives: text, geometry, images |
| 7 - dst : raster, gpu, pdf, picture | 11 - effects: shaders, filters, antialiasing, blending |
| 8 | 12 |
| 9 Skia : Porting | 13 Skia : Porting |
| 10 - C++ and some SIMD assembly | 14 - C++ and some SIMD assembly |
| 11 - Fonts : CoreText, FreeType, GDI, DirectWrite | 15 - Fonts : CoreText, FreeType, GDI, DirectWrite |
| 12 - Threads : wrappers for native apis | 16 - Threads : wrappers for native apis |
| 13 - Memory : wrappers for [new, malloc, discardable] | 17 - Memory : wrappers for [new, malloc, discardable] |
| 14 | 18 |
| 19 Skia : Backends |
| 20 - Surface |
| 21 -- raster : ARGB, RGB16, A8 in software |
| 22 -- gpu : transcribe to OpenGL |
| 23 - Document |
| 24 -- transcribe to PDF or XPS |
| 25 - Record and Playback |
| 26 -- Picture |
| 27 -- Pipe |
| 28 |
| 15 Skia : Clients | 29 Skia : Clients |
| 16 - Blink : under the GraphicsContext hood | 30 - Blink : under the GraphicsContext hood |
| 17 - Chrome : ui/gfx and compositor | 31 - Chrome : ui/gfx and compositor |
| 18 - Android framework | 32 - Android : framework |
| 19 - third parties : e.g. Mozilla | 33 - third parties : e.g. Mozilla |
| 20 - sites.google.com/site/skiadocs | |
| 21 | 34 |
| 22 Skia In Blink | 35 Skia In Blink |
| 23 | 36 |
| 24 Skia In Blink : Fonts | 37 Skia In Blink : Fonts |
| 25 - SkTypeface and SkFontMgr : platform agnostic | 38 - SkTypeface and SkFontMgr : platform agnostic |
| 26 - Runtime switch between GDI and DirectWrite | 39 - Runtime switch between GDI and DirectWrite |
| 27 - SkTextBlob to encapsulate runs of text | 40 - SkTextBlob to encapsulate runs of text |
| 28 - Push LCD decision-making out of Blink | 41 - Push LCD decision-making out of Blink |
| 29 | 42 |
| 30 Skia In Blink : Record-Time-Rasterization | 43 Skia In Blink : Record-Time-Rasterization |
| 31 - Direct rendering during “Paint” pass | 44 - What? : direct rendering during “Paint” pass |
| 32 -- Image scaling, filters | 45 -- Image scaling, filters |
| 33 -- SVG patterns, masks | 46 -- SVG patterns, masks |
| 34 - Problematic in modern Blink | 47 - Problematic in modern Blink |
| 35 -- CTM not always known/knowable | 48 -- CTM not always known/knowable |
| 36 -- Rendering backend not always known (gpu or cpu) | 49 -- Rendering backend not always known (gpu or cpu) |
| 37 -- Rasterization takes (too much) time | 50 -- Rasterization takes (too much) time |
| 38 | 51 |
| 39 Skia In Blink : RTR response | 52 Skia In Blink : RTR response |
| 40 - SkImageFilter w/ CPU and GPU implementations | 53 - SkImageFilter w/ CPU and GPU implementations |
| 41 - FilterLevel : none, low, medium (mipmaps), high | 54 - Bitmap scaling : bilerp, mipmaps, fancy |
| 42 - SkPicture for caching SVG | 55 - SkPicture for caching SVG |
| 43 - SkPicture + saveLayer() for masks | 56 - SkPicture + saveLayer() for masks |
| 44 -- PathOps for resolving complex paths | 57 -- PathOps for resolving complex paths |
| 45 - SkPictureShader for device-independent patterns | 58 - SkPictureShader for device-independent patterns |
| 46 | 59 |
| 47 Skia In Blink : Recording | 60 Skia In Blink : Recording |
| 48 - GraphicsContext usuaually backed by SkPicture | 61 - GraphicsContext (now) backed by SkPicture |
| 49 -- draw commands are recorded for later playback | 62 -- draw commands are recorded for later playback |
| 50 -- all parameters must be copied or (safely) ref'd | 63 -- all parameters must be copied or (safely) ref'd |
| 51 -- may record more than is currently visible | 64 -- may record more than is currently visible |
| 52 - Resulting picture may be replayed multiple times | 65 - Resulting picture may be replayed multiple times |
| 66 -- from different thread(s) |
| 53 | 67 |
| 54 Skia In Blink : Recording response | 68 Skia In Blink : Recording response |
| 55 - New implementation | 69 - New implementation |
| 56 - Optimized for recording speed | 70 - Optimized for recording speed |
| 57 -- shallow copies whenever possible | 71 -- shallow copies whenever possible |
| 58 -- rearchitect all Skia effects to be immutable | 72 -- rearchitect all Skia effects to be immutable |
| 59 - Reentrant-safe for playback in multiple threads | 73 - Reentrant-safe for playback in multiple threads |
| 60 -- also affected effect subclasses | 74 -- also affected effect subclasses |
| 61 | 75 |
| 62 Skia In Blink : Playback | 76 Skia In Blink : Playback |
| 63 - Separate pass for optimizations (optional) | 77 - Separate pass for optimizations (optional) |
| 64 -- peep-holes rewrites | 78 -- peep-holes rewrites |
| 65 -- compute bounding-box hierarchy for faster tiling | 79 -- compute bounding-box hierarchy for faster tiling |
| 66 -- can be done outside of Blink thread | 80 -- can be done outside of Blink thread |
| 67 - GPU optimizations | 81 - GPU optimizations |
| 68 -- layer "hoisting" | 82 -- layer "hoisting" |
| 69 -- distance field fonts | 83 -- distance fields : fonts and concave paths |
| 84 |
| 85 Skia In Blink : multi-picture-draw |
| 86 - mpd(canvas[], picture[], matrix[], paint[]) |
| 87 - Requires independent canvas objects |
| 88 -- all other parameters can be shared |
| 89 -- draw order is unspecified |
| 90 - Examples |
| 91 -- 1 picture drawing to multiple tiles (canvases) |
| 92 -- multiple pictures each drawing to its own layer |
| 93 |
| 94 Skia In Blink : MPD optimizations* |
| 95 - GPU |
| 96 -- "layer hoisting" to reduce rendertarget switching |
| 97 -- layer atlasing (also applies to imagefilters) |
| 98 -- pre-uploading of textures |
| 99 -- atlas yuv (from jpeg) to convert on gpu |
| 100 - CPU |
| 101 -- parallel execution using thread pool |
| 102 -- pre-decoding of images based on visibility |
| 70 | 103 |
| 71 Skia : Roadmap | 104 Skia : Roadmap |
| 72 | 105 |
| 73 Skia In Blink : Roadmap | 106 Skia : Roadmap - performance |
| 74 - GPU performance | 107 - GPU |
| 75 -- extended OpenGL features (e.g. geometry shaders) | 108 -- extended OpenGL features (e.g. geometry shaders) |
| 76 -- reordering for increased batching | 109 -- reordering for increased batching |
| 77 -- support for new low-level OpenGL APIs | 110 -- support for new low-level OpenGL APIs |
| 111 - CPU |
| 112 -- SIMD applied to floats |
| 113 -- smarter culling in pictures |
| 114 |
| 115 Skia : Roadmap - API |
| 78 - Cross process support | 116 - Cross process support |
| 79 -- immediate mode ala SkGPipe | |
| 80 -- serialize pictures | |
| 81 | |
| 82 Skia API Roadmap | |
| 83 - Direct support for sRGB | 117 - Direct support for sRGB |
| 84 - Stable C API / ABI | 118 - Robust file format |
| 119 - Support PDF viewing |
| 120 - Stable C ABI |
| 85 -- bindings for JS, Go, Python, Lua | 121 -- bindings for JS, Go, Python, Lua |
| 86 - Robust file format | |
| 87 | 122 |
| 88 Demo | 123 Demo |
| 89 | |
| OLD | NEW |