Skip to content

[skia-sync] Merge upstream chrome/m151 bug fixes - #4538

Merged
mattleibow merged 3 commits into
mainfrom
skia-sync/m151
Jul 24, 2026
Merged

[skia-sync] Merge upstream chrome/m151 bug fixes#4538
mattleibow merged 3 commits into
mainfrom
skia-sync/m151

Conversation

@mattleibow

Copy link
Copy Markdown
Collaborator

Automated upstream bug-fix sync for m151.

Companion skia PR: mono/skia#294

Skia sync: m151 bug-fix (same-milestone)

Same-milestone sync (m151 → m151): picks up one upstream Ganesh bug-fix from
chrome/m151. Not a version bump.

Parent-repo changes

  • externals/skia: submodule pointer advanced to the mono/skia skia-sync/m151 merge
    commit (which brings in upstream b4204f7ff9).
  • cgmanifest.json: commitHash and upstream_merge_commit updated to the new SHAs;
    chrome_milestone unchanged (still 151).

Version / binding updates

  • None. scripts/VERSIONS.txt, scripts/azure-templates-variables.yml, and
    include/c/sk_types.h (SK_C_INCREMENT) are unchanged — this is a bug-fix-only sync
    on the same milestone.

C# changes

  • None. The upstream fix is internal to Ganesh (GrDrawingManager /
    SurfaceContext); no C API headers or implementations changed
    (git diff skiasharp..HEAD -- externals/skia/include/c externals/skia/src/c is empty),
    so bindings and wrappers are unaffected.

Build / test

  • Bindings not regenerated (no C API delta).
  • Native rebuild + full test run not executed in this workflow run — no code paths
    reachable from the managed surface changed. CI on the resulting PRs will exercise the
    native build + tests across the platform matrix.

Breaking-change analysis

  • No public API removed, renamed, or changed. ABI stable.

Items needing human attention

  • Confirm CI on both PRs turns green (native build + tests across all platforms) before
    merging — this is the substantive validation for this sync.

Created by skia-upstream-sync.

Merges upstream chrome/m151 which brings one Ganesh readback bug-fix:
[M151] [ganesh] prevent stale readbacks (b4204f7ff9)

No C API, no bindings, no version changes.

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 Jul 24, 2026
@github-actions

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

PowerShell / Windows:

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

Step 2 — Add the local NuGet source

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

@github-actions

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.

@mattleibow
mattleibow marked this pull request as ready for review July 24, 2026 22:13
mattleibow and others added 2 commits July 25, 2026 00:13
Latest: Merge upstream chrome/m151 bug fixes (#294)
Commit: 1af4051dbaaa38b6016d4fc34a52acf9c639063d

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
@github-actions

github-actions Bot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

📊 SkiaSharp benchmarks — PR #4538

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 — 🔴 34 slower · 🟢 17 faster

  • 🔴 BitmapDrawBenchmark.DrawScaledTiles(Tiles: 64) · macOS · 226.51 µs → 297.64 µs (+31%)
  • 🟢 LargeImageScaleBenchmark.UpscaleOpaque(Size: 2048) · macOS · 2.99 ms → 2.15 ms (-28%)
  • 🟢 LargeImageScaleBenchmark.UpscaleOpaque(Size: 1024) · macOS · 739.02 µs → 533.93 µs (-28%)
  • 🔴 PathBoundsBenchmark.TightBounds(Points: 1024) · Windows · 15.75 µs → 20.01 µs (+27%)
  • 🔴 MatrixMapPointsBenchmark.MapPoints(Points: 4096) · macOS · 1.59 µs → 1.99 µs (+25%)
  • …and 46 more (see details below)
Full per-OS benchmark deltas

Linux

⏱️ Time (vs 🌙 nightly 4.151.0-nightly.93)

Benchmark baseline this PR Δ
RasterImageLifecycleBenchmark.CreateDataWithReleaseProc(Count: 256) 102.70 µs 125.04 µs 🔴 +22%
RasterImageLifecycleBenchmark.CreateRasterImage(Count: 256) 257.03 µs 282.49 µs 🔴 +10%
MatrixMapPointsBenchmark.MapPoints(Points: 4096) 3.06 µs 2.77 µs 🟢 -10%
ColorMathBenchmark.ToColor(Colors: 4096) 15.37 µs 14.14 µs 🟢 -8%
ColorMathBenchmark.UnPreMultiply(Colors: 4096) 11.46 µs 12.08 µs 🔴 +5%

Windows

⏱️ Time (vs 🌙 nightly 4.151.0-nightly.93)

Benchmark baseline this PR Δ
PathBoundsBenchmark.TightBounds(Points: 1024) 15.75 µs 20.01 µs 🔴 +27%
PathBoundsBenchmark.TightBounds(Points: 64) 1.51 µs 1.88 µs 🔴 +24%
RasterImageLifecycleBenchmark.CreateDataWithReleaseProc(Count: 256) 104.24 µs 127.49 µs 🔴 +22%
MatrixMapPointsBenchmark.MapRadius(Points: 4096) 136.61 µs 166.07 µs 🔴 +22%
MatrixMapPointsBenchmark.MapVector(Points: 256) 7.53 µs 8.91 µs 🔴 +18%
MatrixMapPointsBenchmark.MapRect(Points: 4096) 116.29 µs 135.90 µs 🔴 +17%
MatrixMapPointsBenchmark.MapRadius(Points: 256) 8.96 µs 10.46 µs 🔴 +17%
ColorParseBenchmark.Parse(Iterations: 1000) 74.23 µs 82.55 µs 🔴 +11%
RasterImageLifecycleBenchmark.CreateRasterImage(Count: 256) 253.28 µs 281.59 µs 🔴 +11%
CanvasDrawBenchmark.Draw(Shapes: 64) 2.58 ms 2.85 ms 🔴 +11%
CanvasDrawBenchmark.Draw(Shapes: 512) 20.64 ms 22.73 ms 🔴 +10%
MatrixOpsBenchmark.Concat(Count: 4096) 224.14 µs 246.44 µs 🔴 +10%
MatrixMapPointsBenchmark.MapVector(Points: 4096) 129.34 µs 141.86 µs 🔴 +10%
MatrixMapPointsBenchmark.MapRect(Points: 256) 7.34 µs 7.99 µs 🔴 +9%
ColorMathBenchmark.ToColor(Colors: 4096) 15.52 µs 16.81 µs 🔴 +8%
MatrixOpsBenchmark.Invert(Count: 4096) 129.97 µs 140.11 µs 🔴 +8%
MatrixMapPointsBenchmark.MapPoints(Points: 4096) 2.27 µs 2.44 µs 🔴 +7%
MatrixMapPointsBenchmark.MapPoints(Points: 256) 170.5 ns 183.1 ns 🔴 +7%
ColorMathBenchmark.ToColorF(Colors: 4096) 13.21 µs 14.06 µs 🔴 +6%
BitmapDrawBenchmark.DrawScaledTiles(Tiles: 256) 1.23 ms 1.30 ms 🔴 +5%

macOS

⏱️ Time (vs 🌙 nightly 4.151.0-nightly.93)

Benchmark baseline this PR Δ
BitmapDrawBenchmark.DrawScaledTiles(Tiles: 64) 226.51 µs 297.64 µs 🔴 +31%
LargeImageScaleBenchmark.UpscaleOpaque(Size: 2048) 2.99 ms 2.15 ms 🟢 -28%
LargeImageScaleBenchmark.UpscaleOpaque(Size: 1024) 739.02 µs 533.93 µs 🟢 -28%
MatrixMapPointsBenchmark.MapPoints(Points: 4096) 1.59 µs 1.99 µs 🔴 +25%
LargeImageScaleBenchmark.UpscaleCrossfade(Size: 1024) 1.77 ms 1.33 ms 🟢 -25%
ColorMathBenchmark.ToColor(Colors: 4096) 21.02 µs 17.36 µs 🟢 -17%
LargeImageScaleBenchmark.UpscaleCrossfade(Size: 2048) 6.25 ms 5.24 ms 🟢 -16%
CanvasDrawBenchmark.Draw(Shapes: 64) 1.71 ms 1.44 ms 🟢 -16%
PathBoundsBenchmark.TightBounds(Points: 64) 886.5 ns 1.01 µs 🔴 +13%
RasterImageLifecycleBenchmark.CreateDataWithReleaseProc(Count: 256) 71.35 µs 79.66 µs 🔴 +12%
MatrixMapPointsBenchmark.MapPoint(Points: 256) 1.37 µs 1.21 µs 🟢 -11%
ColorMathBenchmark.UnPreMultiply(Colors: 4096) 8.95 µs 7.97 µs 🟢 -11%
ColorMathBenchmark.ToColorF(Colors: 4096) 5.87 µs 5.27 µs 🟢 -10%
MatrixMapPointsBenchmark.MapPoint(Points: 4096) 18.34 µs 20.15 µs 🔴 +10%
CanvasDrawBenchmark.Draw(Shapes: 512) 12.54 ms 11.34 ms 🟢 -10%
BitmapDrawBenchmark.DrawUnscaledTiles(Tiles: 64) 173.22 µs 189.42 µs 🔴 +9%
MatrixMapPointsBenchmark.MapRect(Points: 4096) 50.04 µs 53.98 µs 🔴 +8%
MatrixOpsBenchmark.Invert(Count: 4096) 65.09 µs 60.02 µs 🟢 -8%
MatrixMapPointsBenchmark.MapRadius(Points: 4096) 98.35 µs 105.81 µs 🔴 +8%
MatrixMapPointsBenchmark.MapRect(Points: 256) 3.32 µs 3.07 µs 🟢 -8%
MatrixMapPointsBenchmark.MapVector(Points: 4096) 39.50 µs 42.43 µs 🔴 +7%
MatrixOpsBenchmark.Concat(Count: 4096) 111.09 µs 119.08 µs 🔴 +7%
MatrixMapPointsBenchmark.MapVector(Points: 256) 2.77 µs 2.58 µs 🟢 -7%
ColorMathBenchmark.PreMultiply(Colors: 4096) 9.32 µs 8.70 µs 🟢 -7%
BitmapDrawBenchmark.DrawUnscaledTiles(Tiles: 256) 598.68 µs 562.54 µs 🟢 -6%
…and 1 more

📈 Full interactive perf-dashboard & run details →

@mattleibow
mattleibow merged commit e4088b1 into main Jul 24, 2026
22 of 25 checks passed
@mattleibow
mattleibow deleted the skia-sync/m151 branch July 24, 2026 22:14
@github-actions

Copy link
Copy Markdown
Contributor

📦 Artifact size report

Packages from this PR (build 1525974) vs the latest nightly baseline 4.151.0-nightly.93 (observed 2026-07-24).

Total .nupkg size: 537.7 MB → 535.4 MB (−2.3 MB, -0.4%)

Packages

⚠️ marks growth over 500.0 KB or 2%. Changes under 50.0 KB are treated as noise.

Package baseline this PR Δ Δ%
SkiaSharp.NativeAssets.WinUI 109.2 MB 107.1 MB 🟢 −2.1 MB -1.9%
HarfBuzzSharp.NativeAssets.Win32 20.8 MB 20.5 MB 🟢 −248.3 KB -1.2%

+38 package(s) unchanged (< 50.0 KB).

Per-file changes

HarfBuzzSharp.NativeAssets.Win32

File Size
runtimes/win-x86/native/libHarfBuzzSharp.pdb 22.2 MB → 21.9 MB (🟢 −272.0 KB)
runtimes/win-x64/native/libHarfBuzzSharp.pdb 22.0 MB → 21.8 MB (🟢 −240.0 KB)
runtimes/win-arm64/native/libHarfBuzzSharp.pdb 22.3 MB → 22.3 MB (🟢 −8.0 KB)

SkiaSharp.NativeAssets.WinUI

File Size
runtimes/win-x86/native/libGLESv2.pdb 67.3 MB → 67.0 MB (🟢 −256.0 KB)
runtimes/win-arm64/native/libGLESv2.pdb 64.5 MB → 64.3 MB (🟢 −224.0 KB)
runtimes/win-x64/native/libGLESv2.pdb 66.6 MB → 66.4 MB (🟢 −224.0 KB)
runtimes/win-x64/native/libEGL.pdb 6.4 MB → 6.3 MB (🟢 −32.0 KB)
runtimes/win-x86/native/libEGL.pdb 6.5 MB → 6.5 MB (🟢 −16.0 KB)
runtimes/win-arm64/native/SkiaSharp.Views.WinUI.Native.pdb 67.7 MB → 67.7 MB (🟢 −8.0 KB)
runtimes/win-x64/native/SkiaSharp.Views.WinUI.Native.pdb 68.0 MB → 68.0 MB (🟢 −8.0 KB)
🧬 win-x64 (runtimes/win-x64/native/libGLESv2.dll) 4.9 MB → 4.9 MB (🔴 +2.0 KB)
🧬 win-arm64 (runtimes/win-arm64/native/libGLESv2.dll) 4.4 MB → 4.4 MB (🔴 +1.0 KB)

Informational only — this never blocks the PR. Native binaries are labelled by os/arch.

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: Done

Development

Successfully merging this pull request may close these issues.

1 participant