Skip to content

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

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

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

Conversation

@mattleibow

Copy link
Copy Markdown
Collaborator

Automated Skia milestone bump from m147 to m149.

Companion skia PR: mono/skia#247

mono/SkiaSharp PR: Skia m147 → m149

Version Changes

Component Old New
Milestone 147 149
libSkiaSharp soname 147.0.0 149.0.0

Breaking Change Analysis: kR16_float_SkColorType

Severity: 🔴 HIGH — inserted mid-enum, shifted all subsequent values +1

C# Enum Old Value New Value
R16Float (new) 21
RgF16 21 22
Alpha16 22 23
R16Unorm 23 → 27 24 → 27 (continued shifting)

Note: Existing SKColorType public enum values for all previously-existing members are unchanged (RgF16 = 15, Alpha16 = 16, etc.). Only the internal SKColorTypeNative generated enum values shifted; the mapping layer (EnumMappings.cs) handles the translation transparently. Public ABI is preserved.

Files Changed

C# Binding Changes

File Change
binding/SkiaSharp/SkiaApi.generated.cs Added R16Float = 21, shifted subsequent native enum values
binding/SkiaSharp/Definitions.cs Added SKColorType.R16Float = 28 to public enum; added 2-bytes-per-pixel, shift=1, Opaque alpha type
binding/SkiaSharp/EnumMappings.cs Added R16Float ↔ R16Float to both ToNative and FromNative mappings
binding/SkiaSharp/GRDefinitions.cs Added R16Float => R16F GL sized format mapping

Version Files

File Change
scripts/VERSIONS.txt Milestone 147→149, soname 147.0.0→149.0.0
cgmanifest.json Updated commitHash, chrome_milestone 147→149

Build Results

  • Native build (Linux x64): ✅ Success — libSkiaSharp.so.149.0.0, libHarfBuzzSharp.so.0.61420.0
  • C# build: ✅ 0 errors, 0 warnings
  • Build workaround: The CI runner lacks libc++-dev. Built using NDK clang with patched libc++ headers (ABI namespace patched to std::__1:: to match NDK's Linux libc++.a).

Test Results

  • Total: 5683 tests
  • Passed: 5451 ✅
  • Failed: 61 ⚠️ (pre-existing font/typeface failures — see below)
  • Skipped: 171

Verified Working

  • ✅ All color type tests (SKBitmapTest, SKImageTest, SKCanvasTest, SKPixmapTest)
  • ✅ All enum mapping tests (EnumMappingsTest — 118 tests including R16Float mappings)
  • ✅ GRContextTest.ToGlSizedFormat (fixed: was missing R16Float case)

Pre-existing Failures (61 tests, all font/typeface related)

All 61 failures are in SKFontTest, SKPaintTest, SKTypefaceTest, SKFontManagerTest, SKFontStyleSetTest.
Root cause: SKTypeface.Default.FamilyName returns empty string on this runner.

  • legacyMakeTypeface(null) returns a valid typeface handle, but with empty family name
  • System fontconfig is functional (fc-match finds "DejaVu Sans")
  • These failures are NOT caused by m149 changes; no font/typeface code was modified
  • These tests pass in Docker container environments (see tests/Dockerfile.linux)
  • ⚠️ Human review needed: Verify these tests pass in the full CI container environment

Items Needing Human Attention

  1. Font test failures: 61 pre-existing failures on bare Linux runners without Docker — verify green in CI containers
  2. libc++ build environment: The Linux x64 native build requires a container with libc++-dev installed; this sync used an NDK-based workaround that is functionally equivalent but not the standard approach
  3. New SKColorType.R16Float = 28: New public API — follows the existing pattern for R-channel color types (2 bytes, opaque, GL format R16F)

Created by skia-upstream-sync.

- Merge upstream chrome/m149 into skia-sync/m149 submodule
- Add R16_FLOAT_SK_COLORTYPE to C API (kR16_float_SkColorType added in m148)
- Regenerate SkiaApi.generated.cs: R16Float = 21, shifts R16g16Float–R8Unorm up by 1
- Add SKColorType.R16Float to Definitions.cs, EnumMappings.cs, GRDefinitions.cs
- Bump milestone 147→149 in VERSIONS.txt, cgmanifest.json

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@github-actions

github-actions Bot commented Jun 4, 2026

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

PowerShell / Windows:

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

Step 2 — Add the local NuGet source

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

@mattleibow

Copy link
Copy Markdown
Collaborator Author

Closing this stale auto-generated skia-sync PR. The active milestone work is the m148 update (#4125 / mono/skia#250); future milestones can be regenerated by the auto-sync workflow when needed.

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