Skip to content

[skia-sync] Update skia to milestone 149#4141

Closed
mattleibow wants to merge 1 commit into
mainfrom
skia-sync/m149
Closed

[skia-sync] Update skia to milestone 149#4141
mattleibow wants to merge 1 commit into
mainfrom
skia-sync/m149

Conversation

@mattleibow

Copy link
Copy Markdown
Contributor

Automated Skia milestone bump from m148 to m149.

Companion skia PR: mono/skia#252

mono/SkiaSharp PR Summary: Update Skia to milestone m149

Overview

Updates SkiaSharp to Skia milestone m149. The submodule externals/skia now points to
the skia-sync/m149 branch in mono/skia.

Changes

Version Files Updated

File Change
scripts/VERSIONS.txt milestone 148 → 149, soname 148.0.0 → 149.0.0, all NuGet version lines updated
cgmanifest.json commitHash, chrome_milestone (149), upstream_merge_commit updated

Submodule Update

  • externals/skia updated from 1a155bae3a (m148) to 2d0db2d5e8 (m149 merge)
  • SK_C_INCREMENT = 0 (no new C API additions this milestone)

Bindings

  • binding/SkiaSharp/SkiaApi.generated.cs: No changes — C API signatures unchanged
  • HarfBuzz bindings: reverted (HarfBuzz updates are always separate)

Breaking Change Analysis (m148→m149)

All changes are either additive (new APIs) or Graphite-only (which SkiaSharp uses Ganesh, not Graphite).

Change User Impact
SkCodec::Register removed None — not exposed in C# API
SkShader::isOpaque() pure virtual None — internal to Skia
SkFontMgr new match()/fallback() None — not yet wrapped; no breaking change
New SkFontArguments tag constants None — additive
Graphite GPU API changes None — SkiaSharp uses Ganesh backend

No breaking changes to public SkiaSharp API. No [Obsolete] attributes needed.

Build Results

  • Platform: Linux x64 (native build from source)
  • Native build: ✅ Clean (libSkiaSharp.so, libHarfBuzzSharp.so)
  • C# build: ✅ 0 errors, 0 warnings
  • Note: Build used -stdlib=libstdc++ override due to missing libc++ headers on this runner;
    CI Docker containers use the proper libc++ setup via .NET cross-compilation images

Test Results

Suite Passed Skipped Failed
SkiaSharp (smoke) 32 0 0
SkiaSharp (full) 5300 172 0
HarfBuzz 207 (pre-existing, see note)

Note on HarfBuzz failures: All 207 HarfBuzz test failures are pre-existing on main
(EntryPointNotFoundException: hb_blob_create_from_file). Confirmed by running the same
test against the m148 baseline — same failure. Not caused by this PR.

Skipped tests (172) are expected: GPU tests skipped without hardware, platform-specific
tests skipped on Linux, etc.

Items Needing Human Attention

  1. HarfBuzz test failures (pre-existing): hb_blob_create_from_file entry point not found.
    This should be investigated separately as a potential HarfBuzz binding issue.

  2. New SkFontMgr APIs: match(Request) and fallback(Request) are new in m149.
    Consider exposing via /api-add-review in a future PR for better font matching in SkiaSharp.

  3. libc++ on CI runners: The automated build outside Docker requires libc++ headers.
    The actual CI pipeline uses Docker containers with proper libc++ setup — this is only
    an issue for local/agent builds outside the Docker environment.

Created by skia-upstream-sync.

- Update Skia submodule to chrome/m149
- Update milestone from 148 to 149 in VERSIONS.txt
- Reset SK_C_INCREMENT to 0 (no new C API additions)
- Update cgmanifest.json with new commit hash and chrome_milestone

Breaking changes (m148→m149): None affecting C API shim.
- SkCodec::Register removed (not used in C API)
- SkShader::isOpaque() made pure virtual (not subclassed in C API)
- SkFontMgr new match()/fallback() APIs (additive, not wrapped yet)
- GpuStatsFlags bitfield ops (Graphite only, skip)

Build: Linux x64 native build clean
Tests: 5300 passed, 172 skipped (GPU/platform), 0 failed

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

PowerShell / Windows:

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

Step 2 — Add the local NuGet source

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

@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 closed this Jun 12, 2026
@mattleibow mattleibow deleted the skia-sync/m149 branch June 12, 2026 23:38
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