Table of Contents

Version 2.80.3

Metal, WinUI, and .NET 5 · Released July 9, 2021 · NuGet · GitHub Release

API changes · SkiaSharp API diff · HarfBuzzSharp API diff

Highlights

SkiaSharp 2.80.3 adds Metal for macOS and iOS, WinUI support (including Desktop), .NET 5 targeting, and SKRuntimeEffect for GPU shaders. Metal joins Vulkan as a first-class GPU backend, WinUI gets its own views (Desktop included), and the whole stack moves to .NET 5. New APIs include SKRuntimeEffect for authoring GPU shaders, SKPicture serialization, Exif SubIFD reading, and GRContextOptions. Musl systems are now properly detected so the right native library is loaded on Alpine and similar distros.

Breaking Changes

  • SKXamlCanvas base type on Uno changed from FrameworkElement to Canvas — As part of adding SKXamlCanvas support to the Uno backend, the control's base type moved from Windows.UI.Xaml.FrameworkElement to Windows.UI.Xaml.Controls.Canvas. Code that assumed a FrameworkElement base (custom XAML that reparents or casts the control) needs to be updated to work with a Canvas. (#1704)

API Surface

  • Metal for macOS and iOS — Metal is now a supported GPU backend, with matching managed APIs and consistency work across the metal, GL, and Vulkan surfaces. (#1394, #1598, #1615)
  • WinUI support, including Desktop — Adds WinUI views for Uno Platform and a WinUI-for-Desktop backend, updated to WinUI 0.8.0. (#1704, #1696, #1741)
  • SKRuntimeEffect for GPU shaders — Introduces the SKRuntimeEffect API for authoring and running GPU runtime effects (SkSL shaders) from managed code. (#1604)
  • SKPicture serialization and Exif SubIFD — Adds bindings to serialize and deserialize SKPicture, and support for reading the Exif SubIFD block from encoded images. (#1514, #1518)
  • GRContextOptions and GPU diagnostics — Exposes GRContextOptions for tuning GPU context creation, plus IsAbandoned on GR contexts for lifecycle checks. (#1529, #1659)
  • ANGLE GRGlInterface — Lets callers create a GRGlInterface backed by ANGLE, useful for D3D-backed GL on Windows. — ❤️ @Mikolaytis (#1519)
  • .NET Interactive support — Adds a .NET Interactive integration so SkiaSharp images render inline in notebooks. (#1710)

Bug Fixes

  • GL surface creation, resize, and read-back — Avoids issues when GL surface creation fails, swaps buffers correctly after a resize, and makes sure image pixel reads return the right bytes. — ❤️ @gmurray81 (#1642, #1668, #1636)
  • SKMatrix.IsInvertible no longer crashes — Guards SKMatrix.IsInvertible against inputs that used to crash the runtime. (#1527)
  • WPF SKElement respects PresentationSource — SKElement.OnRender is now a no-op when the element has no PresentationSource, avoiding exceptions during teardown. — ❤️ @HarlanHugh (#1606)
  • iOS font loading and display links — Loads bundled fonts correctly on iOS and makes the display link paths more defensive against teardown races. (#1539, #1620)
  • Stream copies no longer allocate — Copying between streams no longer allocates intermediate arrays, cutting GC pressure on image decode paths. (#1510)

Platform

  • .NET 5 targeting — SkiaSharp now targets .NET 5, alongside its existing target frameworks. (#1697)
  • Musl (Alpine) detection — The native loader now properly detects musl-based systems and picks the correct libSkiaSharp variant. (#1657)
  • WASM: all Emscripten versions bundled — Ships every supported Emscripten build of libSkiaSharp so WASM consumers pick up the right ABI. (#1590)
  • Uno Platform 3.0 — Updates the Uno Platform integration to v3.0. (#1489)
  • Android and iOS surface refactors — Refactors the Android surface factory and shores up the metal paths on iOS. (#1617, #1615)
  • Split native packages — Native binaries are split into smaller packages so consumers download only what they need. (#1660)

HarfBuzzSharp 2.6.1.8

HarfBuzzSharp 2.6.1.8 picks up the musl detection, the emscripten-versioned WASM builds, VS 2013 support, and generated HarfBuzz interop that landed in this release.

Community Contributors ❤️

Thank you to everyone who contributed to this release!

Contributor Contributions
@gmurray81 Made GL surface creation more resilient when the underlying context fails (#1642)
@HarlanHugh Fixed SKElement.OnRender to no-op when there is no WPF PresentationSource (#1606)
@jeromelaban Added Uno Platform references to the docs (#1602)
@Mikolaytis Added support for creating a GRGlInterface backed by ANGLE (#1519)

Preview 93 (June 11, 2021)

Preview 93 landed WinUI 0.8.0, .NET Interactive support, and further Uno updates.

Full changelog

Preview 90 (May 30, 2021)

Preview 90 added musl detection, WinUI-for-Desktop, and moved the stack to .NET 5.

Full changelog

Preview 40 (February 5, 2021)

Preview 40 introduced SKRuntimeEffect, GRContextOptions, IsAbandoned, and the split native packages.

Full changelog

Preview 24 (January 27, 2021)

Preview 24 merged the Metal APIs into the main branch and improved consistency across GPU backends.

Full changelog

Preview 18 (October 28, 2020)

Preview 18 added Exif SubIFD reading, SKPicture serialization, ANGLE GRGlInterface, iOS font loading, and Uno Platform 3.0.

Full changelog