Repository navigation
Conversation
…llocation in pieces An address-based build imported each registered range whole. A range larger than maxMemoryAllocationSize (2 GiB on AMD's Windows driver) failed at vkAllocateMemory, and the build then asked for a heap mirror of the same size, which failed too. Such a range is now imported in pieces no larger than the limit, built from the range window's cells, each one BDA table entry. Single imports above the limit are no longer attempted. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
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.
Some comparisons could not be completed because a pull request conflicts with the base branch. Review these shared files manually before concluding that there is no overlap.
|
Zenodeon
marked this pull request as ready for review
October 20, 2026 13:46
Contributor
|
AMD data point: RTX 3080 (NVIDIA 617.42) and AMD Radeon RDNA 2 iGPU ( AI-assisted: yes (Claude Code). |
13 tasks done
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
A registered heap that cannot be imported within the host-import budget currently falls back to a mirror of the entire registration. This duplicates bytes already serviceable by smaller imports. A remembered budget refusal for the full registration can also reject a later request for a smaller physical window.
Keep the prefix served by existing or fitting import windows, and mirror only the remaining tail. New requests use the existing import-window size, keeping their temporary import snapshots small. Refusal lookup and window construction share the same physical-bound calculation. Selected mirrors retain the original weak registration identity; GPU/CPU write-back, mapping retirement and recorder completion rules remain in force. The configured import budget and strict unsupported paths are preserved.
Stacked on #7292, authored by billythemenace2 (original topic
4a27917d095f), rebased with its attribution retained. Its allocation-limit splitting is the prerequisite; the additional budget-limited partial fallback is this PR's change. Related: #7844 changes the default import reserve; #8016 changes mirror backing/staging and overlaps the allocation site. #6918 has a shared test-registration insertion. None of those implementations is included here.No game-specific behavior, shader semantics changes or guest API changes.
Tested
Windows 11 Pro 10.0.26200, NVIDIA RTX 4070, driver 610.88; MinGW-w64 GCC 15.2, Ninja Release, SPIR-V Tools enabled.
02fb1ce53plus fix(agc): import registered ranges larger than the device's largest allocation in pieces #7292 and the new regression, without this fix, fails ata heap exceeding the import budget did not import its fitting prefix.8afd6ea47and candidate9a20ec2b8, including native GPU BDA span reads, withANYPS5_REQUIRE_VULKAN=1,ANYPS5_NO_SHADER_CACHE=1, andVK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_validation. Logs were checked for missing-layer warnings andVUID-errors. There were no skips, missing-layer warnings orVUID-errors on either arm; every individual case completed below 30 seconds.02fb1ce53) and candidate (acb7d0c91) runtimes, and on the rebased candidate (9a20ec2b8).acb7d0c91) reached the opening room and rendered Astro on foot after movement input. It subsequently aborted withShaderRecompiler::Recompile: std::bad_allocwhile system commit was exhausted. Extended gameplay and bounded-memory stability are not passed. The rebased head does not yet have a new full gameplay pass.This draft makes no FPS, sustained RSS improvement, or complete Astro memory-pressure fix claim. Runtime configurations, logs, shader dumps and evidence bundles are not included or uploaded.
Target-base conventions and diff checks pass. The required check against the fork's older
origin/mainhits Windows' argument-length limit; running that same checker through a pattern-file adapter identifies inherited upstream findings in unchanged files and commit subjects. The adapter and logs are local only.Checklist
main; no other open PR implements the same functions (base8afd6ea47; prerequisite fix(agc): import registered ranges larger than the device's largest allocation in pieces #7292 and shared-site overlaps are disclosed above)NotImplemented_nid_no_patch); silent stubs are listed under Silent stubs in their library's technical debt file.mdfiles or images added to the repository (attach them to this PR)