fix(vulkan): preserve guest mip levels in partial clears #754

Closed
Trycky64 wants to merge 1 commit from fix/vulkan-partial-clear-mip into main
Trycky64 commented 2026-11-08 19:55:20 +00:00 (Migrated from github.com)

Update

Rebased this change onto origin/main at 8b2e1d3b895a5f890dcb886d904b62d6b38df2c7.

A partial clear resolves a guest mip to its physical image mip. The attachment view takes a guest mip and applies the skipped-level offset itself, so passing the already-resolved physical mip selected the wrong level. The partial-clear path now restores the guest mip before creating the view. Whole-level clears are unchanged. This change is independent of the buffer/image copy-span fix.

Validation

  • Windows targeted runner: the new mip-clear fixture and five related regression checks passed (6 passed, 0 failed).
  • Linux targeted runner: five checks passed (5 passed, 0 failed); the texture initialization barrier check passed separately with GCC because the runner's configured clang++ is unavailable. The new fixture passed with GCC AddressSanitizer and UndefinedBehaviorSanitizer.
  • Full Windows hookshot_vk.dll build passed: 276 seconds, zero compilation failures.
  • The full strict runner on this branch reported 116 passed, 7 failed, 12 skipped. A clean origin/main run reported 115 passed, 7 failed, 12 skipped. The same seven checks failed on both: nx2/test_nup_verify.py, nx2/test_nup_codec.py, nx2/test_mesh_first_types.py, nx2/test_nup_paths.py, tests/test_fps_overlay_order.py, tests/test_precompile_compute_guard.py, and tests/test_program_answer_domains.py. The added regression test passed; no additional failure was observed.

The fixture uses synthetic texture objects, instrumented view mapping, and Vulkan command spies. It does not execute a Vulkan driver. No real-GPU or in-game test was performed after the rebase.

## Update Rebased this change onto `origin/main` at `8b2e1d3b895a5f890dcb886d904b62d6b38df2c7`. A partial clear resolves a guest mip to its physical image mip. The attachment view takes a guest mip and applies the skipped-level offset itself, so passing the already-resolved physical mip selected the wrong level. The partial-clear path now restores the guest mip before creating the view. Whole-level clears are unchanged. This change is independent of the buffer/image copy-span fix. ## Validation - Windows targeted runner: the new mip-clear fixture and five related regression checks passed (6 passed, 0 failed). - Linux targeted runner: five checks passed (5 passed, 0 failed); the texture initialization barrier check passed separately with GCC because the runner's configured `clang++` is unavailable. The new fixture passed with GCC AddressSanitizer and UndefinedBehaviorSanitizer. - Full Windows `hookshot_vk.dll` build passed: 276 seconds, zero compilation failures. - The full strict runner on this branch reported 116 passed, 7 failed, 12 skipped. A clean `origin/main` run reported 115 passed, 7 failed, 12 skipped. The same seven checks failed on both: `nx2/test_nup_verify.py`, `nx2/test_nup_codec.py`, `nx2/test_mesh_first_types.py`, `nx2/test_nup_paths.py`, `tests/test_fps_overlay_order.py`, `tests/test_precompile_compute_guard.py`, and `tests/test_program_answer_domains.py`. The added regression test passed; no additional failure was observed. The fixture uses synthetic texture objects, instrumented view mapping, and Vulkan command spies. It does not execute a Vulkan driver. No real-GPU or in-game test was performed after the rebase.
NotRexed commented 2026-11-09 05:30:16 +00:00 (Migrated from github.com)

Closing to keep the queue clear — please rebase on current main and reopen; thanks!

Closing to keep the queue clear — please rebase on current main and reopen; thanks!
Commenting is not possible because the repository is archived.
No description provided.