Skip to content

[skia-sync] Merge upstream chrome/m156 bug fixes - #5575

Draft
mattleibow wants to merge 1 commit into
mainfrom
skia-sync/m156
Draft

mattleibow wants to merge 1 commit into
mainfrom
skia-sync/m156

Conversation

@mattleibow

Copy link
Copy Markdown
Contributor

Description

Automated upstream bug-fix sync for m156.

This pull request was produced by skia-upstream-sync.

Related issues

N/A — automated upstream synchronization.

Required skia PR

Requires mono/skia#425

Areas affected

  • Managed API (binding/)
  • Native / C API (externals/skia/src/c, include/c)
  • Generated P/Invoke bindings
  • Native dependency or Skia update
  • Views & integrations
  • Rendering output / visual behavior
  • Performance
  • Tests
  • Build, packaging, or CI
  • Documentation or samples

Changes

  • Advanced externals/skia to tested mono/skia merge 6b29d163d04b984652a54779fcf2f4c6fc7a9254 in parent commit f6485dd9ea0bf214ab0226b26ceb75006ecb7485.
  • Updated cgmanifest.json to record upstream chrome/m156 commit e8e04b1c75f6ad8a14d5971f7d56398e2837fd4c and the exact mono/skia commit.
  • Kept milestone, package, assembly, file, and native API versions unchanged for this same-milestone bug-fix sync.
  • Binding regeneration found no generated declaration changes or new native functions; no managed wrapper or test source changes were needed.

Testing

  • Linux x64 native source build passed from the merged submodule.
  • Managed binding build passed.
  • tests/SkiaSharp.Tests.Console.slnx passed unfiltered on .NET 10: Singleton 1 passed, 0 skipped; Gallery 50 passed, 0 skipped; Core 6,488 passed, 33 skipped; Vulkan 23 passed, 2 skipped; Direct3D 2 passed, 3 skipped. All hosts had zero failures and no required backend was skipped.
  • Version/dependency metadata validation and the final fork-patch audit passed against the exact committed gitlink.

Human review

  • Confirm CI coverage on Windows, macOS, iOS, Android, WASM, and Linux arm64; only Linux x64 was executed locally.
  • Review platform-policy skips separately from required backend coverage. Linux software GL/Vulkan initialization completed under the provisioned deterministic test environment.

Checklist

  • Tests added or updated when behavior required them, or the report explains why not
  • Changes above lists all public API and behavioral changes or states that none changed
  • Documentation follow-up filed, or no public API changed
  • Companion mono/skia PR linked above and bindings regenerated

Last rendered by the sync workflow: 2026-11-02T19:51:56Z

Advance the Skia submodule to the latest chrome/m156 bug-fix commit and update Component Governance metadata to the exact tested native merge.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@mattleibow mattleibow added partner/agentic-workflows Issues and PRs created by SkiaSharp agentic workflows. type/milestone-sync Any Skia upstream sync PR (milestone bump, same-milestone bug-fix re-sync, or tip sync). labels Nov 2, 2026
@github-actions

github-actions Bot commented Nov 2, 2026

Copy link
Copy Markdown
Contributor

📖 Documentation Preview

Add the automation/staging label to build and publish a documentation preview for this PR.

Removing the label removes the preview. While the label is present, each new commit updates it.


This comment is automatically updated by the documentation staging workflow.

@github-actions

github-actions Bot commented Nov 2, 2026

Copy link
Copy Markdown
Contributor

📦 Try the packages from this PR

Warning

Do not run these scripts without first reviewing the code in this PR.

Step 1 — Download the packages

bash / macOS / Linux:

curl -fsSL https://raw.githubusercontent.com/mono/SkiaSharp/main/scripts/get-skiasharp-pr.sh | bash -s -- 5575

PowerShell / Windows:

iex "& { $(irm https://raw.githubusercontent.com/mono/SkiaSharp/main/scripts/get-skiasharp-pr.ps1) } 5575"

Step 2 — Add the local NuGet source

dotnet nuget add source ~/.skiasharp/hives/pr-5575/packages --name skiasharp-pr-5575
More options
Option Description
--successful-only / -SuccessfulOnly Only use successful builds
--force / -Force Overwrite previously downloaded packages
--list / -List List available artifacts without downloading
--build-id ID / -BuildId ID Download from a specific build

Or download manually from Azure Pipelines — look for the nuget artifact on the build for this PR.

Remove the source when you're done:

dotnet nuget remove source skiasharp-pr-5575

@github-actions

github-actions Bot commented Nov 2, 2026

Copy link
Copy Markdown
Contributor

📊 SkiaSharp benchmarks — PR #5575

⭐ this PR (full source build) vs 🌙 nightly · Linux · Windows · macOS

Informational only — this never blocks the PR. 🟢 faster / less allocation · 🔴 slower / more allocation; moves under 5% are hidden as noise.

⏱️ Times are raw BenchmarkDotNet means, and the ⭐ PR and baseline legs run on separate CI runners, so microbenchmarks can swing run-to-run — treat small time deltas as noise. Allocations are deterministic and the reliable signal. The interactive perf-dashboard (linked below) applies smoothing for the trend view.

Highlights

⏱️ Time — 🔴 64 slower · 🟢 24 faster

  • 🔴 ColorMathBenchmark.ToColor(Colors: 4096) · Linux · 5.03 µs → 12.03 µs (+139%)
  • 🔴 MatrixMapPointsBenchmark.MapPoints(Points: 4096) · Linux · 1.52 µs → 3.15 µs (+106%)
  • 🔴 ColorMathBenchmark.ToColorF(Colors: 4096) · Linux · 7.87 µs → 14.75 µs (+87%)
  • 🔴 MatrixMapPointsBenchmark.MapPoints(Points: 256) · Linux · 144.5 ns → 268.4 ns (+86%)
  • 🔴 RasterImageLifecycleBenchmark.CreateDataWithReleaseProc(Count: 256) · Linux · 61.90 µs → 109.01 µs (+76%)
  • …and 83 more (see details below)

📦 Allocations — 🔴 1 more alloc · 🟢 0 less alloc

  • 🔴 RuntimeEffectShaderBenchmark.DrawFrame · Linux · 680 B → 730 B (+7%)
Full per-OS benchmark deltas

Linux

⏱️ Time (vs 🌙 nightly 4.156.0-nightly.26551.1)

Benchmark baseline this PR Δ
ColorMathBenchmark.ToColor(Colors: 4096) 5.03 µs 12.03 µs 🔴 +139%
MatrixMapPointsBenchmark.MapPoints(Points: 4096) 1.52 µs 3.15 µs 🔴 +106%
ColorMathBenchmark.ToColorF(Colors: 4096) 7.87 µs 14.75 µs 🔴 +87%
MatrixMapPointsBenchmark.MapPoints(Points: 256) 144.5 ns 268.4 ns 🔴 +86%
RasterImageLifecycleBenchmark.CreateDataWithReleaseProc(Count: 256) 61.90 µs 109.01 µs 🔴 +76%
SceneRenderBenchmark.RenderFrame(Complexity: 4) 17.13 ms 29.86 ms 🔴 +74%
CanvasDrawBenchmark.Draw(Shapes: 64) 3.09 ms 5.30 ms 🔴 +72%
BitmapDrawBenchmark.DrawUnscaledTiles(Tiles: 256) 595.58 µs 1.02 ms 🔴 +71%
CanvasDrawBenchmark.Draw(Shapes: 512) 24.77 ms 42.26 ms 🔴 +71%
BitmapDrawBenchmark.DrawUnscaledTiles(Tiles: 64) 161.00 µs 273.53 µs 🔴 +70%
RuntimeEffectShaderBenchmark.DrawFrame 3.15 ms 5.28 ms 🔴 +68%
SceneRenderBenchmark.RenderFrame(Complexity: 1) 3.86 ms 6.46 ms 🔴 +67%
RasterImageLifecycleBenchmark.CreateRasterImage(Count: 256) 154.60 µs 256.37 µs 🔴 +66%
PathBoundsBenchmark.TightBounds(Points: 1024) 6.31 µs 10.17 µs 🔴 +61%
BitmapDrawBenchmark.DrawScaledTiles(Tiles: 64) 229.59 µs 368.93 µs 🔴 +61%
PathBoundsBenchmark.TightBounds(Points: 64) 590.0 ns 943.6 ns 🔴 +60%
LargeImageScaleBenchmark.UpscaleCrossfade(Size: 2048) 5.08 ms 8.06 ms 🔴 +59%
BitmapDrawBenchmark.DrawScaledTiles(Tiles: 256) 896.38 µs 1.40 ms 🔴 +57%
LargeImageScaleBenchmark.UpscaleCrossfade(Size: 1024) 1.40 ms 2.11 ms 🔴 +51%
MatrixMapPointsBenchmark.MapVector(Points: 4096) 120.30 µs 179.33 µs 🔴 +49%
ColorParseBenchmark.Parse(Iterations: 1000) 44.63 µs 66.36 µs 🔴 +49%
MatrixMapPointsBenchmark.MapRadius(Points: 4096) 154.88 µs 228.66 µs 🔴 +48%
MatrixOpsBenchmark.Concat(Count: 4096) 145.14 µs 210.34 µs 🔴 +45%
MatrixMapPointsBenchmark.MapVector(Points: 256) 7.81 µs 11.19 µs 🔴 +43%
MatrixMapPointsBenchmark.MapRadius(Points: 256) 10.00 µs 14.22 µs 🔴 +42%
…and 9 more

📦 Allocations (vs 🌙 nightly 4.156.0-nightly.26551.1)

Benchmark baseline this PR Δ
RuntimeEffectShaderBenchmark.DrawFrame 680 B 730 B 🔴 +7%

Windows

⏱️ Time (vs 🌙 nightly 4.156.0-nightly.26551.1)

Benchmark baseline this PR Δ
MatrixMapPointsBenchmark.MapPoint(Points: 4096) 27.41 µs 41.34 µs 🔴 +51%
MatrixMapPointsBenchmark.MapPoint(Points: 256) 1.75 µs 2.59 µs 🔴 +49%
MatrixMapPointsBenchmark.MapPoints(Points: 256) 311.3 ns 175.7 ns 🟢 -44%
ColorMathBenchmark.ToColor(Colors: 4096) 11.15 µs 15.68 µs 🔴 +41%
MatrixMapPointsBenchmark.MapPoints(Points: 4096) 3.65 µs 2.43 µs 🟢 -33%
MatrixMapPointsBenchmark.MapRadius(Points: 256) 8.09 µs 10.52 µs 🔴 +30%
MatrixMapPointsBenchmark.MapRadius(Points: 4096) 131.49 µs 164.07 µs 🔴 +25%
ColorMathBenchmark.ToColorF(Colors: 4096) 17.29 µs 13.32 µs 🟢 -23%
PathBoundsBenchmark.TightBounds(Points: 1024) 16.73 µs 20.53 µs 🔴 +23%
PathBoundsBenchmark.TightBounds(Points: 64) 1.68 µs 2.05 µs 🔴 +22%
RuntimeEffectShaderBenchmark.DrawFrame 967.21 µs 1.14 ms 🔴 +18%
CanvasDrawBenchmark.Draw(Shapes: 512) 19.81 ms 23.29 ms 🔴 +18%
MatrixMapPointsBenchmark.MapVector(Points: 4096) 119.82 µs 140.80 µs 🔴 +18%
CanvasDrawBenchmark.Draw(Shapes: 64) 2.47 ms 2.90 ms 🔴 +17%
LargeImageScaleBenchmark.UpscaleOpaque(Size: 2048) 3.47 ms 2.93 ms 🟢 -16%
MatrixMapPointsBenchmark.MapVector(Points: 256) 7.73 µs 8.77 µs 🔴 +13%
RasterImageLifecycleBenchmark.CreateDataWithReleaseProc(Count: 256) 114.30 µs 128.56 µs 🔴 +12%
ColorMathBenchmark.UnPreMultiply(Colors: 4096) 11.37 µs 12.56 µs 🔴 +11%
BitmapDrawBenchmark.DrawUnscaledTiles(Tiles: 256) 901.57 µs 989.07 µs 🔴 +10%
MatrixOpsBenchmark.Invert(Count: 4096) 125.36 µs 135.95 µs 🔴 +8%
LargeImageScaleBenchmark.UpscaleOpaque(Size: 1024) 812.19 µs 745.99 µs 🟢 -8%
MatrixOpsBenchmark.Concat(Count: 4096) 228.69 µs 245.43 µs 🔴 +7%
MatrixMapPointsBenchmark.MapRect(Points: 4096) 180.75 µs 169.45 µs 🟢 -6%
LargeImageScaleBenchmark.UpscaleCrossfade(Size: 2048) 11.04 ms 10.45 ms 🟢 -5%
BitmapDrawBenchmark.DrawScaledTiles(Tiles: 256) 1.20 ms 1.26 ms 🔴 +5%

macOS

⏱️ Time (vs 🌙 nightly 4.156.0-nightly.26551.1)

Benchmark baseline this PR Δ
LargeImageScaleBenchmark.UpscaleOpaque(Size: 1024) 850.04 µs 524.98 µs 🟢 -38%
MatrixMapPointsBenchmark.MapPoints(Points: 4096) 1.69 µs 2.33 µs 🔴 +38%
BitmapDrawBenchmark.DrawUnscaledTiles(Tiles: 256) 1.04 ms 667.30 µs 🟢 -36%
LargeImageScaleBenchmark.UpscaleOpaque(Size: 2048) 3.20 ms 2.22 ms 🟢 -31%
LargeImageScaleBenchmark.UpscaleCrossfade(Size: 1024) 1.81 ms 1.27 ms 🟢 -30%
LargeImageScaleBenchmark.UpscaleCrossfade(Size: 2048) 7.13 ms 5.12 ms 🟢 -28%
BitmapDrawBenchmark.DrawScaledTiles(Tiles: 256) 1.07 ms 859.68 µs 🟢 -20%
MatrixMapPointsBenchmark.MapPoint(Points: 4096) 19.88 µs 23.79 µs 🔴 +20%
ColorMathBenchmark.ToColor(Colors: 4096) 21.87 µs 17.78 µs 🟢 -19%
RasterImageLifecycleBenchmark.CreateDataWithReleaseProc(Count: 256) 68.07 µs 80.68 µs 🔴 +19%
BitmapDrawBenchmark.DrawScaledTiles(Tiles: 64) 313.43 µs 255.62 µs 🟢 -18%
MatrixOpsBenchmark.Invert(Count: 4096) 72.78 µs 61.55 µs 🟢 -15%
CanvasDrawBenchmark.Draw(Shapes: 64) 1.94 ms 1.64 ms 🟢 -15%
RasterImageLifecycleBenchmark.CreateRasterImage(Count: 256) 156.34 µs 179.54 µs 🔴 +15%
BitmapDrawBenchmark.DrawUnscaledTiles(Tiles: 64) 250.22 µs 214.56 µs 🟢 -14%
RuntimeEffectShaderBenchmark.DrawFrame 556.24 µs 628.36 µs 🔴 +13%
ColorMathBenchmark.UnPreMultiply(Colors: 4096) 8.80 µs 7.71 µs 🟢 -12%
MatrixMapPointsBenchmark.MapVector(Points: 256) 2.64 µs 2.95 µs 🔴 +12%
MatrixMapPointsBenchmark.MapRadius(Points: 256) 6.72 µs 7.51 µs 🔴 +12%
ColorMathBenchmark.PreMultiply(Colors: 4096) 9.23 µs 8.30 µs 🟢 -10%
MatrixOpsBenchmark.Concat(Count: 4096) 120.97 µs 132.04 µs 🔴 +9%
SceneRenderBenchmark.RenderFrame(Complexity: 4) 5.74 ms 6.26 ms 🔴 +9%
SceneRenderBenchmark.RenderFrame(Complexity: 1) 1.24 ms 1.35 ms 🔴 +9%
ColorMathBenchmark.ToColorF(Colors: 4096) 5.84 µs 5.40 µs 🟢 -8%
CanvasDrawBenchmark.Draw(Shapes: 512) 13.29 ms 12.30 ms 🟢 -7%
…and 4 more

📈 Full interactive perf-dashboard & run details →

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

partner/agentic-workflows Issues and PRs created by SkiaSharp agentic workflows. type/milestone-sync Any Skia upstream sync PR (milestone bump, same-milestone bug-fix re-sync, or tip sync).

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

1 participant