diff options
Diffstat (limited to 'resources/slides_content2.lua')
-rw-r--r-- | resources/slides_content2.lua | 123 |
1 files changed, 58 insertions, 65 deletions
diff --git a/resources/slides_content2.lua b/resources/slides_content2.lua index d2a4016fbd..19d7203812 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 + |