code wiki / (root) / nx_authored_cast_artifact_gate_t55.nx

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}