Vulkan timestamp query pools use Metal GPU counters when available. #1404
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.
MVKPhysicalDeviceMetalFeatures::counterSamplingPoints
to track platform availability of GPU counters.MVKPhysicalDevice
creates and managesMTLCounterSets
and checks for and enables flags withinMVKPhysicalDeviceMetalFeatures::counterSamplingPoints
.MVKGPUCounterQueryPool
class as parent ofMVKTimestampQueryPool
andMVKPipelineStatisticsQueryPool
concrete classes and refactor access to host and command copy tracking data to allow extraction fromMTLCounterSampleBuffer
.MVKTimestampQueryPool
usesMTLCounterSampleBuffer
if supported, otherwise reverts to using host data for timestamps.MVKCommandEncoder
encodes Vulkan timestamp commands either as Metal staged or command timestamps, depending on whether the GPU is tile-based or immediate-mode.MVKDevice::getDummyBlitMTLBuffer()
to supply a dummy single-byte buffer that can be used by a stand-alone MTLBlitCommandEncoder as dummy work to mark timestamps.Fixes #773.
Fixes #793.
Fixes #520.