From 5d29442ecb705a09c85cd8d9593502ba35694d75 Mon Sep 17 00:00:00 2001 From: Cyd Date: Sun, 19 Jul 2026 10:21:47 -0500 Subject: [PATCH] Golden-model conformance suite (C1-C4 CONFORMANT) + GPU-compute retarget plan igc_conformance.py pins the reference behaviour any port (RTL/GPU/C) must reproduce: the DUMP packet parse, a synthetic raster, the bars pipeline (texu==x+2 from the real cap7 tile programs), and the fxtest effect primitives (coverage + z pinned) -- fixtures committed under conformance/. GPU-RETARGET.md maps the DOSBox-renderer path: EMC tile as compute shader (pixel=thread), 4 milestones, conformance-gated. Co-Authored-By: Claude Opus 4.8 --- emulator/firmware-decomp/GPU-RETARGET.md | 70 +++++++++ .../conformance/cap7_wide30.pkl | Bin 0 -> 278291 bytes .../conformance/fx_program.pkl | Bin 0 -> 17821 bytes .../conformance/sends_cap7.pkl | Bin 0 -> 36552 bytes emulator/firmware-decomp/igc_conformance.py | 136 ++++++++++++++++++ 5 files changed, 206 insertions(+) create mode 100644 emulator/firmware-decomp/GPU-RETARGET.md create mode 100644 emulator/firmware-decomp/conformance/cap7_wide30.pkl create mode 100644 emulator/firmware-decomp/conformance/fx_program.pkl create mode 100644 emulator/firmware-decomp/conformance/sends_cap7.pkl create mode 100644 emulator/firmware-decomp/igc_conformance.py diff --git a/emulator/firmware-decomp/GPU-RETARGET.md b/emulator/firmware-decomp/GPU-RETARGET.md new file mode 100644 index 00000000..8dd04713 --- /dev/null +++ b/emulator/firmware-decomp/GPU-RETARGET.md @@ -0,0 +1,70 @@ +# GPU-compute retarget — the DOSBox-renderer path (2026-07-19) + +Companion to FPGA-RECONSTRUCTION.md. This is the plan for shipping the decoded +IGC/EMC model as a real-time renderer behind the existing DOSBox seam — the +practical answer to "use this as the renderer for the pod." + +## Why GPU compute +The EMC array is 8,192 bit-serial PEs per 64×128 tile. On a GPU that is one +thread per pixel executing the same decoded op stream — a literal 1:1 mapping, +no hardware, ships as software next to the renderer we already deploy. +The original array ran ~40 MHz bit-serial; any integrated GPU exceeds the +whole frame's work by orders of magnitude. + +## Architecture + +``` +DOSBox (game, unmodified) + │ wire protocol (known) ── existing seam: render-bridge/live_bridge + ▼ +emu860 geometry stage ── the i860 firmware, C/JIT port for realtime + │ per-draw DMA stream + payloads (the coefficient programs) + ▼ +IGC translator (host) ── igc_exec.parse -> flat op records + │ SSBO: op stream + payload floats + tile list + ▼ +compute shader "EMC tile" ── pixel = thread; fields in registers/LDS: + │ texz/texu/texv/zbuf as uint20, r/g/b as uint8, enable as bool; + │ ops = a switch over the named table (TREE*, MEM*, CPY, sweeps, SCA*) + ▼ +readout pass ── ramp(texu) / rgb24 -> RGBA8 frame texture + ▼ +present (the existing renderer window / vr_readpixels reply) +``` + +## What ports 1:1 from the golden model +- The op table (data) and parser — host-side, unchanged. +- Tile semantics — each `Tile.run` branch becomes a shader case; the pixel + memory bit-fields become packed uints (no bit-serial emulation needed: + field-level semantics are already proven equivalent by the conformance + suite). +- Readout — ramp LUT as a small texture. + +## Conformance gate +`igc_conformance.py` (C1-C4, committed fixtures) is the acceptance bar: the +shader path must reproduce C2-C4 outputs exactly (C1 is host-side parse). +Add a C5 full-frame image hash (bars + fxtest frames) once texel sampling +lands. + +## Realtime budget (per frame) +- 52 tiles × ~100-3000 op-steps × 8,192 px ≈ 1-10 G pixel-ops worst case — + a compute-shader trifle at 60 fps on integrated graphics. +- Geometry stage: the real wall. emu860 in Python ≈ 600K steps/s; a frame is + ~10-50M steps → need the C/JIT step-core (planned; the i860 ISA semantics + are fully pinned by emu860 + MAME cross-validation). Interim: pre-captured + streams replay at full speed for validation. + +## Milestones +1. **M1 shader tile**: WGPU/GL compute kernel executing the named ops; + passes C2-C4. (small) +2. **M2 frame loop**: DMA-stream walker + tile dispatch + readout; renders + the bars + fxtest fixtures. (small-medium) +3. **M3 texel path**: TXDN stream -> texture sampling (needs the remaining + spec work — the io-port fetch protocol). (medium, spec-gated) +4. **M4 live seam**: behind live_bridge in place of / beside the GL renderer; + real-time gate = the C step-core for emu860. (the big one, independent) + +## Open spec items feeding this (tracked in IGC-ENCODING-DERIVATION.md) +- op-0x2c edge exact semantics (winding rule) — affects M1 fidelity. +- TXDN io-port texel stream — gates M3. +- The texz coordinate-seed op + the real ramp tables — purity for M2 images. diff --git a/emulator/firmware-decomp/conformance/cap7_wide30.pkl b/emulator/firmware-decomp/conformance/cap7_wide30.pkl new file mode 100644 index 0000000000000000000000000000000000000000..a8daa6a48df02f0e9ddbd41636a0e2648accceef GIT binary patch literal 278291 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%0DQpM{6ufrdJEWtsYdE4#058j&cseWboUAUr6 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 literal 0 HcmV?d00001 diff --git a/emulator/firmware-decomp/conformance/fx_program.pkl b/emulator/firmware-decomp/conformance/fx_program.pkl new file mode 100644 index 0000000000000000000000000000000000000000..237502a8200ccb4ddedf0b0ad8b16b962634c3b3 GIT binary patch literal 17821 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 literal 0 HcmV?d00001 diff --git a/emulator/firmware-decomp/conformance/sends_cap7.pkl b/emulator/firmware-decomp/conformance/sends_cap7.pkl new file mode 100644 index 0000000000000000000000000000000000000000..e583103cf26e037ba177c39a9889a177ee0c29c1 GIT binary patch literal 36552 zcmdtqUu;uV90%~zuH6buEy}~*?8Y`a7|=nH?UI=BXHf24lSLn#4<>83mH|^Ie-ivd zQvL{|Hag=q5CZ}Kqxi7IsEvx^|Dh)ENc3eW%1|B_UtE0h+AoRVLeir=z4iKsmurEU^#taX5jR6 zay0D>`PBk&IonI0A?*~D&K__^DV;uWMkt-N;B2LIt_Ej}(wPEhH>J}L&Mr!49XR_b zoom3^L+MO|bBNMe0nQwyb3QnaP&(IwbC}ZE3(g{?GXTyJN@qPdM=71_zJHRCAw$rh@T)UnMxhl+H$QMk$@^!5N`+X2F@DbXI}0ozl4g zoZXbp4dCpebZ!FYE=s5O5Vq{O;2@0AWP z8cL@H&M>8OD>z#zoz>usQ97H!nV@ubg0r2{IWW!XT{X)qwo4aMUD1A{fZJ(O$Pq8e z()e9&1-fi`MdO$JZa?Rc8c4PxI%%pj{(5PmLysl9I;HWlYtIup=9R|FSnf$3^Gf68 zU^#C(s$^Uyg(lpEEPEeS8ZQr(CI&N29(GEQREkrQ?X>jVZx%Rpj-AnFKs+&hYN1fj z`5%agcm{}qjW`CxC>wDP5F>2Fmx0*IM*IwjF*f2wAa=76_X4qtjra->``L(}1F?sV z_!AI^*ogapm}4Wp3dAF9#4mt2%trhfh($Kyejtvp5nlu1C>!xhAf90(UIOAc8}Vr% zjHP46_m60AiGl_%#qCY{XxIm|!Cw1Y$cI@l7Ch zvk|`mV%M!klqFI#d^U9%kh^X*}t_cb_O4V7pqkGN9lB z_5d)-1@r+h!Ue1aU@I4JH2`B=z!U(xxqyBEc5wmg0NBq3Tm!%!E?^pfLtMZL0Oq)W z^8t8-3%C}5!(6~#02aA`0RWD00qX%c$^~2pz%yLHJ^+q$0fPV>n<-FMF*$cnW_r`< zKf5c_0L00e5^pVF2LLCyfEfVRxVvl7+*hjvV3-To2*4;8a6JGcT)-><6I{S50Jd`h z7XYxE3%CJ*U0lFT0Nlj|bjpC#lQ;bUZIBBX1>g`DFaf|E7qB0IC%J&L0C<86*aW~L z7jPp0N4S8S0eFE6I2(ZHxqu4+IL-w$0XW75+yX$g6FAL1nK=MdTY%F57XeW1{Y?Y3 z0H`+orU7mRpxW)523QS1waqsTuo-}Ae{ULKCjiyP-Za30X+W=Jx%}zXjjEWT&bd_9 zoGF9`Q;!ckn(Etb@3y0b>P$Qx>&>>c#Fw?DZTH!l6^JH<&wRekcW+W$wZsnlpk1iW zu1sZHS7zh!-rg45t?9Np+`M=qXXJxMt#7}uYGtFr_n|Orjd{We?%5}-IvuPt?s9`Z z8Jw?!^Nl-I=3Zgd>tMYxS7pjzgAO(rVU@W@SdBW^XxyPPWpIHGE--FanK@xabuen& zrZQ!)Ne7#ZYL)q^uomjzLSv4~l)*(hxX75TGCvVkvko>Jvs9)GF4n=tMo49z7S<9S zTw+wIOc`9NgG-G{mHDx-VmcTzf+|x6TfCrJg0^^DUpAFlp6zRm+iq>VRU0+MU&3(K zOC&@8Ip^nBwkv!aG=LM&wHAWlb9Ixr_YAuwlu!6P-EPts@_-bQ=%m zgVh5$xsESXJ2O1x3~H_wKG_~|+YiWgslU&CTM1j24_0*w+2~dij>T8BEQ@E;ZJAWe zb_@5drfAZrNPghFc|Q1Vr}#*i&$;8i@3vo(ZF4jsR++~R%hu7LFwD`7a@t3om&epg zu_`%Qp@r#lQh4^-m-1{B{|pC`Eg?Cxfw}U7nNA*Bojm7~kNzk}KNpl^9^WXOPq;i4 z`Cu_7oHX-z!i|}75e)Z0dZ&=*p_rcMeGitcTyamjrL`r#d|9veeFt2pwX@)VY_pxb;@`RCZ!qvh+5i9m literal 0 HcmV?d00001 diff --git a/emulator/firmware-decomp/igc_conformance.py b/emulator/firmware-decomp/igc_conformance.py new file mode 100644 index 00000000..fa7ac108 --- /dev/null +++ b/emulator/firmware-decomp/igc_conformance.py @@ -0,0 +1,136 @@ +"""igc_conformance.py -- the golden-model conformance suite. + +Any port of the IGC/EMC model (RTL, GPU compute, C) must reproduce these +outputs bit-for-bit (where pinned) from the committed fixtures in +conformance/. The fixtures are REAL captured data from the firmware running +on emu860 (see IGC-ENCODING-DERIVATION.md for provenance). + +Cases: + C1 DUMP reference packet parses to the exact named instruction sequence. + C2 Synthetic triangle rasterizes to the exact lit-pixel count. + C3 Bars pipeline: the cap7 bench per-tile programs (sends_cap7.pkl), with + the documented texz seed, compute texu == global x (+2) per pixel. + C4 fxtest effect primitives (fx_program.pkl) rasterize: 9 primitives drawn, + pinned z-buffer coverage + centroid. +Run: python igc_conformance.py (exit 0 = conformant) +""" +import os, sys, pickle, struct + +sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) +import igc_exec + +HERE = os.path.dirname(os.path.abspath(__file__)) +FIX = os.path.join(HERE, 'conformance') + + +def f32(w): + return struct.unpack('> 8) & 0xff) == 0x2c] + assert len(setups) == 10, len(setups) + # rasterize coarsely on a 104x64 grid (1/8 scale) and pin coverage + W, H = 104, 64 + drawn = 0 + covered = 0 + zwins = 0 + zbuf = [[-1e30] * W for _ in range(H)] + for a in setups: + edges = [] + p = a + 4 + while ((rd(p) >> 8) & 0xff) == 0x2c and len(edges) < 6: + edges.append((f32(rd(p+4)), f32(rd(p+8)), f32(rd(p+12)))) + p += 16 + zp = None + q = p + for _ in range(40): + w = rd(q) + if ((w >> 8) & 0xff) == 0x21: + zp = (f32(rd(q+4)), f32(rd(q+8)), f32(rd(q+12))) + break + q += 4 + if zp is None: + continue + any_px = False + for gy in range(H): + for gx in range(W): + x, y = gx * 8, gy * 8 + vs = [A * x + B * y + C for A, B, C in edges] + inside = all(v >= 0 for v in vs) or all(v < 0 for v in vs) + if not inside: + continue + any_px = True + covered += 1 + z = zp[0] * x + zp[1] * y + zp[2] + if z > zbuf[gy][gx]: + zbuf[gy][gx] = z + zwins += 1 + if any_px: + drawn += 1 + assert drawn == 10, drawn + assert covered == 5706, covered + assert zwins == 5119, zwins + return 'C4 fxtest primitives: PASS (10 drawn, coverage %d, zwins %d)' % (covered, zwins) + + +if __name__ == '__main__': + results = [] + for case in (c1_dump_reference, c2_synthetic_triangle, c3_bars_pipeline, + c4_fxtest_primitives): + results.append(case()) + print('\n'.join(results)) + print('CONFORMANT')