nx_authored_cast_artifact_gate_t55.nx source
↩ module page · 27 lines · 1508 B
1import "nx_wgsl_authored_t55.nx"
2func am_write(path:*u8,buf:*u8,n:i64)->i64{
3 if n<=0{return 3}
4 let length:*i64=sys_mmap(8) as *i64;let prior:*u8=sys_read_file(path,length)
5 if (prior as i64)>0{if length[0]!=n{return 4};var q:i64=0;while q<n{if prior[q]!=buf[q]{return 4};q=q+1};return 0}
6 let fd:i64=sys_openat_wr(path,WG_MODE_0644);if fd<0{return 5}
7 let written:i64=sys_write(fd,buf,n);sys_close(fd);if written!=n{return 6}
8 let got:*u8=sys_read_file(path,length);if (got as i64)<=0||length[0]!=n{return 7}
9 var i:i64=0;while i<n{if got[i]!=buf[i]{return 8};i=i+1};return 0
10}
11func main()->i64{
12 let m:*i64=sir_new();shsrc_cast_fs(m);m[M_BINDGROUP]=1
13 let gl:*u8=sys_mmap(WG_EMIT_CAP);let wg:*u8=sys_mmap(WG_EMIT_CAP)
14 let tr:*i64=sys_mmap(WG_TRACE_CAP*8) as *i64;let tn:*i64=sys_mmap(16) as *i64
15 let gn:i64=glsl_emit_module(m,STAGE_FRAGMENT,gl,WG_EMIT_CAP,tr,WG_TRACE_CAP,tn)
16 let m2:*i64=sir_new();shsrc_cast_fs(m2);m2[M_BINDGROUP]=1
17 let wn:i64=wgsl_emit_module(m2,STAGE_FRAGMENT,wg,WG_EMIT_CAP,tr,WG_TRACE_CAP,tn)
18 if m[M_OVER]!=0||m2[M_OVER]!=0||gn<=0||wn<=0{return 9}
19 if am_write("/tmp/nx_cast_authored_t55_fs.glsl",gl,gn)!=0{return 10}
20 if am_write("/tmp/nx_cast_authored_t55_fs.wgsl",wg,wn)!=0{return 11}
21 let layout:*u8=sys_mmap(WG_EMIT_CAP)
22 let ln:i64=wg_uniform_layout_k(m2,layout,0,WG_EMIT_CAP,"castf_struct_size=")
23 if ln<=0{return 12}
24 sys_write(1,layout,ln)
25 wg_puts("\nPASS regenerated authored fragment GLSL/WGSL saved and readback identical; GPU execution unqualified\n")
26 return 0
27}