code wiki / (root) / nx_shader_equivalence_gate_t290.nx

nx_shader_equivalence_gate_t290.nx source

↩ module page · 30 lines · 1749 B

1// Exact-output regression witness using the shared owned capture path. 2// Inputs pin both producers; equality does not establish physical rendering accuracy. 3import "nx_game_page_integrated_t73.nx" 4import "nx_gate_verdict.nx" 5func se_extent(path:*u8)->i64{ 6 let fd:i64=sys_openat_rd(path);if fd<0{return -1} 7 let n:i64=sys_lseek(fd,0,2);sys_close(fd);return n 8} 9func se_retain(path:*u8,b:*NxBufOwned)->i64{ 10 var n:i64=0;let prior:*u8=sys_read_file(path,&n) 11 if (prior as i64)>0{let same:i64=gpa_same(prior,n,b.buf,b.len);sys_free_file(prior,n);return same} 12 return fxc_create(path,b.buf,b.len)==b.len 13} 14func main(argc:i64,argv:*i64)->i64{ 15 if argc!=7{gpe_puts("usage: reference reference-sha candidate candidate-sha command capture-path\n");return 2} 16 let c:*i64=gv_ctr() 17 let a:*NxBufOwned=rk_owned_new();let b:*NxBufOwned=rk_owned_new() 18 if (a as i64)<=0||(b as i64)<=0{return 3} 19 let an:i64=se_extent(argv[1] as *u8);let bn:i64=se_extent(argv[3] as *u8) 20 let ar:i64=gsb_capture_selected_owned(argv[1] as *u8,argv[2] as *u8,an,argv[5] as *u8,a,RK_WGSL_TMO_MS,0) 21 let br:i64=gsb_capture_selected_owned(argv[3] as *u8,argv[4] as *u8,bn,argv[5] as *u8,b,RK_WGSL_TMO_MS,0) 22 gv_check("both pinned producers fully captured",ar==0&&br==0&&a.len>0&&b.len>0,c) 23 var same:i64=0 24 if ar==0&&br==0&&a.len>0&&b.len>0{same=gpa_same(a.buf,a.len,b.buf,b.len)} 25 gv_check("entire emitted output byte-identical",same==1,c) 26 if br==0&&b.len>0{gv_check("candidate evidence retained including mismatches",se_retain(argv[6] as *u8,b)==1,c)} 27 gv_kv("reference_bytes",a.len);gv_kv("candidate_bytes",b.len) 28 rk_owned_close(a);rk_owned_close(b) 29 return gv_verdict("SHADER-EXACT-OUTPUT",c,"pinned command output only; independent GPU witnesses remain separately required") 30}