Say that the shader numbers are counted from the code, not from playing games,
in the progress map caption, the progress page, the docs and the README badge
text. The Still needed bars already use their own grey track and fixed fills
rather than the todo colour.
List the forms the decoder does not decode and the decoded ones the translator
has no case for, chart the unsupported-throw sites per recompiler area, and
chart the sampled, typed-buffer and host image formats. All of it is read from
the source by the same scan; progress.json only gains fields.
The progress map panel and the page table still printed the old instruction
name count (100%). Both now show the decoded forms by encoding. The scanner
fixture gains VOPC and VOP1 forms in VOP3, the interpolation emit switch, the
export family, a DPP16 refusal and the opcode range edges, so a change to any
of these rules changes a known answer.
The shaders badge counted ISA instruction names that have an RdnaOpcode
enumerator and had reached 100%. Measure what the recompiler does instead:
decoded and translated instruction forms (base, VOP3, DPP) from the opcode
tables and emit switches, and the unsupported throws, using AMD's RDNA 2
instruction forms (MIT, vendored as a derived table). Say on the page that
this is source coverage, not game compatibility.
The Pages progress workflow now also runs when the recompiler changes, and
the Pages workflows fail instead of publishing when the scan cannot read the
recompiler.
PROGRESS.md says a definition is behaviourally empty when it returns a
local static wrapper that is itself behaviourally empty. The scanner
recognizes wrappers with the same pattern it uses for stub wrappers,
where static is optional, so a non-static helper such as
int Support() { return 0; } also makes int APS5_VABI E() { return
Support(); } behaviourally empty. Drop the static qualifier from the
description.
AI-assisted: yes
The changed-libraries table of the progress report printed the change in
percentage points (` pp`), while the headline prints it in `%`. Both are
the difference between two percentages, so the table now uses `%` too,
including the small-change path added with the rounding fix (`+0.0006%`,
`+<0.0001%`). Keeps the two decimals, the explicit sign and the `+0.00`
rounding of tiny or negative-zero changes.
The change is moved into `percent_change()`. Tests pin the `%` unit for
the table and the headline, and `docs/dev/PROGRESS.md` describes the
column in the unit of the headline.
Rebased onto main (which now carries #10992's small-change path) and
resolved there: that path also prints `%`.
Co-authored-by: MarcZX10 <[email protected]>
Co-Authored-By: Claude Haiku 5.5 <[email protected]>
progress.py skips every definition whose name ends in _nid_no_patch or
_nid_no_patch_cut, which are meant to be internal helpers. Some libraries
export such functions with APS5_EXPORT under an explicit NID or name:
libSceAgcVsh (150), libSceNKWebKit (150) and libSceJson2's inventory
(66), all of them calling NotImplemented_nid_no_patch. None of the 366
was counted, so those three libraries showed 151 of 151 functions where
they declare 517, and import_audit, which takes its stub list from the
same scan, reported imports of them as implemented.
A _nid_no_patch definition is now skipped only when no APS5_EXPORT in its
library exports it. The library totals go from 6104 of 12305 to 6104 of
12671 on main.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
daily_commits grouped commits by %cs, the committer date in the
committer's own offset. With merges from +13:00 and +02:00 interleaved
on main, the newest commit labelled with the later date can be older
than the newest commit labelled with the earlier one, so the chart
ended on an older tree and showed a drop that did not happen.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Library functions and shader instructions were drawn on one y-axis with
ambiguous labels and overlapping fills. Each now gets its own panel and
scale, with implemented (solid) against declared (dashed); shaders gain
their declared total from the ISA list. Date labels are horizontal and
every day has a hover tooltip.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
The README no longer embeds history.svg; it links history.html, which the progress page also links.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
The chart repeated the percentages the badges and the progress map
already show. Because declaring and implementing functions usually
land together, the library line stayed near flat while the project
grew. It now plots implemented and declared library functions and
decoded shader instructions as counts; the tooltips keep the
percentage.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
tools/progress_history.py measures the first-parent history of main with
the rules of tools/progress.py, one point per day, and writes history.json,
history.svg and history.html. The Progress workflow runs it after
progress.py; the README shows the chart under the map and links the page.
Labels and points compact as days accumulate.
Co-Authored-By: Claude <[email protected]>