Align the container to the disc, and find the decoder-free packed player fits
Two sessions, unrecorded until now, committed together because their edits share files and cannot be split cleanly after the fact. Session 28 (FINDINGS 60): the container is DLX5 -- every record sector-aligned, 120/120 starting on a boundary where 3/120 did, +0.48% on the wire and zero clocks -- and the ring's release rounds to RECALN so no pad is stranded. Two encoder levers measured and refused: `--spans all` buys +0.19 dB for +67% of the wire, and joint span/lam selection emits byte-identical containers because `lam` never leaves its floor on any of 120 frames. Session 29 (FINDINGS 61): the packed full-frame blit is 27.3% of a 12 fps frame, a channel fills GVRAM in buffer mode off the disc with the CPU halted, and it walks the 1,024 B line stride itself through array chaining. At the 9 clk/B dual-address floor the codec is 110.4% of a frame and a decoder-free packed literal player is 55.2%, at +4.89 dB -- 2.75 dB past a ceiling the codec's scene-wide palette cannot cross. Encoder work is parked; the codec is kept and not built on. check.sh is ALL GREEN before and after, plus one new stage that gates the ORDER of the measured paint costs rather than their values. Claude-Session: https://claude.ai/code/session_01194oWYW8DQXK1SZ2DnChW6
This commit is contained in:
@@ -66,16 +66,21 @@ a = ap.parse_args()
|
||||
|
||||
d = DLX(a.container)
|
||||
|
||||
# The disc layout the 68000 walks: [u32 len][body], each record padded up to 4.
|
||||
# Exactly tools/bench/prep_stream.py's, and it is rebuilt here rather than read
|
||||
# from tmp/ so this tool works on any container.
|
||||
# The disc layout the 68000 walks: [u32 len][body], each record padded up to the
|
||||
# container's own alignment -- 4 on DLX2/3/4, 512 on DLX5. Exactly
|
||||
# tools/bench/prep_stream.py's, and it comes from the reader rather than from a
|
||||
# second copy of the rule here, so pointing this tool at a DLX5 container asks
|
||||
# it the RIGHT question: what does the mismatch still cost once the container
|
||||
# has been changed to remove it? (The answer had better be nothing.)
|
||||
off, recs = 0, []
|
||||
for (o, n) in d.frames:
|
||||
ln = 4 + n
|
||||
ln += (-ln) % 4
|
||||
for ln in d.record_lengths():
|
||||
recs.append((off, ln))
|
||||
off += ln
|
||||
payload = sum(ln for _, ln in recs)
|
||||
# The DENOMINATOR is the record bytes the decoder actually reads -- [u32 len]
|
||||
# plus payload -- and NOT the padded length, because on a DLX5 container the
|
||||
# padding IS the cost being measured. Scoring against the padded length would
|
||||
# make an already-aligned container report +0.00% and look free.
|
||||
payload = sum(4 + n for _, n in d.frames)
|
||||
nfr = len(recs)
|
||||
budget = CPUHZ / d.fps
|
||||
|
||||
@@ -120,8 +125,10 @@ for _, ln in recs:
|
||||
pad += SECTOR - (cur % SECTOR)
|
||||
cur += SECTOR - (cur % SECTOR)
|
||||
cur += ln
|
||||
print("C. SECTOR-ALIGNED RECORDS (a container change; a re-encode)")
|
||||
print(f" wire {cur:,} B for {payload:,} B of record = +{100*pad/payload:.2f}%")
|
||||
print("C. SECTOR-ALIGNED RECORDS (a container change; a re-encode)"
|
||||
+ (" -- THIS CONTAINER ALREADY IS ONE" if d.sector_aligned else ""))
|
||||
print(f" wire {cur:,} B for {payload:,} B of record = "
|
||||
f"+{100*(cur-payload)/payload:.2f}%")
|
||||
print( " clocks ZERO: the read is a whole-sector read straight into the "
|
||||
"ring, no window,")
|
||||
print( " no copy, and the DMAC can do it.")
|
||||
@@ -130,8 +137,8 @@ print()
|
||||
ringsz = a.ring * 1024
|
||||
print(f" VERDICT, in the currency this project prices delivery in. C is "
|
||||
f"cheaper on the wire")
|
||||
print(f" than A and B by {100*(drop_a-pad)/payload:.2f} points of the payload "
|
||||
f"({drop_a-pad:,} B on this scene),")
|
||||
print(f" than A and B by {100*(wire_a-cur)/payload:.2f} points of the payload "
|
||||
f"({wire_a-cur:,} B on this scene),")
|
||||
print(f" and it is the only one of the three a DMA channel can run without a "
|
||||
f"copy. What it")
|
||||
print(f" costs is a container revision and the re-measurement that comes with "
|
||||
|
||||
Reference in New Issue
Block a user