- 09 Jun, 2026 1 commit
-
-
Kartikey Garasiya authored
Fixes a crash in offscreen Metal Swing rendering (`SkiaSwingLayer`) when running against a Skia build with Metal API validation enabled. `MetalSwingRedrawer.mm` (`makeMetalTexture`) creates the offscreen texture with `texture2DDescriptorWithPixelFormat:...`, which defaults `.usage` to `MTLTextureUsageShaderRead`. The same texture is then wrapped as a `GrBackendRenderTarget` and rendered into, so on a debug Skia `GrMtlGpu::onWrapBackendRenderTarget` asserts: ``` check(MTLTextureUsageRenderTarget & mtlTexture.usage) ``` and the process SIGTRAPs on the first paint. On a release Skia the assert is compiled out and Metal tolerates the missing flag, so the bug is latent there (and CI, which builds against release Skia, never sees it). Present since `MetalSwingRedrawer` was added (v0.144.6), unchanged on current `master`. The fix sets the usage bits explicitly — `RenderTarget` because Skia renders into the texture, `ShaderRead` because it is then sampled when blitted back to `Graphics2D`: ```objc textureDescriptor.usage = MTLTextureUsageRenderTarget | MTLTextureUsageShaderRead; ``` Repro (stock skiko + the published Debug Skia): ``` git clone --depth 1 --branch v0.144.6 https://github.com/JetBrains/skiko.git ./gradlew :skiko:publishToMavenLocal -Pskiko.debug=true # paint any offscreen SkiaSwingLayer on macOS -> SIGTRAP on first paint ``` Validated: `:skiko:awtTest` green; a 2400-frame `SkiaSwingLayer` soak on the debug Skia runs leak-free (median frame 2.4 ms, RSS flat) where it previously crashed on frame 1. No behavior change on release builds — the change is descriptor-time only. Release Notes - Fixes a crash in offscreen Metal Swing rendering (`SkiaSwingLayer`) when running against a Skia build with Metal API validation enabled. Fixes [SKIKO-1144](https://youtrack.jetbrains.com/issue/SKIKO-1144)
-
- 05 Jun, 2026 1 commit
-
-
Hubert Błaszczyk authored
Prepare Skiko config to allow easier registration of new modules It consists of: - A custom DSL for registering Skia archives and linker flags by: Env (jvm/native/wasm), OS and Arch - Extracting Skia library declarations and some core-specific linker flags from environment configuration tasks - Parameterizing `SkikoArtifacts` to reuse the publication config Fixes [SKIKO-1141](https://youtrack.jetbrains.com/issue/SKIKO-1141)
-
- 04 Jun, 2026 1 commit
-
-
Igor Demin authored
Previously we didn't check JVM Linux x64/arm64, macOs x64, Windows arm64 AWT runtimes --------- Co-authored-by:Ivan Matkov <ivan.matkov@jetbrains.com>
-
- 02 Jun, 2026 1 commit
-
-
ApoloApps authored
It transforms Matrix* classes to be value classes so that we avoid double allocation in these simple classes (1 fo FloatArray and 1 for the Matrix class itself) https://github.com/JetBrains/skiko/pull/1137 followup (at least partly) Fixes [SKIKO-1140](https://youtrack.jetbrains.com/issue/SKIKO-1140/Change-Matrix-to-value-classes) **Next** Follow-up PR in Compose Core to make use of the internal float array constructor to reuse if coming from another FLoatArray --------- Co-authored-by:
Ivan Matkov <matkov.ivan@gmail.com>
-
- 01 Jun, 2026 1 commit
-
-
Alexander Maryanovsky authored
-
- 27 May, 2026 3 commits
-
-
Pavel authored
We must use the same clang flags to build JNI cpp shims as we use to build skia
-
ApoloApps authored
-
Hubert Błaszczyk authored
This PR introduces the extraction of test utilities into a separate module. This is a required preparation step for extracting `Skottie` into a separate module, as it uses some of these test utilities. Fixes [SKIKO-1136](https://youtrack.jetbrains.com/issue/SKIKO-1136)
-
- 18 May, 2026 2 commits
-
-
Ivan Matkov authored
``` Failed to get resource: GET. [HTTP HTTP/1.1 429 Too Many Requests: https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-gradle-plugins-bom/2.0.21/kotlin-gradle-plugins-bom-2.0.21.pom)] Failed to get resource: GET. [HTTP HTTP/1.1 429 Too Many Requests: https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/2.0.21/kotlin-stdlib-2.0.21.pom)] ```
-
Ivan Matkov authored
[CMP-10199](https://youtrack.jetbrains.com/issue/CMP-10199) [iOS] Undefined symbol '_org_jetbrains_skia_Path__1nUpdateBoundsCache It was removed in #1187 by accident, and there was no test to catch it
-
- 04 May, 2026 1 commit
-
-
Ivan Matkov authored
[SKIKO-1099](https://youtrack.jetbrains.com/issue/SKIKO-1099) Update skia to m148
-
- 27 Apr, 2026 1 commit
-
-
Hubert Błaszczyk authored
[SKIKO-1130](https://youtrack.jetbrains.com/issue/SKIKO-1130) Update skia to m147 and its consumption
-
- 24 Apr, 2026 1 commit
-
-
Bogdan Mitrović authored
PathSegment.hashCode() threw RuntimeException("Unreachable") for PathVerb.CLOSE segments when used in hash-based collections such as intersect(). Added CLOSE case consistent with what equals() checks for CLOSE segments. Also removed the else branch since all PathVerb values are now handled. Added a test which fails unless CLOSE is handled in hashCode(). ## Testing Ran test on awt locally — the new test `closedPathIntersectTest` fails before the fix and passes after. ## Release Notes Fix crash when using closed paths in hash-based collections such as `intersect()` Fixes: [SKIKO-1038](https://youtrack.jetbrains.com/issue/SKIKO-1038)
-
- 23 Apr, 2026 2 commits
-
-
Sebastiano Poggi authored
This PR fixes Metal Swing offscreen rendering behavior when the active `GraphicsConfiguration` is not compatible with JBR shared textures, and adds focused regression tests for the fallback path. `AcceleratedSwingPainter` now explicitly falls back to software painting for incompatible graphics configurations (for example, offscreen/`BufferedImage` paint flows). ## Changes - Introduced `SharedTexturesAdapter` as a small abstraction over JBR shared textures so production code keeps using JBR while tests can inject a fake adapter. - Updated `MetalSwingRedrawer` to create and pass the shared texture adapter into `AcceleratedSwingPainter`. - Updated `AcceleratedSwingPainter` to support test injection and preserve fallback behaviour for incompatible graphics configurations. - Added minimal test hooks in `AcceleratedSwingPainter` with `org.jetbrains.annotations.VisibleForTesting` so tests can validate cache-reset behaviour. - Added `org.jetbrains:annotations` as an `awtMain` dependency to use `VisibleForTesting`. I can undo this and remove the annotation, but I think it's worth keeping... - Added `AcceleratedSwingPainterTest` covering: - fallback is used for incompatible `GraphicsConfiguration` - accelerated cache state is cleared on fallback - `dispose()` delegates to fallback painter --- Fixes https://youtrack.jetbrains.com/issue/SKIKO-1082 --------- Co-authored-by:
Igor Demin <igordmn@users.noreply.github.com>
-
Andrei Salavei authored
Add the step to patch all C/C++ symbols for iOS and tvOS targets to prevent symbol clashes when the user's app uses another skia library, or one of its dependencies. Fixes: https://youtrack.jetbrains.com/issue/CMP-6845/How-to-use-compose-multiplatform-on-iOS-in-app-with-lib-skia-dependency --------- Co-authored-by:
Copilot <175728472+Copilot@users.noreply.github.com>
-
- 22 Apr, 2026 1 commit
-
-
Konstantin authored
-
- 17 Apr, 2026 1 commit
-
-
Ivan Matkov authored
-
- 09 Apr, 2026 1 commit
-
-
Ivan Matkov authored
[SKIKO-1098](https://youtrack.jetbrains.com/issue/SKIKO-1098) Update skia to m146
-
- 07 Apr, 2026 1 commit
-
-
Ivan Matkov authored
[SKIKO-1067](https://youtrack.jetbrains.com/issue/SKIKO-1067) Build Skiko with Kotlin 2.3.0
-
- 24 Mar, 2026 1 commit
-
-
Ivan Matkov authored
[SKIKO-1095](https://youtrack.jetbrains.com/issue/SKIKO-1095) Move build scripts from `skia-pack` to `skia` fork https://github.com/JetBrains/skia/pull/15
-
- 23 Mar, 2026 1 commit
-
-
Shagen Ogandzhanian authored
This is backport of https://github.com/JetBrains/skiko/pull/1173 to Kotlin 2.2.20 --------- Co-authored-by:
Ivan Matkov <ivan.matkov@jetbrains.com>
-
- 13 Mar, 2026 1 commit
-
-
Alexander Maryanovsky authored
-
- 06 Mar, 2026 1 commit
-
-
ApoloApps authored
Improve performance of critical paths by preventing allocating intermediate objects like lists, arrays,.... (chunked, map, to*Collection) --------- Co-authored-by:
Ivan Matkov <matkov.ivan@gmail.com> Co-authored-by:
Alexander Maryanovsky <msasha@gmail.com>
-
- 05 Mar, 2026 1 commit
-
-
Alexander Maryanovsky authored
-
- 03 Mar, 2026 1 commit
-
-
Alexander Maryanovsky authored
-
- 02 Mar, 2026 1 commit
-
-
Alexander Maryanovsky authored
-
- 26 Feb, 2026 3 commits
-
-
Ivan Matkov authored
Fixes from #1168 extracted as a followup patch for #1162
-
Luc Girardin authored
Added support for custom blend modes through RuntimeEffect.makeForBlender() and Paint.blender. There was a discussion on the topic at https://youtrack.jetbrains.com/issue/CMP-5046.
-
Ivan Matkov authored
Reverts #1168 in favor of merging #1162 instead
-
- 20 Feb, 2026 1 commit
-
-
Ivan Matkov authored
[SKIKO-1114](https://youtrack.jetbrains.com/issue/SKIKO-1114) Provide more smooth migration to skiko 0.144.*
-
- 19 Feb, 2026 4 commits
-
-
Igor Demin authored
Diff in https://github.com/JetBrains/compose-multiplatform: ``` git log --oneline buildHelpers_v0.1.18...buildHelpers_v0.1.28 -- ci/build-helpers ``` 98e1f7154d (tag: buildHelpers_v0.1.28, origin/master, origin/HEAD) Add retry for downloading artifacts from Space (https://github.com/JetBrains/compose-multiplatform/pull/5540) de33213773 Migrate dev maven (https://github.com/JetBrains/compose-multiplatform/pull/5524) 9fe7e9ae2e (tag: buildHelpers_v0.1.22) Increase Maven Upload socket timeout (https://github.com/JetBrains/compose-multiplatform/pull/5488) 37f161ff0b (tag: buildHelpers_v0.1.21) Increase Maven Upload socket timeout (https://github.com/JetBrains/compose-multiplatform/pull/5486) d949b7cc83 (tag: buildHelpers_v0.1.20) Bump versions (Kotlin, AGP, Gradle) (https://github.com/JetBrains/compose-multiplatform/pull/5399) b495789975 (tag: v1.9.0+dev2631, tag: buildHelpers_v0.1.19) Fix Maven Central API uploading (https://github.com/JetBrains/compose-multiplatform/pull/5353)
-
Ivan Matkov authored
[SKIKO-1113](https://youtrack.jetbrains.com/issue/SKIKO-1113) Calling detach() twice in a row on same PathBuilder Adding more tests to verify behavior from the report
-
Ivan Matkov authored
Required for [CMP-5046](https://youtrack.jetbrains.com/issue/CMP-5046) Supersedes #1162 with a cleaned-up and fixes --------- Co-authored-by:
Luc Girardin <luc.girardin@macrofocus.com>
-
Ivan Matkov authored
[SKIKO-1112](https://youtrack.jetbrains.com/issue/SKIKO-1112) Missed `PathBuilder.offset` and `PathBuilder.transform` in `0.144.0` Missed part from #1154 JNI/KN C++ bindings are already in place
-
- 18 Feb, 2026 1 commit
-
-
Ivan Matkov authored
Fixes [SKIKO-1094](https://youtrack.jetbrains.com/issue/SKIKO-1094) Update skia to m144
-
- 17 Feb, 2026 3 commits
-
-
Ivan Matkov authored
They are out of the scope of the skiko library. [SKIKO-1020](https://youtrack.jetbrains.com/issue/SKIKO-1020) Deprecate and remove URIManager [SKIKO-1021](https://youtrack.jetbrains.com/issue/SKIKO-1021) Deprecate and remove ClipboardManager [SKIKO-1022](https://youtrack.jetbrains.com/issue/SKIKO-1022) Deprecate and remove CursorManager
-
Ivan Matkov authored
-
Ivan Matkov authored
-
- 16 Feb, 2026 2 commits
-
-
Victor Kropp authored
All public links are updated to https://redirector.kotlinlang.org/maven/compose-dev Internal buildSrc links to maven directly to avoid unnecessary redirects Fixes SKIKO-1108
-
Ivan Matkov authored
Previously: - The bash script required specifying `SKIA_VERSION` separately from `gradle.properties`, leading to version mismatches - Script hardcoded `SKIA_TARGET` default to `iosSim`, requiring manual override on non-macOS systems This change: - Added `skiaVersionFromEnvOrProperties` property and `printSkiaVersion` task. The bash script now queries Gradle for the version instead of maintaining its own default. - Target platform now defaults to current OS (`hostOs.id`) instead of hardcoded `iosSim`. - Introduced `BuildLocalSkiaTask` that handles Python build script invocation, architecture detection, and validation. - Added `SkiaTarget` enum centralizing platform-specific Gradle flags and architecture mappings. - Simplified bash script: Now focuses solely on git operations (clone/checkout skia-pack), delegating all build logic to Gradle. ### Usage ```sh # Version from gradle.properties, target auto-detected from OS ./build-with-local-skia.sh # Override either via environment variables SKIA_VERSION=m138-80d088a-2 SKIA_TARGET=iosSim ./build-with-local-skia.sh # Or use Gradle tasks directly ./gradlew prepareLocalSkiaBuild -Pskia.target=linux ```
-