render3d: a renderer that cannot draw says so and stops - LUDIC_HOME's leading ~ expanded (an unexpanded one left a run without shaders, logging 27 missing variants and drawing on), the SPIR-V manifest ends with E <count> and a cut or miscounted one is refused, and every such failure is a fault: r3d_open / r3d_load_step fail on it, r3d_fault() / r3d_fault_exit(code) for the game; tests/manifest_test

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Orkun ÇAKILKAYA 2026-09-29 22:12:39 +03:00
parent aac58ec6fa
commit c3fc896dea
13 changed files with 227 additions and 54 deletions

View file

@ -66,8 +66,10 @@ function gvk_program(render3d_st: mut Render3dState, p: int, key: string, spv_di
let parts = Text.split(key, "|")
var defs = ""
if len(parts) > 2 { defs = parts[2] }
# no manifest at all is one fault already said, not a line for every program
if render3d_st.gpu_variants == null or len(render3d_st.gpu_variants) == 0 { return false }
let v = gpu_variant_find_key(render3d_st, parts[0], parts[1], defs)
if v == null { print(`r3d: vulkan: no SPIR-V variant for {key}`); return false }
if v == null { gpu_variant_missing(render3d_st, key); return false }
for q in 0 .. len(parts) { free(parts[q]) }
free(parts)
let vpath = `{spv_dir}/{v.id}.vert.spv`