WIP: Keep scalar sources and immediates distinct during native register mapping #863

Closed
monsterlag wants to merge 4 commits from fix/native-register-field-roles into main
monsterlag commented 2026-11-08 23:32:38 +00:00 (Migrated from github.com)

Draft: runtime failure remains unresolved. A private RC2 candidate containing the role changes exited during shader preparation before reaching a scene (Windows fail-fast 0xc0000409). The marker collision below is now independently reproduced and corrected by the dependency, but it has not been established as the abort's cause. Keep this draft pending the separate in-process investigation.

This branch stacks on PR #759 by @pelicanux, including exact published add093762dcba75ac7013d265ee1d57999baf343 through a normal merge that preserves its author/history. Its original-operand survey prevents early register markers from aliasing later Ra/Rc operands.

The separate three-line role correction registers only R2UR's scalar GPR source, leaves its uniform destination separate, and excludes bits 32–63 from the second scan only for LOP3 immediate form 0x812. The conflict guard and real register-form Rb tracking remain intact.

Checks

  • All 18 authored programs pass actual REGMAP → Maxwell CFG/IR → SPIR-V value checks and Vulkan 1.3 validation. The original 16 cases/assertions remain, with two added collisions that strictly require the stored XOR result.
  • Preserved negative proof: the pre-dependency RC2 header stores the initialized old destination in both authored collisions, even though those modules validate; PR759 plus the role correction produces the correct values. This is semantic evidence, not an abort reproduction.
  • Windows strict role check and Linux GCC role check pass. PR759's unchanged 89-case regression passes with Windows Clang and Linux GCC.
  • Original 232 / standalone PR759 role-refusal controls are preserved. Existing CI steps remain intact; hosted checks for this refreshed head are pending.

Limits

No game programs or private instruction words are included. This refresh does not run a GPU, game or driver, and does not claim live-rendering safety, an abort fix, or resolution of all remaining shader failures. The reviewed base remains 15ec28d; the PR759 dependency is included rather than subsequent unrelated main changes.

**Draft: runtime failure remains unresolved.** A private RC2 candidate containing the role changes exited during shader preparation before reaching a scene (Windows fail-fast `0xc0000409`). The marker collision below is now independently reproduced and corrected by the dependency, but it has not been established as the abort's cause. Keep this draft pending the separate in-process investigation. This branch stacks on [PR #759](https://git.magicbean.dev/MagicBeanDev/Hookshot/pulls/759) by @pelicanux, including exact published `add093762dcba75ac7013d265ee1d57999baf343` through a normal merge that preserves its author/history. Its original-operand survey prevents early register markers from aliasing later Ra/Rc operands. The separate three-line role correction registers only R2UR's scalar GPR source, leaves its uniform destination separate, and excludes bits 32–63 from the second scan only for LOP3 immediate form `0x812`. The conflict guard and real register-form Rb tracking remain intact. ## Checks - All 18 authored programs pass actual REGMAP → Maxwell CFG/IR → SPIR-V value checks and Vulkan 1.3 validation. The original 16 cases/assertions remain, with two added collisions that strictly require the stored XOR result. - Preserved negative proof: the pre-dependency RC2 header stores the initialized old destination in both authored collisions, even though those modules validate; PR759 plus the role correction produces the correct values. This is semantic evidence, not an abort reproduction. - Windows strict role check and Linux GCC role check pass. PR759's unchanged 89-case regression passes with Windows Clang and Linux GCC. - Original 232 / standalone PR759 role-refusal controls are preserved. Existing CI steps remain intact; hosted checks for this refreshed head are pending. ## Limits No game programs or private instruction words are included. This refresh does not run a GPU, game or driver, and does not claim live-rendering safety, an abort fix, or resolution of all remaining shader failures. The reviewed base remains `15ec28d`; the PR759 dependency is included rather than subsequent unrelated main changes.
NotRexed commented 2026-11-09 05:30:43 +00:00 (Migrated from github.com)

Thanks! Your description says a release candidate with this aborted during shader preparation (0xc0000409) and that it stays a draft until that is understood. Closing to keep the queue clear; please reopen once that is resolved (#759, which it stacked on, is on main now).

Thanks! Your description says a release candidate with this aborted during shader preparation (0xc0000409) and that it stays a draft until that is understood. Closing to keep the queue clear; please reopen once that is resolved (#759, which it stacked on, is on main now).
Commenting is not possible because the repository is archived.
No description provided.