summaryrefslogtreecommitdiff
path: root/src/fonts.zig
diff options
context:
space:
mode:
authorGabriel Schneider <[email protected]>2026-08-12 16:33:14 -0300
committerGabriel Schneider <[email protected]>2026-08-12 20:22:18 -0300
commit9280c597b000eed661fd98793e182fdcb640f6cd (patch)
tree1b8e928c052c46ceb9a58c83256d5fb4e11e361a /src/fonts.zig
parentbc89f57cb576e23a58572ec35f96db068367f1b4 (diff)
downloadpardes-9280c597b000eed661fd98793e182fdcb640f6cd.tar.gz
pardes-9280c597b000eed661fd98793e182fdcb640f6cd.zip
shaders: -Dprebuilt-shaders, so a gui build needs no Vulkan SDK
glslc is the one build input that wants a tool a stock machine does not have, and it is also the input that changes least often: eight GLSL files that have outlived several rewrites of everything around them. Asking every machine that wants to run the SDL shell for shaderc is the wrong trade. The SPIR-V is now COMMITTED, under shaders/prebuilt/, and -Dprebuilt-shaders embeds that copy instead of shelling out. The default stays the honest one -- compile the shaders that are actually in the tree -- because the flag trades a dependency for a freshness problem: with it on, the .glsl sources are not build inputs at all, so editing one changes nothing. `zig build shaders` is the other half, and it is deliberately independent of -Dplatform: it recompiles every shader and writes the result back into the tracked directory, so whoever changes a shader refreshes the cache on a machine that has the compiler and commits the diff. `jj diff shaders/prebuilt` after it is the freshness check -- empty means the cache was already current. The shader list is also spelled once now (gui_shaders): the eight embeds, the eight glslc runs and the refresh step all read it, so adding a shader is a name there plus the @embedFile in gui.zig, not three edits in two places. Verified: -Dplatform=gui -Dprebuilt-shaders builds with glslc absent from PATH, and image-harness passes on that binary -- real SDL GPU pipelines built from the committed SPIR-V, 512 source pixels read back. The default gui build still runs the eight glslc steps; tty runs none. The committed bytes are identical to a fresh glslc run, and `zig build shaders` is idempotent.
Diffstat (limited to 'src/fonts.zig')
-rw-r--r--src/fonts.zig11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/fonts.zig b/src/fonts.zig
index e4744daf..1e82956e 100644
--- a/src/fonts.zig
+++ b/src/fonts.zig
@@ -70,6 +70,17 @@ pub const Font = struct { name: []const u8, path: []const u8 };
pub var want_buf: [4096]u8 = undefined;
pub var want: ?[]const u8 = null;
+/// ...and the same request as a NAME, for the Debug overlay to show. A slice
+/// of `want_buf` rather than a second buffer: the stem of the path IS the name
+/// the picker listed, and the only writer of one is the writer of the other.
+///
+/// What was CHOSEN, not what is worn: the shell may turn a file down (gui.zig
+/// keeps the face that works when FreeType refuses one) and it alone knows
+/// what it booted in — embedded Adwaita Mono under SDL, the system monospace
+/// face under AppKit. Empty means nothing has been chosen and the shell is
+/// still wearing whichever of those it is.
+pub var chosen: []const u8 = "";
+
/// Optional fallback faces, in preference order after the always-available
/// embedded Adwaita Mono face. Keep text faces before symbol faces so ordinary
/// letters retain terminal-like metrics; DejaVu Sans is the final broad,