code wiki / (root) / nx_ir_cast_identity_t206.nx

nx_ir_cast_identity_t206.nx source

↩ module page · 12 lines · 1712 B

1import "nx_wgsl.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)->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") 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 g<=0||w<=0||m[M_REFUSE]!=0||m[M_OVER]!=0{return 1};return 0 11} 12func main()->i64{let v:*i64=sir_new();shsrc_cast_vs(v);let vr:i64=iq_measure(v,STAGE_VERTEX,"canonical-cast-vertex");let f:*i64=sir_new();shsrc_cast_fs(f);let fr:i64=iq_measure(f,STAGE_FRAGMENT,"canonical-cast-fragment");return vr+fr}