code wiki / (root) / nx_fragment_depth_gate_t192.nx

nx_fragment_depth_gate_t192.nx source

↩ module page · 53 lines · 2511 B

1import "nx_wgsl_depth_candidate_t192.nx" 2import "nx_gate_verdict.nx" 3func fd_emit(m:*i64,stage:i64,dialect:i64)->i64{ 4 let b:*u8=sys_mmap(WG_EMIT_CAP) 5 let tr:*i64=sys_mmap(WG_TRACE_CAP*8) as *i64 6 let tn:*i64=sys_mmap(8) as *i64 7 if dialect==1{return wgsl_emit_module(m,stage,b,WG_EMIT_CAP,tr,WG_TRACE_CAP,tn)} 8 return glsl_emit_module(m,stage,b,WG_EMIT_CAP,tr,WG_TRACE_CAP,tn) 9} 10func fd_case(mode:i64)->*i64{ 11 let m:*i64=sir_new() 12 sir_fragout(m,"fc" as *u8,T_V4F,0) 13 var name:*u8="main" 14 if mode==1{name="helper"} 15 let f:i64=sir_func(m,name,T_VOID) 16 let color:i64=sir_ctor(m,T_V4F) 17 sir_arg(m,color,sir_lit(m,"1.0" as *u8,T_F32)) 18 var depth:i64=sir_lit(m,"0.5" as *u8,T_F32) 19 if mode==2{depth=sir_lit(m,"1" as *u8,T_I32)} 20 let ret:i64=sir_return_depth(m,color,depth) 21 if mode==3{ 22 sir_stmt(m,f,sir_if(m,sir_lit(m,"true" as *u8,T_BOOL),ret,sir_return(m,color))) 23 }else{if mode==4{ 24 sir_stmt(m,f,sir_if(m,sir_lit(m,"true" as *u8,T_BOOL),ret,0)) 25 }else{sir_stmt(m,f,ret)}} 26 return m 27} 28func fd_dump(m:*i64,dialect:i64)->i64{ 29 let b:*u8=sys_mmap(WG_EMIT_CAP) 30 let tr:*i64=sys_mmap(WG_TRACE_CAP*8) as *i64 31 let tn:*i64=sys_mmap(8) as *i64 32 var n:i64=0 33 if dialect==1{n=wgsl_emit_module(m,STAGE_FRAGMENT,b,WG_EMIT_CAP,tr,WG_TRACE_CAP,tn)}else{n=glsl_emit_module(m,STAGE_FRAGMENT,b,WG_EMIT_CAP,tr,WG_TRACE_CAP,tn)} 34 if n<=0{return n} 35 if sys_write(1,b,n)!=n{return -1} 36 return n 37} 38func main()->i64{ 39 let c:*i64=gv_ctr() 40 gv_check("emit actual WGSL browser fixture",fd_dump(fd_case(0),1)>0,c) 41 gv_check("emit actual GLSL browser fixture",fd_dump(fd_case(0),0)>0,c) 42 gv_check("valid WGSL depth output",fd_emit(fd_case(0),STAGE_FRAGMENT,1)>0,c) 43 gv_check("valid GLSL depth output",fd_emit(fd_case(0),STAGE_FRAGMENT,0)>0,c) 44 gv_check("WGSL helper depth refused",fd_emit(fd_case(1),STAGE_FRAGMENT,1)<0,c) 45 gv_check("GLSL helper depth refused",fd_emit(fd_case(1),STAGE_FRAGMENT,0)<0,c) 46 gv_check("WGSL nonfloat depth refused",fd_emit(fd_case(2),STAGE_FRAGMENT,1)<0,c) 47 gv_check("GLSL nonfloat depth refused",fd_emit(fd_case(2),STAGE_FRAGMENT,0)<0,c) 48 gv_check("mixed return missing depth refused",fd_emit(fd_case(3),STAGE_FRAGMENT,1)<0,c) 49 gv_check("fallthrough missing depth refused",fd_emit(fd_case(4),STAGE_FRAGMENT,1)<0,c) 50 gv_check("vertex depth refused",fd_emit(fd_case(0),STAGE_VERTEX,1)<0,c) 51 gv_check("compute depth refused",fd_emit(fd_case(0),STAGE_COMPUTE,1)<0,c) 52 return gv_verdict("fragment-depth" as *u8,c,"typed dual-backend output and stage/path refusals; browser qualification still required" as *u8) 53}