feat: Use setExternalMemoryPressure
to notify JS VM about Frame
's actual size (on GPU)
#3098
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
Uses
setExternalMemoryPressure
to notify the JS VM about theFrame
's actual size (the byte buffer on the GPU, which isbytesPerRow * height
).If the JS VM (e.g. Hermes) knows the true size of the
Frame
in memory, it will delete old staleFrameHostObject
s sooner instead of just keeping them floating around in memory because it thinks it's just a few bytes in size. (right now around 400 of those pile up until GC hits, with this PR only 3 pile up at a time)This doesn't really matter for us since we need to eagerly delete the Frame after the Frame Processor is done, because the Camera pipeline stalls otherwise.
So we still need to keep the manual ref counting stuff. Make sure to use it properly!
Changes
Tested on
Related issues