Skip to content

[skia-sync] Merge upstream Skia main (tip) - #5021

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

[skia-sync] Merge upstream Skia main (tip)#5021
mattleibow wants to merge 1 commit into
mainfrom
skia-sync/main

Conversation

@mattleibow

Copy link
Copy Markdown
Collaborator

Description

Automated bleeding-edge sync from the tip of upstream Skia (google/skia main).

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

Related issues

N/A — automated upstream synchronization.

Required skia PR

Requires mono/skia#356

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

Updates the Skia submodule from cc43af052d3d98e605bee4ddc98671dafded1c57 to the exact tested
fork commit dae82239d2968742b54ee0d05feaad977bcf494c, which contains the audited upstream main
merge at db200e27a6344709ecaf6b90911f05b51a96ba63. Component Governance metadata now records
that exact submodule commit, upstream commit, and upstream ref while retaining milestone 154.

The upstream range did not change the exported C API. Binding regeneration produced no generated
diff, no new native functions, and no managed wrapper or test changes.

Testing

  • Cold Linux x64 native source build passed with dotnet cake --target=externals-linux --arch=x64.
  • All maintained binding generators completed; the managed SkiaSharp project build passed.
  • Unfiltered tests/SkiaSharp.Tests.Console.slnx passed: Singleton 1/1; Core 6,127 passed,
    33 skipped; Direct3D 2 passed, 3 platform-policy skips; Vulkan 23 passed, 2 platform-policy
    skips. The Linux-required Vulkan backend initialized and executed; no required backend was
    skipped.

Human review

Review the cross-repository link to the mono/skia change and the retained milestone 154 metadata.
Native and runtime validation was performed only on Linux x64. Windows, macOS, Android, Apple
mobile platforms, WebAssembly, and their platform-specific graphics backends remain for CI.

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-09-05T20:27:17Z

Advance the Skia submodule to the audited upstream-main merge while retaining the milestone 154 package line. Update Component Governance metadata to the exact tested Skia and upstream commits.

Co-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 Sep 5, 2026
@github-actions

github-actions Bot commented Sep 5, 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 -- 5021

PowerShell / Windows:

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

Step 2 — Add the local NuGet source

dotnet nuget add source ~/.skiasharp/hives/pr-5021/packages --name skiasharp-pr-5021
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-5021

@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

📊 SkiaSharp benchmarks — PR #5021

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 — 🔴 2 slower · 🟢 81 faster

  • 🟢 MatrixOpsBenchmark.Invert(Count: 4096) · Windows · 223.66 µs → 94.89 µs (-58%)
  • 🟢 ColorMathBenchmark.ToColor(Colors: 4096) · Windows · 15.82 µs → 7.67 µs (-52%)
  • 🟢 MatrixMapPointsBenchmark.MapPoints(Points: 256) · Windows · 194.2 ns → 102.8 ns (-47%)
  • 🟢 BitmapDrawBenchmark.DrawUnscaledTiles(Tiles: 64) · Windows · 247.64 µs → 135.21 µs (-45%)
  • 🟢 RuntimeEffectShaderBenchmark.DrawFrame · Windows · 1.15 ms → 627.01 µs (-45%)
  • …and 78 more (see details below)
Full per-OS benchmark deltas

Linux

⏱️ Time (vs 🌙 nightly 4.154.0-nightly.26454.13)

Benchmark baseline this PR Δ
ColorMathBenchmark.ToColor(Colors: 4096) 15.37 µs 9.08 µs 🟢 -41%
BitmapDrawBenchmark.DrawScaledTiles(Tiles: 256) 1.46 ms 1.12 ms 🟢 -24%
PathBoundsBenchmark.TightBounds(Points: 64) 1.02 µs 783.7 ns 🟢 -23%
MatrixMapPointsBenchmark.MapPoints(Points: 4096) 2.88 µs 2.23 µs 🟢 -23%
RasterImageLifecycleBenchmark.CreateDataWithReleaseProc(Count: 256) 104.86 µs 82.28 µs 🟢 -22%
RasterImageLifecycleBenchmark.CreateRasterImage(Count: 256) 258.69 µs 207.17 µs 🟢 -20%
SceneRenderBenchmark.RenderFrame(Complexity: 1) 3.99 ms 3.20 ms 🟢 -20%
LargeImageScaleBenchmark.UpscaleCrossfade(Size: 1024) 1.99 ms 1.61 ms 🟢 -19%
LargeImageScaleBenchmark.UpscaleCrossfade(Size: 2048) 7.78 ms 6.28 ms 🟢 -19%
SceneRenderBenchmark.RenderFrame(Complexity: 4) 18.29 ms 14.79 ms 🟢 -19%
CanvasDrawBenchmark.Draw(Shapes: 64) 4.24 ms 3.44 ms 🟢 -19%
CanvasDrawBenchmark.Draw(Shapes: 512) 33.57 ms 27.54 ms 🟢 -18%
BitmapDrawBenchmark.DrawUnscaledTiles(Tiles: 256) 938.72 µs 772.90 µs 🟢 -18%
ColorParseBenchmark.Parse(Iterations: 1000) 72.07 µs 59.50 µs 🟢 -17%
BitmapDrawBenchmark.DrawUnscaledTiles(Tiles: 64) 253.35 µs 209.45 µs 🟢 -17%
RuntimeEffectShaderBenchmark.DrawFrame 2.83 ms 2.35 ms 🟢 -17%
BitmapDrawBenchmark.DrawScaledTiles(Tiles: 64) 352.92 µs 292.96 µs 🟢 -17%
LargeImageScaleBenchmark.UpscaleOpaque(Size: 2048) 2.67 ms 2.22 ms 🟢 -17%
MatrixMapPointsBenchmark.MapRadius(Points: 4096) 229.07 µs 190.91 µs 🟢 -17%
ColorMathBenchmark.ToColorF(Colors: 4096) 13.12 µs 10.94 µs 🟢 -17%
MatrixMapPointsBenchmark.MapVector(Points: 256) 10.98 µs 9.19 µs 🟢 -16%
PathBoundsBenchmark.TightBounds(Points: 1024) 10.59 µs 8.89 µs 🟢 -16%
LargeImageScaleBenchmark.UpscaleOpaque(Size: 1024) 679.12 µs 570.77 µs 🟢 -16%
MatrixMapPointsBenchmark.MapVector(Points: 4096) 172.95 µs 148.71 µs 🟢 -14%
ColorMathBenchmark.UnPreMultiply(Colors: 4096) 11.41 µs 9.84 µs 🟢 -14%
…and 9 more

Windows

⏱️ Time (vs 🌙 nightly 4.154.0-nightly.26454.13)

Benchmark baseline this PR Δ
MatrixOpsBenchmark.Invert(Count: 4096) 223.66 µs 94.89 µs 🟢 -58%
ColorMathBenchmark.ToColor(Colors: 4096) 15.82 µs 7.67 µs 🟢 -52%
MatrixMapPointsBenchmark.MapPoints(Points: 256) 194.2 ns 102.8 ns 🟢 -47%
BitmapDrawBenchmark.DrawUnscaledTiles(Tiles: 64) 247.64 µs 135.21 µs 🟢 -45%
RuntimeEffectShaderBenchmark.DrawFrame 1.15 ms 627.01 µs 🟢 -45%
BitmapDrawBenchmark.DrawUnscaledTiles(Tiles: 256) 949.16 µs 520.00 µs 🟢 -45%
MatrixMapPointsBenchmark.MapPoints(Points: 4096) 2.48 µs 1.36 µs 🟢 -45%
ColorMathBenchmark.PreMultiply(Colors: 4096) 13.30 µs 7.33 µs 🟢 -45%
CanvasDrawBenchmark.Draw(Shapes: 512) 21.65 ms 12.21 ms 🟢 -44%
BitmapDrawBenchmark.DrawScaledTiles(Tiles: 256) 1.25 ms 704.84 µs 🟢 -43%
CanvasDrawBenchmark.Draw(Shapes: 64) 2.69 ms 1.53 ms 🟢 -43%
ColorMathBenchmark.UnPreMultiply(Colors: 4096) 12.35 µs 7.03 µs 🟢 -43%
BitmapDrawBenchmark.DrawScaledTiles(Tiles: 64) 337.67 µs 195.21 µs 🟢 -42%
SceneRenderBenchmark.RenderFrame(Complexity: 1) 2.20 ms 1.27 ms 🟢 -42%
ColorParseBenchmark.Parse(Iterations: 1000) 77.26 µs 46.46 µs 🟢 -40%
SceneRenderBenchmark.RenderFrame(Complexity: 4) 9.99 ms 6.04 ms 🟢 -40%
ColorMathBenchmark.ToColorF(Colors: 4096) 13.38 µs 8.18 µs 🟢 -39%
LargeImageScaleBenchmark.UpscaleCrossfade(Size: 2048) 10.23 ms 6.43 ms 🟢 -37%
LargeImageScaleBenchmark.UpscaleCrossfade(Size: 1024) 2.58 ms 1.64 ms 🟢 -36%
MatrixMapPointsBenchmark.MapPoint(Points: 256) 4.86 µs 3.12 µs 🟢 -36%
MatrixMapPointsBenchmark.MapPoint(Points: 4096) 78.01 µs 51.70 µs 🟢 -34%
MatrixMapPointsBenchmark.MapVector(Points: 256) 8.16 µs 5.44 µs 🟢 -33%
MatrixMapPointsBenchmark.MapVector(Points: 4096) 129.39 µs 88.63 µs 🟢 -32%
PathBoundsBenchmark.TightBounds(Points: 1024) 15.64 µs 10.72 µs 🟢 -31%
PathBoundsBenchmark.TightBounds(Points: 64) 1.51 µs 1.05 µs 🟢 -30%
…and 9 more

macOS

⏱️ Time (vs 🌙 nightly 4.154.0-nightly.26454.13)

Benchmark baseline this PR Δ
LargeImageScaleBenchmark.UpscaleOpaque(Size: 2048) 2.96 ms 2.17 ms 🟢 -26%
LargeImageScaleBenchmark.UpscaleOpaque(Size: 1024) 729.73 µs 558.01 µs 🟢 -24%
BitmapDrawBenchmark.DrawScaledTiles(Tiles: 64) 270.84 µs 207.65 µs 🟢 -23%
LargeImageScaleBenchmark.UpscaleCrossfade(Size: 2048) 6.30 ms 5.32 ms 🟢 -16%
BitmapDrawBenchmark.DrawScaledTiles(Tiles: 256) 819.06 µs 692.85 µs 🟢 -15%
ColorMathBenchmark.ToColor(Colors: 4096) 20.12 µs 17.26 µs 🟢 -14%
LargeImageScaleBenchmark.UpscaleCrossfade(Size: 1024) 1.59 ms 1.36 ms 🟢 -14%
BitmapDrawBenchmark.DrawUnscaledTiles(Tiles: 64) 178.21 µs 157.03 µs 🟢 -12%
BitmapDrawBenchmark.DrawUnscaledTiles(Tiles: 256) 647.92 µs 572.83 µs 🟢 -12%
ColorMathBenchmark.PreMultiply(Colors: 4096) 9.97 µs 8.90 µs 🟢 -11%
MatrixMapPointsBenchmark.MapPoints(Points: 4096) 1.73 µs 1.85 µs 🔴 +7%
MatrixOpsBenchmark.Invert(Count: 4096) 72.17 µs 67.32 µs 🟢 -7%
PathBoundsBenchmark.TightBounds(Points: 64) 962.5 ns 900.9 ns 🟢 -6%
MatrixMapPointsBenchmark.MapPoints(Points: 256) 148.0 ns 156.2 ns 🔴 +6%
SceneRenderBenchmark.RenderFrame(Complexity: 1) 1.30 ms 1.23 ms 🟢 -5%

📈 Full interactive perf-dashboard & run details →

@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

📖 Documentation Preview

The documentation for this PR has been deployed and is available at:

🔗 View Staging Site
🔗 View Staging Docs
🔗 View Staging Gallery (Blazor)
🔗 View Staging Gallery (Uno Platform)
🔗 View Staging SkiaFiddle

This preview will be updated automatically when you push new commits to this PR.


This comment is automatically updated by the documentation staging workflow.

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