nx_cast_projection_integration_gate_t290.nx source
↩ module page · 46 lines · 2940 B
1import "nx_wgsl.nx"
2import "nx_gate_verdict.nx"
3func cpi_contains(b:*u8,n:i64,s:*u8)->i64{
4 let k:i64=sir_slen(s);var i:i64=0
5 while i+k<=n{var j:i64=0;while j<k{if b[i+j]!=s[j]{break};j=j+1};if j==k{return 1};i=i+1}
6 return 0
7}
8func main()->i64{
9 let c:*i64=gv_ctr()
10 let m:*i64=sir_new()
11 gv_check("never configured direct caller retained",shsrc_cast_vs(m)==0,c)
12 gv_check("legacy recipe near",csp_near==80,c)
13 gv_check("legacy recipe denominator",csp_scale==1000,c)
14 let out:*u8=sys_mmap(WG_EMIT_CAP);let trace:*i64=sys_mmap(WG_TRACE_CAP*8) as *i64
15 let tn:*i64=sys_mmap(8) as *i64
16 let n:i64=glsl_emit_module(m,STAGE_VERTEX,out,WG_EMIT_CAP,trace,WG_TRACE_CAP,tn)
17 gv_check("legacy shader literal",n>0&&cpi_contains(out,n,"300.08")==1,c)
18 gv_check("nondefault configuration",csp_configure(125,10000,126,1000)==1,c)
19 let alt:*i64=sir_new()
20 gv_check("nondefault module",shsrc_cast_vs(alt)==0,c)
21 let an:i64=glsl_emit_module(alt,STAGE_VERTEX,out,WG_EMIT_CAP,trace,WG_TRACE_CAP,tn)
22 gv_check("nondefault GLSL guard",an>0&&cpi_contains(out,an,"float zv=max(dot(rel,fw),0.126);")==1,c)
23 gv_check("nondefault GLSL sum",cpi_contains(out,an,"10.125")==1,c)
24 gv_check("nondefault GLSL difference",cpi_contains(out,an,"9.875")==1,c)
25 gv_check("nondefault GLSL product",cpi_contains(out,an,"((zv*(10.125/9.875))-(2.5/9.875))")==1,c)
26 let wn:i64=wgsl_emit_module(alt,STAGE_VERTEX,out,WG_EMIT_CAP,trace,WG_TRACE_CAP,tn)
27 gv_check("nondefault WGSL sum",wn>0&&cpi_contains(out,wn,"10.125")==1,c)
28 gv_check("nondefault WGSL difference",cpi_contains(out,wn,"9.875")==1,c)
29 gv_check("nondefault WGSL guard expression",cpi_contains(out,wn,"max(dot(rel,fw),0.126)")==1,c)
30 gv_check("nondefault WGSL projection expression",cpi_contains(out,wn,"((zv*(10.125/9.875))-(2.5/9.875))")==1,c)
31 let mn:i64=csp_record(out,WG_EMIT_CAP)
32 gv_check("matching nondefault metadata",mn>0&&cpi_contains(out,mn,"cast_projection_near_num=125\n")==1,c)
33 gv_check("matching nondefault nearQ8",cpi_contains(out,mn,"cast_projection_near_q8=32\n")==1,c)
34 gv_check("invalid explicit config",csp_configure(0,10000,126,1000)==0,c)
35 let bad:*i64=sir_new()
36 gv_check("invalid direct caller refused",shsrc_cast_vs(bad)<0,c)
37 gv_check("invalid does not reset legacy",csp_ready()==0,c)
38 gv_check("invalid demo refused before output",wg_cast_demo(0 as *u8,0 as *u8)==3,c)
39 gv_check("invalid module emitter refused",glsl_emit_module(bad,STAGE_VERTEX,out,WG_EMIT_CAP,trace,WG_TRACE_CAP,tn)<0,c)
40 gv_check("decimal positive",csp_positive_arg("125")==125,c)
41 gv_check("decimal rejects suffix",csp_positive_arg("125x")<0,c)
42 gv_check("decimal rejects overflow",csp_positive_arg("9223372036854775808")<0,c)
43 gv_check("decimal rejects empty",csp_positive_arg("")<0,c)
44 gv_check("decimal rejects negative",csp_positive_arg("-1")<0,c)
45 return gv_verdict("CANONICAL-PROJECTION",c,"direct compatibility, nondefault emitted math/metadata and persistent explicit refusal; no forced allocator failure")
46}