Skip to content

[skia-sync] Merge upstream chrome/m148#268

Merged
mattleibow merged 3 commits into
release/4.148.xfrom
skia-sync/release-4.148.x
Jun 29, 2026
Merged

[skia-sync] Merge upstream chrome/m148#268
mattleibow merged 3 commits into
release/4.148.xfrom
skia-sync/release-4.148.x

Conversation

@mattleibow

Copy link
Copy Markdown
Collaborator

Automated upstream merge of chrome/m148.

Summary

Release-line bug-fix sync onto release/4.148.x. Pulls 2 new upstream commits from google/skia chrome/m148 into mono/skia release/4.148.x via the skia-sync/release-4.148.x branch.

This is not a milestone bump — CURRENT == TARGET == 148. No SkiaSharp version/soname/nuget changes; the parent-repo companion PR only bumps the submodule pointer and the two cgmanifest.json SHAs.

Upstream merge

Field Value
Upstream ref chrome/m148 (google/skia)
Old upstream HEAD 54851b68b7a1d49bc4b4361f12786a7d7ad91fff
New upstream HEAD 46f2e16555cac1211f4087cf24728fd741ac6495
Merge-base 54851b68b7a1d49bc4b4361f12786a7d7ad91fff
New upstream commits 2
Merge commit on this branch 6d45d9aed12bacb599261ccebcf4a9764b0467ea

Upstream commits pulled in

SHA Subject Files
46f2e16555 [m148] Resolved a Data Race on fStream in SkTypeface_Mac src/ports/SkTypeface_mac_ct.{cpp,h}
3a90f6662a [graphite] Use stable collection for static bindings src/gpu/graphite/dawn/DawnGraphicsPipeline.cpp

Both are cherry-picked bug-fixes (already on chrome/m148 upstream). The first is a macOS-only thread-safety fix in CoreText typeface caching (gTFCache); the second is a Graphite/Dawn-only buffer-stability fix. SkiaSharp ships Ganesh (not Graphite), so the Graphite change is benign noise. The macOS typeface fix is the genuinely valuable bug-fix for SkiaSharp users on macOS — it eliminates a data race where onOpenStream and onOpenExistingStream could race on fStream from different threads.

Conflicts resolved

None. git merge --no-commit completed with "Automatic merge went well"; git diff --check reports zero conflict markers. The 2 upstream commits touch 3 files only, all outside our fork patches.

Fork-patch audit (mandatory snapshot before merging):

$ MB=$(git merge-base origin/release/4.148.x upstream/chrome/m148)
$ git log --oneline "$MB..origin/release/4.148.x" | wc -l
963   # snapshot saved in workflow artifacts as fork-patches-before.txt

No fork patch touches src/ports/SkTypeface_mac_ct.{cpp,h} or src/gpu/graphite/dawn/DawnGraphicsPipeline.cpp, so nothing needed to be re-applied or classified as upstreamed.

C API impact

None. Neither upstream commit touches:

  • src/c/** or include/c/** (SkiaSharp C shim)
  • src/xamarin/** or include/xamarin/** (SkiaSharp Xamarin shim)
  • BUILD.gn, DEPS, modules/skcms/version.sha1
  • Any public header pulled in by our C API

The binding generator was re-run in the parent repo and reports No changes to bindings (C API signatures unchanged) and No new functions found. SK_C_INCREMENT stays at 0.

Source-file verification

$ git diff $(git merge-base origin/release/4.148.x upstream/chrome/m148)..upstream/chrome/m148 \
    --diff-filter=AD --name-only -- src/ include/
(empty — no added or deleted source files)

No BUILD.gn adjustments required.

Items needing human attention

  • None. Pure bug-fix sync, clean merge, no C API impact, no binding deltas, all tests pass in the companion PR.
  • Linux x64 was the build platform used in CI here. The macOS data-race fix (SkTypeface_mac_ct.cpp) is not exercised by the Linux x64 native build or test suite; the macOS native build will pick it up automatically on the release/4.148.x macOS pipeline once both PRs land.

Companion PR

Parent repo: mono/SkiaSharp PR on branch skia-sync/release-4.148.x targeting release/4.148.x. The parent PR bumps the submodule pointer to the merge commit of this PR and updates the two cgmanifest.json SHAs (mono/skia commitHash and Skia core upstream_merge_commit).

Created by skia-upstream-sync.

lhkbob and others added 3 commits June 15, 2026 10:55
Since the layouts are passed by pointer in the `nextInChain` field,
their addresses need to stay valid until the BindGroupLayout is created.
With vector, if it ever grew, that would not remain the case. Since
there are usually only 0 to 1 immutable samplers, this likely never
happened (and also why it uses a built-in storage for 1).

Also removes the include for vector and uses TArray (we had been mixing
both throughout the file).

Bug: 520514458
Fixed: 523531990
Change-Id: I44c9566c68ab0e6c6d659ea77a423ddc50d53c76
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1264157
Reviewed-by: Thomas Smith <thomsmit@google.com>
Auto-Submit: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
(cherry picked from commit 6a4be3a)
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1266356
There was a data race in SkTypeface_Mac where `onOpenStream`
and `onOpenExistingStream` would race to read/write `fStream`. While `onOpenStream` would begin initializing `fStream` on one thread, a separate thread could be calling `onOpenExistingStream` to try to read `fStream` before it was done initializing.

The issue was resolved by applying a mutex on `fStream`.

The cl introducing this bug (https://skia-review.git.corp.google.com/c/skia/+/204720) was focused on caching the typefaces received with a global process wide `gTFCache` to save on performance and memory. The issue arose in that since the SkTypeface_Mac could be accessed across threads, it became thread unsafe.

A test was added to this CL but removed as it was too large and took too long. It helps us keep it in the patch history for reference.

Bug: b/520535595
Bug: 520535595
Fixed: 524508854
Change-Id: Id28aeed3d67a5a5246d22681f2c7ab0e6c133558
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1264296
Commit-Queue: Alexis Cruz-Ayala <alexisdavidc@google.com>
Reviewed-by: Kaylee Lubick <kjlubick@google.com>
(cherry picked from commit ba3ee9b)
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1274476
…lease-4.148.x

Pulls 2 upstream bug fixes onto release/4.148.x:
- 46f2e16 [m148] Resolved a Data Race on fStream in SkTypeface_Mac
- 3a90f66 [graphite] Use stable collection for static bindings

No conflicts. No C API impact (touched files: src/ports/SkTypeface_mac_ct.{cpp,h},
src/gpu/graphite/dawn/DawnGraphicsPipeline.cpp).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@mattleibow mattleibow marked this pull request as ready for review June 29, 2026 15:00
@mattleibow mattleibow merged commit 9bf10f9 into release/4.148.x Jun 29, 2026
1 check passed
mattleibow added a commit to mono/SkiaSharp that referenced this pull request Jun 29, 2026
Point externals/skia at 9bf10f9f, the merge of the skia-sync/release-4.148.x
upstream chrome/m148 bug fixes into the release/4.148.x branch (mono/skia#268),
instead of the interim skia-sync branch commit (6d45d9aed). cgmanifest.json is
updated to match.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
mattleibow added a commit to mono/SkiaSharp that referenced this pull request Jun 29, 2026
…#4262)

[skia-sync] Merge upstream chrome/m148 bug fixes into release/4.148.x (#4262)

Changes: mono/skia@1a155ba...9bf10f9
Companion: mono/skia#268

Automated release-line bug-fix sync for the m148 release branch. This is not a
milestone bump (current == target == 148): no version files change and the only
edits are the externals/skia submodule pointer and the matching cgmanifest.json
SHAs.

Re-points externals/skia from 1a155bae3a to 9bf10f9f96 — the tip of mono/skia
release/4.148.x after the companion skia-sync merge (mono/skia#268) landed,
rather than the interim skia-sync branch commit. cgmanifest.json mono/skia
commitHash and the Skia-core upstream_merge_commit are updated to match.

Upstream commits pulled in via the bump:

  * 46f2e16555 [m148] Resolve a data race on fStream in SkTypeface_Mac — the
    user-visible fix; eliminates a gTFCache/fStream race in SkTypeface_mac_ct.
  * 3a90f6662a [graphite] Use stable collection for static bindings — benign for
    SkiaSharp, which ships Ganesh rather than Graphite/Dawn.

No C/C++ public API, C API shim, or generated bindings changed: the binding
generator re-ran with no diff, and ABI/soname stay at libSkiaSharp.so.148.0.0.
No managed C# or test changes were required. Linux x64 native build, full
binding build, and the test suite (5544 passed, 172 HW-skipped) pass; the
remaining platforms rebuild on the release-line CI once this lands.

Co-authored-by: Matthew Leibowitz <mattleibow@live.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants