code wiki / (root) / nx_cast_aperture_artifact_group_gate_t207.nx

nx_cast_aperture_artifact_group_gate_t207.nx source

↩ module page · 14 lines · 2328 B

1import "nx_wgsl_cast_material_t181.nx" 2import "nx_sha256.nx" 3func iq_sha(b:*u8,n:i64)->i64{if n<1{return 0};let digest:*u8=sys_mmap(32);let hex:*u8=sys_mmap(65);sha256_digest(b,n,digest);let digits:*u8="0123456789abcdef";var i:i64=0;while i<32{let v:i64=digest[i] as i64;hex[i*2]=digits[v/16];hex[i*2+1]=digits[v%16];i=i+1};hex[64]=0 as u8;fsx_puts(" SHA256=");fsx_puts(hex);return 0} 4import "nx_fs_create_lib.nx" 5func iq_measure(m:*i64,stage:i64,label:*u8,gpath:*u8,wpath:*u8)->i64{ 6 fsx_puts("RESOURCE label=");fsx_puts(label);fsx_puts(" nodes=");fsx_putn(m[M_NCOUNT]);fsx_puts(" node_capacity=");fsx_putn(SIR_MAXNODE);fsx_puts(" pool_bytes=");fsx_putn(m[M_POOLUSED]);fsx_puts(" pool_capacity=");fsx_putn(SIR_POOLCAP);fsx_puts(" refused=");fsx_putn(m[M_REFUSE]);fsx_puts(" overflow=");fsx_putn(m[M_OVER]);fsx_puts("\n") 7 let a:*u8=sys_mmap(WG_EMIT_CAP);let trace:*i64=sys_mmap(WG_TRACE_CAP*8) as *i64;let count:*i64=sys_mmap(8) as *i64;count[0]=0 8 let g:i64=glsl_emit_module(m,stage,a,WG_EMIT_CAP,trace,WG_TRACE_CAP,count);fsx_puts("GLSL bytes=");fsx_putn(g);fsx_puts(" trace=");fsx_putn(count[0]);iq_sha(a,g);fsx_puts("\n");if iq_save(gpath,a,g)==0{return 1} 9 count[0]=0;let w:i64=wgsl_emit_module(m,stage,a,WG_EMIT_CAP,trace,WG_TRACE_CAP,count);fsx_puts("WGSL bytes=");fsx_putn(w);fsx_puts(" trace=");fsx_putn(count[0]);iq_sha(a,w);fsx_puts(" post_nodes=");fsx_putn(m[M_NCOUNT]);fsx_puts(" refused=");fsx_putn(m[M_REFUSE]);fsx_puts(" overflow=");fsx_putn(m[M_OVER]);fsx_puts("\n") 10 if iq_save(wpath,a,w)==0{return 1};if g<=0||w<=0||m[M_REFUSE]!=0||m[M_OVER]!=0{return 1};return 0 11} 12 13func iq_save(path:*u8,b:*u8,n:i64)->i64{if n<1{return 0};let rc:i64=fxc_create(path,b,n);if rc==n{return 1};if rc!=FXC_EXISTS{return 0};let ln:*i64=sys_mmap(8) as *i64;let old:*u8=sys_read_file(path,ln);if (old as i64)==0||ln[0]!=n{return 0};var i:i64=0;while i<n{if old[i]!=b[i]{return 0};i=i+1};return 1} 14func main()->i64{let v:*i64=sir_new();shsrc_cast_vs(v);let a:i64=iq_measure(v,STAGE_VERTEX,"eye-aligned-cast-vertex","/tmp/eye-aligned-cast-vertex-t207.glsl","/tmp/eye-aligned-cast-vertex-t207.wgsl");let f:*i64=sir_new();shsrc_cast_fs(f);f[M_BINDGROUP]=1;let b:i64=iq_measure(f,STAGE_FRAGMENT,"eye-aligned-cast-fragment","/tmp/eye-aligned-cast-fragment-group1-t207.glsl","/tmp/eye-aligned-cast-fragment-group1-t207.wgsl");return a+b}