Skip to content

Instantly share code, notes, and snippets.

@mattleibow
Last active April 29, 2026 17:11
Show Gist options
  • Select an option

  • Save mattleibow/4bfc447092d37e5b99c15bb9686af7ec to your computer and use it in GitHub Desktop.

Select an option

Save mattleibow/4bfc447092d37e5b99c15bb9686af7ec to your computer and use it in GitHub Desktop.
SkiaSharp API Gap Analysis — 50 actionable items from full Skia m88-m148 scan

Skia Analyst Report

50 actionable items · 16 already bound · 29 no action needed
m147 (full scan) · Generated 2026-04-29

Legend

Status (squares)

Symbol Meaning Count
🟥 Missing - no C API or C# wrapper 42
🟨 Partial - C API exists, needs C# wrapper 4
🟧 Action needed - wraps deprecated/removed API 4
🟩 Already bound 16
No action needed 29

Priority (circles)

Symbol Meaning
🔴 Critical - will break on next Skia bump
🟠 High - major capability or highly requested
🟡 Medium - useful addition
Low - minor utility
Impact Count What it means
🚀 Transformative 2 Unlocks entirely new app categories
Significant 20 Major visible improvement users notice immediately
📦 Moderate 22 Useful gap fill, improves safety or completeness
🔹 Minor 6 Small utility or completeness item

🚀 Transformative

🟠  m98 RuntimeShader image filters

SkImageFilters::RuntimeShader exists upstream with single-child, multi-child, and sample-radius variants, but no matching sk_imagefilter_* runtime entry points or SKImageFilter runtime factory exist in the audited trees.

C++: SkImageFilters::SkImageFilters::RuntimeShader(...)
User value: Unlocks custom programmable image-filter graphs driven by SkSL instead of only shader or paint stages.
Milestones: m98, m98, m99, m116
Effort: large
Skill: api-add-review
Notes: Verified upstream RuntimeShader overloads in SkImageFilters.h lines ~402-462. No runtime shader functions were found in sk_imagefilter.h/.cpp, and no runtime factory was found in SKImageFilter.cs.

🟠 m106 SkMesh API for custom vertex/fragment programs

New API to draw vertex meshes with custom attributes and varyings using SkSL. Mesh data created on a GrDirectContext to avoid re-uploads.

C++: SkMesh
User value: Custom 2D mesh rendering with SkSL vertex/fragment programs — unlocks 3D-ish effects, custom warping, GPU-accelerated visualizations.
Milestones: m106, m106, m109, m110, m119, m120
Effort: large
Skill: api-add-review

⭐ Significant

🟠 m106 AVIF decoding via libavif

Skia gained native AVIF decoding via libavif.

User value: Decode AVIF images natively (modern, smaller-than-JPEG/WebP, HDR-capable).
Milestones: m106
Effort: small
Skill: api-add-review
Notes: SKEncodedImageFormat.Avif enum value exists; verify libavif is enabled in the SkiaSharp native build and that SKCodec.Create handles AVIF.

🟠 m145 Codec decode-memory budget

SkCodec::Options gained fMaxDecodeMemory and kOutOfMemory in m145, but the audited C API exposes only zero-init/subset/frame/prior options and the C# SKCodecOptions surface mirrors that older shape.

C++: SkCodec::SkCodec::Options::fMaxDecodeMemory / SkCodec::Result::kOutOfMemory
User value: Lets apps cap worst-case decode memory and fail predictably on hostile or oversized images.
Milestones: m145
Effort: medium
Skill: api-add-review
Notes: Verified in upstream SkCodec.h; local sk_codec_options_t in sk_types.h only has fZeroInitialized, fSubset, fFrameIndex, and fPriorFrame, and SKCodec.cs builds the same reduced option set.

🟠 m114 Gradient interpolation color spaces and hue methods

Gradient shaders accept SkGradientShader::Interpolation specifying the interpolation color space (sRGB linear, OKLab, OKLCh, HSL, HWB, …) and CSS-style hue method (shorter/longer/increasing/decreasing).

User value: CSS Color Level 4 gradients — modern, perceptually-uniform color interpolation.
Milestones: m114
Effort: medium
Skill: api-add-review

🟠 m142 HDR metadata in PNG decoder/encoder

SkPngDecoder, SkPngRustDecoder and SkPngEncoder gained HDR metadata support, plus skhdr::Metadata, ContentLightLevelInfo and MasteringDisplayColorVolume structures.

User value: Round-trip HDR PNGs with content-light-level and mastering-display metadata.
Milestones: m142
Effort: large
Skill: api-add-review

🟠 m131 SaveLayerRec backdrop tile mode

SaveLayerRec can now specify a SkTileMode to apply to backdrop content when the new layer's effects would sample outside the previous layer's image. Improves quality of backdrop blurs near layer edges.

C++: SkCanvas::SaveLayerRec
User value: Avoid edge artifacts in backdrop blurs (frosted glass, depth-of-field).
Milestones: m131
Effort: small
Skill: api-add-review
Notes: C API sk_canvas_savelayerrec_t struct does NOT include backdropTileMode; C# SKCanvasSaveLayerRec also missing it. Quick win to extend struct + binding.

🟠 m131 SaveLayerRec missing colorSpace and backdropTileMode

C API sk_canvas_savelayerrec_t struct lacks the backdropTileMode (m131) and color-space (m120-era) fields. Limits the quality of backdrop blur effects.

C++: SkCanvas::SaveLayerRec
Milestones: m131
Effort: small
Skill: api-add-review
Notes: Verified header sk_types.h: sk_canvas_savelayerrec_t has only fBounds/fPaint/fBackdrop/fFlags. Need to add fBackdropTileMode and (if appropriate) fColorSpace.

🟠 m141 Shader working-color-space override

SkShader::makeWithWorkingColorSpace gained the output-color-space override noted in m141, but no matching C API entry point or C# shader wrapper exists in the audited trees.

C++: SkShader::SkShader::makeWithWorkingColorSpace(sk_sp<SkColorSpace> inputCS, sk_sp<SkColorSpace> outputCS=nullptr)
User value: Allows custom shaders to participate correctly in color-space conversion instead of assuming destination-space output.
Milestones: m141
Effort: medium
Skill: api-add-review
Notes: Verified upstream makeWithWorkingColorSpace() in SkShader.h lines ~70-90. No working-color-space symbol exists in sk_shader.h/.cpp or SKShader.cs.

🟠 m145 SkCodec::Options::fMaxDecodeMemory

SkCodec::Options now contains fMaxDecodeMemory. If decoding would exceed it, the codec returns nullptr and a new kOutOfMemory result.

Skia API: SkCodec::Options::fMaxDecodeMemory
C++: SkCodec::Options
User value: Defend apps against decompression bombs by capping memory used per decode.
Milestones: m145
Effort: small
Skill: api-add-review

🟠 m128 SkImage::makeScaled

SkImage gained makeScaled in m128, but the audited C API has no sk_image_make_scaled function and SKImage.cs exposes only ScalePixels helpers rather than a new SKImage-returning API.

C++: SkImage::SkImage::makeScaled
User value: One-call high-quality image rescaling without manual surface plumbing.
Milestones: m128
Effort: small
Skill: api-add-review

🟠 m119 SkImageFilters::Crop

New Crop(SkRect, SkTileMode, sk_sp) image filter that crops the wrapped filter's output and applies a tile mode when sampling outside the crop.

User value: Compose tiled/clamped/repeating image-filter effects with explicit crop bounds.
Milestones: m119
Effort: small
Skill: api-add-review

🟠  m98 SkImageFilters::RuntimeShader

Image filter variant of runtime effects, exposing SkSL effects in a filter graph.

User value: Use SkSL runtime effects as image filters in a graph.
Milestones: m98
Effort: medium
Skill: api-add-review

🟠 m106 Wide-gamut color-filter blend factory

SkColorFilters::Blend(const SkColor4f&, sk_sp, SkBlendMode) is public upstream, but the audited C API has only sk_colorfilter_new_mode(sk_color_t, ...) and SKColorFilter exposes only CreateBlendMode(SKColor, ...).

C++: SkColorFilters::SkColorFilters::Blend(const SkColor4f&, sk_sp<SkColorSpace>, SkBlendMode)
User value: Enables color-filter math in explicit color spaces instead of forcing 8-bit SKColor inputs.
Milestones: m106
Effort: medium
Skill: api-add-review
Notes: Verified upstream Blend() overloads in SkColorFilter.h lines ~90-93. Local sk_colorfilter.h/.cpp and SKColorFilter.cs only expose the 8-bit SKColor form.

🟠 m129 Wide-gamut drop-shadow overloads

Since m129, SkImageFilters::DropShadow and DropShadowOnly accept SkColor4f plus SkColorSpace, but the audited C API and SKImageFilter wrappers still expose only SKColor-based overloads.

C++: SkImageFilters::DropShadow(..., SkColor4f, sk_sp<SkColorSpace>, ...) / DropShadowOnly(...)
User value: Needed for HDR and wide-gamut shadow colors without truncating to 8-bit sRGB SKColor.
Milestones: m129
Effort: medium
Skill: api-add-review
Notes: Verified color-aware overloads in upstream SkImageFilters.h lines ~201-243. Local sk_imagefilter.h/.cpp and SKImageFilter.cs only expose SKColor overloads.

🟠 m117 YUVA420 async readback with alpha

Upstream m117 added asyncRescaleAndReadPixelsYUVA420 on both SkImage and SkSurface, but the audited C API and C# bindings expose no YUV420/YUVA420 async readback entry points.

C++: SkImage / SkSurface::asyncRescaleAndReadPixelsYUVA420(...)
User value: Important for video, camera, and encoder pipelines that need GPU readback including alpha without an RGBA round-trip.
Milestones: m117
Effort: large
Skill: api-add-review
Notes: Verified upstream methods in SkImage.h and SkSurface.h. Grep found no async rescale/read YUV420 or YUVA420 symbols in the audited C API or C# wrapper files.

🟡 m107 Animated WebP encoding

SkWebpEncoder gained support for encoding animated WebP images.

C++: SkWebpEncoder
User value: Author animated WebP files (loops, intros, sticker animations).
Milestones: m107
Effort: medium
Skill: api-add-review

🟡 m103 Anisotropic filtering in SkSamplingOptions

SkSamplingOptions gained anisotropic filtering support (GPU only).

User value: Sharper textures at oblique angles in 3D-style draws.
Milestones: m103
Effort: small

🟡  m98 JPEG XL (limited) decoding

Limited JPEG XL support added in Skia.

User value: Decode JPEG XL images (better compression than JPEG, modern HDR-friendly format).
Milestones: m98
Effort: medium
Notes: SKEncodedImageFormat.Jpegxl enum value exists; SkiaSharp native build does not currently link a JPEG XL decoder library.

🟡 m117 SkTiledImageUtils for large bitmaps

New SkTiledImageUtils namespace provides DrawImage / DrawImageRect that tile bitmap-backed SkImages too large for a single GPU upload.

User value: Render very large bitmaps without manual tiling logic.
Milestones: m117
Effort: medium
Skill: api-add-review

🟡 m123 Vulkan VK_EXT_device_fault callback

Vulkan backend invokes a client-provided callback on VK_ERROR_DEVICE_LOST, with extended debug info if VK_EXT_device_fault is enabled.

C++: GrVkBackendContext
User value: Diagnose Vulkan device-lost crashes in production.
Milestones: m123
Effort: medium
Skill: api-add-review

🟡 m145 skhdr::Agtm — SMPTE ST 2094-50 Adaptive Global Tone Mapping

New AGTM HDR metadata parsing/serialization with a tone-mapping SkColorFilter. Lets clients consume embedded HDR tone-mapping metadata.

C++: skhdr::Agtm
User value: Display HDR images with proper SDR fallback using upstream-standard adaptive tone mapping.
Milestones: m145
Effort: large
Skill: api-add-review

📦 Moderate

🟠 m130 SkColorFilter::filterColor removed

filterColor() removed from SkColorFilter; use filterColor4f() instead.

Milestones: m130
Skill: issue-fix
Notes: If SKColorFilter currently calls sk_colorfilter_filter_color, the C shim must be migrated to filterColor4f.

🟠 m122 SkFontMgr::RefDefault() removed

The static default-font-manager accessor was deleted. Clients must own and pass an SkFontMgr explicitly.

User value: If we still call into the removed API, SkiaSharp will break on the next Skia bump.
Milestones: m122
Skill: issue-fix
Notes: SkiaSharp's SKFontManager.Default uses a platform-specific factory under the hood; verify no path remains that calls RefDefault on the C++ side.

🟡 m125 Bitmap color-space reassignment

SkBitmap::setColorSpace landed in m125, but the audited C API exposes no bitmap colorspace mutator and SKBitmap only reports ColorSpace via Info.

C++: SkBitmap::SkBitmap::setColorSpace(sk_sp<SkColorSpace>)
User value: Allows reinterpretation of existing bitmap pixel data in a new color space without rebuilding the bitmap.
Milestones: m125
Effort: small
Skill: api-add-review
Notes: Verified upstream setColorSpace() in SkBitmap.h. No setColorSpace symbol appears in sk_bitmap.h/.cpp, and SKBitmap.cs only exposes a read-only ColorSpace derived from Info.

🟡  m99 Multiple-child RuntimeShader image filter

A new variant of SkImageFilters::RuntimeShader supports multiple child nodes.

Milestones: m99
Effort: medium

🟡 m132 SkCodec::hasHighBitDepthEncodedData()

New SkCodec method reports whether the encoded image data is high bit-depth (e.g., 10/12-bit AVIF, 16-bit PNG).

User value: Decide whether to allocate F16/16-bit destination surfaces to preserve HDR/high bit-depth fidelity.
Milestones: m132
Effort: trivial
Skill: api-add-review

🟡 m135 SkCodec::isAnimated()

New isAnimated() method disambiguates getRepetitionCount()==0 (was it animated with infinite repetition or just a still image?).

User value: Reliably detect animated images (GIF/WebP/APNG) without relying on repetition count semantics.
Milestones: m135
Effort: trivial
Skill: api-add-review

🟡 m142 SkPngRustDecoder/Encoder are official public API

Rust-backed PNG decoder/encoder graduated from experimental to officially supported public API.

C++: SkPngRustDecoder
User value: Memory-safe PNG decoding option.
Milestones: m142
Effort: large

🟡 m112 SkRuntimeColorFilterBuilder

New helper class for building color filters from runtime effects, analogous to SkRuntimeShaderBuilder.

C++: SkRuntimeColorFilterBuilder
User value: Build runtime color filters as easily as runtime shaders.
Milestones: m112
Effort: small
Skill: api-add-review

🟡 m112 SkShaders::CoordClamp

Wraps another shader and clamps the coordinates passed to it to a rectangle.

User value: Constrain shader sampling to a sub-rectangle without using image filters.
Milestones: m112
Effort: trivial
Skill: api-add-review

🟡 m119 Standalone Crop image filter

SkImageFilters::Crop was introduced in m119, but the audited C API has no crop factory and SKImageFilter.cs has no CreateCrop-style wrapper.

C++: SkImageFilters::SkImageFilters::Crop(const SkRect&, SkTileMode, sk_sp<SkImageFilter>)
User value: Gives filter graphs an explicit crop node with tile-mode control instead of overloading cropRect on unrelated factories.
Milestones: m119
Effort: small
Skill: api-add-review
Notes: Verified upstream Crop() in SkImageFilters.h lines ~149-168. No crop symbol exists in sk_imagefilter.h/.cpp, and no Crop factory exists in SKImageFilter.cs.

🟡 m148 kR16_float_SkColorType color type

New single-channel red color type holding f16 (half-float) values, analogous to kAlpha16_float. Enables HDR/scientific imagery in red channel.

Skia API: kR16_float_SkColorType
C++: SkColorType
User value: Enables a new single-channel float color type useful for HDR data, normal/heightmaps stored in red channel, and scientific imagery.
Milestones: m148
Effort: small
Skill: api-add-review

m108 Custom ICC profiles in encoders

Support for specifying a custom ICC profile in SkJpegEncoder, SkPngEncoder and SkWebpEncoder.

Milestones: m108
Notes: Added in m108; later REMOVED in m142 (fICCProfile fields dropped). Net binding gap is correctly absent.

m112 JPEG XMP metadata + YUVA encoding

SkJpegEncoder::Options gains XMP metadata; SkJpegEncoder can encode SkYUVAPixmaps directly.

Milestones: m112
Effort: small

m104 SkBitmap::getColor4f / SkPixmap::getColor4f

New functions returning float color values directly.

Milestones: m104
Effort: trivial

m124 SkCodecs::DeferredImage

New factory similar to SkImages::DeferredFromEncodedData but accepts an SkCodec directly, removing the dependency on compiled-in codecs.

Milestones: m124
Effort: small

m106 SkColorFilters::Blend with SkColor4f + colorspace

New overload accepting SkColor4f and SkColorSpace.

Milestones: m106
Effort: small

m116 SkColorTable for SkColorFilters::Table

New public SkColorTable type owns the lookup tables passed into SkColorFilters::Table, allowing memory sharing.

C++: SkColorTable
Milestones: m116
Effort: small

m143 SkPngRustEncoder public APIs

Public APIs added on SkPngRustEncoder for encoding SkImage/SkPixmap into SkData.

C++: SkPngRustEncoder
Milestones: m143
Effort: medium
Notes: SkiaSharp uses libpng-based encoder; switching is a build-flag/dependency decision.

m141 SkShader::makeWithWorkingColorSpace optional output color space

makeWithWorkingColorSpace now accepts an optional output color space, letting shaders inform Skia of color-space changes they apply.

Milestones: m141
Effort: small

m100 SkSurface::resolveMSAA

Force Skia to resolve MSAA draws (useful when wrapping client texture as resolve target).

Milestones: m100
Effort: trivial

m139 VulkanPreferredFeatures helper

New API to auto-query and add Vulkan extensions/features that Skia benefits from. Auto-opts in to future Skia improvements.

C++: VulkanPreferredFeatures
Milestones: m139
Effort: medium

m117 asyncRescaleAndReadPixelsYUVA420

Added on SkImage/SkSurface — same as the YUV420 variant but returns a fourth alpha plane at full resolution.

Milestones: m117
Effort: medium

🔹 Minor

🟡 m116 SkImageFilters::Image requires SkSamplingOptions

Single-argument SkImageFilters::Image(sk_sp) factory removed; sampling options are now mandatory.

Milestones: m116
Notes: Verify SkiaSharp's CreateImage overloads pass sampling options to the C API.

m104 SkCanvas::getBaseProps / getTopProps

getBaseProps replaces deprecated getProps; getTopProps returns surface props of the active layer.

Milestones: m104
Effort: trivial

m117 SkCanvas::saveLayerAlphaf

Float-precision overload of saveLayerAlpha.

User value: Set layer alpha with float precision, matching modern rendering pipelines.
Milestones: m117
Effort: trivial

m146 SkColorSpacePrimaries::operator==

Added equality comparison for SkColorSpacePrimaries.

User value: Compare two color space primaries directly.
Milestones: m146
Effort: trivial

m145 SkData::Equals helper

Adds SkData::Equals to compare two SkData instances (handles nullptr).

User value: Convenience for content-equality checks on encoded blobs.
Milestones: m145
Effort: trivial

m109 SkImage::RescaleMode::kLinear

Single-pass linear rescale mode for async rescale/readback APIs (faster, lower quality than kRepeatedLinear).

Milestones: m109
Effort: trivial

✅ Already Bound (16)

These Skia features are fully available in SkiaSharp.

  • GrContext split into GrDirectContext / GrRecordingContext (m88) - GrContext was replaced by GrDirectContext (full functionality) and GrRecordingContext (DDL playback)
  • Lighting image filters: 4 separate factories already bound - DistantLitDiffuse/Specular, PointLitDiffuse/Specular, SpotLitDiffuse/Specular all have C API entries
  • SKPathBuilder is now the recommended path-building API (m147) - SkiaSharp m147 work added SKPathBuilder bindings ahead of SkPath becoming immutable upstream (m143).
  • SkColorSpace::MakeCICP (m133) - Create an SkColorSpace from CICP code points per Rec. ITU-T H.273.
  • SkFont::getTypeface no longer returns null (m122) - getTypeface() now returns an empty typeface instead of null when none was set. Removes a common null
  • SkImage factories moved to SkImages namespace (m115) - SkImage::Make* factory functions migrated to SkImages:: namespace with renamed forms (DeferredFromEn
  • SkImage namespace migration (m113) - SkImage::CompressionType renamed to SkTextureCompressionType; SkImage factories moved to SkImages na
  • SkImage::makeRawShader (m98) - Creates 'raw' shaders for non-color image data (normals/material/heightmaps): no color-space convers
  • SkImage::refEncodedData returns const SkData* (m144) - refEncodedData() now returns pointer-to-const SkData, signaling that the underlying bytes are read-o
  • SkImageFilters::Blend factory (m88) - SkImageFilters::Blend replaces deprecated SkImageFilters::Xfermode with matching naming.
  • SkPaint::getFillPath replaced (m110) - Functionality moved to skpathutils::FillPathWithPaint in include/core/SkPathUtils.h.
  • SkParsePath::ToSVGString returns string (m110) - ToSVGString now returns a string rather than mutating an out parameter.
  • SkPath geometry becoming immutable (m143) - SkPath is migrating to remove mutating methods (moveTo, lineTo, etc). Path creation goes through SkP
  • SkPathBuilder accepted by more path utilities (m146) - SkContourMeasure::getSegment, SkPathEffect::filterPath, SkPathMeasure::getSegment and skpathutils::F
  • SkPathBuilder::rArcTo aligned with arcTo (m143) - Relative arcTo updated to align with absolute arcTo signature.
  • kR16_unorm_SkColorType color type (m144) - New 16-bit-per-channel unsigned normalized red color type added.

⚪ No Action Needed (29)

Internal Skia changes, automatic engine improvements, or correctly absent APIs.

  • N/A 2 GiB image/surface size cap (m98) - Surfaces and images now hard-capped at just under 2GB to avoid CPU indexing bugs.
  • N/A AVIF support in SkHeifCodec (m88) - HEIF codec gained AVIF support (Android NDK path).
  • N/A C++17 / iOS 11 baseline (m100) - Upstream m100 raised the public baseline to C++17 and iOS 11, which matters for SkiaSharp native dep
  • N/A Codec registration model (SkCodecs::Register) (m115) - Clients must register codecs they want Skia to use (SkJpegDecoder::Decoder() etc.). Legacy auto-regi
  • N/A DNG SDK 1.7.1 support (m139) - SkRawCodec updated to support DNG SDK versions 1.4 and 1.7.1 via SK_DNG_VERSION.
  • N/A GrContextOptions::fSharpenMipmappedTextures restored (m131) - Mipmap sharpening flag is back, on by default. Higher quality mipmapped texture sampling.
  • 🚫 ICC profile fields removed from encoder Options (m142) - fICCProfile and fICCProfileDescription removed from SkPngEncoder, SkJpegEncoder, SkWebpEncoder Optio
  • N/A More color spaces for gradient interpolation (m134) - A98 RGB, ProPhoto RGB, Display P3 and Rec2020 color spaces can now be used as gradient interpolation
  • 🚫 Path effects removed (Merge/Matrix/Stroke/StrokeAndFill) (m119) - SkMergePathEffect, SkMatrixPathEffect, SkStrokePathEffect, SkStrokeAndFillPathEffect removed from pu
  • N/A Perlin noise: rotation-correct + raster speedup (m124) - MakeFractalNoise and MakeTurbulence now rotate properly under transforms; CPU performance significan
  • N/A SK_CANVAS_SAVE_RESTORE_PREALLOC_COUNT tunable (m133) - New build define lets clients tune SkCanvas save() preallocation. Defaults to ~3KB; reducing it save
  • N/A SK_SUPPORT_UNSPANNED_APIS removed (m147) - The SK_SUPPORT_UNSPANNED_APIS define is removed; APIs are span-only going forward. C API shims must
  • 🚫 SkCodec::getEncodedData removal (m147) - Upstream m147 removed SkCodec::getEncodedData() from the public API. Grepping the audited C API and
  • 🚫 SkCodec::getEncodedData() removed (m147) - getEncodedData() has been removed from the public SkCodec API. Clients must hold their own SkData re
  • N/A SkCodec::getImage respects EXIF orientation (m123) - getImage() now applies the encoded origin (e.g. EXIF rotation), so JPEGs come out the right way up.
  • N/A SkGradientShader.h removed (use SkGradient.h) (m146) - The header SkGradientShader.h was removed in favor of SkGradient.h factory functions for gradient sh
  • 🚫 SkImageFilters::AlphaThreshold removed (m116) - AlphaThreshold removed; replace with Blend(kSrcIn, input, Picture(region)).
  • N/A SkImages::WrapTexture no longer requires SkColorType (m148) - WrapTexture (Graphite/Ganesh) automatically picks a compatible color type from the texture format, a
  • N/A SkNamedTransferFn::kHLG and kPQ use new skcms representations (m141) - kHLG and kPQ transfer functions migrated to new skcms representations; SkColorSpace::MakeCICP automa
  • N/A SkNamedTransferFn::kRec709 → BT.1886 gamma 2.4 (m142) - kRec709 transfer function now matches the pure gamma-2.4 definition from ITU-R BT.1886. Affects tran
  • 🚫 SkPath::asArc() removed (m141) - SkPath::asArc removed; path is no longer queryable as an arc.
  • 🚫 SkPathEffect::DashType / DashInfo / asADash removed (m132) - DashType, DashInfo and asADash removed from public SkPathEffect API.
  • N/A SkToBool / SkBackingFit / SkMath removed from public API (m111) - Several internal helpers (SkToBool, SkAbs32, SkAlign*, SkBackingFit, SkLeftShift, SkMath.h, SK_MaxS3
  • N/A Skia requires C++17 (m100) - Skia now requires C++17 standard library.
  • N/A Texture wrapping infers color type (m148) - Upstream m148 removes the need to specify an SkColorType when wrapping textures; Skia now infers a c
  • N/A Vulkan 1.1 minimum (m139) - Ganesh's Vulkan implementation now requires Vulkan 1.1 minimum.
  • 🚫 approximateFilteredBounds removed from SkMaskFilter (m133) - SkMaskFilter::approximateFilteredBounds was removed.
  • N/A iOS 12 and macOS 10.15 dropped (m139) - Skia removed support for iOS 12 and macOS 10.15.
  • N/A toLinearSrgb / fromLinearSrgb intrinsics in SkSL (m99) - Two new SkSL intrinsics convert vec3 between the working color space and linear sRGB. Crucial for co
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment