Repository navigation
fix(win): windows host import texture reuploads - #2096
Merged
Merged
Conversation
This was referenced Oct 9, 2026
|
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.
|
Contributor
|
Corrected: the device loss below also happens without this PR, though less often. Only the refresh store failure comes from it (commit 0e1d25a). Measurements are in #2155. Windows run on the driver that shows #1434's late marking. Setup: Windows 10 (19045), RTX 3060 Laptop (NVIDIA 616.92), MinGW-w64 GCC 15.2.0 (WinLibs r7), Release. Head
No title was run. 🤖 Addressed by Claude Code |
9 tasks done
aryanrawatispro-ship-it
added a commit
to aryanrawatispro-ship-it/AnyPS5
that referenced
this pull request
Oct 9, 2026
… memory 0e1d25a (boykopovar#2096) compares an untracked import's bytes with the image's snapshot. When they still match, a refresh keeps the image's own results pending instead of storing them, as it already does over watched memory. storageRefreshTests (unwatched case) and staleGenerationTests read the guest bytes directly, so they expected the refresh itself to store the results, and stopped at "the refresh's store of the results did not reach guest memory" and "(s) results pending when their memory left the watch did not reach it". Both now read the memory through GuestMemory::Read, as the watched storage refresh case already does; its flush hook stores the pending results first. Results that were dropped still fail both checks. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
9 tasks done
9 tasks done
9 tasks done
adriadam10
pushed a commit
that referenced
this pull request
Oct 10, 2026
…port is compared #2096 keeps a copy of a storage image's guest bytes so that Refresh can compare memory the write watch does not cover. The host-import upload path takes that copy only when the range is unwatched, but the DCC fast-clear path took it on every upload. Reading the whole surface goes through the flush hook, so each 64 KiB block of a surface that a unit shadow covers recorded a publish and waited for the GPU. The clear path now resolves the surface's host import first (the import can unwatch the range, as a compared host-pointer import does) and takes the copy only when the range is then unwatched, like the import path. Write-watched memory, such as direct memory behind a dma-buf import, skips it; a range that is unwatched later re-uploads instead of comparing, as before #2096. agc_driver_dcc_keys_first_write checks that a fast-cleared upload keeps the copy exactly when its range is unwatched at that point. PPSA14632 (LEGO Horizon Adventures) on Linux, RX 9070 XT: the flush hook waited ~60,000 times per 10 s for these publishes (6.4 s), now ~3,500, and presents rise from ~24 to ~100 per 10 s. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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
Preserve CPU write tracking for Windows shared memory imported through a separate Vulkan alias. Avoid redundant texture uploads and write-backs. Retain byte comparisons for imports without reliable tracking.
Tested
Windows, NVIDIA GeForce GTX 1050 Ti Dreaming Sarah: 12fps -> 60 fps
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