nx_cast_static_canonical_gate_t335.nx source
↩ module page · 26 lines · 1370 B
1import "nx_wgsl.nx"
2import "nx_fsops_lib.nx"
3import "nx_gate_verdict.nx"
4func mn_emit(m:*i64,stage:i64,g:*u8,w:*u8,c:*i64)->i64{
5 let out:*u8=sys_mmap_try(WG_EMIT_CAP);let tr:*i64=sys_mmap_try(WG_TRACE_CAP*8) as *i64
6 var tn:i64=0
7 if (out as i64)<=0||(tr as i64)<=0{return 1}
8 let gn:i64=glsl_emit_module(m,stage,out,WG_EMIT_CAP,tr,WG_TRACE_CAP,&tn)
9 gv_check("native GLSL emits",gn>0&&m[M_REFUSE]==0,c)
10 if gn>0{gv_check("GLSL artifact retained",fsx_write(g,out,gn)==gn,c)}
11 tn=0;let wn:i64=wgsl_emit_module(m,stage,out,WG_EMIT_CAP,tr,WG_TRACE_CAP,&tn)
12 gv_check("native WGSL emits",wn>0&&m[M_REFUSE]==0,c)
13 if wn>0{gv_check("WGSL artifact retained",fsx_write(w,out,wn)==wn,c)}
14 gv_check("IR arena did not overflow",m[M_OVER]==0,c)
15 sys_munmap_direct(out,WG_EMIT_CAP);sys_munmap_direct(tr as *u8,WG_TRACE_CAP*8);return 0
16}
17func main(argc:i64,argv:*i64)->i64 {
18 if argc!=5{return 2}
19 let c:*i64=gv_ctr()
20 let v:*i64=sir_new();gv_check("shared vertex IR constructed",shsrc_cast_vs(v)>=0&&v[M_REFUSE]==0,c)
21 mn_emit(v,STAGE_VERTEX,argv[1] as *u8,argv[2] as *u8,c)
22 let f:*i64=sir_new();gv_check("shared fragment IR constructed",shsrc_cast_fs(f)>=0&&f[M_REFUSE]==0,c)
23 f[M_BINDGROUP]=1
24 mn_emit(f,STAGE_FRAGMENT,argv[3] as *u8,argv[4] as *u8,c)
25 return gv_verdict("STATIC-SHARED-SHADER",c,"Native dual-backend emission; actual GPU compilation and draw remain separate")
26}