summaryrefslogtreecommitdiff
path: root/src/effect_sources.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/effect_sources.zig')
-rw-r--r--src/effect_sources.zig12
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);