nx_texture_mip_gate_t218.nx source
↩ module page · 15 lines · 1297 B
1import "nx_wgsl.nx"
2import "nx_tex_sample_mip_candidate_t218.nx"
3import "nx_gate_verdict.nx"
4func mip218_emit(m:*i64,stage:i64,label:*u8,c:*i64)->i64{
5 let out:*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
6 let g:i64=glsl_emit_module(m,stage,out,WG_EMIT_CAP,trace,WG_TRACE_CAP,count);gv_check("GLSL emission",g>0,c);wg_puts(label);wg_puts("_GLSL_BEGIN\n");if g>0{sys_write(1,out,g)}wg_puts("\nEND_SHADER\n")
7 count[0]=0;let w:i64=wgsl_emit_module(m,stage,out,WG_EMIT_CAP,trace,WG_TRACE_CAP,count);gv_check("WGSL emission",w>0,c);wg_puts(label);wg_puts("_WGSL_BEGIN\n");if w>0{sys_write(1,out,w)}wg_puts("\nEND_SHADER\n")
8 gv_check("no IR refusal",sir_refused(m)==0,c);sys_munmap(out,WG_EMIT_CAP);sys_munmap(trace as *u8,WG_TRACE_CAP*8);return 0
9}
10func main()->i64{
11 let c:*i64=gv_ctr();let v:*i64=sir_new();shsrc_fullscreen_tri(v);mip218_emit(v,STAGE_VERTEX,"MIP_VERTEX",c)
12 let f:*i64=nx_txs_mip_fragment_v1();mip218_emit(f,STAGE_FRAGMENT,"MIP_FRAGMENT",c)
13 let out:*u8=sys_mmap(WG_EMIT_CAP);let n:i64=wg_uniform_layout(f,out,0,WG_EMIT_CAP);gv_check("uniform layout",n>0,c);if n>0{wg_puts(out)}
14 return gv_verdict("texture-mip-emission",c,"native area mip builder; actual GPU pixels and alpha coverage remain separate")
15}