kool icon indicating copy to clipboard operation
kool copied to clipboard

When will kool support Android 16 KB page size?

Open mohammadd-dev opened this issue 2 months ago • 4 comments

APK app-debug.apk is not compatible with 16 KB devices. Some libraries have LOAD segments not aligned at 16 KB boundaries: lib/arm64-v8a/libkoolandroidnative.so

mohammadd-dev avatar Nov 28 '25 07:11 mohammadd-dev

Which version are you using? v0.18.0 or are you building kool from sources? Because when built from sources it should already do 16KB page size.

fabmax avatar Nov 28 '25 09:11 fabmax

Run the Android sample from kool-templates on my mobile, which has Android 16.

mohammadd-dev avatar Nov 28 '25 10:11 mohammadd-dev

Ah yes. Next release will fix that. Should be coming soon

fabmax avatar Nov 28 '25 12:11 fabmax

Thank you. And some 3D model like https://sketchfab.com/3d-models/adam-head-a7d347b738c041579a8790f539fe0d8f get OOM error

AssetLoader.loadImage2d de.fabmax.kool.demo                  D  f:51  Loaded models/adam/textures/Ground_SG_baseColor.png (RGBA, 1024x1024, 2.175763998s)
AssetLoader.loadImage2d de.fabmax.kool.demo                  E  f:59  Failed loading models/adam/textures/Windows_SG_normal.png: java.lang.OutOfMemoryError: Failed to allocate a 16777232 byte allocation with 16569712 free bytes and 15MB until OOM, target footprint 268435456, growth limit 268435456
AssetLoader.loadImage2d de.fabmax.kool.demo                  D  f:147  Loaded models/adam/textures/Interior_SG_baseColor.jpeg (RGBA, 2048x2048, 4.772767843s)
AssetLoader.loadImage2d de.fabmax.kool.demo                  D  f:155  Loaded models/adam/textures/Body_SG1_metallicRoughness.png (RGBA, 2048x2048, 4.996633535s)
AssetLoader.loadImage2d de.fabmax.kool.demo                  D  f:157  Loaded models/adam/textures/Interior_SG_normal.jpeg (RGBA, 2048x2048, 5.039625496s)
AssetLoader.loadImage2d de.fabmax.kool.demo                  D  f:159  Loaded models/adam/textures/Body_SG1_emissive.jpeg (RGBA, 2048x2048, 5.123472727s)
AssetLoader.loadImage2d de.fabmax.kool.demo                  D  f:172  Loaded models/adam/textures/Body_SG1_baseColor.jpeg (RGBA, 2048x2048, 5.259681227s)
AssetLoader.loadImage2d de.fabmax.kool.demo                  D  f:174  Loaded models/adam/textures/Interior_SG_metallicRoughness.png (RGBA, 2048x2048, 5.339804919s)
AssetLoader.loadImage2d de.fabmax.kool.demo                  D  f:177  Loaded models/adam/textures/Body_SG1_normal.jpeg (RGBA, 2048x2048, 5.407320457s)
    private suspend fun Scene.loadAdamHead(ibl: EnvironmentMap) {

        val materialCfg = GltfMaterialConfig(
            environmentMap = ibl,
        )

        val modelCfg = GltfLoadConfig(
            materialConfig = materialCfg,
        )

        val model = Assets.loadGltfModel("models/adam/scene.gltf", modelCfg)
            .getOrThrow()

        val mesh = model.meshes.values.first()
        val bounds = mesh.geometry.bounds

        mesh.transform.translate(bounds.center * -1f)

        mesh.shader = KslPbrShader {
            enableImageBasedLighting(ibl)
        }

        model.onUpdate {
            transform.rotate(20f.deg * Time.deltaT, Vec3f.Y_AXIS)
        }


        addNode(model)
    }

mohammadd-dev avatar Nov 28 '25 15:11 mohammadd-dev

I'm gonna close this now because latest release v0.19.0 uses 16kB alignment

fabmax avatar Jan 11 '26 12:01 fabmax