Skip to content

Releases: lynx-family/skity

v1.1.0-alpha.1

05 Jun 07:37

Choose a tag to compare

v1.1.0-alpha.1 Pre-release
Pre-release

Skity v1.1.0-alpha.1 Release Note

What's Changed Since v1.1.0-alpha.0

🚀 Vulkan Backend Enhancements

Fill in missing GPUContextVK interface implementations:

  • Added GPUBackendTextureInfoVK struct for wrapping external Vulkan textures
  • Implemented GPUContextVK::OnWrapTexture to wrap external textures as Skity texture objects
  • Implemented GPUContextVK::OnCreateRenderTarget to create render targets from non-owning wrapped textures
  • Implemented GPUContextVK::OnReadPixels via vkCmdCopyImageToBuffer with a host-visible staging buffer
  • Added PFN_vkCmdCopyImageToBuffer to the Vulkan device function proc table
  • Added 13 new unit tests covering all three APIs

Stub functions when Vulkan backend is disabled:

  • When SKITY_VK_BACKEND is OFF, provide empty stub implementations for CreateGPUContextVK and CreateGPUNativeWindowVK that return nullptr
  • Prevents link errors and runtime SO loading failures for users who conditionally reference these symbols

🐛 Bug Fixes

  • std140 uniform buffer layout alignment fix: Corrected std140 struct alignment rule (rule 9: struct alignment must be rounded up to vec4 / 16 bytes) in IR layer GetLayoutInfo and
    runtime StructDefinition, ensuring CPU-side buffer size matches GPU-side std140 uniform block size
  • Android bcp47 font fallback priority fix: Adjusted bcp47 language tag font fallback matching priority on Android

1.1.0-alpha.0

01 Jun 09:48

Choose a tag to compare

1.1.0-alpha.0 Pre-release
Pre-release

Skity v1.1.0-alpha.1 Release Note

⚠️ Alpha Warning

This is an early alpha release of Skity v1.1.0. It contains significant new features and architectural changes that are still under active development. Users should expect:

  • Potential bugs and instability — some features have not been fully validated across all platforms
  • API changes — public APIs introduced in this release may be modified or removed before the stable release
  • Not recommended for production use — this release is intended for early testing and feedback

Highlights

Vulkan Backend Support

Skity now supports Vulkan as a GPU rendering backend alongside the existing OpenGL backend. This enables better performance and broader device coverage, especially on Android devices where Vulkan drivers are widely available.

Key capabilities:

  • Full Vulkan render pipeline integration with SPIR-V shader compilation via the WGX module
  • Support for user-provided or engine-managed Vulkan instance and device
  • Swapchain-based presentation with native window support (Android, Win32, Wayland, XCB/Xlib, macOS)
  • Texture copy operations including texture-to-texture blit
  • Runtime backend availability query via IsGPUBackendSupported() — allows applications to decide at startup whether to attempt Vulkan initialization

Advanced Blending

Added programmable blending support via framebuffer fetch (GL_EXT_shader_framebuffer_fetch), enabling advanced blending modes that were previously not possible with standard OpenGL blending operations. This improves rendering fidelity for compositing and filter effects.

GPU Backend Query API

New function IsGPUBackendSupported(GPUBackendType) allows applications to query at runtime which GPU backends are compiled into the current build:

#include <skity/gpu/gpu_context.hpp>

if (skity::IsGPUBackendSupported(skity::GPUBackendType::kVulkan)) {
    auto ctx = skity::CreateGPUContextVK(proc_addr);
    // ...
}

New Features

  • Vulkan backend: Complete GPU backend implementation with pipeline, surface, presenter, and texture support
  • WGSL-to-SPIRV pipeline: New WGX module compilation path for generating Vulkan-compatible SPIR-V shaders
  • Advanced blending: Programmable blending via framebuffer fetch for improved compositing
  • Texture descriptor API: New CreateTextureWithDesc() API with mipmap configuration controls
  • Backend query: IsGPUBackendSupported() for runtime backend availability check
  • DisplayList R-tree: R-tree and region-based spatial indexing for DisplayList, improving rendering performance for complex scenes
  • Text improvements:
    • Font hinting configuration API
    • CoreText optical sizing preservation on Darwin platforms
    • Color V0 font support
    • Fake bold support on Darwin
    • Direct use of Darwin UI framework instead of dlsym

Breaking Changes

The following deprecated APIs have been removed:

  • Removed FXAA surface creation API
  • Removed partial FBO surface in OpenGL backend
  • Removed deprecated APIs from Canvas
  • Removed dynamic shader switching API
  • Removed texture size power-of-2 alignment API
  • Removed combined texture-sampler binding path

Other Improvements

  • Render target cache can now be disabled per-context
  • Improved OpenGL shader error handling and logging
  • Failed pipeline compilations are now skipped within the same frame to avoid repeated errors
  • Performance tracing integration with Perfetto SDK for benchmarks
  • Android Khmer variable font weight mapping fix for Android 16
  • Blur filter bounds handling fix after downsampling
  • Various WGX compiler and GLSL/MSL/SPIR-V backend fixes

v1.0.0

10 Mar 10:54

Choose a tag to compare

v1.0.0

This is the first official release of skity.
Before this release, the project went through internal testing, and the API is now relatively stable for production integration and ongoing iteration.

✨ Release Highlights

  • First generally available (GA) release
  • API has entered a relatively stable stage
  • Includes a set of cleanup and fixes focused on stability and consistency
  • Optimized command buffer and render command encoder creation in GPU backend

⚠️ Breaking Changes

  • Remove deprecated API from Canvas (#275)
  • Remove partial fbo surface in OpenGL backend

📦 Mobile Artifacts

Along with this release, we will publish mobile artifacts for both Android (Maven) and iOS (CocoaPods).

  • Android (Maven):
    implementation "org.1ynxsdk.lynx:skity-native:1.0.+"
  • iOS (CocoaPods):
    pod "skity", "~>1.0.0"

📋 Changelog

🚀 Features

  • (canvas) [breaking] Remove deprecated API from Canvas (#275)
  • (gpu) [breaking] Remove partial fbo surface in OpenGL backend

🐛 Bug Fixes

  • (text) Adjust spacing between glyphs (#269)
  • (text) Adjust spacing between glyphs (#272)
  • (text) Apply additional fixes to adjust spacing between glyphs (#274)

💼 Other

  • Hide symbols from thirdparty libraries
  • (gpu) Refactor: Merge to use single GPUCommandBuffer
  • Refactor: Optimize the actual MTLRenderCommandEncoder creation

v1.0.0-alpha.1

24 Feb 11:41

Choose a tag to compare

[1.0.0-alpha.1] - 2026-02-05

🐛 Bug Fixes

  • (text) Fix rendering of glyphs with sizes smaller than 1 (#249)
  • (codec) Fix crash issue when creating codec in multi-threaded mode
  • (text) Modify the font matching logic (#252)
  • (text) Align text to pixel boundaries (#254)

Integration

  • Android
implementation "org.1ynxsdk.lynx:skity-native:1.0.0-alpha.1
  • iOS & MacOS
pod "skity", "1.0.0-alpha.1"

v1.0.0-alpha.0

27 Jan 09:06

Choose a tag to compare

[1.0.0-alpha.0] - 2026-01-27

Starting from this version, we also provide Maven and CocoaPods release artifacts:

  • Android:
implementation "org.1ynxsdk.lynx:skity-native:1.0.0-alpha.0
  • iOS / MacOS
pod "skity", "1.0.0-alpha.0"

🚀 Features

  • (canvas) Add 'Canvas::ClipRRect' API (#239)
  • (canvas) Add 'Canvas::DrawDRRect' API (#241)

🐛 Bug Fixes

  • (windows) Fallback to use wuffs 0.3

🧪 Testing

  • (text) Remove a false positive case of tsan from Linux CI

Full Changelog: v1.0.0-beta.6...v1.0.0-alpha.0

v1.0.0-beta.6

21 Jan 03:21

Choose a tag to compare

v1.0.0-beta.6 Pre-release
Pre-release
ci(iOS): support publish skity to cocoapods

Test publish workflow

21 Jan 02:54

Choose a tag to compare

Test publish workflow Pre-release
Pre-release
v1.0.0-beta.5

ci(iOS): support publish skity to cocoapods

v1.0.0-beta.4

20 Jan 10:08

Choose a tag to compare

v1.0.0-beta.4 Pre-release
Pre-release
ci(iOS): support publish skity to cocoapods

v1.0.0-beta.3

13 Jan 03:57

Choose a tag to compare

v1.0.0-beta.3 Pre-release
Pre-release
test release tag

v1.0.0-beta.2

07 Jan 08:57

Choose a tag to compare

v1.0.0-beta.2 Pre-release
Pre-release

(2026-01-07)

Features

  • codec: Add a special codec implementation for Apple platform (2a60113)
  • hw: Add batch capability for simple pipeline (#188) (1ea93ac)
  • hw: Improve text batching implementation to use instance draw (#193) (8253441)
  • io: Implement conversion from SVG Path String to Skity Path (#203) (4bd206e)
  • log: disable LOGI and LOGD in release build (d7bb3fb)
  • path: Introduce 'Path::GetSegmentMasks' for segment type checking (#186) (305a520)
  • text: fonts with non-hundred weight values can be matched (#199) (705ceef)

Bug Fixes

  • example: The Frame example renders icons using custom fonts (297f8a0)
  • hw: Fix issue about uninitialized max texture size caused layer … (#192) (52c7f83)
  • hw: Update the shader to avoid invalid implicit type conversions… (#197) (52e44fb)
  • hw: Upload index buffer data only if it is not empty (#206) (bf633f3)
  • io: return empty data if malloc fails (#194) (5ced820)