- 24 Nov, 2025 2 commits
-
-
Igor Demin authored
Reverts JetBrains/skiko#1114 Fixes https://youtrack.jetbrains.com/issue/SKIKO-1042/Support-ANGLE The fix is the same as https://github.com/JetBrains/skiko/pull/1082, except: - the code is rearranged in new commits after resolving merge conflicts (the merge is solved by applying their/ours) - fixed "Task ':publishSkikoJvmRuntimeAngleWindowsX64PublicationToComposeRepoRepository' uses this output of task ':signSkikoJvmRuntimeWindowsX64Publication' without declaring an explicit or implicit dependency" (as in https://github.com/JetBrains/skiko/pull/1127) WIP: fix CI failure ## Testing 1. `./gradlew publishToMavenLocal` 2. In SkiaAwtSample: ``` ./gradlew runWithAngleEnabled ``` 3. [CI is successful](https://buildserver.labs.intellij.net/buildConfiguration/Skiko_PublishSnapshot?branch=revert-1126-revert-1125-igor.demin%2Ffix-skiko-build-awtRuntimeElements&buildTypeTab=overview&mode=builds)
-
Igor Demin authored
Reverts JetBrains/skiko#1126 with additional fixes Fixes: ``` org.gradle.internal.execution.WorkValidationException: A problem was found with the configuration of task ':signKotlinMultiplatformPublication' (type 'Sign'). - Gradle detected a problem with the following location: '/mnt/agent/work/381d14fe560aa354/skiko/build/libs/skiko-0.9.33-javadoc.jar.asc'. Reason: Task ':publishAwtRuntimeElementsPublicationToComposeRepoRepository' uses this output of task ':signKotlinMultiplatformPublication' without declaring an explicit or implicit dependency. This can lead to incorrect results being produced, depending on what order the tasks are executed. ``` Part of [SKIKO-530](https://youtrack.jetbrains.com/issue/SKIKO-530) support for all platforms of awt-runtime in one jar ## Testing - doesn't fail on configuration stage: ``` ./gradlew publishAwtRuntimeElementsPublicationToMavenLocal -Pmaven.central.sign=true -Pmaven.central.sign.key=TEST -Pmaven.central.sign.password=TEST ``` - [CI is successful](https://buildserver.labs.intellij.net/buildConfiguration/Skiko_PublishSnapshot/827040952)
-
- 21 Nov, 2025 3 commits
-
-
Ivan Matkov authored
In 0.9.36, there was a missing symbol that caused ``` libskiko-linux-x64.so: undefined symbol: _ZNSt19_Sp_make_shared_tag5_S_eqERKSt9type_info ``` It's because the build attempts to statically link the C++ standard library, but: - Skia's object files reference newer libstdc++ symbols - GCC 7.3's `libstdc++` doesn't contain these symbols - The static linking fails to resolve these symbols GCC was downgraded from 9 to 7 in #1130 during the switch to AL2 to provide better GLIBC compatibility. Since AL2 [provides](https://docs.aws.amazon.com/linux/al2/ug/c-cplusplus.html) only GCC 7.3 by default and GCC 10, installing GCC 9 is problematic there, so it's bumped to 10 However, GCC 10 introduces outline atomics as default for new ARM chips, the build might fail due to missing symbols like ``` org_jetbrains_skia_FontMgrWithFallback__1nDefaultWithFallbackFontProvider: error: undefined reference to '__aarch64_ldadd4_relax' org_jetbrains_skia_FontMgrWithFallback__1nDefaultWithFallbackFontProvider: error: undefined reference to '__aarch64_ldadd4_acq_rel' ``` so, to keep things compatible with the previous GCC version, `-mno-outline-atomics` option was added to disable this new behavior.
-
Ivan Matkov authored
[SKIKO-1066](https://youtrack.jetbrains.com/issue/SKIKO-1066) Support glibc 2.27 [CMP-9307](https://youtrack.jetbrains.com/issue/CMP-9307) Support glibc 2.27 - Added `linux-compat` docker image based on #1123. It works on both x64 and arm64 architectures - `multistrap` tool was replaced by installing required packages inside `linux-compat` and `linux-amd64` docker images - `linux-arm64` uses GCC instead of clang (aligning between distributions) - GitHub checks now use precompiled docker images to reuse the same environment - `ci.yml` and `web.yml` were combined into `tests.yml` - `publishToMavenLocal` checks are moved to `publish-dry-run.yml` - Add building an Android sample as part of CI checks --------- Co-authored-by:
Vladislav.Ertel <vladislav.ertel@jetbrains.com>
-
Sebastian Sellmair authored
In the compose hot reload project, we have seen races from multiple tests trying to unpack skiko into the .skiko directory. Currently, the library loading is only synchronized within the project. This MR also adds a .lock file, which has to be locked when modifying the dataDir. Note: This MR also changed the Library.load method from always entering a monitor, to resolving an atomic reference, best case. ## Release Notes ### Fixes - Desktop - Fixed a race condition that occurred when multiple processes attempted to unpack Skiko binary files at startup
-
- 20 Nov, 2025 1 commit
-
-
Elijah Semyonov authored
See [CMP-9080](https://youtrack.jetbrains.com/issue/CMP-9080/Native-Crash-in-Skiko-on-desktop#focus=Comments-27-13023060.0-0) for details
-
- 12 Nov, 2025 5 commits
-
-
Igor Demin authored
Reverts JetBrains/skiko#1125 Fails on CI
-
Igor Demin authored
Regression after https://github.com/JetBrains/skiko/pull/1119 was added on CI ``` org.gradle.internal.execution.WorkValidationException: A problem was found with the configuration of task ':signKotlinMultiplatformPublication' (type 'Sign'). - Gradle detected a problem with the following location: '/mnt/agent/work/381d14fe560aa354/skiko/build/libs/skiko-0.9.33-javadoc.jar.asc'. Reason: Task ':publishAwtRuntimeElementsPublicationToComposeRepoRepository' uses this output of task ':signKotlinMultiplatformPublication' without declaring an explicit or implicit dependency. This can lead to incorrect results being produced, depending on what order the tasks are executed. Possible solutions: 1. Declare task ':signKotlinMultiplatformPublication' as an input of ':publishAwtRuntimeElementsPublicationToComposeRepoRepository'. 2. Declare an explicit dependency on ':signKotlinMultiplatformPublication' from ':publishAwtRuntimeElementsPublicationToComposeRepoRepository' using Task#dependsOn. 3. Declare an explicit dependency on ':signKotlinMultiplatformPublication' from ':publishAwtRuntimeElementsPublicationToComposeRepoRepository' using Task#mustRunAfter. ``` The fix is blind as we can only test it in master
-
Sebastian Sellmair authored
This publication creates one variant for each native platform. It allows depending (and exposing) a single dependency, which can later be resolved to platform-specific artifacts. <details> <summary>skiko-awt-runtime.module</summary> ```json { "formatVersion": "1.1", "component": { "group": "org.jetbrains.skiko", "module": "skiko-awt-runtime", "version": "1.0-SNAPSHOT", "attributes": { "org.gradle.status": "integration" } }, "createdBy": { "gradle": { "version": "8.13" } }, "variants": [ { "name": "jvmRuntimeElements-macos-x64", "attributes": { "org.gradle.category": "library", "org.gradle.dependency.bundling": "external", "org.gradle.jvm.environment": "standard-jvm", "org.gradle.libraryelements": "jar", "org.gradle.native.architecture": "x86-64", "org.gradle.native.operatingSystem": "macos", "org.gradle.usage": "java-runtime", "org.jetbrains.kotlin.platform.type": "jvm" }, "dependencies": [ { "group": "org.jetbrains.skiko", "module": "skiko-awt-runtime-macos-x64", "version": { "requires": "1.0-SNAPSHOT" } } ] }, { "name": "jvmRuntimeElements-macos-arm64", "attributes": { "org.gradle.category": "library", "org.gradle.dependency.bundling": "external", "org.gradle.jvm.environment": "standard-jvm", "org.gradle.libraryelements": "jar", "org.gradle.native.architecture": "aarch64", "org.gradle.native.operatingSystem": "macos", "org.gradle.usage": "java-runtime", "org.jetbrains.kotlin.platform.type": "jvm" }, "dependencies": [ { "group": "org.jetbrains.skiko", "module": "skiko-awt-runtime-macos-arm64", "version": { "requires": "1.0-SNAPSHOT" } } ] } ] } ``` </details> <details> <summary>skiko-awt-runtime.pom</summary> ```xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <!-- This module was also published with a richer model, Gradle metadata, --> <!-- which should be used instead. Do not delete the following line which --> <!-- is to indicate to Gradle or any Gradle module metadata file consumer --> <!-- that they should prefer consuming it instead. --> <!-- do_not_remove: published-with-gradle-metadata --> <modelVersion>4.0.0</modelVersion> <groupId>org.jetbrains.skiko</groupId> <artifactId>skiko-awt-runtime</artifactId> <version>1.0-SNAPSHOT</version> <packaging>pom</packaging> <name>Skiko JVM Runtime</name> <description>Kotlin Skia bindings</description> <url>https://www.github.com/JetBrains/skiko</url> <licenses> <license> <name>The Apache License, Version 2.0</name> <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url> </license> </licenses> <developers> <developer> <name>Compose Multiplatform Team</name> <organization>JetBrains</organization> <organizationUrl>https://www.jetbrains.com</organizationUrl> </developer> </developers> <scm> <connection>scm:git:https://www.github.com/JetBrains/skiko.git</connection> <developerConnection>scm:git:https://www.github.com/JetBrains/skiko.git</developerConnection> <url>https://www.github.com/JetBrains/skiko</url> </scm> </project> ``` </details> Simple example usage: ```kotlin kotlin { target.attributes { attribute(ARCHITECTURE_ATTRIBUTE, objects.named(DefaultNativePlatform.getCurrentArchitecture().name)) attribute(OPERATING_SYSTEM_ATTRIBUTE, objects.named(DefaultNativePlatform.getCurrentOperatingSystem().toFamilyName())) } } dependencies { implementation("org.jetbrains.skiko:skiko-awt:1.0-SNAPSHOT") implementation("org.jetbrains.skiko:skiko-awt-runtime:1.0-SNAPSHOT") } ``` ## Motivation This allows 'intermediate' libraries to express that this dependency exists (in a single publication) and push down the artifact selection to consumers. This is an advanced feature and can be leveraged by more complex builds. --------- Co-authored-by:Igor Demin <igor.demin@jetbrains.com>
-
Ivan Matkov authored
It's due to > The macOS-13 based runner images are being deprecated, consider switching to macOS-15 (macos-15-intel) or macOS 15 arm64 (macos-latest) instead.
-
Sebastian Sellmair authored
… 'skiko.awt.enabled' feature flag
-
- 05 Nov, 2025 2 commits
-
-
Alovchin91 authored
Skia supports all DX12 feature levels, see here for example: https://source.chromium.org/chromium/chromium/src/+/main:third_party/skia/tools/ganesh/d3d/D3DTestUtils.cpp;l=60;drc=cbb0388767d2b8a5a5c1f5484a68fb0ff201561b It appears however that some GPUs (like Intel(R) HD Graphics 4600) don't work with Skia's DirectX backend at all. Those adapters should be marked as unsupported in Skiko instead. The reason for this change is that the current choice of feature levels disables support for "good" FL11.1-compatible adapters, for example, the Parallels Virtual GPU. Feature level 11.1 is chosen as a safe bet for now since it's effectively the same as 12.0, with some baseline features of 12.0 being optional here. The original issue: #601 The original PR: #603
-
Sebastian Sellmair authored
-
- 04 Nov, 2025 2 commits
-
-
Ivan Matkov authored
Revert "Migrate Dockerfiles to use Amazon Linux 2 from Ubuntu 20.04 for both amd64 and arm64 platforms" (#1121) Reverts JetBrains/skiko#1120 Due to publish issues on linux arm64: ``` Execution failed for task ':setupMultistrapLinuxArm64'. org.gradle.process.internal.ExecException: A problem occurred starting process 'command 'multistrap'' ```
-
vladertel authored
Migrate Dockerfiles to use Amazon Linux 2 from Ubuntu 20.04 for both amd64 and arm64 platforms (#1120)
-
- 17 Oct, 2025 1 commit
-
-
Christoph authored
As of November Google requires 16kb page sizes for native libraries. https://developer.android.com/guide/practices/page-sizes Updated the ndk version in the gradle and docker files Tested this with the sample app and also with a more complex project. Fixes [SKIKO-1064](https://youtrack.jetbrains.com/issue/SKIKO-1064)
-
- 13 Oct, 2025 1 commit
-
-
Alexander Maryanovsky authored
-
- 12 Oct, 2025 1 commit
-
-
Alexander Maryanovsky authored
-
- 09 Oct, 2025 2 commits
-
-
Igor Demin authored
Reverts JetBrains/skiko#1082 Sign task failed on CI (`publishSkikoJvmRuntimeWindowsX64PublicationToComposeRepoRepository`): ``` Some problems were found with the configuration of task ':signSkikoJvmRuntimeWindowsX64Publication' (type 'Sign'). 16:29:09 - Gradle detected a problem with the following location: 'C:\buildagent\work\381d14fe560aa354\skiko\build\libs\skiko-0.9.28+debug-javadoc.jar.asc'. org.gradle.internal.execution.WorkValidationException: Some problems were found with the configuration of task ':signSkikoJvmRuntimeWindowsX64Publication' (type 'Sign'). - Gradle detected a problem with the following location: 'C:\buildagent\work\381d14fe560aa354\skiko\build\libs\skiko-0.9.28+debug-javadoc.jar.asc'. Reason: Task ':publishSkikoJvmRuntimeAngleWindowsX64PublicationToComposeRepoRepository' uses this output of task ':signSkikoJvmRuntimeWindowsX64Publication' without declaring an explicit or implicit dependency. This can lead to incorrect results being produced, depending on what order the tasks are executed. Possible solutions: 1. Declare task ':signSkikoJvmRuntimeWindowsX64Publication' as an input of ':publishSkikoJvmRuntimeAngleWindowsX64PublicationToComposeRepoRepository'. 2. Declare an explicit dependency on ':signSkikoJvmRuntimeWindowsX64Publication' from ':publishSkikoJvmRuntimeAngleWindowsX64PublicationToComposeRepoRepository' using Task#dependsOn. 3. Declare an explicit dependency on ':signSkikoJvmRuntimeWindowsX64Publication' from ':publishSkikoJvmRuntimeAngleWindowsX64PublicationToComposeRepoRepository' using Task#mustRunAfter. For more information, please refer to https://docs.gradle.org/8.14.3/userguide/validation_problems.html#implicit_dependency in the Gradle documentation. - Gradle detected a problem with the following location: 'C:\buildagent\work\381d14fe560aa354\skiko\build\libs\skiko-0.9.28+debug-sources.jar.asc'. Reason: Task ':publishSkikoJvmRuntimeAngleWindowsX64PublicationToComposeRepoRepository' uses this output of task ':signSkikoJvmRuntimeWindowsX64Publication' without declaring an explicit or implicit dependency. This can lead to incorrect results being produced, depending on what order the tasks are executed. Possible solutions: 1. Declare task ':signSkikoJvmRuntimeWindowsX64Publication' as an input of ':publishSkikoJvmRuntimeAngleWindowsX64PublicationToComposeRepoRepository'. 2. Declare an explicit dependency on ':signSkikoJvmRuntimeWindowsX64Publication' from ':publishSkikoJvmRuntimeAngleWindowsX64PublicationToComposeRepoRepository' using Task#dependsOn. 3. Declare an explicit dependency on ':signSkikoJvmRuntimeWindowsX64Publication' from ':publishSkikoJvmRuntimeAngleWindowsX64PublicationToComposeRepoRepository' using Task#mustRunAfter. For more information, please refer to https://docs.gradle.org/8.14.3/userguide/validation_problems.html#implicit_dependency in the Gradle documentation. ``` -
Igor Demin authored
An addition to [the feature PR](https://github.com/JetBrains/skiko/pull/1017) that allows including ANGLE the same way as Skiko native libraries included: - unpack it from an additional jar `org.jetbrains.skiko:skiko-awt-runtime-angle-$target:$version` - find them in `skiko.library.path` directoty (a system property) - find them in `java.home` It reuses the same logic that is used to load `Skiko.dll`. Currently only Windows supported, the same way as in the original PR. No CI changes needed, as building of this jar is added as a dependency for `publishSkikoJvmRuntimeWindowsX64PublicationToComposeRepoRepository`/`publishSkikoJvmRuntimeWindowsArm64PublicationToComposeRepoRepository` ## Testing Manually with `skiko.rendering.angle.enabled` true/false on SkikoAwtSample. ## Release Notes (Skiko) ### Features - Desktop A new experimental renderer is introduced for Windows. It uses [the ANGLE library](https://github.com/google/angle) which has proven to be stable because it is used inside Chromium, compared to the `DIRECT3D` renderer that has issues on a few machines. Note that `ANGLE` still uses `DIRECT3D` API under the hood. 1. Add this to the code to enable it: ``` System.setProperty("skiko.rendering.angle.enabled", "true") ``` 2. Add the ANGLE library into the dependencies: - If you use Gradle: ``` if (System.getProperty("os.name").startsWith("Win")) { implementation("org.jetbrains.skiko:skiko-awt-runtime-angle-$target:$version") } ``` - If you set `skiko.library.path`. Extract `libEGL.dll`, `libGLESv2.dll` from https://github.com/JetBrains/angle-pack/releases into this directory. ## Release Notes (Compose) ### Features - Desktop N/A Until we specify how to match Skiko and Compose versions, or include it in Compose, it is a Skiko-only experimental feature. Some projects can include Skiko directly, it should work, but not supported as a Compose feature.
-
- 08 Oct, 2025 3 commits
-
-
Ivan Matkov authored
Restoring correct behaviour of caches after #1108 --------- Co-authored-by:Igor Demin <igordmn@users.noreply.github.com>
-
Alexander Maryanovsky authored
-
Alexander Maryanovsky authored
-
- 07 Oct, 2025 1 commit
-
-
Eric Shelbogashev authored
Fixed - Unresolved reference 'layer' in MacosClocks constructor - Added startup trigger `skiaLayer.needRedraw()` in main()
-
- 21 Sep, 2025 1 commit
-
-
Alexander Maryanovsky authored
-
- 17 Sep, 2025 1 commit
-
-
Igor Demin authored
Fix "ComposePanel doesn't use hardware acceleration with RenderSettings.SwingGraphics on Linux" (#1103) Fixes https://youtrack.jetbrains.com/issue/CMP-8936 `glXChooseFBConfig` fails to find a config with `GLX_DOUBLEBUFFER, False` on my machine, it only has double buffered configs. But double/single buffering doesn't matter as we use pixel buffers. Also choose a correct config that is required by https://registry.khronos.org/OpenGL-Refpages/gl2.1/xhtml/glXCreatePbuffer.xml: ``` BadMatch is generated if config does not support rendering to pixel buffers (e.g., GLX_DRAWABLE_TYPE does not contain GLX_PBUFFER_BIT) ``` ## Testing - manually, in the clocks example - the modified test failed before the fix, now it doesn't fail ## Release Notes (Skiko) Fix "SkiaSwingLayer doesn't use hardware acceleration on Linux" ## Release Notes (Compose) ### Fixes - Desktop Fix "ComposePanel doesn't use hardware acceleration with RenderSettings.SwingGraphics on Linux"
-
- 16 Sep, 2025 1 commit
-
-
Nikita Lipsky authored
Fixes: [CMP-8916](https://youtrack.jetbrains.com/issue/CMP-8916/Provide-a-way-to-configure-Skias-DirectContext-GPU-Resource-Cache-size) The cache can be limited on Desktop platforms by specifying `-Dskiko.gpu.resourceCacheLimit` VM property (accepts numbers optionally suffixed with "K", "M" or "G").
-
- 15 Sep, 2025 1 commit
-
-
Alexander Maryanovsky authored
-
- 12 Sep, 2025 2 commits
-
-
Alexander Maryanovsky authored
-
Alexander Maryanovsky authored
-
- 11 Sep, 2025 4 commits
-
-
Ivan Matkov authored
Generate release notes like in https://github.com/JetBrains/skiko/releases/tag/v0.9.25 automatically
-
Ivan Matkov authored
It fixes ``` :setupMultistrapLinuxArm64 E: Can't find a source to download version '2020.02.11.4' of 'ubuntu-keyring:amd64' ``` failure on CI (#1096 regression). Usually `/var/lib/apt/lists` is recommended to be removed from final docker images. But in our case, `multistrap` tool requires downloading some dependencies during the build. It's the issue only on `linux-amd64`, for others linux images this removal is correct.
-
Ivan Matkov authored
Publishing CI fails after Gradle update because of it
-
Ivan Matkov authored
Changes: - Moved Windows docker image from compose repo - Update JDK to 21 in all images - Cleanup unused scripts/CI stages/etc
-
- 09 Sep, 2025 4 commits
-
-
Shagen Ogandzhanian authored
This PR updates SkikoJsSample (which is renamed to SkikoWebSample) in following aspects: - By default sample built against release version so that user can check the sample without local build at all - When build against local skiko, `skiko.version` parameter is ignored - Sample code commonized and prepared for future introduction of common web source sets in Kotlin 2.2.20
-
Ivan Matkov authored
Fixes [SKIKO-1039](https://youtrack.jetbrains.com/issue/SKIKO-1039) Update Skiko project to K2 - Update Kotlin to 2.0.10 - Fix `InteropPointer` declaration - Fix warnings
-
Ivan Matkov authored
Fixes [SKIKO-761](https://youtrack.jetbrains.com/issue/SKIKO-761) SkikoAndroidSample crashes with skiko v0.7.68 Testing: run `SkikoAndroidSample`
-
Ivan Matkov authored
Also: - Update JDK in GitHub Actions to 21 - AGP in SkiaAndroidSample to 8.9.0 - Kotlin in SkiaAwtSample to 1.9.21 - macosx-version-min=10.15 (align to skia, there was a warning) - Various deprecation warnings in build scripts
-
- 08 Sep, 2025 1 commit
-
-
Shagen Ogandzhanian authored
Following changes introduced in this PR: * jsWasmMain and jsWasmTest sourcesets renamed to webMain and webTest (it causes less confusion, regarding the fact that we already have wasmJsMain, apart from that, this would be a standard name for this sourceset in webMain) * remove redunant resource processing (there's yet room for improvement though) * Simplify wasm task introduction * Remove flag for building js separately from wasm (this flag was a lie - we can not have separate js target)
-
- 05 Sep, 2025 1 commit
-
-
Alexander Maryanovsky authored
-