[CoreImage] OS 26 breaks Metal kernels for CIFilters

I maintain a couple of CoreImage libraries that provide custom Metal kernel backed CIFilters. In iOS/iPadOS 26, the CIColorKernel.apply() method invoked in the CIFilter subclass fails to add the coreimage::destination parameter to the Metal function call:

-[CIColorKernel applyWithExtent:arguments:options:] argument count mismatch for kernel 'FractalNoise3D', expected 13 but saw 12.

I've compiled the code with Xcode 26 and deployed to iOS 18 devices without any breakage, so this is definitely an iOS problem, not an Xcode problem.

Library here: https://github.com/JoshuaSullivan/SimplexNoiseFilter

Feedback ID: FB17874311

Update: Based on some feedback from the Apple team, I tried recompiling the .metallib with the Xcode 26 toolchain. It resulted in a new lib that was about 80% larger (7k -> 12k), but worked with both my iOS 26 and iOS 18 devices. I haven't had a chance to test the new lib on older devices yet, but this seems like a solution for people using custom Metal kernels.

I'm holding off marking this as answered until I hear back from Apple if they're going to be able to fix compatibility with "old" .metallib kernels.

[CoreImage] OS 26 breaks Metal kernels for CIFilters
 
 
Q