Fix heapUsage query for non-unified memory devices #2098
Merged
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.
Fixes #2082 for non-unified memory machines. No change for unified memory machines.
task_vm_info.phys_footprint
withtask_vm_info.ledger_tag_graphics_footprint
inmvkGetUsedMemorySize()
. This provides a more accurate estimate of mapped memory forheapUsage[1]
on non-unified memory machines. As an aside, it also provides a more accurate fall-back withinMVKPhysicalDevice::getCurrentAllocatedSize()
if the selector is not available for any machine.heapUsge[0]
on non-unified memory machines, where it represents the device-only memory. The calculation remains the same for unified memory machines (whereheapUsage[1] = 0
).The only edge case I see is for non-unified memory machines where the
currentAllocatedSize
selector is not available. In this caseheapUsage[0]
will return 0 for device memory andheapUsage[1]
will return mapped memory. I think this is a reasonable fallback if the total memory information is not available from Metal.