aboutsummaryrefslogtreecommitdiffhomepage
path: root/resources/slides_content2.lua
diff options
context:
space:
mode:
Diffstat (limited to 'resources/slides_content2.lua')
-rw-r--r--resources/slides_content2.lua123
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
+