buffer update opt: refactor UboManager and introduce FenceManager #9418
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.
The refactoring contains two parts: FenceManager and reallocation logic
FenceManager
This refactor extracts fence management logic from
UboManagerinto a separateFenceManagerclass for better testability/readability. But the downside of this approach is that whenever we add a new synchronous backend API, we will need to add a correspondingMOCK_FUNCTIONinMockDriver.hfile. Otherwise, the compilation fails.Reallocation Logic
Additionally, this refactors the
UboManagerallocation logic into two separate functions:allocateOnDemandandallocateAllInstances.The
allocateOnDemandfunction now implements a two-pass strategy:This specific order allows for a more accurate calculation of the required UBO size, which helps prevent multiple, cascading reallocations.