code wiki / _hdl_build / nx_frame_budget_gate.nx

nx_frame_budget_gate.nx source

↩ module page · 61 lines · 3729 B

1// nx_frame_budget_gate.nx -- proves P3 floor-device budget end-to-end: same 20-tri scene as nx_cull_lod, 2// run through culling to get real work-units, then checked against a FLOOR-DEVICE frame budget (30fps, 3// slow 500us/work-unit, 5000us sim overhead). Brute-force (80 units) BLOWS the budget; culled+LOD (24 4// units) FITS with headroom. NEG-CONTROL: an over-heavy workload must NOT fit (fb_fits not always 1). 5// GREEN only if all hold. license_tier: ORIGINAL expect_exit: 0 6import "nx_syscalls.nx" 7import "nx_cull_lod.nx" 8import "nx_frame_budget.nx" 9 10func bw(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} sys_write(1,s,n); return 0 } 11func bn(v: i64) -> i64 { let bb: *u8=sys_mmap(28); var m: i64=v; if m<0{m=0-m;sys_write(1,"-" as *u8,1)} let t: *u8=sys_mmap(28); var k: i64=0; if m==0{t[0]=48 as u8;k=1} while m>0{t[k]=(48+(m%10)) as u8;m=m/10;k=k+1} var i: i64=0; while i<k{bb[i]=t[k-1-i];i=i+1} sys_write(1,bb,k); return 0 } 12 13func main() -> i64 { 14 let W: i64 = 100 15 let FAR: i64 = 100 16 let MID: i64 = 50 17 let T: i64 = 20 18 let nz: *i64 = sys_mmap(8 * 24) as *i64 19 let dist: *i64 = sys_mmap(8 * 24) as *i64 20 let sx: *i64 = sys_mmap(8 * 24) as *i64 21 var i: i64 = 0 22 while i < T { 23 if i < 4 { nz[i]=1; dist[i]=10; sx[i]=50 } 24 else { if i < 8 { nz[i]=1; dist[i]=60; sx[i]=50 } 25 else { if i < 12{ nz[i]=1; dist[i]=200; sx[i]=50 } 26 else { if i < 16{ nz[i]=0 - 1; dist[i]=10; sx[i]=50 } 27 else { nz[i]=1; dist[i]=10; sx[i]=0 - 5 } } } } 28 i = i + 1 29 } 30 31 let work: i64 = cl_work(nz, dist, sx, T, FAR, W, MID) // culled+LOD = 24 32 let brute: i64 = cl_brute(T) // 80 33 34 // FLOOR DEVICE profile: 30 fps target, 500us per render work-unit, 5000us sim overhead 35 let FPS: i64 = 30 36 let PUC: i64 = 500 37 let OVR: i64 = 5000 38 let budget: i64 = fb_budget_us(FPS) // 33333 us 39 let brute_cost: i64 = fb_frame_cost_us(brute, PUC, OVR) // 80*500+5000 = 45000 40 let culled_cost: i64 = fb_frame_cost_us(work, PUC, OVR)// 24*500+5000 = 17000 41 42 var pass: i64 = 0 43 var total: i64 = 0 44 45 total=total+1; if work==24 { pass=pass+1 } else { bw("F0 FAIL work="); bn(work); bw("\n") } 46 total=total+1; if budget==33333 { pass=pass+1 } else { bw("F1 FAIL budget="); bn(budget); bw("\n") } 47 total=total+1; if fb_fits(brute_cost, budget)==0 { pass=pass+1 } else { bw("F2 FAIL brute should BLOW budget\n") } // brute does NOT fit 48 total=total+1; if fb_fits(culled_cost, budget)==1 { pass=pass+1 } else { bw("F3 FAIL culled should FIT\n") } // culled fits 49 total=total+1; if fb_headroom_us(culled_cost, budget) > 0 { pass=pass+1 } else { bw("F4 FAIL no headroom\n") } 50 // NEG-CONTROL: a heavy 200-unit workload must NOT fit -> proves fb_fits is honest 51 total=total+1; if fb_fits(fb_frame_cost_us(200, PUC, OVR), budget)==0 { pass=pass+1 } else { bw("F5 FAIL heavy workload wrongly fit\n") } 52 53 bw("=== FLOOR-DEVICE frame budget (30fps, 500us/unit, 5000us sim) ===\n") 54 bw(" budget="); bn(budget); bw("us\n") 55 bw(" brute work="); bn(brute); bw(" -> cost="); bn(brute_cost); bw("us FITS="); if fb_fits(brute_cost,budget)==1 { bw("yes") } else { bw("NO (blows budget)") } bw("\n") 56 bw(" culled work="); bn(work); bw(" -> cost="); bn(culled_cost); bw("us FITS="); if fb_fits(culled_cost,budget)==1 { bw("YES") } else { bw("no") } bw(" headroom="); bn(fb_headroom_us(culled_cost,budget)); bw("us\n") 57 bw("FRAME-BUDGET "); bn(pass); bw("/"); bn(total); bw("\n") 58 if pass == total { bw("FRAME-BUDGET ALL-PASS (culling brings the floor device under frame budget; measured)\n"); sys_exit(0) } 59 sys_exit(1) 60 return 1 61}