From c9ed1028214320b7b3e0e40e0fa7745de9fc848a Mon Sep 17 00:00:00 2001 From: Jan Sikorski Date: Tue, 17 Dec 2024 17:31:24 +0100 Subject: [PATCH] MVKDevice: Add debug labels to barrier fences. --- MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm b/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm index 06960018e..8f0fe28cd 100644 --- a/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm +++ b/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm @@ -4792,6 +4792,16 @@ static uint32_t mvkGetEntryProperty(io_registry_entry_t entry, CFStringRef prope #pragma mark Construction +static NSString *mvkBarrierStageName(MVKBarrierStage stage) { + switch (stage) { + case kMVKBarrierStageVertex: return @"Vertex"; + case kMVKBarrierStageFragment: return @"Fragment"; + case kMVKBarrierStageCompute: return @"Compute"; + case kMVKBarrierStageCopy: return @"Copy"; + default: return [NSString stringWithFormat:@"Invalid (%d)", stage]; + } +} + MVKDevice::MVKDevice(MVKPhysicalDevice* physicalDevice, const VkDeviceCreateInfo* pCreateInfo) : _enabledExtensions(this) { // If the physical device is lost, bail. @@ -4809,7 +4819,15 @@ static uint32_t mvkGetEntryProperty(io_registry_entry_t entry, CFStringRef prope reservePrivateData(pCreateInfo); // Initialize fences for execution barriers - for (auto &stage: _barrierFences) for (auto &fence: stage) fence = [_physicalDevice->getMTLDevice() newFence]; + @autoreleasepool { + for (int stage = 0; stage < kMVKBarrierStageCount; ++stage) { + for (int index = 0; index < kMVKBarrierFenceCount; ++index) { + auto &fence = _barrierFences[stage][index]; + fence = [_physicalDevice->getMTLDevice() newFence]; + [fence setLabel:[NSString stringWithFormat:@"%@ Fence %d", mvkBarrierStageName((MVKBarrierStage)stage), index]]; + } + } + } #if MVK_MACOS // After enableExtensions