Repository navigation
fix(driver): bound transient texture upload copies within one draw or dispatch - #1180
Closed
MichonGoddijn231849 wants to merge 1 commit into
Closed
MichonGoddijn231849 wants to merge 1 commit into
MichonGoddijn231849 wants to merge 1 commit into
Conversation
… dispatch A texture upload recorded into the open batch keeps its host staging copy and its device tiled and linear copies until the batch completes, and the finished batch's objects are destroyed only when the hold ends. A dispatch that creates a thousand bindless table textures therefore held about three times the textures' bytes in copies and ran out of device memory. The copies are now kept through Recorder::KeepTransient, which counts their bytes while they live. When the live bytes exceed APS5_UPLOAD_BUDGET_MIB (default 1024), the image lookups of a build settle: the recorded work is submitted and waited for and the finished batches' objects are destroyed at once. Builds under the budget are unchanged. APS5_TRACE_BINDLESS now also reports a table's distinct T#s and surfaces. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
9 tasks done
|
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.
|
This was referenced Oct 8, 2026
Collaborator
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 texture upload recorded into the open batch keeps its host staging copy and its device tiled and linear copies until the batch completes. The finished batch's objects are destroyed only when the hold ends. So a dispatch that creates a thousand bindless table textures held about three times the textures' bytes in copies, and ran out of device memory.
The copies are now kept through
Recorder::KeepTransient, which counts their bytes while they live. When the live bytes exceedAPS5_UPLOAD_BUDGET_MIB(default 1024), the image lookups of a build settle: the recorded work is submitted and waited for, and the finished batches' objects are destroyed at once. Builds under the budget are unchanged.Tested
Windows 11 Pro, AMD Ryzen 5 7600, NVIDIA GeForce RTX 5080 (driver 32.0.16.1074), 32 GB, MinGW-w64 GCC 15.2.0.
gta-v/testingbranch (Performance mode, the prologue).ctestpasses. Not run here: the relinker's Python tests (my local Python does not find their helper modules) andguest_gameupdate.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