Skip to content

[skia-sync] Merge upstream chrome/m148 bug fixes#4252

Closed
mattleibow wants to merge 1 commit into
release/4.148.xfrom
skia-sync/release-4.148.x
Closed

[skia-sync] Merge upstream chrome/m148 bug fixes#4252
mattleibow wants to merge 1 commit into
release/4.148.xfrom
skia-sync/release-4.148.x

Conversation

@mattleibow

Copy link
Copy Markdown
Contributor

Automated upstream bug-fix sync for m148. Targeting release branch release/4.148.x (mono/skia release/4.148.x).

Companion skia PR: mono/skia#265

Skia upstream sync — release/4.148.x (m148 bug fixes)

Companion PR to the mono/skia merge of upstream/chrome/m148 into
skia-sync/release-4.148.x. This PR updates the SkiaSharp submodule
pointer and cgmanifest.json to record the new upstream SHA.

This is a release-line / bug-fix-only sync (CURRENT == TARGET == 148),
so per the update-skia skill no milestone, soname, nuget version, or
SK_C_INCREMENT changes are involved.

Upstream merge summary

Two new upstream chrome/m148 commits merged into the release line:

SHA Subject Area
3a90f6662a [graphite] Use stable collection for static bindings Graphite/Dawn — not built into libSkiaSharp (we use Ganesh)
46f2e16555 [m148] Resolved a Data Race on fStream in SkTypeface_Mac CoreText typeface backend on macOS — fixes a data race on fStream

Submodule advanced:
1a155bae3ac86db6d3efbd996f00e774b6a7b722d5c1f3f66dfc7c41f32240191b9a33bb55758f89.

Breaking change analysis

No breaking changes. Both upstream commits are bug fixes within m148;
neither modifies any C++ public header that the SkiaSharp C API
(externals/skia/include/c/ / src/c/) depends on:

  • SkTypeface_mac_ct.{cpp,h} — internal Apple typeface backend, no public
    API surface change; the diff guards fStream access with the existing
    mutex.
  • DawnGraphicsPipeline.cpp — Graphite backend implementation detail
    (binding-group static initializer), not exposed through any C API.

No removed / renamed / re-signed APIs. No header moves. No enum changes.
ABI is preserved for downstream consumers of SkiaSharp 4.148.x.

Version / binding updates

  • cgmanifest.json:
    • commitHash: 1a155bae3a…d5c1f3f66d… (the new mono/skia merge SHA)
    • upstream_merge_commit: 54851b68b7…46f2e16555… (upstream chrome/m148 tip)
  • scripts/VERSIONS.txtunchanged (still libSkiaSharp milestone 148, increment 0)
  • scripts/azure-templates-variables.ymlunchanged (SKIASHARP_VERSION: 4.148.1)
  • externals/skia/include/c/sk_types.hunchanged (SK_C_INCREMENT 0)
  • externals/skia/include/core/SkMilestone.hunchanged (SK_MILESTONE 148)

C# changes

None.

pwsh .agents/skills/update-skia/scripts/regenerate-bindings.ps1 reports
No changes to bindings (C API signatures unchanged) and
No new functions found. No C# wrappers require updates because the C API
shim itself is unchanged.

Build & test results

Step Result
dotnet tool restore
dotnet cake --target=externals-linux --arch=x64 ✅ — libSkiaSharp.so.148.0.0 (~10.8 MB) + libHarfBuzzSharp.so.0.61420.0 (~2.9 MB) built in 15m34s
pwsh .agents/skills/update-skia/scripts/regenerate-bindings.ps1 ✅ — no binding diff, HarfBuzz bindings reverted as expected
dotnet build binding/SkiaSharp/SkiaSharp.csproj ✅ — 0 errors, 0 warnings
Smoke tests (Category=Smoke) ✅ — Passed 32, Failed 0, Skipped 0
Full test suite (SkiaSharp.Tests.Console) ✅ — Passed 5544, Failed 0, Skipped 172, total 5716 in 2m40s

Skipped tests are the standard set for a Linux x64 CI environment with no
GPU/Metal/Direct3D/Vulkan-on-display and no fonts that are macOS- or
Windows-specific. No tests were marked skip to dodge a failure.

Full test output is uploaded as the test-output.txt artifact for
inspection if needed.

Items needing human attention

None. The sync is clean — no conflicts, no breaking changes, no shim
fixes, no binding diff, all tests pass.

The companion mono/skia PR must be merged first (so its squashed
SHA lands on release/4.148.x), then the submodule pointer in this PR
must be refreshed to that squashed SHA before this PR is merged.

Created by skia-upstream-sync.

Bumps the externals/skia submodule and cgmanifest.json to pick up two
new upstream bug-fix commits on chrome/m148:

- 46f2e16555 [m148] Resolved a Data Race on fStream in SkTypeface_Mac
- 3a90f6662a [graphite] Use stable collection for static bindings

This is a release-line sync targeting release/4.148.x. Because
CURRENT == TARGET (148), no version, soname, or milestone files change;
the only parent-repo change is cgmanifest.json's commitHash and
upstream_merge_commit fields.

Both upstream commits touch only upstream-only sources
(src/ports/SkTypeface_mac_ct.* and a Graphite/Dawn pipeline file).
SkiaSharp's C API is unchanged, so the regenerated bindings show no diff
and no C# wrappers needed updates.

Native build (Linux x64) succeeds. Full test suite passes locally:
Passed: 5544, Failed: 0, Skipped: 172.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@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 -- 4252

PowerShell / Windows:

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

Step 2 — Add the local NuGet source

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

@mattleibow mattleibow closed this Jun 25, 2026
@mattleibow mattleibow deleted the skia-sync/release-4.148.x branch June 25, 2026 22:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant