[skia-sync] Merge upstream chrome/m148#268
Merged
Merged
Conversation
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
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Automated upstream merge of
chrome/m148.Summary
Release-line bug-fix sync onto
release/4.148.x. Pulls 2 new upstream commits fromgoogle/skiachrome/m148into mono/skiarelease/4.148.xvia theskia-sync/release-4.148.xbranch.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 twocgmanifest.jsonSHAs.Upstream merge
chrome/m148(google/skia)54851b68b7a1d49bc4b4361f12786a7d7ad91fff46f2e16555cac1211f4087cf24728fd741ac649554851b68b7a1d49bc4b4361f12786a7d7ad91fff6d45d9aed12bacb599261ccebcf4a9764b0467eaUpstream commits pulled in
46f2e16555[m148] Resolved a Data Race on fStream in SkTypeface_Macsrc/ports/SkTypeface_mac_ct.{cpp,h}3a90f6662a[graphite] Use stable collection for static bindingssrc/gpu/graphite/dawn/DawnGraphicsPipeline.cppBoth are cherry-picked bug-fixes (already on
chrome/m148upstream). 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 whereonOpenStreamandonOpenExistingStreamcould race onfStreamfrom different threads.Conflicts resolved
None.
git merge --no-commitcompleted with"Automatic merge went well";git diff --checkreports zero conflict markers. The 2 upstream commits touch 3 files only, all outside our fork patches.Fork-patch audit (mandatory snapshot before merging):
No fork patch touches
src/ports/SkTypeface_mac_ct.{cpp,h}orsrc/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/**orinclude/c/**(SkiaSharp C shim)src/xamarin/**orinclude/xamarin/**(SkiaSharp Xamarin shim)BUILD.gn,DEPS,modules/skcms/version.sha1The binding generator was re-run in the parent repo and reports
No changes to bindings (C API signatures unchanged)andNo new functions found.SK_C_INCREMENTstays at0.Source-file verification
No
BUILD.gnadjustments required.Items needing human attention
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/SkiaSharpPR on branchskia-sync/release-4.148.xtargetingrelease/4.148.x. The parent PR bumps the submodule pointer to the merge commit of this PR and updates the twocgmanifest.jsonSHAs (mono/skiacommitHashand Skia coreupstream_merge_commit).Created by skia-upstream-sync.