nx_uv_quality_gate_t282.nx source
↩ module page · 31 lines · 4793 B
1import "nx_uv_quality_packet_candidate_t282.nx"
2import "nx_gate_verdict.nx"
3func qg_print(label:*u8,q:*UvQuality)->i64{gv_puts(label);gv_puts(" stage=");gv_num(q.stage);gv_puts(" triangles=");gv_num(q.triangles);gv_puts(" positive=");gv_num(q.positive);gv_puts(" negative=");gv_num(q.negative);gv_puts(" collapsed=");gv_num(q.collapsed);gv_puts(" unknown=");gv_num(q.unknown);var max:f64=q.maxAnisotropy;let bits:*i64=(&max) as *i64;gv_puts(" maxAnisotropyF64Bits=");gv_num(bits[0]);gv_puts(" worstSourceTriangle=");gv_num(q.worstTriangle);gv_puts("\n");return 0}
4func main(argc:i64,argv:*i64)->i64{
5 if argc!=5{return 2};let sizes:*i64=sys_mmap_try(32) as *i64;let src:*u8=sys_read_file(argv[1] as *u8,sizes);let base:*u8=sys_read_file(argv[2] as *u8,((sizes as i64)+8) as *i64);let candidate:*u8=sys_read_file(argv[3] as *u8,((sizes as i64)+16) as *i64);let control:*u8=sys_read_file(argv[4] as *u8,((sizes as i64)+24) as *i64)
6 if src==(0 as *u8){return 3};if base==(0 as *u8){return 3};if candidate==(0 as *u8){return 3};if control==(0 as *u8){return 3}
7 let qb:*UvQuality=sys_mmap_try(3*__size_of(UvQuality)) as *UvQuality;let qc:*UvQuality=sys_mmap_try(3*__size_of(UvQuality)) as *UvQuality;let qt:*UvQuality=sys_mmap_try(3*__size_of(UvQuality)) as *UvQuality
8 let policy:*UvQualityPolicy=sys_mmap_try(__size_of(UvQualityPolicy)) as *UvQualityPolicy;let ctr:*i64=gv_ctr()
9 gv_check_eq("actual incumbent source-bound measurement",uvq_packet(src,sizes[0],base,sizes[1],qb),UVQ_PASS,ctr)
10 gv_check_eq("actual refinement source-bound measurement",uvq_packet(src,sizes[0],candidate,sizes[2],qc),UVQ_PASS,ctr)
11 gv_check_eq("actual control source-bound measurement",uvq_packet(src,sizes[0],control,sizes[3],qt),UVQ_PASS,ctr)
12 var stage:i64=0;while stage<3{qg_print("INCUMBENT",uvq_at(qb,stage));qg_print("REFINEMENT",uvq_at(qc,stage));qg_print("CONTROL",uvq_at(qt,stage));stage=stage+1}
13 gv_check_eq("incumbent raw all positive",qb.positive,7373,ctr);gv_check_eq("incumbent work collapse",uvq_at(qb,1).collapsed,8,ctr);gv_check_eq("incumbent packed collapse",uvq_at(qb,2).collapsed,208,ctr)
14 gv_check_eq("refinement raw orientation unresolved",qc.unknown,0,ctr);gv_check_eq("refinement packed collapse",uvq_at(qc,2).collapsed,64,ctr);gv_check_eq("refinement packed reverse",uvq_at(qc,2).negative,6,ctr)
15 policy.expectedTriangles=qb.triangles;policy.expectedOrientation=1;policy.maxCollapsed=0;policy.maxReversed=0;policy.maxAnisotropy=qb.maxAnisotropy
16 gv_check_eq("incumbent raw qualifies own measured maximum",uvq_qualify(qb,policy),UVQ_PASS,ctr)
17 gv_check_eq("reject refinement worsening incumbent maximum",uvq_qualify(qc,policy),UVQ_FAIL,ctr)
18 gv_check_eq("reject incumbent failed packed coverage",uvq_qualify(uvq_at(qb,2),policy),UVQ_FAIL,ctr)
19 policy.expectedTriangles=qt.triangles;policy.maxAnisotropy=qt.maxAnisotropy;stage=1;while stage<3{let m:f64=uvq_at(qt,stage).maxAnisotropy;if m>policy.maxAnisotropy{policy.maxAnisotropy=m};stage=stage+1}
20 stage=0;while stage<3{gv_check_eq("control all stages qualify measured policy",uvq_qualify(uvq_at(qt,stage),policy),UVQ_PASS,ctr);stage=stage+1}
21 policy.expectedTriangles=policy.expectedTriangles+1;gv_check_eq("missing coverage stays unknown",uvq_qualify(qt,policy),UVQ_UNKNOWN,ctr);policy.maxAnisotropy=0.0;gv_check_eq("invalid quality policy rejected",uvq_qualify(qt,policy),UVQ_INVALID,ctr)
22 gv_check_eq("truncated packet refused",uvq_packet(src,sizes[0],base,sizes[1]-8,qt),UVQ_INVALID,ctr);gv_check_eq("failure clears stale measurement",qt.unknown,1,ctr)
23 let old:u8=base[224];base[224]=old^(1 as u8);gv_check_eq("source identity mismatch refused",uvq_packet(src,sizes[0],base,sizes[1],qt),UVQ_INVALID,ctr);base[224]=old
24 let xyz:*f64=sys_mmap_try(9*8) as *f64;let uv:*f64=sys_mmap_try(6*8) as *f64;xyz[3]=1.0;xyz[7]=1.0
25 uvq_reset(qt,0);gv_check_eq("ambiguous raw collapse stays unknown",uvq_triangle(qt,xyz,uv,0,0),UVQ_UNKNOWN,ctr)
26 uvq_reset(qt,1);gv_check_eq("integer collapse measured exactly",uvq_triangle(qt,xyz,uv,1,0),UVQ_PASS,ctr);gv_check_eq("integer collapsed count",qt.collapsed,1,ctr)
27 uv[2]=0.5;uv[5]=1.0;uvq_reset(qt,1);gv_check_eq("fractional integer input not trusted",uvq_triangle(qt,xyz,uv,1,0),UVQ_UNKNOWN,ctr)
28 uv[2]=3000000000.0;uvq_reset(qt,1);gv_check_eq("uncertified determinant range stays unknown",uvq_triangle(qt,xyz,uv,1,0),UVQ_UNKNOWN,ctr)
29 sys_munmap_direct(xyz as *u8,9*8);sys_munmap_direct(uv as *u8,6*8);sys_munmap_direct(qb as *u8,3*__size_of(UvQuality));sys_munmap_direct(qc as *u8,3*__size_of(UvQuality));sys_munmap_direct(qt as *u8,3*__size_of(UvQuality));sys_munmap_direct(policy as *u8,__size_of(UvQualityPolicy));sys_munmap_direct(sizes as *u8,32)
30 return gv_verdict("UV-QUALITY-T282",ctr,"Native stage-specific worst-case evaluator; atlas generation and global overlap are not qualified")
31}