diff options
Diffstat (limited to 'src/effect_sources.zig')
| -rw-r--r-- | src/effect_sources.zig | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/effect_sources.zig b/src/effect_sources.zig index 12f8dd46..d4f0e38b 100644 --- a/src/effect_sources.zig +++ b/src/effect_sources.zig @@ -250,9 +250,15 @@ test "shader source provenance is GUI-only and follows the build input" { test "mac EffectCode includes the runtime panel and scene wiring" { if (comptime backend == .macos) { - try std.testing.expect(std.mem.indexOf(u8, mac_scene, "extern \"C\" float4 pardesPanelClear") != null); - try std.testing.expect(std.mem.indexOf(u8, mac_scene, "extern \"C\" float4 pardesPanel") != null); - try std.testing.expect(std.mem.indexOf(u8, mac_scene, "extern \"C\" float4 pardesScene") != null); + // `extern "C" [[stitchable]]` is what the runtime compile requires: + // CIKernel.kernels(withMetalString:) looks for stitchable functions and + // rejects the whole source without them, so ScenePostprocessor.init? + // returns nil and every scene effect and panel transition silently + // degrades to the plain CoreText draw. The spelling is pinned on + // purpose; relaxing these three matches is how that comes back. + try std.testing.expect(std.mem.indexOf(u8, mac_scene, "extern \"C\" [[stitchable]] float4 pardesPanelClear") != null); + try std.testing.expect(std.mem.indexOf(u8, mac_scene, "extern \"C\" [[stitchable]] float4 pardesPanel") != null); + try std.testing.expect(std.mem.indexOf(u8, mac_scene, "extern \"C\" [[stitchable]] float4 pardesScene") != null); try std.testing.expect(std.mem.indexOf(u8, mac_scene, "already composed in Pardes core") != null); try std.testing.expect(std.mem.indexOf(u8, mac_view, "hideCursor: !tracks.isEmpty") != null); try std.testing.expect(std.mem.indexOf(u8, mac_postprocessor, "panelClearKernel.apply") != null); |
