Repository navigation
fix(agc): keep the texels of CMASK tiles with codes other than 0 and 15 - #4041
Conversation
248c267 to
22f5ea4
Compare
|
Another title this fixes: The Pathless (PPSA01825, 02.000.000), Windows, RTX 5070 Ti. Tested on
|
22f5ea4 to
afd5565
Compare
A fast-clear materialization threw when a CMASK nibble held a code other than 0 (cleared) or 15 (expanded). PPSA18391 (engine: Clickteam Fusion) fast clears a target whose CMASK it never initialized, so some nibbles hold leftover values such as 1 and 10, and presentation failed on the first frame. Such a tile now keeps its texels like an expanded tile, on the CPU path and in the compute pass. A cleared tile of a DCC target still throws. The graphics and CMASK fast-clear tests now check that an unknown code leaves the tile unchanged instead of expecting the throw.
afd5565 to
51c043b
Compare
|
Other open pull requests touch the same code. Merging one will break the other, or both implement the same thing. If this one builds on them, list them in Depends on.
|
|
Checked the diff, the two updated tests ( |
|
Additional Windows fixture coverage found an AMD GPL-off device loss, tracked in #5150. This is a distinct synthetic-fixture finding, not an attribution to #4041 or a title result. Full reproduction and controls are in the issue. AI-assisted: yes. |
What
A fast-clear materialization threw when a CMASK nibble held a code other than 0 (cleared) or 0xF (expanded). PPSA18391 (engine: Clickteam Fusion) fast clears a color target whose CMASK it never initialized, so some nibbles hold leftover values (seen: 1 and 10), and presentation failed on the first frame with
CMASK codes 1, 10 were recorded.A tile with such a code now keeps its texels like an expanded tile, on the CPU path and in the compute pass (
CmaskClear.comp). A cleared tile of a DCC target still throws, as do the other unsupported cases. The existing graphics and CMASK fast-clear tests expected the throw for an unknown code; they now check that such a tile keeps its contents and that a later full clear and eliminate still work.Keeping the texels treats a tile that is not marked as cleared as not cleared, so the driver never overwrites bytes the title wrote with a clear value it did not ask for. Throwing stops the title, and clearing such a tile would guess a meaning for the code. What the console does with these codes on a single-sample target is unverified on hardware; the TechnicalDebt entry for CMASK fast clears says so.
Tested
1c5e62878.agc_driver_graphics: a code-3 tile is left unchanged while its cleared neighbour gets the clear value.agc_driver_cmask_fast_clear: a code-3 tile stays as it was, and a later full clear and eliminate work. Both fail without the change.ctest: 995 tests pass.Checklist
main; no other open PR implements the same functionsNotImplemented_nid_no_patch); silent stubs are listed in TechnicalDebt.mdfiles or images added to the repository (attach them to this PR)🤖 Generated with Claude Code