diff --git a/packages/cultmath/tools/device/gen.py b/packages/cultmath/tools/device/gen.py index 4dfd70ca..62632beb 100644 --- a/packages/cultmath/tools/device/gen.py +++ b/packages/cultmath/tools/device/gen.py @@ -67,6 +67,13 @@ def write(kind, glsl, value): return {'f': 'asuint(%s)', 'i': 'asuint(%s)', 'u': '%s'}[kind] % value +def hlsl_type(t): + m = GLSL_VEC.match(t) + if m: + return {'': 'float', 'i': 'int', 'u': 'uint'}[m.group(1)] + m.group(2) + return 'float3x3' if t == 'mat3' else t + + def body(sig, n, win, wout, defs, glsl): m = re.fullmatch(r'(\w+)\s+(\w+)\((.*)\)', sig) ret, name, params = m.group(1), m.group(2), [p.strip() for p in m.group(3).split(',') if p.strip()] diff --git a/packages/cultmath/tools/device/vkrun.c b/packages/cultmath/tools/device/vkrun.c index 6ba6a336..0df21d8d 100644 --- a/packages/cultmath/tools/device/vkrun.c +++ b/packages/cultmath/tools/device/vkrun.c @@ -10,7 +10,7 @@ static void *slurp(const char *p, size_t *n) { FILE *f = fopen(p, "rb"); if (!f) { perror(p); exit(2); } fseek(f, 0, SEEK_END); *n = ftell(f); fseek(f, 0, SEEK_SET); - void *b = malloc(*n ? *n : 4); fread(b, 1, *n, f); fclose(f); return b; + void *b = malloc(*n ? *n : 4); if (fread(b, 1, *n, f) != *n) exit(2); fclose(f); return b; } int main(int argc, char **argv) {