| Index: resources/slides_content2.lua
|
| diff --git a/resources/slides_content2.lua b/resources/slides_content2.lua
|
| index d2a4016fbd1ae3489a6b06a61486e8b52f82deb8..19d7203812c4090cbcbfd9301232a6eb8f48fe38 100644
|
| --- a/resources/slides_content2.lua
|
| +++ b/resources/slides_content2.lua
|
| @@ -2,80 +2,29 @@ Skia Update
|
|
|
| Skia : Overview
|
| - portable 2D graphics engine
|
| -- src: geometry, images, text
|
| -- dst : raster, gpu, pdf, displaylist, *user-defined
|
| -- attr: shaders, filters, antialiasing, blending, *user-defined
|
| -
|
| -Skia : Clients
|
| -- Blink : direct and via GraphicsContext
|
| -- Chrome : ui/gfx and compositor
|
| -- Android framework
|
| -- third parties : e.g. Mozilla
|
| -- code.google.com/p/skia
|
| +- src : geometry, images, text
|
| +- attr: shaders, filters, antialiasing, blending
|
| +- dst : raster, gpu, pdf, picture
|
|
|
| Skia : Porting
|
| - C++ and some SIMD assembly
|
| -- Fonts : CoreText, FreeType, GDI, DirectWrite, *user-define
|
| +- Fonts : CoreText, FreeType, GDI, DirectWrite
|
| - Threads : wrappers for native apis
|
| - Memory : wrappers for [new, malloc, discardable]
|
|
|
| -Skia : API
|
| -- SkCanvas
|
| --- save, saveLayer, restore
|
| --- translate, scale, rotate, concat
|
| --- clipRect, clipPath
|
| -- SkPaint
|
| --- color, stroking, antialiasing, filtering
|
| --- typeface, textSize, text-flags
|
| --- effects: shader, color-filter, image-filter, mask-filter, xfermode
|
| -
|
| -<blockstyle = code>
|
| -void onDraw(SkCanvas* canvas) {
|
| - SkPaint paint;
|
| - paint.setFoo(...);
|
| - canvas->drawRect(..., paint);
|
| - paint.setBar(...);
|
| - canvas->drawOval(..., paint);
|
| -}
|
| -
|
| -<blockstyle = code>
|
| -void onDraw(SkCanvas* canvas) {
|
| - canvas->drawRect(..., fPaint0);
|
| - canvas->drawOval(..., fPaint1);
|
| -}
|
| -
|
| -Skia In Blink : GraphicsContext
|
| -- Similar
|
| --- rects, paths, images, text
|
| --- matrices, clips
|
| -- Different
|
| --- save/restore affect matrix+clip PLUS all paint settings
|
| --- both fill and stroke settings are specified
|
| --- hence: fillRect(), strokeRect(), drawRect()
|
| -
|
| -<blockstyle = code>
|
| -void onDraw(GraphicsContext* gc) {
|
| - gc->save();
|
| - gc->setFoo(...);
|
| - gc->fillRect(...);
|
| - gc->setBar(...);
|
| - gc->fillOval(...);
|
| - gc->restore();
|
| -}
|
| +Skia : Clients
|
| +- Blink : under the GraphicsContext hood
|
| +- Chrome : ui/gfx and compositor
|
| +- Android framework
|
| +- third parties : e.g. Mozilla
|
| +- sites.google.com/site/skiadocs
|
|
|
| -Skia In Blink : more than GraphicsContext
|
| -- Simple wrappers
|
| --- FloatRect -- SkRect
|
| --- Path -- SkPath
|
| -- Font.h + 21 others
|
| --- SkTypeface + flags
|
| -- Image.h + 25 others
|
| --- SkBitmap, SkImage
|
| +Skia In Blink
|
|
|
| Skia In Blink : Fonts
|
| -- Assist with code-sharing between platforms
|
| +- SkTypeface and SkFontMgr : platform agnostic
|
| - Runtime switch between GDI and DirectWrite
|
| -- Add SkFontMgr for selection
|
| +- SkTextBlob to encapsulate runs of text
|
| - Push LCD decision-making out of Blink
|
|
|
| Skia In Blink : Record-Time-Rasterization
|
| @@ -89,8 +38,52 @@ Skia In Blink : Record-Time-Rasterization
|
|
|
| Skia In Blink : RTR response
|
| - SkImageFilter w/ CPU and GPU implementations
|
| -- SkPaint::FilterLevel : none, low, medium (mipmaps), high
|
| +- FilterLevel : none, low, medium (mipmaps), high
|
| - SkPicture for caching SVG
|
| - SkPicture + saveLayer() for masks
|
| -- PathOps for resolving complex paths
|
| - SkPictureShader for device-independent patterns
|
| +
|
| +Skia In Blink : Recording
|
| +- GraphicsContext usuaually backed by SkPicture
|
| +-- draw commands are recorded for later playback
|
| +-- all parameters must be copied or (safely) ref'd
|
| +-- may record more than is currently visible
|
| +- Resulting picture may be replayed multiple times
|
| +
|
| +Skia In Blink : Recording response
|
| +- New implementation
|
| +- Optimized for recording speed
|
| +-- shallow copies whenever possible
|
| +-- rearchitect all Skia effects to be immutable
|
| +- Reentrant-safe for playback in multiple threads
|
| +-- also affected effect subclasses
|
| +
|
| +Skia In Blink : Playback
|
| +- Separate pass for optimizations (optional)
|
| +-- peep-holes rewrites
|
| +-- compute bounding-box hierarchy for faster tiling
|
| +-- can be done outside of Blink thread
|
| +- GPU optimizations
|
| +-- layer "hoisting"
|
| +-- distance field fonts
|
| +
|
| +Skia : Roadmap
|
| +
|
| +Skia In Blink : Roadmap
|
| +- GPU performance
|
| +-- extended OpenGL features (e.g. geometry shaders)
|
| +-- reordering for increased batching
|
| +-- support for new low-level OpenGL APIs
|
| +- Cross process support
|
| +-- immediate mode ala SkGPipe
|
| +-- serialize pictures
|
| +
|
| +Skia API Roadmap
|
| +- Direct support for sRGB
|
| +- Stable C API / ABI
|
| +-- bindings for JS, Go, Python, Lua
|
| +- Robust file format
|
| +
|
| +Demo
|
| +
|
|
|