Files
Bitsy 7f5773fc3c feat(ui): B6.1 โ€” Skia leg draws through upstream SkiaBackedCanvas
Full upstream Skia GRAPHICS pipeline on the skiko leg (RENDERER_CONVERGE.md ยง4,
the enabler for B2). The composition's frame + offscreen drawing now goes through
upstream's SkiaBackedCanvas / SkiaBackedPaint / SkiaShader / SkiaImageAsset /
ImageBitmap.skiko instead of the project SkiaCanvas.

Split the port graphics actuals per-renderer (createRenderBackend disjoint-target
trick): CanvasPaintActuals.native.kt (Paint/Shader/all gradient shaders/
ActualImageBitmap/createImageBitmap/ActualCanvas/NativeCanvas/NativePaint) and
BlendMode.native.kt move nativeMain -> sdlRendererMain (SDL keeps the port flavor);
the skiko leg gets the un-refused upstream files (manifest).

Text/painter/shadow keep the port engine: SkiaBackedCanvas is MANUAL-VENDORED to
also implement NativeTextCanvas/NativePainterCanvas/NativeShadowCanvas/
NativeFinishableCanvas, forwarding to the port SkiaTextRenderer (P3.1 metrics
preserved) + SkiaImageCache via a global skiaLeafDrawer over internalSkiaCanvas.
SkiaImageAsset manual-vendored too (flattened toBitmap/putBytesInto expect/actuals
that would collide in our single native source set). SkiaCanvas.kt deleted; the
offscreen (VectorPainter/DrawCache) now uses upstream's ActualCanvas + the encoded
decoder produces an upstream ImageBitmap.

skiaLeafDrawer is per-WINDOW state re-pointed each frame in drawRoot (+ cleared on
destroy) โ€” mirrors ComposeWindow.installGlobals(); a ctor-set version dangled at a
closed window's destroyed renderer and crashed the surviving window (caught by
multiwintest).

MAC-VERIFY ALL GREEN both legs: builds (demo+apidemo), 10/10 probes, parity PASS
(56/57 byte-identical to baseline; Images within noise), perf within/below baseline,
metadata compile clean, drift + vendor-clean checks pass. B2 (P1.4/1.6) unblocked.
2026-07-17 00:23:31 +02:00

180 lines
3.8 KiB
JSON

{
"macosArm64/sdl3": {
"Animation": 3.11,
"AnnotatedString": 7.46,
"AppBars": 1.99,
"BasicText": 4.62,
"BasicTextField": 4.99,
"Brushes": 2.18,
"Buttons": 1.92,
"ButtonsExtra": 2.24,
"Canvas": 5.03,
"Cards": 2.28,
"Carousel": 2.06,
"Chips": 1.62,
"Clipboard": 2.94,
"Colors": 0.68,
"Counter": 0.65,
"CustomLayout": 19.13,
"Dialogs": 2.54,
"DragAndDrop": 1.85,
"Drawers": 1.3,
"Fab": 1.94,
"FabExtra": 1.35,
"FlowLayout": 2.46,
"FocusRequester": 2.85,
"Gestures": 2.68,
"GraphicsLayer": 4.7,
"GridsExtra": 1.29,
"Icons": 1.29,
"Images": 16.81,
"Interaction": 1.41,
"InteractionSource": 2.96,
"Layout": 2.12,
"LazyColumn": 2.7,
"LazyExtra": 2.91,
"LazyGrid": 1.67,
"Lists": 2.45,
"M3Misc": 1.65,
"MaterialSymbols": 2.99,
"ModShortcuts": 2.27,
"Modifiers": 2.28,
"NavRails": 1.38,
"Navigation": 1.79,
"Navigation3": 2.71,
"Pager": 0.98,
"Path": 6.22,
"Pickers": 19.47,
"PointerInput": 2.68,
"Recomposition": 1.51,
"Remember": 1.74,
"Scroll": 2.82,
"Search": 4.5,
"Shadows": 1.49,
"Shapes": 1.34,
"Sheets": 1.35,
"Tabs": 1.88,
"Text": 3.37,
"TextField": 1.95,
"Widgets": 2.21
},
"macosArm64/skia": {
"Animation": 3.11,
"AnnotatedString": 7.46,
"AppBars": 1.99,
"BasicText": 4.62,
"BasicTextField": 4.99,
"Brushes": 2.18,
"Buttons": 1.92,
"ButtonsExtra": 2.24,
"Canvas": 5.03,
"Cards": 2.28,
"Carousel": 2.06,
"Chips": 1.62,
"Clipboard": 2.94,
"Colors": 0.68,
"Counter": 0.65,
"CustomLayout": 19.13,
"Dialogs": 2.54,
"DragAndDrop": 1.85,
"Drawers": 1.3,
"Fab": 1.94,
"FabExtra": 1.35,
"FlowLayout": 2.46,
"FocusRequester": 2.85,
"Gestures": 2.68,
"GraphicsLayer": 4.65,
"GridsExtra": 1.29,
"Icons": 1.29,
"Images": 16.81,
"Interaction": 1.41,
"InteractionSource": 2.96,
"Layout": 2.12,
"LazyColumn": 2.7,
"LazyExtra": 2.91,
"LazyGrid": 1.67,
"Lists": 2.45,
"M3Misc": 1.65,
"MaterialSymbols": 2.99,
"ModShortcuts": 2.27,
"Modifiers": 2.28,
"NavRails": 1.38,
"Navigation": 1.79,
"Navigation3": 2.71,
"Pager": 0.98,
"Path": 6.22,
"Pickers": 19.47,
"PointerInput": 2.68,
"Recomposition": 1.51,
"Remember": 1.74,
"Scroll": 2.82,
"Search": 4.5,
"Shadows": 1.49,
"Shapes": 1.34,
"Sheets": 1.35,
"Tabs": 1.88,
"Text": 3.37,
"TextField": 1.95,
"Widgets": 2.21
},
"mingwX64/sdl3": {
"Animation": 3.0,
"AnnotatedString": 8.13,
"AppBars": 1.96,
"BasicText": 2.81,
"BasicTextField": 1.82,
"Brushes": 2.21,
"Buttons": 1.9,
"ButtonsExtra": 2.19,
"Canvas": 4.3,
"Cards": 2.29,
"Carousel": 1.9,
"Chips": 1.59,
"Clipboard": 3.03,
"Colors": 0.65,
"Counter": 0.58,
"CustomLayout": 4.1,
"Dialogs": 2.64,
"DragAndDrop": 1.84,
"Drawers": 1.38,
"Fab": 1.86,
"FabExtra": 1.38,
"FlowLayout": 2.34,
"FocusRequester": 2.84,
"Gestures": 2.62,
"GraphicsLayer": 2.46,
"GridsExtra": 1.33,
"Icons": 1.3,
"Images": 16.61,
"Interaction": 1.44,
"InteractionSource": 2.87,
"Layout": 2.04,
"LazyColumn": 3.46,
"LazyExtra": 2.85,
"LazyGrid": 1.62,
"Lists": 2.33,
"M3Misc": 1.67,
"MaterialSymbols": 2.91,
"ModShortcuts": 1.87,
"Modifiers": 2.3,
"NavRails": 1.35,
"Navigation": 1.68,
"Navigation3": 2.25,
"Pager": 1.0,
"Path": 3.56,
"Pickers": 19.47,
"PointerInput": 2.77,
"Recomposition": 1.48,
"Remember": 1.72,
"Scroll": 2.78,
"Search": 5.27,
"Shadows": 1.53,
"Shapes": 1.31,
"Sheets": 1.4,
"Tabs": 1.77,
"Text": 3.08,
"TextField": 1.93,
"Widgets": 2.2
}
}