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 |
+ |