diff options
author | Jeff Bolz <jbolz@nvidia.com> | 2019-08-22 06:10:49 -0500 |
---|---|---|
committer | Mark Lobodzinski <mark@lunarg.com> | 2019-08-22 16:00:21 -0600 |
commit | fd3bb2407100f798059d63002d228dff99e481da (patch) | |
tree | 5fa80266150b2bd841e2dbf5cfe99f8f9e11d903 | |
parent | 3b9022cae6f59ccacc93a845c5ff2e8fea4f839b (diff) | |
download | vulkan-validation-layers-fd3bb2407100f798059d63002d228dff99e481da.tar.gz |
layers: Use vl_concurrent_unordered_map in ObjectLifetimes
Use vl_concurrent_unordered_map for the object_maps, and remove most use of
the single object_lifetime_mutex. object_lifetime_mutex is still used in a few
cases like to protect access through ObjTrackState::child_objects.
Use shared_ptr for the pointers to ObjTrackState in case of application bugs
like destroying the same object twice, which could otherwise crash when accessing
and freeing that pointer.
-rw-r--r-- | layers/generated/object_tracker.cpp | 411 | ||||
-rw-r--r-- | layers/object_lifetime_validation.h | 67 | ||||
-rw-r--r-- | layers/object_tracker_utils.cpp | 202 | ||||
-rw-r--r-- | layers/vk_layer_utils.h | 48 | ||||
-rw-r--r-- | scripts/object_tracker_generator.py | 3 |
5 files changed, 161 insertions, 570 deletions
diff --git a/layers/generated/object_tracker.cpp b/layers/generated/object_tracker.cpp index 9b91dbf54..3d3c0115c 100644 --- a/layers/generated/object_tracker.cpp +++ b/layers/generated/object_tracker.cpp @@ -115,7 +115,6 @@ bool ObjectLifetimes::PreCallValidateGetPhysicalDeviceFeatures( VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetPhysicalDeviceFeatures-physicalDevice-parameter", kVUIDUndefined); return skip; @@ -126,7 +125,6 @@ bool ObjectLifetimes::PreCallValidateGetPhysicalDeviceFormatProperties( VkFormat format, VkFormatProperties* pFormatProperties) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetPhysicalDeviceFormatProperties-physicalDevice-parameter", kVUIDUndefined); return skip; @@ -141,7 +139,6 @@ bool ObjectLifetimes::PreCallValidateGetPhysicalDeviceImageFormatProperties( VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetPhysicalDeviceImageFormatProperties-physicalDevice-parameter", kVUIDUndefined); return skip; @@ -151,7 +148,6 @@ bool ObjectLifetimes::PreCallValidateGetPhysicalDeviceProperties( VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetPhysicalDeviceProperties-physicalDevice-parameter", kVUIDUndefined); return skip; @@ -161,7 +157,6 @@ bool ObjectLifetimes::PreCallValidateGetPhysicalDeviceMemoryProperties( VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetPhysicalDeviceMemoryProperties-physicalDevice-parameter", kVUIDUndefined); return skip; @@ -171,7 +166,6 @@ bool ObjectLifetimes::PreCallValidateGetInstanceProcAddr( VkInstance instance, const char* pName) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(instance, instance, kVulkanObjectTypeInstance, true, "VUID-vkGetInstanceProcAddr-instance-parameter", kVUIDUndefined); return skip; @@ -181,7 +175,6 @@ bool ObjectLifetimes::PreCallValidateGetDeviceProcAddr( VkDevice device, const char* pName) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetDeviceProcAddr-device-parameter", kVUIDUndefined); return skip; @@ -193,7 +186,6 @@ bool ObjectLifetimes::PreCallValidateCreateDevice( const VkAllocationCallbacks* pAllocator, VkDevice* pDevice) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkCreateDevice-physicalDevice-parameter", kVUIDUndefined); return skip; @@ -206,7 +198,6 @@ void ObjectLifetimes::PostCallRecordCreateDevice( VkDevice* pDevice, VkResult result) { if (result != VK_SUCCESS) return; - auto lock = write_shared_lock(); CreateObject(physicalDevice, *pDevice, kVulkanObjectTypeDevice, pAllocator); } @@ -217,7 +208,6 @@ bool ObjectLifetimes::PreCallValidateEnumerateDeviceExtensionProperties( uint32_t* pPropertyCount, VkExtensionProperties* pProperties) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkEnumerateDeviceExtensionProperties-physicalDevice-parameter", kVUIDUndefined); return skip; @@ -228,7 +218,6 @@ bool ObjectLifetimes::PreCallValidateEnumerateDeviceLayerProperties( uint32_t* pPropertyCount, VkLayerProperties* pProperties) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkEnumerateDeviceLayerProperties-physicalDevice-parameter", kVUIDUndefined); return skip; @@ -240,7 +229,6 @@ bool ObjectLifetimes::PreCallValidateQueueSubmit( const VkSubmitInfo* pSubmits, VkFence fence) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(queue, queue, kVulkanObjectTypeQueue, false, "VUID-vkQueueSubmit-queue-parameter", "VUID-vkQueueSubmit-commonparent"); if (pSubmits) { for (uint32_t index0 = 0; index0 < submitCount; ++index0) { @@ -269,7 +257,6 @@ bool ObjectLifetimes::PreCallValidateQueueSubmit( bool ObjectLifetimes::PreCallValidateQueueWaitIdle( VkQueue queue) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(queue, queue, kVulkanObjectTypeQueue, false, "VUID-vkQueueWaitIdle-queue-parameter", kVUIDUndefined); return skip; @@ -278,7 +265,6 @@ bool ObjectLifetimes::PreCallValidateQueueWaitIdle( bool ObjectLifetimes::PreCallValidateDeviceWaitIdle( VkDevice device) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkDeviceWaitIdle-device-parameter", kVUIDUndefined); return skip; @@ -290,7 +276,6 @@ bool ObjectLifetimes::PreCallValidateAllocateMemory( const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkAllocateMemory-device-parameter", kVUIDUndefined); return skip; @@ -303,7 +288,6 @@ void ObjectLifetimes::PostCallRecordAllocateMemory( VkDeviceMemory* pMemory, VkResult result) { if (result != VK_SUCCESS) return; - auto lock = write_shared_lock(); CreateObject(device, *pMemory, kVulkanObjectTypeDeviceMemory, pAllocator); } @@ -313,7 +297,6 @@ bool ObjectLifetimes::PreCallValidateFreeMemory( VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkFreeMemory-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, memory, kVulkanObjectTypeDeviceMemory, true, "VUID-vkFreeMemory-memory-parameter", "VUID-vkFreeMemory-memory-parent"); skip |= ValidateDestroyObject(device, memory, kVulkanObjectTypeDeviceMemory, pAllocator, kVUIDUndefined, kVUIDUndefined); @@ -325,7 +308,6 @@ void ObjectLifetimes::PreCallRecordFreeMemory( VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator) { - auto lock = write_shared_lock(); RecordDestroyObject(device, memory, kVulkanObjectTypeDeviceMemory); } @@ -338,7 +320,6 @@ bool ObjectLifetimes::PreCallValidateMapMemory( VkMemoryMapFlags flags, void** ppData) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkMapMemory-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, memory, kVulkanObjectTypeDeviceMemory, false, "VUID-vkMapMemory-memory-parameter", "VUID-vkMapMemory-memory-parent"); @@ -349,7 +330,6 @@ bool ObjectLifetimes::PreCallValidateUnmapMemory( VkDevice device, VkDeviceMemory memory) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkUnmapMemory-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, memory, kVulkanObjectTypeDeviceMemory, false, "VUID-vkUnmapMemory-memory-parameter", "VUID-vkUnmapMemory-memory-parent"); @@ -361,7 +341,6 @@ bool ObjectLifetimes::PreCallValidateFlushMappedMemoryRanges( uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkFlushMappedMemoryRanges-device-parameter", kVUIDUndefined); if (pMemoryRanges) { for (uint32_t index0 = 0; index0 < memoryRangeCount; ++index0) { @@ -377,7 +356,6 @@ bool ObjectLifetimes::PreCallValidateInvalidateMappedMemoryRanges( uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkInvalidateMappedMemoryRanges-device-parameter", kVUIDUndefined); if (pMemoryRanges) { for (uint32_t index0 = 0; index0 < memoryRangeCount; ++index0) { @@ -393,7 +371,6 @@ bool ObjectLifetimes::PreCallValidateGetDeviceMemoryCommitment( VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetDeviceMemoryCommitment-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, memory, kVulkanObjectTypeDeviceMemory, false, "VUID-vkGetDeviceMemoryCommitment-memory-parameter", "VUID-vkGetDeviceMemoryCommitment-memory-parent"); @@ -406,7 +383,6 @@ bool ObjectLifetimes::PreCallValidateBindBufferMemory( VkDeviceMemory memory, VkDeviceSize memoryOffset) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkBindBufferMemory-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, buffer, kVulkanObjectTypeBuffer, false, "VUID-vkBindBufferMemory-buffer-parameter", "VUID-vkBindBufferMemory-buffer-parent"); skip |= ValidateObject(device, memory, kVulkanObjectTypeDeviceMemory, false, "VUID-vkBindBufferMemory-memory-parameter", "VUID-vkBindBufferMemory-memory-parent"); @@ -420,7 +396,6 @@ bool ObjectLifetimes::PreCallValidateBindImageMemory( VkDeviceMemory memory, VkDeviceSize memoryOffset) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkBindImageMemory-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, image, kVulkanObjectTypeImage, false, "VUID-vkBindImageMemory-image-parameter", "VUID-vkBindImageMemory-image-parent"); skip |= ValidateObject(device, memory, kVulkanObjectTypeDeviceMemory, false, "VUID-vkBindImageMemory-memory-parameter", "VUID-vkBindImageMemory-memory-parent"); @@ -433,7 +408,6 @@ bool ObjectLifetimes::PreCallValidateGetBufferMemoryRequirements( VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetBufferMemoryRequirements-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, buffer, kVulkanObjectTypeBuffer, false, "VUID-vkGetBufferMemoryRequirements-buffer-parameter", "VUID-vkGetBufferMemoryRequirements-buffer-parent"); @@ -445,7 +419,6 @@ bool ObjectLifetimes::PreCallValidateGetImageMemoryRequirements( VkImage image, VkMemoryRequirements* pMemoryRequirements) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetImageMemoryRequirements-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, image, kVulkanObjectTypeImage, false, "VUID-vkGetImageMemoryRequirements-image-parameter", "VUID-vkGetImageMemoryRequirements-image-parent"); @@ -458,7 +431,6 @@ bool ObjectLifetimes::PreCallValidateGetImageSparseMemoryRequirements( uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements* pSparseMemoryRequirements) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetImageSparseMemoryRequirements-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, image, kVulkanObjectTypeImage, false, "VUID-vkGetImageSparseMemoryRequirements-image-parameter", "VUID-vkGetImageSparseMemoryRequirements-image-parent"); @@ -475,7 +447,6 @@ bool ObjectLifetimes::PreCallValidateGetPhysicalDeviceSparseImageFormatPropertie uint32_t* pPropertyCount, VkSparseImageFormatProperties* pProperties) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-physicalDevice-parameter", kVUIDUndefined); return skip; @@ -487,7 +458,6 @@ bool ObjectLifetimes::PreCallValidateQueueBindSparse( const VkBindSparseInfo* pBindInfo, VkFence fence) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(queue, queue, kVulkanObjectTypeQueue, false, "VUID-vkQueueBindSparse-queue-parameter", "VUID-vkQueueBindSparse-commonparent"); if (pBindInfo) { for (uint32_t index0 = 0; index0 < bindInfoCount; ++index0) { @@ -544,7 +514,6 @@ bool ObjectLifetimes::PreCallValidateCreateFence( const VkAllocationCallbacks* pAllocator, VkFence* pFence) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkCreateFence-device-parameter", kVUIDUndefined); return skip; @@ -557,7 +526,6 @@ void ObjectLifetimes::PostCallRecordCreateFence( VkFence* pFence, VkResult result) { if (result != VK_SUCCESS) return; - auto lock = write_shared_lock(); CreateObject(device, *pFence, kVulkanObjectTypeFence, pAllocator); } @@ -567,7 +535,6 @@ bool ObjectLifetimes::PreCallValidateDestroyFence( VkFence fence, const VkAllocationCallbacks* pAllocator) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkDestroyFence-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, fence, kVulkanObjectTypeFence, true, "VUID-vkDestroyFence-fence-parameter", "VUID-vkDestroyFence-fence-parent"); skip |= ValidateDestroyObject(device, fence, kVulkanObjectTypeFence, pAllocator, "VUID-vkDestroyFence-fence-01121", "VUID-vkDestroyFence-fence-01122"); @@ -579,7 +546,6 @@ void ObjectLifetimes::PreCallRecordDestroyFence( VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator) { - auto lock = write_shared_lock(); RecordDestroyObject(device, fence, kVulkanObjectTypeFence); } @@ -589,7 +555,6 @@ bool ObjectLifetimes::PreCallValidateResetFences( uint32_t fenceCount, const VkFence* pFences) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkResetFences-device-parameter", kVUIDUndefined); if (pFences) { for (uint32_t index0 = 0; index0 < fenceCount; ++index0) { @@ -604,7 +569,6 @@ bool ObjectLifetimes::PreCallValidateGetFenceStatus( VkDevice device, VkFence fence) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetFenceStatus-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, fence, kVulkanObjectTypeFence, false, "VUID-vkGetFenceStatus-fence-parameter", "VUID-vkGetFenceStatus-fence-parent"); @@ -618,7 +582,6 @@ bool ObjectLifetimes::PreCallValidateWaitForFences( VkBool32 waitAll, uint64_t timeout) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkWaitForFences-device-parameter", kVUIDUndefined); if (pFences) { for (uint32_t index0 = 0; index0 < fenceCount; ++index0) { @@ -635,7 +598,6 @@ bool ObjectLifetimes::PreCallValidateCreateSemaphore( const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkCreateSemaphore-device-parameter", kVUIDUndefined); return skip; @@ -648,7 +610,6 @@ void ObjectLifetimes::PostCallRecordCreateSemaphore( VkSemaphore* pSemaphore, VkResult result) { if (result != VK_SUCCESS) return; - auto lock = write_shared_lock(); CreateObject(device, *pSemaphore, kVulkanObjectTypeSemaphore, pAllocator); } @@ -658,7 +619,6 @@ bool ObjectLifetimes::PreCallValidateDestroySemaphore( VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkDestroySemaphore-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, semaphore, kVulkanObjectTypeSemaphore, true, "VUID-vkDestroySemaphore-semaphore-parameter", "VUID-vkDestroySemaphore-semaphore-parent"); skip |= ValidateDestroyObject(device, semaphore, kVulkanObjectTypeSemaphore, pAllocator, "VUID-vkDestroySemaphore-semaphore-01138", "VUID-vkDestroySemaphore-semaphore-01139"); @@ -670,7 +630,6 @@ void ObjectLifetimes::PreCallRecordDestroySemaphore( VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator) { - auto lock = write_shared_lock(); RecordDestroyObject(device, semaphore, kVulkanObjectTypeSemaphore); } @@ -681,7 +640,6 @@ bool ObjectLifetimes::PreCallValidateCreateEvent( const VkAllocationCallbacks* pAllocator, VkEvent* pEvent) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkCreateEvent-device-parameter", kVUIDUndefined); return skip; @@ -694,7 +652,6 @@ void ObjectLifetimes::PostCallRecordCreateEvent( VkEvent* pEvent, VkResult result) { if (result != VK_SUCCESS) return; - auto lock = write_shared_lock(); CreateObject(device, *pEvent, kVulkanObjectTypeEvent, pAllocator); } @@ -704,7 +661,6 @@ bool ObjectLifetimes::PreCallValidateDestroyEvent( VkEvent event, const VkAllocationCallbacks* pAllocator) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkDestroyEvent-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, event, kVulkanObjectTypeEvent, true, "VUID-vkDestroyEvent-event-parameter", "VUID-vkDestroyEvent-event-parent"); skip |= ValidateDestroyObject(device, event, kVulkanObjectTypeEvent, pAllocator, "VUID-vkDestroyEvent-event-01146", "VUID-vkDestroyEvent-event-01147"); @@ -716,7 +672,6 @@ void ObjectLifetimes::PreCallRecordDestroyEvent( VkDevice device, VkEvent event, const VkAllocationCallbacks* pAllocator) { - auto lock = write_shared_lock(); RecordDestroyObject(device, event, kVulkanObjectTypeEvent); } @@ -725,7 +680,6 @@ bool ObjectLifetimes::PreCallValidateGetEventStatus( VkDevice device, VkEvent event) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetEventStatus-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, event, kVulkanObjectTypeEvent, false, "VUID-vkGetEventStatus-event-parameter", "VUID-vkGetEventStatus-event-parent"); @@ -736,7 +690,6 @@ bool ObjectLifetimes::PreCallValidateSetEvent( VkDevice device, VkEvent event) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkSetEvent-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, event, kVulkanObjectTypeEvent, false, "VUID-vkSetEvent-event-parameter", "VUID-vkSetEvent-event-parent"); @@ -747,7 +700,6 @@ bool ObjectLifetimes::PreCallValidateResetEvent( VkDevice device, VkEvent event) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkResetEvent-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, event, kVulkanObjectTypeEvent, false, "VUID-vkResetEvent-event-parameter", "VUID-vkResetEvent-event-parent"); @@ -760,7 +712,6 @@ bool ObjectLifetimes::PreCallValidateCreateQueryPool( const VkAllocationCallbacks* pAllocator, VkQueryPool* pQueryPool) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkCreateQueryPool-device-parameter", kVUIDUndefined); return skip; @@ -773,7 +724,6 @@ void ObjectLifetimes::PostCallRecordCreateQueryPool( VkQueryPool* pQueryPool, VkResult result) { if (result != VK_SUCCESS) return; - auto lock = write_shared_lock(); CreateObject(device, *pQueryPool, kVulkanObjectTypeQueryPool, pAllocator); } @@ -783,7 +733,6 @@ bool ObjectLifetimes::PreCallValidateDestroyQueryPool( VkQueryPool queryPool, const VkAllocationCallbacks* pAllocator) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkDestroyQueryPool-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, queryPool, kVulkanObjectTypeQueryPool, true, "VUID-vkDestroyQueryPool-queryPool-parameter", "VUID-vkDestroyQueryPool-queryPool-parent"); skip |= ValidateDestroyObject(device, queryPool, kVulkanObjectTypeQueryPool, pAllocator, "VUID-vkDestroyQueryPool-queryPool-00794", "VUID-vkDestroyQueryPool-queryPool-00795"); @@ -795,7 +744,6 @@ void ObjectLifetimes::PreCallRecordDestroyQueryPool( VkDevice device, VkQueryPool queryPool, const VkAllocationCallbacks* pAllocator) { - auto lock = write_shared_lock(); RecordDestroyObject(device, queryPool, kVulkanObjectTypeQueryPool); } @@ -810,7 +758,6 @@ bool ObjectLifetimes::PreCallValidateGetQueryPoolResults( VkDeviceSize stride, VkQueryResultFlags flags) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetQueryPoolResults-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, queryPool, kVulkanObjectTypeQueryPool, false, "VUID-vkGetQueryPoolResults-queryPool-parameter", "VUID-vkGetQueryPoolResults-queryPool-parent"); @@ -823,7 +770,6 @@ bool ObjectLifetimes::PreCallValidateCreateBuffer( const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkCreateBuffer-device-parameter", kVUIDUndefined); return skip; @@ -836,7 +782,6 @@ void ObjectLifetimes::PostCallRecordCreateBuffer( VkBuffer* pBuffer, VkResult result) { if (result != VK_SUCCESS) return; - auto lock = write_shared_lock(); CreateObject(device, *pBuffer, kVulkanObjectTypeBuffer, pAllocator); } @@ -846,7 +791,6 @@ bool ObjectLifetimes::PreCallValidateDestroyBuffer( VkBuffer buffer, const VkAllocationCallbacks* pAllocator) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkDestroyBuffer-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, buffer, kVulkanObjectTypeBuffer, true, "VUID-vkDestroyBuffer-buffer-parameter", "VUID-vkDestroyBuffer-buffer-parent"); skip |= ValidateDestroyObject(device, buffer, kVulkanObjectTypeBuffer, pAllocator, "VUID-vkDestroyBuffer-buffer-00923", "VUID-vkDestroyBuffer-buffer-00924"); @@ -858,7 +802,6 @@ void ObjectLifetimes::PreCallRecordDestroyBuffer( VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator) { - auto lock = write_shared_lock(); RecordDestroyObject(device, buffer, kVulkanObjectTypeBuffer); } @@ -869,7 +812,6 @@ bool ObjectLifetimes::PreCallValidateCreateBufferView( const VkAllocationCallbacks* pAllocator, VkBufferView* pView) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkCreateBufferView-device-parameter", kVUIDUndefined); if (pCreateInfo) { skip |= ValidateObject(device, pCreateInfo->buffer, kVulkanObjectTypeBuffer, false, "VUID-VkBufferViewCreateInfo-buffer-parameter", kVUIDUndefined); @@ -885,7 +827,6 @@ void ObjectLifetimes::PostCallRecordCreateBufferView( VkBufferView* pView, VkResult result) { if (result != VK_SUCCESS) return; - auto lock = write_shared_lock(); CreateObject(device, *pView, kVulkanObjectTypeBufferView, pAllocator); } @@ -895,7 +836,6 @@ bool ObjectLifetimes::PreCallValidateDestroyBufferView( VkBufferView bufferView, const VkAllocationCallbacks* pAllocator) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkDestroyBufferView-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, bufferView, kVulkanObjectTypeBufferView, true, "VUID-vkDestroyBufferView-bufferView-parameter", "VUID-vkDestroyBufferView-bufferView-parent"); skip |= ValidateDestroyObject(device, bufferView, kVulkanObjectTypeBufferView, pAllocator, "VUID-vkDestroyBufferView-bufferView-00937", "VUID-vkDestroyBufferView-bufferView-00938"); @@ -907,7 +847,6 @@ void ObjectLifetimes::PreCallRecordDestroyBufferView( VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* pAllocator) { - auto lock = write_shared_lock(); RecordDestroyObject(device, bufferView, kVulkanObjectTypeBufferView); } @@ -918,7 +857,6 @@ bool ObjectLifetimes::PreCallValidateCreateImage( const VkAllocationCallbacks* pAllocator, VkImage* pImage) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkCreateImage-device-parameter", kVUIDUndefined); return skip; @@ -931,7 +869,6 @@ void ObjectLifetimes::PostCallRecordCreateImage( VkImage* pImage, VkResult result) { if (result != VK_SUCCESS) return; - auto lock = write_shared_lock(); CreateObject(device, *pImage, kVulkanObjectTypeImage, pAllocator); } @@ -941,7 +878,6 @@ bool ObjectLifetimes::PreCallValidateDestroyImage( VkImage image, const VkAllocationCallbacks* pAllocator) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkDestroyImage-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, image, kVulkanObjectTypeImage, true, "VUID-vkDestroyImage-image-parameter", "VUID-vkDestroyImage-image-parent"); skip |= ValidateDestroyObject(device, image, kVulkanObjectTypeImage, pAllocator, "VUID-vkDestroyImage-image-01001", "VUID-vkDestroyImage-image-01002"); @@ -953,7 +889,6 @@ void ObjectLifetimes::PreCallRecordDestroyImage( VkDevice device, VkImage image, const VkAllocationCallbacks* pAllocator) { - auto lock = write_shared_lock(); RecordDestroyObject(device, image, kVulkanObjectTypeImage); } @@ -964,7 +899,6 @@ bool ObjectLifetimes::PreCallValidateGetImageSubresourceLayout( const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetImageSubresourceLayout-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, image, kVulkanObjectTypeImage, false, "VUID-vkGetImageSubresourceLayout-image-parameter", "VUID-vkGetImageSubresourceLayout-image-parent"); @@ -977,7 +911,6 @@ bool ObjectLifetimes::PreCallValidateCreateImageView( const VkAllocationCallbacks* pAllocator, VkImageView* pView) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkCreateImageView-device-parameter", kVUIDUndefined); if (pCreateInfo) { skip |= ValidateObject(device, pCreateInfo->image, kVulkanObjectTypeImage, false, "VUID-VkImageViewCreateInfo-image-parameter", kVUIDUndefined); @@ -993,7 +926,6 @@ void ObjectLifetimes::PostCallRecordCreateImageView( VkImageView* pView, VkResult result) { if (result != VK_SUCCESS) return; - auto lock = write_shared_lock(); CreateObject(device, *pView, kVulkanObjectTypeImageView, pAllocator); } @@ -1003,7 +935,6 @@ bool ObjectLifetimes::PreCallValidateDestroyImageView( VkImageView imageView, const VkAllocationCallbacks* pAllocator) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkDestroyImageView-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, imageView, kVulkanObjectTypeImageView, true, "VUID-vkDestroyImageView-imageView-parameter", "VUID-vkDestroyImageView-imageView-parent"); skip |= ValidateDestroyObject(device, imageView, kVulkanObjectTypeImageView, pAllocator, "VUID-vkDestroyImageView-imageView-01027", "VUID-vkDestroyImageView-imageView-01028"); @@ -1015,7 +946,6 @@ void ObjectLifetimes::PreCallRecordDestroyImageView( VkDevice device, VkImageView imageView, const VkAllocationCallbacks* pAllocator) { - auto lock = write_shared_lock(); RecordDestroyObject(device, imageView, kVulkanObjectTypeImageView); } @@ -1026,7 +956,6 @@ bool ObjectLifetimes::PreCallValidateCreateShaderModule( const VkAllocationCallbacks* pAllocator, VkShaderModule* pShaderModule) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkCreateShaderModule-device-parameter", kVUIDUndefined); return skip; @@ -1039,7 +968,6 @@ void ObjectLifetimes::PostCallRecordCreateShaderModule( VkShaderModule* pShaderModule, VkResult result) { if (result != VK_SUCCESS) return; - auto lock = write_shared_lock(); CreateObject(device, *pShaderModule, kVulkanObjectTypeShaderModule, pAllocator); } @@ -1049,7 +977,6 @@ bool ObjectLifetimes::PreCallValidateDestroyShaderModule( VkShaderModule shaderModule, const VkAllocationCallbacks* pAllocator) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkDestroyShaderModule-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, shaderModule, kVulkanObjectTypeShaderModule, true, "VUID-vkDestroyShaderModule-shaderModule-parameter", "VUID-vkDestroyShaderModule-shaderModule-parent"); skip |= ValidateDestroyObject(device, shaderModule, kVulkanObjectTypeShaderModule, pAllocator, "VUID-vkDestroyShaderModule-shaderModule-01092", "VUID-vkDestroyShaderModule-shaderModule-01093"); @@ -1061,7 +988,6 @@ void ObjectLifetimes::PreCallRecordDestroyShaderModule( VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks* pAllocator) { - auto lock = write_shared_lock(); RecordDestroyObject(device, shaderModule, kVulkanObjectTypeShaderModule); } @@ -1072,7 +998,6 @@ bool ObjectLifetimes::PreCallValidateCreatePipelineCache( const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkCreatePipelineCache-device-parameter", kVUIDUndefined); return skip; @@ -1085,7 +1010,6 @@ void ObjectLifetimes::PostCallRecordCreatePipelineCache( VkPipelineCache* pPipelineCache, VkResult result) { if (result != VK_SUCCESS) return; - auto lock = write_shared_lock(); CreateObject(device, *pPipelineCache, kVulkanObjectTypePipelineCache, pAllocator); } @@ -1095,7 +1019,6 @@ bool ObjectLifetimes::PreCallValidateDestroyPipelineCache( VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkDestroyPipelineCache-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, pipelineCache, kVulkanObjectTypePipelineCache, true, "VUID-vkDestroyPipelineCache-pipelineCache-parameter", "VUID-vkDestroyPipelineCache-pipelineCache-parent"); skip |= ValidateDestroyObject(device, pipelineCache, kVulkanObjectTypePipelineCache, pAllocator, "VUID-vkDestroyPipelineCache-pipelineCache-00771", "VUID-vkDestroyPipelineCache-pipelineCache-00772"); @@ -1107,7 +1030,6 @@ void ObjectLifetimes::PreCallRecordDestroyPipelineCache( VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator) { - auto lock = write_shared_lock(); RecordDestroyObject(device, pipelineCache, kVulkanObjectTypePipelineCache); } @@ -1118,7 +1040,6 @@ bool ObjectLifetimes::PreCallValidateGetPipelineCacheData( size_t* pDataSize, void* pData) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetPipelineCacheData-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, pipelineCache, kVulkanObjectTypePipelineCache, false, "VUID-vkGetPipelineCacheData-pipelineCache-parameter", "VUID-vkGetPipelineCacheData-pipelineCache-parent"); @@ -1131,7 +1052,6 @@ bool ObjectLifetimes::PreCallValidateMergePipelineCaches( uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkMergePipelineCaches-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, dstCache, kVulkanObjectTypePipelineCache, false, "VUID-vkMergePipelineCaches-dstCache-parameter", "VUID-vkMergePipelineCaches-dstCache-parent"); if (pSrcCaches) { @@ -1151,7 +1071,6 @@ bool ObjectLifetimes::PreCallValidateCreateGraphicsPipelines( const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkCreateGraphicsPipelines-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, pipelineCache, kVulkanObjectTypePipelineCache, true, "VUID-vkCreateGraphicsPipelines-pipelineCache-parameter", "VUID-vkCreateGraphicsPipelines-pipelineCache-parent"); if (pCreateInfos) { @@ -1178,7 +1097,6 @@ void ObjectLifetimes::PostCallRecordCreateGraphicsPipelines( const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines, VkResult result) { - auto lock = write_shared_lock(); if (VK_ERROR_VALIDATION_FAILED_EXT == result) return; if (pPipelines) { for (uint32_t index = 0; index < createInfoCount; index++) { @@ -1197,7 +1115,6 @@ bool ObjectLifetimes::PreCallValidateCreateComputePipelines( const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkCreateComputePipelines-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, pipelineCache, kVulkanObjectTypePipelineCache, true, "VUID-vkCreateComputePipelines-pipelineCache-parameter", "VUID-vkCreateComputePipelines-pipelineCache-parent"); if (pCreateInfos) { @@ -1219,7 +1136,6 @@ void ObjectLifetimes::PostCallRecordCreateComputePipelines( const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines, VkResult result) { - auto lock = write_shared_lock(); if (VK_ERROR_VALIDATION_FAILED_EXT == result) return; if (pPipelines) { for (uint32_t index = 0; index < createInfoCount; index++) { @@ -1235,7 +1151,6 @@ bool ObjectLifetimes::PreCallValidateDestroyPipeline( VkPipeline pipeline, const VkAllocationCallbacks* pAllocator) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkDestroyPipeline-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, pipeline, kVulkanObjectTypePipeline, true, "VUID-vkDestroyPipeline-pipeline-parameter", "VUID-vkDestroyPipeline-pipeline-parent"); skip |= ValidateDestroyObject(device, pipeline, kVulkanObjectTypePipeline, pAllocator, "VUID-vkDestroyPipeline-pipeline-00766", "VUID-vkDestroyPipeline-pipeline-00767"); @@ -1247,7 +1162,6 @@ void ObjectLifetimes::PreCallRecordDestroyPipeline( VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator) { - auto lock = write_shared_lock(); RecordDestroyObject(device, pipeline, kVulkanObjectTypePipeline); } @@ -1258,7 +1172,6 @@ bool ObjectLifetimes::PreCallValidateCreatePipelineLayout( const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkCreatePipelineLayout-device-parameter", kVUIDUndefined); if (pCreateInfo) { if (pCreateInfo->pSetLayouts) { @@ -1278,7 +1191,6 @@ void ObjectLifetimes::PostCallRecordCreatePipelineLayout( VkPipelineLayout* pPipelineLayout, VkResult result) { if (result != VK_SUCCESS) return; - auto lock = write_shared_lock(); CreateObject(device, *pPipelineLayout, kVulkanObjectTypePipelineLayout, pAllocator); } @@ -1288,7 +1200,6 @@ bool ObjectLifetimes::PreCallValidateDestroyPipelineLayout( VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* pAllocator) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkDestroyPipelineLayout-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, pipelineLayout, kVulkanObjectTypePipelineLayout, true, "VUID-vkDestroyPipelineLayout-pipelineLayout-parameter", "VUID-vkDestroyPipelineLayout-pipelineLayout-parent"); skip |= ValidateDestroyObject(device, pipelineLayout, kVulkanObjectTypePipelineLayout, pAllocator, "VUID-vkDestroyPipelineLayout-pipelineLayout-00299", "VUID-vkDestroyPipelineLayout-pipelineLayout-00300"); @@ -1300,7 +1211,6 @@ void ObjectLifetimes::PreCallRecordDestroyPipelineLayout( VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* pAllocator) { - auto lock = write_shared_lock(); RecordDestroyObject(device, pipelineLayout, kVulkanObjectTypePipelineLayout); } @@ -1311,7 +1221,6 @@ bool ObjectLifetimes::PreCallValidateCreateSampler( const VkAllocationCallbacks* pAllocator, VkSampler* pSampler) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkCreateSampler-device-parameter", kVUIDUndefined); return skip; @@ -1324,7 +1233,6 @@ void ObjectLifetimes::PostCallRecordCreateSampler( VkSampler* pSampler, VkResult result) { if (result != VK_SUCCESS) return; - auto lock = write_shared_lock(); CreateObject(device, *pSampler, kVulkanObjectTypeSampler, pAllocator); } @@ -1334,7 +1242,6 @@ bool ObjectLifetimes::PreCallValidateDestroySampler( VkSampler sampler, const VkAllocationCallbacks* pAllocator) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkDestroySampler-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, sampler, kVulkanObjectTypeSampler, true, "VUID-vkDestroySampler-sampler-parameter", "VUID-vkDestroySampler-sampler-parent"); skip |= ValidateDestroyObject(device, sampler, kVulkanObjectTypeSampler, pAllocator, "VUID-vkDestroySampler-sampler-01083", "VUID-vkDestroySampler-sampler-01084"); @@ -1346,7 +1253,6 @@ void ObjectLifetimes::PreCallRecordDestroySampler( VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator) { - auto lock = write_shared_lock(); RecordDestroyObject(device, sampler, kVulkanObjectTypeSampler); } @@ -1356,7 +1262,6 @@ bool ObjectLifetimes::PreCallValidateDestroyDescriptorSetLayout( VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* pAllocator) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkDestroyDescriptorSetLayout-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, descriptorSetLayout, kVulkanObjectTypeDescriptorSetLayout, true, "VUID-vkDestroyDescriptorSetLayout-descriptorSetLayout-parameter", "VUID-vkDestroyDescriptorSetLayout-descriptorSetLayout-parent"); skip |= ValidateDestroyObject(device, descriptorSetLayout, kVulkanObjectTypeDescriptorSetLayout, pAllocator, "VUID-vkDestroyDescriptorSetLayout-descriptorSetLayout-00284", "VUID-vkDestroyDescriptorSetLayout-descriptorSetLayout-00285"); @@ -1368,7 +1273,6 @@ void ObjectLifetimes::PreCallRecordDestroyDescriptorSetLayout( VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* pAllocator) { - auto lock = write_shared_lock(); RecordDestroyObject(device, descriptorSetLayout, kVulkanObjectTypeDescriptorSetLayout); } @@ -1379,7 +1283,6 @@ bool ObjectLifetimes::PreCallValidateCreateDescriptorPool( const VkAllocationCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkCreateDescriptorPool-device-parameter", kVUIDUndefined); return skip; @@ -1392,7 +1295,6 @@ void ObjectLifetimes::PostCallRecordCreateDescriptorPool( VkDescriptorPool* pDescriptorPool, VkResult result) { if (result != VK_SUCCESS) return; - auto lock = write_shared_lock(); CreateObject(device, *pDescriptorPool, kVulkanObjectTypeDescriptorPool, pAllocator); } @@ -1402,7 +1304,6 @@ bool ObjectLifetimes::PreCallValidateDestroyFramebuffer( VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkDestroyFramebuffer-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, framebuffer, kVulkanObjectTypeFramebuffer, true, "VUID-vkDestroyFramebuffer-framebuffer-parameter", "VUID-vkDestroyFramebuffer-framebuffer-parent"); skip |= ValidateDestroyObject(device, framebuffer, kVulkanObjectTypeFramebuffer, pAllocator, "VUID-vkDestroyFramebuffer-framebuffer-00893", "VUID-vkDestroyFramebuffer-framebuffer-00894"); @@ -1414,7 +1315,6 @@ void ObjectLifetimes::PreCallRecordDestroyFramebuffer( VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator) { - auto lock = write_shared_lock(); RecordDestroyObject(device, framebuffer, kVulkanObjectTypeFramebuffer); } @@ -1425,7 +1325,6 @@ bool ObjectLifetimes::PreCallValidateCreateRenderPass( const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkCreateRenderPass-device-parameter", kVUIDUndefined); return skip; @@ -1438,7 +1337,6 @@ void ObjectLifetimes::PostCallRecordCreateRenderPass( VkRenderPass* pRenderPass, VkResult result) { if (result != VK_SUCCESS) return; - auto lock = write_shared_lock(); CreateObject(device, *pRenderPass, kVulkanObjectTypeRenderPass, pAllocator); } @@ -1448,7 +1346,6 @@ bool ObjectLifetimes::PreCallValidateDestroyRenderPass( VkRenderPass renderPass, const VkAllocationCallbacks* pAllocator) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkDestroyRenderPass-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, renderPass, kVulkanObjectTypeRenderPass, true, "VUID-vkDestroyRenderPass-renderPass-parameter", "VUID-vkDestroyRenderPass-renderPass-parent"); skip |= ValidateDestroyObject(device, renderPass, kVulkanObjectTypeRenderPass, pAllocator, "VUID-vkDestroyRenderPass-renderPass-00874", "VUID-vkDestroyRenderPass-renderPass-00875"); @@ -1460,7 +1357,6 @@ void ObjectLifetimes::PreCallRecordDestroyRenderPass( VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* pAllocator) { - auto lock = write_shared_lock(); RecordDestroyObject(device, renderPass, kVulkanObjectTypeRenderPass); } @@ -1470,7 +1366,6 @@ bool ObjectLifetimes::PreCallValidateGetRenderAreaGranularity( VkRenderPass renderPass, VkExtent2D* pGranularity) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetRenderAreaGranularity-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, renderPass, kVulkanObjectTypeRenderPass, false, "VUID-vkGetRenderAreaGranularity-renderPass-parameter", "VUID-vkGetRenderAreaGranularity-renderPass-parent"); @@ -1483,7 +1378,6 @@ bool ObjectLifetimes::PreCallValidateCreateCommandPool( const VkAllocationCallbacks* pAllocator, VkCommandPool* pCommandPool) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkCreateCommandPool-device-parameter", kVUIDUndefined); return skip; @@ -1496,7 +1390,6 @@ void ObjectLifetimes::PostCallRecordCreateCommandPool( VkCommandPool* pCommandPool, VkResult result) { if (result != VK_SUCCESS) return; - auto lock = write_shared_lock(); CreateObject(device, *pCommandPool, kVulkanObjectTypeCommandPool, pAllocator); } @@ -1506,7 +1399,6 @@ bool ObjectLifetimes::PreCallValidateResetCommandPool( VkCommandPool commandPool, VkCommandPoolResetFlags flags) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkResetCommandPool-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, commandPool, kVulkanObjectTypeCommandPool, false, "VUID-vkResetCommandPool-commandPool-parameter", "VUID-vkResetCommandPool-commandPool-parent"); @@ -1516,7 +1408,6 @@ bool ObjectLifetimes::PreCallValidateResetCommandPool( bool ObjectLifetimes::PreCallValidateEndCommandBuffer( VkCommandBuffer commandBuffer) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkEndCommandBuffer-commandBuffer-parameter", kVUIDUndefined); return skip; @@ -1526,7 +1417,6 @@ bool ObjectLifetimes::PreCallValidateResetCommandBuffer( VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkResetCommandBuffer-commandBuffer-parameter", kVUIDUndefined); return skip; @@ -1537,7 +1427,6 @@ bool ObjectLifetimes::PreCallValidateCmdBindPipeline( VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdBindPipeline-commandBuffer-parameter", "VUID-vkCmdBindPipeline-commonparent"); skip |= ValidateObject(commandBuffer, pipeline, kVulkanObjectTypePipeline, false, "VUID-vkCmdBindPipeline-pipeline-parameter", "VUID-vkCmdBindPipeline-commonparent"); @@ -1550,7 +1439,6 @@ bool ObjectLifetimes::PreCallValidateCmdSetViewport( uint32_t viewportCount, const VkViewport* pViewports) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdSetViewport-commandBuffer-parameter", kVUIDUndefined); return skip; @@ -1562,7 +1450,6 @@ bool ObjectLifetimes::PreCallValidateCmdSetScissor( uint32_t scissorCount, const VkRect2D* pScissors) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdSetScissor-commandBuffer-parameter", kVUIDUndefined); return skip; @@ -1572,7 +1459,6 @@ bool ObjectLifetimes::PreCallValidateCmdSetLineWidth( VkCommandBuffer commandBuffer, float lineWidth) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdSetLineWidth-commandBuffer-parameter", kVUIDUndefined); return skip; @@ -1584,7 +1470,6 @@ bool ObjectLifetimes::PreCallValidateCmdSetDepthBias( float depthBiasClamp, float depthBiasSlopeFactor) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdSetDepthBias-commandBuffer-parameter", kVUIDUndefined); return skip; @@ -1594,7 +1479,6 @@ bool ObjectLifetimes::PreCallValidateCmdSetBlendConstants( VkCommandBuffer commandBuffer, const float blendConstants[4]) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdSetBlendConstants-commandBuffer-parameter", kVUIDUndefined); return skip; @@ -1605,7 +1489,6 @@ bool ObjectLifetimes::PreCallValidateCmdSetDepthBounds( float minDepthBounds, float maxDepthBounds) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdSetDepthBounds-commandBuffer-parameter", kVUIDUndefined); return skip; @@ -1616,7 +1499,6 @@ bool ObjectLifetimes::PreCallValidateCmdSetStencilCompareMask( VkStencilFaceFlags faceMask, uint32_t compareMask) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdSetStencilCompareMask-commandBuffer-parameter", kVUIDUndefined); return skip; @@ -1627,7 +1509,6 @@ bool ObjectLifetimes::PreCallValidateCmdSetStencilWriteMask( VkStencilFaceFlags faceMask, uint32_t writeMask) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdSetStencilWriteMask-commandBuffer-parameter", kVUIDUndefined); return skip; @@ -1638,7 +1519,6 @@ bool ObjectLifetimes::PreCallValidateCmdSetStencilReference( VkStencilFaceFlags faceMask, uint32_t reference) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdSetStencilReference-commandBuffer-parameter", kVUIDUndefined); return skip; @@ -1654,7 +1534,6 @@ bool ObjectLifetimes::PreCallValidateCmdBindDescriptorSets( uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdBindDescriptorSets-commandBuffer-parameter", "VUID-vkCmdBindDescriptorSets-commonparent"); skip |= ValidateObject(commandBuffer, layout, kVulkanObjectTypePipelineLayout, false, "VUID-vkCmdBindDescriptorSets-layout-parameter", "VUID-vkCmdBindDescriptorSets-commonparent"); if (pDescriptorSets) { @@ -1672,7 +1551,6 @@ bool ObjectLifetimes::PreCallValidateCmdBindIndexBuffer( VkDeviceSize offset, VkIndexType indexType) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdBindIndexBuffer-commandBuffer-parameter", "VUID-vkCmdBindIndexBuffer-commonparent"); skip |= ValidateObject(commandBuffer, buffer, kVulkanObjectTypeBuffer, false, "VUID-vkCmdBindIndexBuffer-buffer-parameter", "VUID-vkCmdBindIndexBuffer-commonparent"); @@ -1686,7 +1564,6 @@ bool ObjectLifetimes::PreCallValidateCmdBindVertexBuffers( const VkBuffer* pBuffers, const VkDeviceSize* pOffsets) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdBindVertexBuffers-commandBuffer-parameter", "VUID-vkCmdBindVertexBuffers-commonparent"); if (pBuffers) { for (uint32_t index0 = 0; index0 < bindingCount; ++index0) { @@ -1704,7 +1581,6 @@ bool ObjectLifetimes::PreCallValidateCmdDraw( uint32_t firstVertex, uint32_t firstInstance) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdDraw-commandBuffer-parameter", kVUIDUndefined); return skip; @@ -1718,7 +1594,6 @@ bool ObjectLifetimes::PreCallValidateCmdDrawIndexed( int32_t vertexOffset, uint32_t firstInstance) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdDrawIndexed-commandBuffer-parameter", kVUIDUndefined); return skip; @@ -1731,7 +1606,6 @@ bool ObjectLifetimes::PreCallValidateCmdDrawIndirect( uint32_t drawCount, uint32_t stride) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdDrawIndirect-commandBuffer-parameter", "VUID-vkCmdDrawIndirect-commonparent"); skip |= ValidateObject(commandBuffer, buffer, kVulkanObjectTypeBuffer, false, "VUID-vkCmdDrawIndirect-buffer-parameter", "VUID-vkCmdDrawIndirect-commonparent"); @@ -1745,7 +1619,6 @@ bool ObjectLifetimes::PreCallValidateCmdDrawIndexedIndirect( uint32_t drawCount, uint32_t stride) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdDrawIndexedIndirect-commandBuffer-parameter", "VUID-vkCmdDrawIndexedIndirect-commonparent"); skip |= ValidateObject(commandBuffer, buffer, kVulkanObjectTypeBuffer, false, "VUID-vkCmdDrawIndexedIndirect-buffer-parameter", "VUID-vkCmdDrawIndexedIndirect-commonparent"); @@ -1758,7 +1631,6 @@ bool ObjectLifetimes::PreCallValidateCmdDispatch( uint32_t groupCountY, uint32_t groupCountZ) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdDispatch-commandBuffer-parameter", kVUIDUndefined); return skip; @@ -1769,7 +1641,6 @@ bool ObjectLifetimes::PreCallValidateCmdDispatchIndirect( VkBuffer buffer, VkDeviceSize offset) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdDispatchIndirect-commandBuffer-parameter", "VUID-vkCmdDispatchIndirect-commonparent"); skip |= ValidateObject(commandBuffer, buffer, kVulkanObjectTypeBuffer, false, "VUID-vkCmdDispatchIndirect-buffer-parameter", "VUID-vkCmdDispatchIndirect-commonparent"); @@ -1783,7 +1654,6 @@ bool ObjectLifetimes::PreCallValidateCmdCopyBuffer( uint32_t regionCount, const VkBufferCopy* pRegions) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdCopyBuffer-commandBuffer-parameter", "VUID-vkCmdCopyBuffer-commonparent"); skip |= ValidateObject(commandBuffer, srcBuffer, kVulkanObjectTypeBuffer, false, "VUID-vkCmdCopyBuffer-srcBuffer-parameter", "VUID-vkCmdCopyBuffer-commonparent"); skip |= ValidateObject(commandBuffer, dstBuffer, kVulkanObjectTypeBuffer, false, "VUID-vkCmdCopyBuffer-dstBuffer-parameter", "VUID-vkCmdCopyBuffer-commonparent"); @@ -1800,7 +1670,6 @@ bool ObjectLifetimes::PreCallValidateCmdCopyImage( uint32_t regionCount, const VkImageCopy* pRegions) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdCopyImage-commandBuffer-parameter", "VUID-vkCmdCopyImage-commonparent"); skip |= ValidateObject(commandBuffer, srcImage, kVulkanObjectTypeImage, false, "VUID-vkCmdCopyImage-srcImage-parameter", "VUID-vkCmdCopyImage-commonparent"); skip |= ValidateObject(commandBuffer, dstImage, kVulkanObjectTypeImage, false, "VUID-vkCmdCopyImage-dstImage-parameter", "VUID-vkCmdCopyImage-commonparent"); @@ -1818,7 +1687,6 @@ bool ObjectLifetimes::PreCallValidateCmdBlitImage( const VkImageBlit* pRegions, VkFilter filter) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdBlitImage-commandBuffer-parameter", "VUID-vkCmdBlitImage-commonparent"); skip |= ValidateObject(commandBuffer, srcImage, kVulkanObjectTypeImage, false, "VUID-vkCmdBlitImage-srcImage-parameter", "VUID-vkCmdBlitImage-commonparent"); skip |= ValidateObject(commandBuffer, dstImage, kVulkanObjectTypeImage, false, "VUID-vkCmdBlitImage-dstImage-parameter", "VUID-vkCmdBlitImage-commonparent"); @@ -1834,7 +1702,6 @@ bool ObjectLifetimes::PreCallValidateCmdCopyBufferToImage( uint32_t regionCount, const VkBufferImageCopy* pRegions) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdCopyBufferToImage-commandBuffer-parameter", "VUID-vkCmdCopyBufferToImage-commonparent"); skip |= ValidateObject(commandBuffer, srcBuffer, kVulkanObjectTypeBuffer, false, "VUID-vkCmdCopyBufferToImage-srcBuffer-parameter", "VUID-vkCmdCopyBufferToImage-commonparent"); skip |= ValidateObject(commandBuffer, dstImage, kVulkanObjectTypeImage, false, "VUID-vkCmdCopyBufferToImage-dstImage-parameter", "VUID-vkCmdCopyBufferToImage-commonparent"); @@ -1850,7 +1717,6 @@ bool ObjectLifetimes::PreCallValidateCmdCopyImageToBuffer( uint32_t regionCount, const VkBufferImageCopy* pRegions) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdCopyImageToBuffer-commandBuffer-parameter", "VUID-vkCmdCopyImageToBuffer-commonparent"); skip |= ValidateObject(commandBuffer, srcImage, kVulkanObjectTypeImage, false, "VUID-vkCmdCopyImageToBuffer-srcImage-parameter", "VUID-vkCmdCopyImageToBuffer-commonparent"); skip |= ValidateObject(commandBuffer, dstBuffer, kVulkanObjectTypeBuffer, false, "VUID-vkCmdCopyImageToBuffer-dstBuffer-parameter", "VUID-vkCmdCopyImageToBuffer-commonparent"); @@ -1865,7 +1731,6 @@ bool ObjectLifetimes::PreCallValidateCmdUpdateBuffer( VkDeviceSize dataSize, const void* pData) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdUpdateBuffer-commandBuffer-parameter", "VUID-vkCmdUpdateBuffer-commonparent"); skip |= ValidateObject(commandBuffer, dstBuffer, kVulkanObjectTypeBuffer, false, "VUID-vkCmdUpdateBuffer-dstBuffer-parameter", "VUID-vkCmdUpdateBuffer-commonparent"); @@ -1879,7 +1744,6 @@ bool ObjectLifetimes::PreCallValidateCmdFillBuffer( VkDeviceSize size, uint32_t data) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdFillBuffer-commandBuffer-parameter", "VUID-vkCmdFillBuffer-commonparent"); skip |= ValidateObject(commandBuffer, dstBuffer, kVulkanObjectTypeBuffer, false, "VUID-vkCmdFillBuffer-dstBuffer-parameter", "VUID-vkCmdFillBuffer-commonparent"); @@ -1894,7 +1758,6 @@ bool ObjectLifetimes::PreCallValidateCmdClearColorImage( uint32_t rangeCount, const VkImageSubresourceRange* pRanges) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdClearColorImage-commandBuffer-parameter", "VUID-vkCmdClearColorImage-commonparent"); skip |= ValidateObject(commandBuffer, image, kVulkanObjectTypeImage, false, "VUID-vkCmdClearColorImage-image-parameter", "VUID-vkCmdClearColorImage-commonparent"); @@ -1909,7 +1772,6 @@ bool ObjectLifetimes::PreCallValidateCmdClearDepthStencilImage( uint32_t rangeCount, const VkImageSubresourceRange* pRanges) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdClearDepthStencilImage-commandBuffer-parameter", "VUID-vkCmdClearDepthStencilImage-commonparent"); skip |= ValidateObject(commandBuffer, image, kVulkanObjectTypeImage, false, "VUID-vkCmdClearDepthStencilImage-image-parameter", "VUID-vkCmdClearDepthStencilImage-commonparent"); @@ -1923,7 +1785,6 @@ bool ObjectLifetimes::PreCallValidateCmdClearAttachments( uint32_t rectCount, const VkClearRect* pRects) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdClearAttachments-commandBuffer-parameter", kVUIDUndefined); return skip; @@ -1938,7 +1799,6 @@ bool ObjectLifetimes::PreCallValidateCmdResolveImage( uint32_t regionCount, const VkImageResolve* pRegions) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdResolveImage-commandBuffer-parameter", "VUID-vkCmdResolveImage-commonparent"); skip |= ValidateObject(commandBuffer, srcImage, kVulkanObjectTypeImage, false, "VUID-vkCmdResolveImage-srcImage-parameter", "VUID-vkCmdResolveImage-commonparent"); skip |= ValidateObject(commandBuffer, dstImage, kVulkanObjectTypeImage, false, "VUID-vkCmdResolveImage-dstImage-parameter", "VUID-vkCmdResolveImage-commonparent"); @@ -1951,7 +1811,6 @@ bool ObjectLifetimes::PreCallValidateCmdSetEvent( VkEvent event, VkPipelineStageFlags stageMask) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdSetEvent-commandBuffer-parameter", "VUID-vkCmdSetEvent-commonparent"); skip |= ValidateObject(commandBuffer, event, kVulkanObjectTypeEvent, false, "VUID-vkCmdSetEvent-event-parameter", "VUID-vkCmdSetEvent-commonparent"); @@ -1963,7 +1822,6 @@ bool ObjectLifetimes::PreCallValidateCmdResetEvent( VkEvent event, VkPipelineStageFlags stageMask) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdResetEvent-commandBuffer-parameter", "VUID-vkCmdResetEvent-commonparent"); skip |= ValidateObject(commandBuffer, event, kVulkanObjectTypeEvent, false, "VUID-vkCmdResetEvent-event-parameter", "VUID-vkCmdResetEvent-commonparent"); @@ -1983,7 +1841,6 @@ bool ObjectLifetimes::PreCallValidateCmdWaitEvents( uint32_t imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdWaitEvents-commandBuffer-parameter", "VUID-vkCmdWaitEvents-commonparent"); if (pEvents) { for (uint32_t index0 = 0; index0 < eventCount; ++index0) { @@ -2016,7 +1873,6 @@ bool ObjectLifetimes::PreCallValidateCmdPipelineBarrier( uint32_t imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdPipelineBarrier-commandBuffer-parameter", kVUIDUndefined); if (pBufferMemoryBarriers) { for (uint32_t index0 = 0; index0 < bufferMemoryBarrierCount; ++index0) { @@ -2038,7 +1894,6 @@ bool ObjectLifetimes::PreCallValidateCmdBeginQuery( uint32_t query, VkQueryControlFlags flags) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdBeginQuery-commandBuffer-parameter", "VUID-vkCmdBeginQuery-commonparent"); skip |= ValidateObject(commandBuffer, queryPool, kVulkanObjectTypeQueryPool, false, "VUID-vkCmdBeginQuery-queryPool-parameter", "VUID-vkCmdBeginQuery-commonparent"); @@ -2050,7 +1905,6 @@ bool ObjectLifetimes::PreCallValidateCmdEndQuery( VkQueryPool queryPool, uint32_t query) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdEndQuery-commandBuffer-parameter", "VUID-vkCmdEndQuery-commonparent"); skip |= ValidateObject(commandBuffer, queryPool, kVulkanObjectTypeQueryPool, false, "VUID-vkCmdEndQuery-queryPool-parameter", "VUID-vkCmdEndQuery-commonparent"); @@ -2063,7 +1917,6 @@ bool ObjectLifetimes::PreCallValidateCmdResetQueryPool( uint32_t firstQuery, uint32_t queryCount) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdResetQueryPool-commandBuffer-parameter", "VUID-vkCmdResetQueryPool-commonparent"); skip |= ValidateObject(commandBuffer, queryPool, kVulkanObjectTypeQueryPool, false, "VUID-vkCmdResetQueryPool-queryPool-parameter", "VUID-vkCmdResetQueryPool-commonparent"); @@ -2076,7 +1929,6 @@ bool ObjectLifetimes::PreCallValidateCmdWriteTimestamp( VkQueryPool queryPool, uint32_t query) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdWriteTimestamp-commandBuffer-parameter", "VUID-vkCmdWriteTimestamp-commonparent"); skip |= ValidateObject(commandBuffer, queryPool, kVulkanObjectTypeQueryPool, false, "VUID-vkCmdWriteTimestamp-queryPool-parameter", "VUID-vkCmdWriteTimestamp-commonparent"); @@ -2093,7 +1945,6 @@ bool ObjectLifetimes::PreCallValidateCmdCopyQueryPoolResults( VkDeviceSize stride, VkQueryResultFlags flags) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdCopyQueryPoolResults-commandBuffer-parameter", "VUID-vkCmdCopyQueryPoolResults-commonparent"); skip |= ValidateObject(commandBuffer, queryPool, kVulkanObjectTypeQueryPool, false, "VUID-vkCmdCopyQueryPoolResults-queryPool-parameter", "VUID-vkCmdCopyQueryPoolResults-commonparent"); skip |= ValidateObject(commandBuffer, dstBuffer, kVulkanObjectTypeBuffer, false, "VUID-vkCmdCopyQueryPoolResults-dstBuffer-parameter", "VUID-vkCmdCopyQueryPoolResults-commonparent"); @@ -2109,7 +1960,6 @@ bool ObjectLifetimes::PreCallValidateCmdPushConstants( uint32_t size, const void* pValues) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdPushConstants-commandBuffer-parameter", "VUID-vkCmdPushConstants-commonparent"); skip |= ValidateObject(commandBuffer, layout, kVulkanObjectTypePipelineLayout, false, "VUID-vkCmdPushConstants-layout-parameter", "VUID-vkCmdPushConstants-commonparent"); @@ -2121,7 +1971,6 @@ bool ObjectLifetimes::PreCallValidateCmdBeginRenderPass( const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdBeginRenderPass-commandBuffer-parameter", kVUIDUndefined); if (pRenderPassBegin) { skip |= ValidateObject(commandBuffer, pRenderPassBegin->renderPass, kVulkanObjectTypeRenderPass, false, "VUID-VkRenderPassBeginInfo-renderPass-parameter", "VUID-VkRenderPassBeginInfo-commonparent"); @@ -2135,7 +1984,6 @@ bool ObjectLifetimes::PreCallValidateCmdNextSubpass( VkCommandBuffer commandBuffer, VkSubpassContents contents) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdNextSubpass-commandBuffer-parameter", kVUIDUndefined); return skip; @@ -2144,7 +1992,6 @@ bool ObjectLifetimes::PreCallValidateCmdNextSubpass( bool ObjectLifetimes::PreCallValidateCmdEndRenderPass( VkCommandBuffer commandBuffer) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdEndRenderPass-commandBuffer-parameter", kVUIDUndefined); return skip; @@ -2155,7 +2002,6 @@ bool ObjectLifetimes::PreCallValidateCmdExecuteCommands( uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdExecuteCommands-commandBuffer-parameter", "VUID-vkCmdExecuteCommands-commonparent"); if (pCommandBuffers) { for (uint32_t index0 = 0; index0 < commandBufferCount; ++index0) { @@ -2171,7 +2017,6 @@ bool ObjectLifetimes::PreCallValidateBindBufferMemory2( uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkBindBufferMemory2-device-parameter", kVUIDUndefined); if (pBindInfos) { for (uint32_t index0 = 0; index0 < bindInfoCount; ++index0) { @@ -2188,7 +2033,6 @@ bool ObjectLifetimes::PreCallValidateBindImageMemory2( uint32_t bindInfoCount, const VkBindImageMemoryInfo* pBindInfos) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkBindImageMemory2-device-parameter", kVUIDUndefined); if (pBindInfos) { for (uint32_t index0 = 0; index0 < bindInfoCount; ++index0) { @@ -2207,7 +2051,6 @@ bool ObjectLifetimes::PreCallValidateGetDeviceGroupPeerMemoryFeatures( uint32_t remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetDeviceGroupPeerMemoryFeatures-device-parameter", kVUIDUndefined); return skip; @@ -2217,7 +2060,6 @@ bool ObjectLifetimes::PreCallValidateCmdSetDeviceMask( VkCommandBuffer commandBuffer, uint32_t deviceMask) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdSetDeviceMask-commandBuffer-parameter", kVUIDUndefined); return skip; @@ -2232,7 +2074,6 @@ bool ObjectLifetimes::PreCallValidateCmdDispatchBase( uint32_t groupCountY, uint32_t groupCountZ) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdDispatchBase-commandBuffer-parameter", kVUIDUndefined); return skip; @@ -2243,7 +2084,6 @@ bool ObjectLifetimes::PreCallValidateEnumeratePhysicalDeviceGroups( uint32_t* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(instance, instance, kVulkanObjectTypeInstance, false, "VUID-vkEnumeratePhysicalDeviceGroups-instance-parameter", kVUIDUndefined); return skip; @@ -2254,7 +2094,6 @@ bool ObjectLifetimes::PreCallValidateGetImageMemoryRequirements2( const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetImageMemoryRequirements2-device-parameter", kVUIDUndefined); if (pInfo) { skip |= ValidateObject(device, pInfo->image, kVulkanObjectTypeImage, false, "VUID-VkImageMemoryRequirementsInfo2-image-parameter", kVUIDUndefined); @@ -2268,7 +2107,6 @@ bool ObjectLifetimes::PreCallValidateGetBufferMemoryRequirements2( const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetBufferMemoryRequirements2-device-parameter", kVUIDUndefined); if (pInfo) { skip |= ValidateObject(device, pInfo->buffer, kVulkanObjectTypeBuffer, false, "VUID-VkBufferMemoryRequirementsInfo2-buffer-parameter", kVUIDUndefined); @@ -2283,7 +2121,6 @@ bool ObjectLifetimes::PreCallValidateGetImageSparseMemoryRequirements2( uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetImageSparseMemoryRequirements2-device-parameter", kVUIDUndefined); if (pInfo) { skip |= ValidateObject(device, pInfo->image, kVulkanObjectTypeImage, false, "VUID-VkImageSparseMemoryRequirementsInfo2-image-parameter", kVUIDUndefined); @@ -2296,7 +2133,6 @@ bool ObjectLifetimes::PreCallValidateGetPhysicalDeviceFeatures2( VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetPhysicalDeviceFeatures2-physicalDevice-parameter", kVUIDUndefined); return skip; @@ -2306,7 +2142,6 @@ bool ObjectLifetimes::PreCallValidateGetPhysicalDeviceProperties2( VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetPhysicalDeviceProperties2-physicalDevice-parameter", kVUIDUndefined); return skip; @@ -2317,7 +2152,6 @@ bool ObjectLifetimes::PreCallValidateGetPhysicalDeviceFormatProperties2( VkFormat format, VkFormatProperties2* pFormatProperties) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetPhysicalDeviceFormatProperties2-physicalDevice-parameter", kVUIDUndefined); return skip; @@ -2328,7 +2162,6 @@ bool ObjectLifetimes::PreCallValidateGetPhysicalDeviceImageFormatProperties2( const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetPhysicalDeviceImageFormatProperties2-physicalDevice-parameter", kVUIDUndefined); return skip; @@ -2338,7 +2171,6 @@ bool ObjectLifetimes::PreCallValidateGetPhysicalDeviceMemoryProperties2( VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetPhysicalDeviceMemoryProperties2-physicalDevice-parameter", kVUIDUndefined); return skip; @@ -2350,7 +2182,6 @@ bool ObjectLifetimes::PreCallValidateGetPhysicalDeviceSparseImageFormatPropertie uint32_t* pPropertyCount, VkSparseImageFormatProperties2* pProperties) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetPhysicalDeviceSparseImageFormatProperties2-physicalDevice-parameter", kVUIDUndefined); return skip; @@ -2361,7 +2192,6 @@ bool ObjectLifetimes::PreCallValidateTrimCommandPool( VkCommandPool commandPool, VkCommandPoolTrimFlags flags) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkTrimCommandPool-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, commandPool, kVulkanObjectTypeCommandPool, false, "VUID-vkTrimCommandPool-commandPool-parameter", "VUID-vkTrimCommandPool-commandPool-parent"); @@ -2374,7 +2204,6 @@ bool ObjectLifetimes::PreCallValidateCreateSamplerYcbcrConversion( const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkCreateSamplerYcbcrConversion-device-parameter", kVUIDUndefined); return skip; @@ -2387,7 +2216,6 @@ void ObjectLifetimes::PostCallRecordCreateSamplerYcbcrConversion( VkSamplerYcbcrConversion* pYcbcrConversion, VkResult result) { if (result != VK_SUCCESS) return; - auto lock = write_shared_lock(); CreateObject(device, *pYcbcrConversion, kVulkanObjectTypeSamplerYcbcrConversion, pAllocator); } @@ -2397,7 +2225,6 @@ bool ObjectLifetimes::PreCallValidateDestroySamplerYcbcrConversion( VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkDestroySamplerYcbcrConversion-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, ycbcrConversion, kVulkanObjectTypeSamplerYcbcrConversion, true, "VUID-vkDestroySamplerYcbcrConversion-ycbcrConversion-parameter", "VUID-vkDestroySamplerYcbcrConversion-ycbcrConversion-parent"); skip |= ValidateDestroyObject(device, ycbcrConversion, kVulkanObjectTypeSamplerYcbcrConversion, pAllocator, kVUIDUndefined, kVUIDUndefined); @@ -2409,7 +2236,6 @@ void ObjectLifetimes::PreCallRecordDestroySamplerYcbcrConversion( VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator) { - auto lock = write_shared_lock(); RecordDestroyObject(device, ycbcrConversion, kVulkanObjectTypeSamplerYcbcrConversion); } @@ -2420,7 +2246,6 @@ bool ObjectLifetimes::PreCallValidateCreateDescriptorUpdateTemplate( const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkCreateDescriptorUpdateTemplate-device-parameter", kVUIDUndefined); if (pCreateInfo) { skip |= ValidateObject(device, pCreateInfo->descriptorSetLayout, kVulkanObjectTypeDescriptorSetLayout, true, "VUID-VkDescriptorUpdateTemplateCreateInfo-descriptorSetLayout-parameter", "VUID-VkDescriptorUpdateTemplateCreateInfo-commonparent"); @@ -2437,7 +2262,6 @@ void ObjectLifetimes::PostCallRecordCreateDescriptorUpdateTemplate( VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate, VkResult result) { if (result != VK_SUCCESS) return; - auto lock = write_shared_lock(); CreateObject(device, *pDescriptorUpdateTemplate, kVulkanObjectTypeDescriptorUpdateTemplate, pAllocator); } @@ -2447,7 +2271,6 @@ bool ObjectLifetimes::PreCallValidateDestroyDescriptorUpdateTemplate( VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkDestroyDescriptorUpdateTemplate-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, descriptorUpdateTemplate, kVulkanObjectTypeDescriptorUpdateTemplate, true, "VUID-vkDestroyDescriptorUpdateTemplate-descriptorUpdateTemplate-parameter", "VUID-vkDestroyDescriptorUpdateTemplate-descriptorUpdateTemplate-parent"); skip |= ValidateDestroyObject(device, descriptorUpdateTemplate, kVulkanObjectTypeDescriptorUpdateTemplate, pAllocator, "VUID-vkDestroyDescriptorUpdateTemplate-descriptorSetLayout-00356", "VUID-vkDestroyDescriptorUpdateTemplate-descriptorSetLayout-00357"); @@ -2459,7 +2282,6 @@ void ObjectLifetimes::PreCallRecordDestroyDescriptorUpdateTemplate( VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator) { - auto lock = write_shared_lock(); RecordDestroyObject(device, descriptorUpdateTemplate, kVulkanObjectTypeDescriptorUpdateTemplate); } @@ -2470,7 +2292,6 @@ bool ObjectLifetimes::PreCallValidateUpdateDescriptorSetWithTemplate( VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkUpdateDescriptorSetWithTemplate-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, descriptorSet, kVulkanObjectTypeDescriptorSet, false, "VUID-vkUpdateDescriptorSetWithTemplate-descriptorSet-parameter", kVUIDUndefined); skip |= ValidateObject(device, descriptorUpdateTemplate, kVulkanObjectTypeDescriptorUpdateTemplate, false, "VUID-vkUpdateDescriptorSetWithTemplate-descriptorUpdateTemplate-parameter", "VUID-vkUpdateDescriptorSetWithTemplate-descriptorUpdateTemplate-parent"); @@ -2483,7 +2304,6 @@ bool ObjectLifetimes::PreCallValidateGetPhysicalDeviceExternalBufferProperties( const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetPhysicalDeviceExternalBufferProperties-physicalDevice-parameter", kVUIDUndefined); return skip; @@ -2494,7 +2314,6 @@ bool ObjectLifetimes::PreCallValidateGetPhysicalDeviceExternalFenceProperties( const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetPhysicalDeviceExternalFenceProperties-physicalDevice-parameter", kVUIDUndefined); return skip; @@ -2505,7 +2324,6 @@ bool ObjectLifetimes::PreCallValidateGetPhysicalDeviceExternalSemaphorePropertie const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetPhysicalDeviceExternalSemaphoreProperties-physicalDevice-parameter", kVUIDUndefined); return skip; @@ -2516,7 +2334,6 @@ bool ObjectLifetimes::PreCallValidateDestroySurfaceKHR( VkSurfaceKHR surface, const VkAllocationCallbacks* pAllocator) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(instance, instance, kVulkanObjectTypeInstance, false, "VUID-vkDestroySurfaceKHR-instance-parameter", kVUIDUndefined); skip |= ValidateObject(instance, surface, kVulkanObjectTypeSurfaceKHR, true, "VUID-vkDestroySurfaceKHR-surface-parameter", "VUID-vkDestroySurfaceKHR-surface-parent"); skip |= ValidateDestroyObject(instance, surface, kVulkanObjectTypeSurfaceKHR, pAllocator, "VUID-vkDestroySurfaceKHR-surface-01267", "VUID-vkDestroySurfaceKHR-surface-01268"); @@ -2528,7 +2345,6 @@ void ObjectLifetimes::PreCallRecordDestroySurfaceKHR( VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks* pAllocator) { - auto lock = write_shared_lock(); RecordDestroyObject(instance, surface, kVulkanObjectTypeSurfaceKHR); } @@ -2539,7 +2355,6 @@ bool ObjectLifetimes::PreCallValidateGetPhysicalDeviceSurfaceSupportKHR( VkSurfaceKHR surface, VkBool32* pSupported) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-physicalDevice-parameter", "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-commonparent"); skip |= ValidateObject(physicalDevice, surface, kVulkanObjectTypeSurfaceKHR, false, "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-surface-parameter", "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-commonparent"); @@ -2551,7 +2366,6 @@ bool ObjectLifetimes::PreCallValidateGetPhysicalDeviceSurfaceCapabilitiesKHR( VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-physicalDevice-parameter", "VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-commonparent"); skip |= ValidateObject(physicalDevice, surface, kVulkanObjectTypeSurfaceKHR, false, "VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-surface-parameter", "VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-commonparent"); @@ -2564,7 +2378,6 @@ bool ObjectLifetimes::PreCallValidateGetPhysicalDeviceSurfaceFormatsKHR( uint32_t* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-physicalDevice-parameter", "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-commonparent"); skip |= ValidateObject(physicalDevice, surface, kVulkanObjectTypeSurfaceKHR, false, "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-surface-parameter", "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-commonparent"); @@ -2577,7 +2390,6 @@ bool ObjectLifetimes::PreCallValidateGetPhysicalDeviceSurfacePresentModesKHR( uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-physicalDevice-parameter", "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-commonparent"); skip |= ValidateObject(physicalDevice, surface, kVulkanObjectTypeSurfaceKHR, false, "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-surface-parameter", "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-commonparent"); @@ -2590,7 +2402,6 @@ bool ObjectLifetimes::PreCallValidateCreateSwapchainKHR( const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkCreateSwapchainKHR-device-parameter", kVUIDUndefined); if (pCreateInfo) { skip |= ValidateObject(device, pCreateInfo->surface, kVulkanObjectTypeSurfaceKHR, false, "VUID-VkSwapchainCreateInfoKHR-surface-parameter", "VUID-VkSwapchainCreateInfoKHR-commonparent"); @@ -2607,7 +2418,6 @@ void ObjectLifetimes::PostCallRecordCreateSwapchainKHR( VkSwapchainKHR* pSwapchain, VkResult result) { if (result != VK_SUCCESS) return; - auto lock = write_shared_lock(); CreateObject(device, *pSwapchain, kVulkanObjectTypeSwapchainKHR, pAllocator); } @@ -2620,7 +2430,6 @@ bool ObjectLifetimes::PreCallValidateAcquireNextImageKHR( VkFence fence, uint32_t* pImageIndex) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkAcquireNextImageKHR-device-parameter", "VUID-vkAcquireNextImageKHR-commonparent"); skip |= ValidateObject(device, swapchain, kVulkanObjectTypeSwapchainKHR, false, "VUID-vkAcquireNextImageKHR-swapchain-parameter", "VUID-vkAcquireNextImageKHR-commonparent"); skip |= ValidateObject(device, semaphore, kVulkanObjectTypeSemaphore, true, "VUID-vkAcquireNextImageKHR-semaphore-parameter", "VUID-vkAcquireNextImageKHR-semaphore-parent"); @@ -2633,7 +2442,6 @@ bool ObjectLifetimes::PreCallValidateQueuePresentKHR( VkQueue queue, const VkPresentInfoKHR* pPresentInfo) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(queue, queue, kVulkanObjectTypeQueue, false, "VUID-vkQueuePresentKHR-queue-parameter", kVUIDUndefined); if (pPresentInfo) { if (pPresentInfo->pWaitSemaphores) { @@ -2655,7 +2463,6 @@ bool ObjectLifetimes::PreCallValidateGetDeviceGroupPresentCapabilitiesKHR( VkDevice device, VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetDeviceGroupPresentCapabilitiesKHR-device-parameter", kVUIDUndefined); return skip; @@ -2666,7 +2473,6 @@ bool ObjectLifetimes::PreCallValidateGetDeviceGroupSurfacePresentModesKHR( VkSurfaceKHR surface, VkDeviceGroupPresentModeFlagsKHR* pModes) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetDeviceGroupSurfacePresentModesKHR-device-parameter", "VUID-vkGetDeviceGroupSurfacePresentModesKHR-commonparent"); skip |= ValidateObject(device, surface, kVulkanObjectTypeSurfaceKHR, false, "VUID-vkGetDeviceGroupSurfacePresentModesKHR-surface-parameter", "VUID-vkGetDeviceGroupSurfacePresentModesKHR-commonparent"); @@ -2679,7 +2485,6 @@ bool ObjectLifetimes::PreCallValidateGetPhysicalDevicePresentRectanglesKHR( uint32_t* pRectCount, VkRect2D* pRects) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetPhysicalDevicePresentRectanglesKHR-physicalDevice-parameter", "VUID-vkGetPhysicalDevicePresentRectanglesKHR-commonparent"); skip |= ValidateObject(physicalDevice, surface, kVulkanObjectTypeSurfaceKHR, false, "VUID-vkGetPhysicalDevicePresentRectanglesKHR-surface-parameter", "VUID-vkGetPhysicalDevicePresentRectanglesKHR-commonparent"); @@ -2691,7 +2496,6 @@ bool ObjectLifetimes::PreCallValidateAcquireNextImage2KHR( const VkAcquireNextImageInfoKHR* pAcquireInfo, uint32_t* pImageIndex) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkAcquireNextImage2KHR-device-parameter", kVUIDUndefined); if (pAcquireInfo) { skip |= ValidateObject(device, pAcquireInfo->swapchain, kVulkanObjectTypeSwapchainKHR, false, "VUID-VkAcquireNextImageInfoKHR-swapchain-parameter", "VUID-VkAcquireNextImageInfoKHR-commonparent"); @@ -2707,7 +2511,6 @@ bool ObjectLifetimes::PreCallValidateGetPhysicalDeviceDisplayPlanePropertiesKHR( uint32_t* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetPhysicalDeviceDisplayPlanePropertiesKHR-physicalDevice-parameter", kVUIDUndefined); return skip; @@ -2719,7 +2522,6 @@ bool ObjectLifetimes::PreCallValidateGetDisplayPlaneSupportedDisplaysKHR( uint32_t* pDisplayCount, VkDisplayKHR* pDisplays) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetDisplayPlaneSupportedDisplaysKHR-physicalDevice-parameter", kVUIDUndefined); return skip; @@ -2732,7 +2534,6 @@ void ObjectLifetimes::PostCallRecordGetDisplayPlaneSupportedDisplaysKHR( VkDisplayKHR* pDisplays, VkResult result) { if (result != VK_SUCCESS) return; - auto lock = write_shared_lock(); if (pDisplays) { for (uint32_t index = 0; index < *pDisplayCount; index++) { CreateObject(physicalDevice, pDisplays[index], kVulkanObjectTypeDisplayKHR, nullptr); @@ -2748,7 +2549,6 @@ bool ObjectLifetimes::PreCallValidateCreateDisplayModeKHR( const VkAllocationCallbacks* pAllocator, VkDisplayModeKHR* pMode) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkCreateDisplayModeKHR-physicalDevice-parameter", kVUIDUndefined); skip |= ValidateObject(physicalDevice, display, kVulkanObjectTypeDisplayKHR, false, "VUID-vkCreateDisplayModeKHR-display-parameter", kVUIDUndefined); @@ -2763,7 +2563,6 @@ void ObjectLifetimes::PostCallRecordCreateDisplayModeKHR( VkDisplayModeKHR* pMode, VkResult result) { if (result != VK_SUCCESS) return; - auto lock = write_shared_lock(); CreateObject(physicalDevice, *pMode, kVulkanObjectTypeDisplayModeKHR, pAllocator); } @@ -2774,7 +2573,6 @@ bool ObjectLifetimes::PreCallValidateGetDisplayPlaneCapabilitiesKHR( uint32_t planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetDisplayPlaneCapabilitiesKHR-physicalDevice-parameter", kVUIDUndefined); skip |= ValidateObject(physicalDevice, mode, kVulkanObjectTypeDisplayModeKHR, false, "VUID-vkGetDisplayPlaneCapabilitiesKHR-mode-parameter", kVUIDUndefined); @@ -2787,7 +2585,6 @@ bool ObjectLifetimes::PreCallValidateCreateDisplayPlaneSurfaceKHR( const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(instance, instance, kVulkanObjectTypeInstance, false, "VUID-vkCreateDisplayPlaneSurfaceKHR-instance-parameter", kVUIDUndefined); if (pCreateInfo) { skip |= ValidateObject(instance, pCreateInfo->displayMode, kVulkanObjectTypeDisplayModeKHR, false, "VUID-VkDisplaySurfaceCreateInfoKHR-displayMode-parameter", kVUIDUndefined); @@ -2803,7 +2600,6 @@ void ObjectLifetimes::PostCallRecordCreateDisplayPlaneSurfaceKHR( VkSurfaceKHR* pSurface, VkResult result) { if (result != VK_SUCCESS) return; - auto lock = write_shared_lock(); CreateObject(instance, *pSurface, kVulkanObjectTypeSurfaceKHR, pAllocator); } @@ -2815,7 +2611,6 @@ bool ObjectLifetimes::PreCallValidateCreateSharedSwapchainsKHR( const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchains) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkCreateSharedSwapchainsKHR-device-parameter", kVUIDUndefined); if (pCreateInfos) { for (uint32_t index0 = 0; index0 < swapchainCount; ++index0) { @@ -2835,7 +2630,6 @@ void ObjectLifetimes::PostCallRecordCreateSharedSwapchainsKHR( VkSwapchainKHR* pSwapchains, VkResult result) { if (result != VK_SUCCESS) return; - auto lock = write_shared_lock(); if (pSwapchains) { for (uint32_t index = 0; index < swapchainCount; index++) { CreateObject(device, pSwapchains[index], kVulkanObjectTypeSwapchainKHR, pAllocator); @@ -2852,7 +2646,6 @@ bool ObjectLifetimes::PreCallValidateCreateXlibSurfaceKHR( const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(instance, instance, kVulkanObjectTypeInstance, false, "VUID-vkCreateXlibSurfaceKHR-instance-parameter", kVUIDUndefined); return skip; @@ -2865,7 +2658,6 @@ void ObjectLifetimes::PostCallRecordCreateXlibSurfaceKHR( VkSurfaceKHR* pSurface, VkResult result) { if (result != VK_SUCCESS) return; - auto lock = write_shared_lock(); CreateObject(instance, *pSurface, kVulkanObjectTypeSurfaceKHR, pAllocator); } @@ -2879,7 +2671,6 @@ bool ObjectLifetimes::PreCallValidateGetPhysicalDeviceXlibPresentationSupportKHR Display* dpy, VisualID visualID) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetPhysicalDeviceXlibPresentationSupportKHR-physicalDevice-parameter", kVUIDUndefined); return skip; @@ -2894,7 +2685,6 @@ bool ObjectLifetimes::PreCallValidateCreateXcbSurfaceKHR( const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(instance, instance, kVulkanObjectTypeInstance, false, "VUID-vkCreateXcbSurfaceKHR-instance-parameter", kVUIDUndefined); return skip; @@ -2907,7 +2697,6 @@ void ObjectLifetimes::PostCallRecordCreateXcbSurfaceKHR( VkSurfaceKHR* pSurface, VkResult result) { if (result != VK_SUCCESS) return; - auto lock = write_shared_lock(); CreateObject(instance, *pSurface, kVulkanObjectTypeSurfaceKHR, pAllocator); } @@ -2921,7 +2710,6 @@ bool ObjectLifetimes::PreCallValidateGetPhysicalDeviceXcbPresentationSupportKHR( xcb_connection_t* connection, xcb_visualid_t visual_id) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetPhysicalDeviceXcbPresentationSupportKHR-physicalDevice-parameter", kVUIDUndefined); return skip; @@ -2936,7 +2724,6 @@ bool ObjectLifetimes::PreCallValidateCreateWaylandSurfaceKHR( const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(instance, instance, kVulkanObjectTypeInstance, false, "VUID-vkCreateWaylandSurfaceKHR-instance-parameter", kVUIDUndefined); return skip; @@ -2949,7 +2736,6 @@ void ObjectLifetimes::PostCallRecordCreateWaylandSurfaceKHR( VkSurfaceKHR* pSurface, VkResult result) { if (result != VK_SUCCESS) return; - auto lock = write_shared_lock(); CreateObject(instance, *pSurface, kVulkanObjectTypeSurfaceKHR, pAllocator); } @@ -2962,7 +2748,6 @@ bool ObjectLifetimes::PreCallValidateGetPhysicalDeviceWaylandPresentationSupport uint32_t queueFamilyIndex, struct wl_display* display) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetPhysicalDeviceWaylandPresentationSupportKHR-physicalDevice-parameter", kVUIDUndefined); return skip; @@ -2977,7 +2762,6 @@ bool ObjectLifetimes::PreCallValidateCreateAndroidSurfaceKHR( const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(instance, instance, kVulkanObjectTypeInstance, false, "VUID-vkCreateAndroidSurfaceKHR-instance-parameter", kVUIDUndefined); return skip; @@ -2990,7 +2774,6 @@ void ObjectLifetimes::PostCallRecordCreateAndroidSurfaceKHR( VkSurfaceKHR* pSurface, VkResult result) { if (result != VK_SUCCESS) return; - auto lock = write_shared_lock(); CreateObject(instance, *pSurface, kVulkanObjectTypeSurfaceKHR, pAllocator); } @@ -3004,7 +2787,6 @@ bool ObjectLifetimes::PreCallValidateCreateWin32SurfaceKHR( const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(instance, instance, kVulkanObjectTypeInstance, false, "VUID-vkCreateWin32SurfaceKHR-instance-parameter", kVUIDUndefined); return skip; @@ -3017,7 +2799,6 @@ void ObjectLifetimes::PostCallRecordCreateWin32SurfaceKHR( VkSurfaceKHR* pSurface, VkResult result) { if (result != VK_SUCCESS) return; - auto lock = write_shared_lock(); CreateObject(instance, *pSurface, kVulkanObjectTypeSurfaceKHR, pAllocator); } @@ -3029,7 +2810,6 @@ bool ObjectLifetimes::PreCallValidateGetPhysicalDeviceWin32PresentationSupportKH VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetPhysicalDeviceWin32PresentationSupportKHR-physicalDevice-parameter", kVUIDUndefined); return skip; @@ -3040,7 +2820,6 @@ bool ObjectLifetimes::PreCallValidateGetPhysicalDeviceFeatures2KHR( VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetPhysicalDeviceFeatures2-physicalDevice-parameter", kVUIDUndefined); return skip; @@ -3050,7 +2829,6 @@ bool ObjectLifetimes::PreCallValidateGetPhysicalDeviceProperties2KHR( VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetPhysicalDeviceProperties2-physicalDevice-parameter", kVUIDUndefined); return skip; @@ -3061,7 +2839,6 @@ bool ObjectLifetimes::PreCallValidateGetPhysicalDeviceFormatProperties2KHR( VkFormat format, VkFormatProperties2* pFormatProperties) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetPhysicalDeviceFormatProperties2-physicalDevice-parameter", kVUIDUndefined); return skip; @@ -3072,7 +2849,6 @@ bool ObjectLifetimes::PreCallValidateGetPhysicalDeviceImageFormatProperties2KHR( const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetPhysicalDeviceImageFormatProperties2-physicalDevice-parameter", kVUIDUndefined); return skip; @@ -3082,7 +2858,6 @@ bool ObjectLifetimes::PreCallValidateGetPhysicalDeviceMemoryProperties2KHR( VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetPhysicalDeviceMemoryProperties2-physicalDevice-parameter", kVUIDUndefined); return skip; @@ -3094,7 +2869,6 @@ bool ObjectLifetimes::PreCallValidateGetPhysicalDeviceSparseImageFormatPropertie uint32_t* pPropertyCount, VkSparseImageFormatProperties2* pProperties) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetPhysicalDeviceSparseImageFormatProperties2-physicalDevice-parameter", kVUIDUndefined); return skip; @@ -3107,7 +2881,6 @@ bool ObjectLifetimes::PreCallValidateGetDeviceGroupPeerMemoryFeaturesKHR( uint32_t remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetDeviceGroupPeerMemoryFeatures-device-parameter", kVUIDUndefined); return skip; @@ -3117,7 +2890,6 @@ bool ObjectLifetimes::PreCallValidateCmdSetDeviceMaskKHR( VkCommandBuffer commandBuffer, uint32_t deviceMask) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdSetDeviceMask-commandBuffer-parameter", kVUIDUndefined); return skip; @@ -3132,7 +2904,6 @@ bool ObjectLifetimes::PreCallValidateCmdDispatchBaseKHR( uint32_t groupCountY, uint32_t groupCountZ) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdDispatchBase-commandBuffer-parameter", kVUIDUndefined); return skip; @@ -3143,7 +2914,6 @@ bool ObjectLifetimes::PreCallValidateTrimCommandPoolKHR( VkCommandPool commandPool, VkCommandPoolTrimFlags flags) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkTrimCommandPool-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, commandPool, kVulkanObjectTypeCommandPool, false, "VUID-vkTrimCommandPool-commandPool-parameter", "VUID-vkTrimCommandPool-commandPool-parent"); @@ -3155,7 +2925,6 @@ bool ObjectLifetimes::PreCallValidateEnumeratePhysicalDeviceGroupsKHR( uint32_t* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(instance, instance, kVulkanObjectTypeInstance, false, "VUID-vkEnumeratePhysicalDeviceGroups-instance-parameter", kVUIDUndefined); return skip; @@ -3166,7 +2935,6 @@ bool ObjectLifetimes::PreCallValidateGetPhysicalDeviceExternalBufferPropertiesKH const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetPhysicalDeviceExternalBufferProperties-physicalDevice-parameter", kVUIDUndefined); return skip; @@ -3179,7 +2947,6 @@ bool ObjectLifetimes::PreCallValidateGetMemoryWin32HandleKHR( const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetMemoryWin32HandleKHR-device-parameter", kVUIDUndefined); if (pGetWin32HandleInfo) { skip |= ValidateObject(device, pGetWin32HandleInfo->memory, kVulkanObjectTypeDeviceMemory, false, "VUID-VkMemoryGetWin32HandleInfoKHR-memory-parameter", kVUIDUndefined); @@ -3197,7 +2964,6 @@ bool ObjectLifetimes::PreCallValidateGetMemoryWin32HandlePropertiesKHR( HANDLE handle, VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetMemoryWin32HandlePropertiesKHR-device-parameter", kVUIDUndefined); return skip; @@ -3209,7 +2975,6 @@ bool ObjectLifetimes::PreCallValidateGetMemoryFdKHR( const VkMemoryGetFdInfoKHR* pGetFdInfo, int* pFd) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetMemoryFdKHR-device-parameter", kVUIDUndefined); if (pGetFdInfo) { skip |= ValidateObject(device, pGetFdInfo->memory, kVulkanObjectTypeDeviceMemory, false, "VUID-VkMemoryGetFdInfoKHR-memory-parameter", kVUIDUndefined); @@ -3224,7 +2989,6 @@ bool ObjectLifetimes::PreCallValidateGetMemoryFdPropertiesKHR( int fd, VkMemoryFdPropertiesKHR* pMemoryFdProperties) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetMemoryFdPropertiesKHR-device-parameter", kVUIDUndefined); return skip; @@ -3235,7 +2999,6 @@ bool ObjectLifetimes::PreCallValidateGetPhysicalDeviceExternalSemaphorePropertie const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetPhysicalDeviceExternalSemaphoreProperties-physicalDevice-parameter", kVUIDUndefined); return skip; @@ -3247,7 +3010,6 @@ bool ObjectLifetimes::PreCallValidateImportSemaphoreWin32HandleKHR( VkDevice device, const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkImportSemaphoreWin32HandleKHR-device-parameter", kVUIDUndefined); if (pImportSemaphoreWin32HandleInfo) { skip |= ValidateObject(device, pImportSemaphoreWin32HandleInfo->semaphore, kVulkanObjectTypeSemaphore, false, "VUID-VkImportSemaphoreWin32HandleInfoKHR-semaphore-parameter", kVUIDUndefined); @@ -3264,7 +3026,6 @@ bool ObjectLifetimes::PreCallValidateGetSemaphoreWin32HandleKHR( const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetSemaphoreWin32HandleKHR-device-parameter", kVUIDUndefined); if (pGetWin32HandleInfo) { skip |= ValidateObject(device, pGetWin32HandleInfo->semaphore, kVulkanObjectTypeSemaphore, false, "VUID-VkSemaphoreGetWin32HandleInfoKHR-semaphore-parameter", kVUIDUndefined); @@ -3278,7 +3039,6 @@ bool ObjectLifetimes::PreCallValidateImportSemaphoreFdKHR( VkDevice device, const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkImportSemaphoreFdKHR-device-parameter", kVUIDUndefined); if (pImportSemaphoreFdInfo) { skip |= ValidateObject(device, pImportSemaphoreFdInfo->semaphore, kVulkanObjectTypeSemaphore, false, "VUID-VkImportSemaphoreFdInfoKHR-semaphore-parameter", kVUIDUndefined); @@ -3292,7 +3052,6 @@ bool ObjectLifetimes::PreCallValidateGetSemaphoreFdKHR( const VkSemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetSemaphoreFdKHR-device-parameter", kVUIDUndefined); if (pGetFdInfo) { skip |= ValidateObject(device, pGetFdInfo->semaphore, kVulkanObjectTypeSemaphore, false, "VUID-VkSemaphoreGetFdInfoKHR-semaphore-parameter", kVUIDUndefined); @@ -3308,7 +3067,6 @@ bool ObjectLifetimes::PreCallValidateCmdPushDescriptorSetWithTemplateKHR( uint32_t set, const void* pData) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-parameter", "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commonparent"); skip |= ValidateObject(commandBuffer, descriptorUpdateTemplate, kVulkanObjectTypeDescriptorUpdateTemplate, false, "VUID-vkCmdPushDescriptorSetWithTemplateKHR-descriptorUpdateTemplate-parameter", "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commonparent"); skip |= ValidateObject(commandBuffer, layout, kVulkanObjectTypePipelineLayout, false, "VUID-vkCmdPushDescriptorSetWithTemplateKHR-layout-parameter", "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commonparent"); @@ -3322,7 +3080,6 @@ bool ObjectLifetimes::PreCallValidateCreateDescriptorUpdateTemplateKHR( const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkCreateDescriptorUpdateTemplate-device-parameter", kVUIDUndefined); if (pCreateInfo) { skip |= ValidateObject(device, pCreateInfo->descriptorSetLayout, kVulkanObjectTypeDescriptorSetLayout, true, "VUID-VkDescriptorUpdateTemplateCreateInfo-descriptorSetLayout-parameter", "VUID-VkDescriptorUpdateTemplateCreateInfo-commonparent"); @@ -3339,7 +3096,6 @@ void ObjectLifetimes::PostCallRecordCreateDescriptorUpdateTemplateKHR( VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate, VkResult result) { if (result != VK_SUCCESS) return; - auto lock = write_shared_lock(); CreateObject(device, *pDescriptorUpdateTemplate, kVulkanObjectTypeDescriptorUpdateTemplate, pAllocator); } @@ -3349,7 +3105,6 @@ bool ObjectLifetimes::PreCallValidateDestroyDescriptorUpdateTemplateKHR( VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkDestroyDescriptorUpdateTemplate-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, descriptorUpdateTemplate, kVulkanObjectTypeDescriptorUpdateTemplate, true, "VUID-vkDestroyDescriptorUpdateTemplate-descriptorUpdateTemplate-parameter", "VUID-vkDestroyDescriptorUpdateTemplate-descriptorUpdateTemplate-parent"); skip |= ValidateDestroyObject(device, descriptorUpdateTemplate, kVulkanObjectTypeDescriptorUpdateTemplate, pAllocator, "VUID-vkDestroyDescriptorUpdateTemplate-descriptorSetLayout-00356", "VUID-vkDestroyDescriptorUpdateTemplate-descriptorSetLayout-00357"); @@ -3361,7 +3116,6 @@ void ObjectLifetimes::PreCallRecordDestroyDescriptorUpdateTemplateKHR( VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator) { - auto lock = write_shared_lock(); RecordDestroyObject(device, descriptorUpdateTemplate, kVulkanObjectTypeDescriptorUpdateTemplate); } @@ -3372,7 +3126,6 @@ bool ObjectLifetimes::PreCallValidateUpdateDescriptorSetWithTemplateKHR( VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkUpdateDescriptorSetWithTemplate-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, descriptorSet, kVulkanObjectTypeDescriptorSet, false, "VUID-vkUpdateDescriptorSetWithTemplate-descriptorSet-parameter", kVUIDUndefined); skip |= ValidateObject(device, descriptorUpdateTemplate, kVulkanObjectTypeDescriptorUpdateTemplate, false, "VUID-vkUpdateDescriptorSetWithTemplate-descriptorUpdateTemplate-parameter", "VUID-vkUpdateDescriptorSetWithTemplate-descriptorUpdateTemplate-parent"); @@ -3386,7 +3139,6 @@ bool ObjectLifetimes::PreCallValidateCreateRenderPass2KHR( const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkCreateRenderPass2KHR-device-parameter", kVUIDUndefined); return skip; @@ -3399,7 +3151,6 @@ void ObjectLifetimes::PostCallRecordCreateRenderPass2KHR( VkRenderPass* pRenderPass, VkResult result) { if (result != VK_SUCCESS) return; - auto lock = write_shared_lock(); CreateObject(device, *pRenderPass, kVulkanObjectTypeRenderPass, pAllocator); } @@ -3409,7 +3160,6 @@ bool ObjectLifetimes::PreCallValidateCmdBeginRenderPass2KHR( const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfoKHR* pSubpassBeginInfo) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdBeginRenderPass2KHR-commandBuffer-parameter", kVUIDUndefined); if (pRenderPassBegin) { skip |= ValidateObject(commandBuffer, pRenderPassBegin->renderPass, kVulkanObjectTypeRenderPass, false, "VUID-VkRenderPassBeginInfo-renderPass-parameter", "VUID-VkRenderPassBeginInfo-commonparent"); @@ -3424,7 +3174,6 @@ bool ObjectLifetimes::PreCallValidateCmdNextSubpass2KHR( const VkSubpassBeginInfoKHR* pSubpassBeginInfo, const VkSubpassEndInfoKHR* pSubpassEndInfo) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdNextSubpass2KHR-commandBuffer-parameter", kVUIDUndefined); return skip; @@ -3434,7 +3183,6 @@ bool ObjectLifetimes::PreCallValidateCmdEndRenderPass2KHR( VkCommandBuffer commandBuffer, const VkSubpassEndInfoKHR* pSubpassEndInfo) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdEndRenderPass2KHR-commandBuffer-parameter", kVUIDUndefined); return skip; @@ -3444,7 +3192,6 @@ bool ObjectLifetimes::PreCallValidateGetSwapchainStatusKHR( VkDevice device, VkSwapchainKHR swapchain) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetSwapchainStatusKHR-device-parameter", "VUID-vkGetSwapchainStatusKHR-commonparent"); skip |= ValidateObject(device, swapchain, kVulkanObjectTypeSwapchainKHR, false, "VUID-vkGetSwapchainStatusKHR-swapchain-parameter", "VUID-vkGetSwapchainStatusKHR-commonparent"); @@ -3456,7 +3203,6 @@ bool ObjectLifetimes::PreCallValidateGetPhysicalDeviceExternalFencePropertiesKHR const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetPhysicalDeviceExternalFenceProperties-physicalDevice-parameter", kVUIDUndefined); return skip; @@ -3468,7 +3214,6 @@ bool ObjectLifetimes::PreCallValidateImportFenceWin32HandleKHR( VkDevice device, const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkImportFenceWin32HandleKHR-device-parameter", kVUIDUndefined); if (pImportFenceWin32HandleInfo) { skip |= ValidateObject(device, pImportFenceWin32HandleInfo->fence, kVulkanObjectTypeFence, false, "VUID-VkImportFenceWin32HandleInfoKHR-fence-parameter", kVUIDUndefined); @@ -3485,7 +3230,6 @@ bool ObjectLifetimes::PreCallValidateGetFenceWin32HandleKHR( const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetFenceWin32HandleKHR-device-parameter", kVUIDUndefined); if (pGetWin32HandleInfo) { skip |= ValidateObject(device, pGetWin32HandleInfo->fence, kVulkanObjectTypeFence, false, "VUID-VkFenceGetWin32HandleInfoKHR-fence-parameter", kVUIDUndefined); @@ -3499,7 +3243,6 @@ bool ObjectLifetimes::PreCallValidateImportFenceFdKHR( VkDevice device, const VkImportFenceFdInfoKHR* pImportFenceFdInfo) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkImportFenceFdKHR-device-parameter", kVUIDUndefined); if (pImportFenceFdInfo) { skip |= ValidateObject(device, pImportFenceFdInfo->fence, kVulkanObjectTypeFence, false, "VUID-VkImportFenceFdInfoKHR-fence-parameter", kVUIDUndefined); @@ -3513,7 +3256,6 @@ bool ObjectLifetimes::PreCallValidateGetFenceFdKHR( const VkFenceGetFdInfoKHR* pGetFdInfo, int* pFd) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetFenceFdKHR-device-parameter", kVUIDUndefined); if (pGetFdInfo) { skip |= ValidateObject(device, pGetFdInfo->fence, kVulkanObjectTypeFence, false, "VUID-VkFenceGetFdInfoKHR-fence-parameter", kVUIDUndefined); @@ -3527,7 +3269,6 @@ bool ObjectLifetimes::PreCallValidateGetPhysicalDeviceSurfaceCapabilities2KHR( const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkSurfaceCapabilities2KHR* pSurfaceCapabilities) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-physicalDevice-parameter", kVUIDUndefined); if (pSurfaceInfo) { skip |= ValidateObject(physicalDevice, pSurfaceInfo->surface, kVulkanObjectTypeSurfaceKHR, false, "VUID-VkPhysicalDeviceSurfaceInfo2KHR-surface-parameter", kVUIDUndefined); @@ -3542,7 +3283,6 @@ bool ObjectLifetimes::PreCallValidateGetPhysicalDeviceSurfaceFormats2KHR( uint32_t* pSurfaceFormatCount, VkSurfaceFormat2KHR* pSurfaceFormats) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-physicalDevice-parameter", kVUIDUndefined); if (pSurfaceInfo) { skip |= ValidateObject(physicalDevice, pSurfaceInfo->surface, kVulkanObjectTypeSurfaceKHR, false, "VUID-VkPhysicalDeviceSurfaceInfo2KHR-surface-parameter", kVUIDUndefined); @@ -3556,7 +3296,6 @@ bool ObjectLifetimes::PreCallValidateGetPhysicalDeviceDisplayPlaneProperties2KHR uint32_t* pPropertyCount, VkDisplayPlaneProperties2KHR* pProperties) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetPhysicalDeviceDisplayPlaneProperties2KHR-physicalDevice-parameter", kVUIDUndefined); return skip; @@ -3567,7 +3306,6 @@ bool ObjectLifetimes::PreCallValidateGetDisplayPlaneCapabilities2KHR( const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo, VkDisplayPlaneCapabilities2KHR* pCapabilities) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetDisplayPlaneCapabilities2KHR-physicalDevice-parameter", kVUIDUndefined); if (pDisplayPlaneInfo) { skip |= ValidateObject(physicalDevice, pDisplayPlaneInfo->mode, kVulkanObjectTypeDisplayModeKHR, false, "VUID-VkDisplayPlaneInfo2KHR-mode-parameter", kVUIDUndefined); @@ -3581,7 +3319,6 @@ bool ObjectLifetimes::PreCallValidateGetImageMemoryRequirements2KHR( const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetImageMemoryRequirements2-device-parameter", kVUIDUndefined); if (pInfo) { skip |= ValidateObject(device, pInfo->image, kVulkanObjectTypeImage, false, "VUID-VkImageMemoryRequirementsInfo2-image-parameter", kVUIDUndefined); @@ -3595,7 +3332,6 @@ bool ObjectLifetimes::PreCallValidateGetBufferMemoryRequirements2KHR( const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetBufferMemoryRequirements2-device-parameter", kVUIDUndefined); if (pInfo) { skip |= ValidateObject(device, pInfo->buffer, kVulkanObjectTypeBuffer, false, "VUID-VkBufferMemoryRequirementsInfo2-buffer-parameter", kVUIDUndefined); @@ -3610,7 +3346,6 @@ bool ObjectLifetimes::PreCallValidateGetImageSparseMemoryRequirements2KHR( uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetImageSparseMemoryRequirements2-device-parameter", kVUIDUndefined); if (pInfo) { skip |= ValidateObject(device, pInfo->image, kVulkanObjectTypeImage, false, "VUID-VkImageSparseMemoryRequirementsInfo2-image-parameter", kVUIDUndefined); @@ -3625,7 +3360,6 @@ bool ObjectLifetimes::PreCallValidateCreateSamplerYcbcrConversionKHR( const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkCreateSamplerYcbcrConversion-device-parameter", kVUIDUndefined); return skip; @@ -3638,7 +3372,6 @@ void ObjectLifetimes::PostCallRecordCreateSamplerYcbcrConversionKHR( VkSamplerYcbcrConversion* pYcbcrConversion, VkResult result) { if (result != VK_SUCCESS) return; - auto lock = write_shared_lock(); CreateObject(device, *pYcbcrConversion, kVulkanObjectTypeSamplerYcbcrConversion, pAllocator); } @@ -3648,7 +3381,6 @@ bool ObjectLifetimes::PreCallValidateDestroySamplerYcbcrConversionKHR( VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkDestroySamplerYcbcrConversion-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, ycbcrConversion, kVulkanObjectTypeSamplerYcbcrConversion, true, "VUID-vkDestroySamplerYcbcrConversion-ycbcrConversion-parameter", "VUID-vkDestroySamplerYcbcrConversion-ycbcrConversion-parent"); skip |= ValidateDestroyObject(device, ycbcrConversion, kVulkanObjectTypeSamplerYcbcrConversion, pAllocator, kVUIDUndefined, kVUIDUndefined); @@ -3660,7 +3392,6 @@ void ObjectLifetimes::PreCallRecordDestroySamplerYcbcrConversionKHR( VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator) { - auto lock = write_shared_lock(); RecordDestroyObject(device, ycbcrConversion, kVulkanObjectTypeSamplerYcbcrConversion); } @@ -3670,7 +3401,6 @@ bool ObjectLifetimes::PreCallValidateBindBufferMemory2KHR( uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkBindBufferMemory2-device-parameter", kVUIDUndefined); if (pBindInfos) { for (uint32_t index0 = 0; index0 < bindInfoCount; ++index0) { @@ -3687,7 +3417,6 @@ bool ObjectLifetimes::PreCallValidateBindImageMemory2KHR( uint32_t bindInfoCount, const VkBindImageMemoryInfo* pBindInfos) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkBindImageMemory2-device-parameter", kVUIDUndefined); if (pBindInfos) { for (uint32_t index0 = 0; index0 < bindInfoCount; ++index0) { @@ -3708,7 +3437,6 @@ bool ObjectLifetimes::PreCallValidateCmdDrawIndirectCountKHR( uint32_t maxDrawCount, uint32_t stride) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdDrawIndirectCountKHR-commandBuffer-parameter", "VUID-vkCmdDrawIndirectCountKHR-commonparent"); skip |= ValidateObject(commandBuffer, buffer, kVulkanObjectTypeBuffer, false, "VUID-vkCmdDrawIndirectCountKHR-buffer-parameter", "VUID-vkCmdDrawIndirectCountKHR-commonparent"); skip |= ValidateObject(commandBuffer, countBuffer, kVulkanObjectTypeBuffer, false, "VUID-vkCmdDrawIndirectCountKHR-countBuffer-parameter", "VUID-vkCmdDrawIndirectCountKHR-commonparent"); @@ -3725,7 +3453,6 @@ bool ObjectLifetimes::PreCallValidateCmdDrawIndexedIndirectCountKHR( uint32_t maxDrawCount, uint32_t stride) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdDrawIndexedIndirectCountKHR-commandBuffer-parameter", "VUID-vkCmdDrawIndexedIndirectCountKHR-commonparent"); skip |= ValidateObject(commandBuffer, buffer, kVulkanObjectTypeBuffer, false, "VUID-vkCmdDrawIndexedIndirectCountKHR-buffer-parameter", "VUID-vkCmdDrawIndexedIndirectCountKHR-commonparent"); skip |= ValidateObject(commandBuffer, countBuffer, kVulkanObjectTypeBuffer, false, "VUID-vkCmdDrawIndexedIndirectCountKHR-countBuffer-parameter", "VUID-vkCmdDrawIndexedIndirectCountKHR-commonparent"); @@ -3739,7 +3466,6 @@ bool ObjectLifetimes::PreCallValidateGetPipelineExecutablePropertiesKHR( uint32_t* pExecutableCount, VkPipelineExecutablePropertiesKHR* pProperties) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetPipelineExecutablePropertiesKHR-device-parameter", kVUIDUndefined); if (pPipelineInfo) { skip |= ValidateObject(device, pPipelineInfo->pipeline, kVulkanObjectTypePipeline, false, "VUID-VkPipelineInfoKHR-pipeline-parameter", kVUIDUndefined); @@ -3754,7 +3480,6 @@ bool ObjectLifetimes::PreCallValidateGetPipelineExecutableStatisticsKHR( uint32_t* pStatisticCount, VkPipelineExecutableStatisticKHR* pStatistics) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetPipelineExecutableStatisticsKHR-device-parameter", kVUIDUndefined); if (pExecutableInfo) { skip |= ValidateObject(device, pExecutableInfo->pipeline, kVulkanObjectTypePipeline, false, "VUID-VkPipelineExecutableInfoKHR-pipeline-parameter", kVUIDUndefined); @@ -3769,7 +3494,6 @@ bool ObjectLifetimes::PreCallValidateGetPipelineExecutableInternalRepresentation uint32_t* pInternalRepresentationCount, VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-device-parameter", kVUIDUndefined); if (pExecutableInfo) { skip |= ValidateObject(device, pExecutableInfo->pipeline, kVulkanObjectTypePipeline, false, "VUID-VkPipelineExecutableInfoKHR-pipeline-parameter", kVUIDUndefined); @@ -3784,7 +3508,6 @@ bool ObjectLifetimes::PreCallValidateCreateDebugReportCallbackEXT( const VkAllocationCallbacks* pAllocator, VkDebugReportCallbackEXT* pCallback) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(instance, instance, kVulkanObjectTypeInstance, false, "VUID-vkCreateDebugReportCallbackEXT-instance-parameter", kVUIDUndefined); return skip; @@ -3797,7 +3520,6 @@ void ObjectLifetimes::PostCallRecordCreateDebugReportCallbackEXT( VkDebugReportCallbackEXT* pCallback, VkResult result) { if (result != VK_SUCCESS) return; - auto lock = write_shared_lock(); CreateObject(instance, *pCallback, kVulkanObjectTypeDebugReportCallbackEXT, pAllocator); } @@ -3807,7 +3529,6 @@ bool ObjectLifetimes::PreCallValidateDestroyDebugReportCallbackEXT( VkDebugReportCallbackEXT callback, const VkAllocationCallbacks* pAllocator) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(instance, instance, kVulkanObjectTypeInstance, false, "VUID-vkDestroyDebugReportCallbackEXT-instance-parameter", kVUIDUndefined); skip |= ValidateObject(instance, callback, kVulkanObjectTypeDebugReportCallbackEXT, false, "VUID-vkDestroyDebugReportCallbackEXT-callback-parameter", "VUID-vkDestroyDebugReportCallbackEXT-callback-parent"); skip |= ValidateDestroyObject(instance, callback, kVulkanObjectTypeDebugReportCallbackEXT, pAllocator, kVUIDUndefined, kVUIDUndefined); @@ -3819,7 +3540,6 @@ void ObjectLifetimes::PreCallRecordDestroyDebugReportCallbackEXT( VkInstance instance, VkDebugReportCallbackEXT callback, const VkAllocationCallbacks* pAllocator) { - auto lock = write_shared_lock(); RecordDestroyObject(instance, callback, kVulkanObjectTypeDebugReportCallbackEXT); } @@ -3834,7 +3554,6 @@ bool ObjectLifetimes::PreCallValidateDebugReportMessageEXT( const char* pLayerPrefix, const char* pMessage) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(instance, instance, kVulkanObjectTypeInstance, false, "VUID-vkDebugReportMessageEXT-instance-parameter", kVUIDUndefined); return skip; @@ -3844,7 +3563,6 @@ bool ObjectLifetimes::PreCallValidateDebugMarkerSetObjectTagEXT( VkDevice device, const VkDebugMarkerObjectTagInfoEXT* pTagInfo) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkDebugMarkerSetObjectTagEXT-device-parameter", kVUIDUndefined); return skip; @@ -3854,7 +3572,6 @@ bool ObjectLifetimes::PreCallValidateDebugMarkerSetObjectNameEXT( VkDevice device, const VkDebugMarkerObjectNameInfoEXT* pNameInfo) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkDebugMarkerSetObjectNameEXT-device-parameter", kVUIDUndefined); return skip; @@ -3864,7 +3581,6 @@ bool ObjectLifetimes::PreCallValidateCmdDebugMarkerBeginEXT( VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdDebugMarkerBeginEXT-commandBuffer-parameter", kVUIDUndefined); return skip; @@ -3873,7 +3589,6 @@ bool ObjectLifetimes::PreCallValidateCmdDebugMarkerBeginEXT( bool ObjectLifetimes::PreCallValidateCmdDebugMarkerEndEXT( VkCommandBuffer commandBuffer) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-parameter", kVUIDUndefined); return skip; @@ -3883,7 +3598,6 @@ bool ObjectLifetimes::PreCallValidateCmdDebugMarkerInsertEXT( VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdDebugMarkerInsertEXT-commandBuffer-parameter", kVUIDUndefined); return skip; @@ -3897,7 +3611,6 @@ bool ObjectLifetimes::PreCallValidateCmdBindTransformFeedbackBuffersEXT( const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdBindTransformFeedbackBuffersEXT-commandBuffer-parameter", "VUID-vkCmdBindTransformFeedbackBuffersEXT-commonparent"); if (pBuffers) { for (uint32_t index0 = 0; index0 < bindingCount; ++index0) { @@ -3915,7 +3628,6 @@ bool ObjectLifetimes::PreCallValidateCmdBeginTransformFeedbackEXT( const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdBeginTransformFeedbackEXT-commandBuffer-parameter", "VUID-vkCmdBeginTransformFeedbackEXT-commonparent"); if (pCounterBuffers) { for (uint32_t index0 = 0; index0 < counterBufferCount; ++index0) { @@ -3933,7 +3645,6 @@ bool ObjectLifetimes::PreCallValidateCmdEndTransformFeedbackEXT( const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdEndTransformFeedbackEXT-commandBuffer-parameter", "VUID-vkCmdEndTransformFeedbackEXT-commonparent"); if (pCounterBuffers) { for (uint32_t index0 = 0; index0 < counterBufferCount; ++index0) { @@ -3951,7 +3662,6 @@ bool ObjectLifetimes::PreCallValidateCmdBeginQueryIndexedEXT( VkQueryControlFlags flags, uint32_t index) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-parameter", "VUID-vkCmdBeginQueryIndexedEXT-commonparent"); skip |= ValidateObject(commandBuffer, queryPool, kVulkanObjectTypeQueryPool, false, "VUID-vkCmdBeginQueryIndexedEXT-queryPool-parameter", "VUID-vkCmdBeginQueryIndexedEXT-commonparent"); @@ -3964,7 +3674,6 @@ bool ObjectLifetimes::PreCallValidateCmdEndQueryIndexedEXT( uint32_t query, uint32_t index) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdEndQueryIndexedEXT-commandBuffer-parameter", "VUID-vkCmdEndQueryIndexedEXT-commonparent"); skip |= ValidateObject(commandBuffer, queryPool, kVulkanObjectTypeQueryPool, false, "VUID-vkCmdEndQueryIndexedEXT-queryPool-parameter", "VUID-vkCmdEndQueryIndexedEXT-commonparent"); @@ -3980,7 +3689,6 @@ bool ObjectLifetimes::PreCallValidateCmdDrawIndirectByteCountEXT( uint32_t counterOffset, uint32_t vertexStride) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-parameter", "VUID-vkCmdDrawIndirectByteCountEXT-commonparent"); skip |= ValidateObject(commandBuffer, counterBuffer, kVulkanObjectTypeBuffer, false, "VUID-vkCmdDrawIndirectByteCountEXT-counterBuffer-parameter", "VUID-vkCmdDrawIndirectByteCountEXT-commonparent"); @@ -3991,7 +3699,6 @@ bool ObjectLifetimes::PreCallValidateGetImageViewHandleNVX( VkDevice device, const VkImageViewHandleInfoNVX* pInfo) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetImageViewHandleNVX-device-parameter", kVUIDUndefined); return skip; @@ -4006,7 +3713,6 @@ bool ObjectLifetimes::PreCallValidateCmdDrawIndirectCountAMD( uint32_t maxDrawCount, uint32_t stride) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdDrawIndirectCountKHR-commandBuffer-parameter", "VUID-vkCmdDrawIndirectCountKHR-commonparent"); skip |= ValidateObject(commandBuffer, buffer, kVulkanObjectTypeBuffer, false, "VUID-vkCmdDrawIndirectCountKHR-buffer-parameter", "VUID-vkCmdDrawIndirectCountKHR-commonparent"); skip |= ValidateObject(commandBuffer, countBuffer, kVulkanObjectTypeBuffer, false, "VUID-vkCmdDrawIndirectCountKHR-countBuffer-parameter", "VUID-vkCmdDrawIndirectCountKHR-commonparent"); @@ -4023,7 +3729,6 @@ bool ObjectLifetimes::PreCallValidateCmdDrawIndexedIndirectCountAMD( uint32_t maxDrawCount, uint32_t stride) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdDrawIndexedIndirectCountKHR-commandBuffer-parameter", "VUID-vkCmdDrawIndexedIndirectCountKHR-commonparent"); skip |= ValidateObject(commandBuffer, buffer, kVulkanObjectTypeBuffer, false, "VUID-vkCmdDrawIndexedIndirectCountKHR-buffer-parameter", "VUID-vkCmdDrawIndexedIndirectCountKHR-commonparent"); skip |= ValidateObject(commandBuffer, countBuffer, kVulkanObjectTypeBuffer, false, "VUID-vkCmdDrawIndexedIndirectCountKHR-countBuffer-parameter", "VUID-vkCmdDrawIndexedIndirectCountKHR-commonparent"); @@ -4039,7 +3744,6 @@ bool ObjectLifetimes::PreCallValidateGetShaderInfoAMD( size_t* pInfoSize, void* pInfo) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetShaderInfoAMD-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, pipeline, kVulkanObjectTypePipeline, false, "VUID-vkGetShaderInfoAMD-pipeline-parameter", "VUID-vkGetShaderInfoAMD-pipeline-parent"); @@ -4054,7 +3758,6 @@ bool ObjectLifetimes::PreCallValidateCreateStreamDescriptorSurfaceGGP( const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(instance, instance, kVulkanObjectTypeInstance, false, "VUID-vkCreateStreamDescriptorSurfaceGGP-instance-parameter", kVUIDUndefined); return skip; @@ -4067,7 +3770,6 @@ void ObjectLifetimes::PostCallRecordCreateStreamDescriptorSurfaceGGP( VkSurfaceKHR* pSurface, VkResult result) { if (result != VK_SUCCESS) return; - auto lock = write_shared_lock(); CreateObject(instance, *pSurface, kVulkanObjectTypeSurfaceKHR, pAllocator); } @@ -4083,7 +3785,6 @@ bool ObjectLifetimes::PreCallValidateGetPhysicalDeviceExternalImageFormatPropert VkExternalMemoryHandleTypeFlagsNV externalHandleType, VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-physicalDevice-parameter", kVUIDUndefined); return skip; @@ -4097,7 +3798,6 @@ bool ObjectLifetimes::PreCallValidateGetMemoryWin32HandleNV( VkExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetMemoryWin32HandleNV-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, memory, kVulkanObjectTypeDeviceMemory, false, "VUID-vkGetMemoryWin32HandleNV-memory-parameter", "VUID-vkGetMemoryWin32HandleNV-memory-parent"); @@ -4113,7 +3813,6 @@ bool ObjectLifetimes::PreCallValidateCreateViSurfaceNN( const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(instance, instance, kVulkanObjectTypeInstance, false, "VUID-vkCreateViSurfaceNN-instance-parameter", kVUIDUndefined); return skip; @@ -4126,7 +3825,6 @@ void ObjectLifetimes::PostCallRecordCreateViSurfaceNN( VkSurfaceKHR* pSurface, VkResult result) { if (result != VK_SUCCESS) return; - auto lock = write_shared_lock(); CreateObject(instance, *pSurface, kVulkanObjectTypeSurfaceKHR, pAllocator); } @@ -4136,7 +3834,6 @@ bool ObjectLifetimes::PreCallValidateCmdBeginConditionalRenderingEXT( VkCommandBuffer commandBuffer, const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdBeginConditionalRenderingEXT-commandBuffer-parameter", kVUIDUndefined); if (pConditionalRenderingBegin) { skip |= ValidateObject(commandBuffer, pConditionalRenderingBegin->buffer, kVulkanObjectTypeBuffer, false, "VUID-VkConditionalRenderingBeginInfoEXT-buffer-parameter", kVUIDUndefined); @@ -4148,7 +3845,6 @@ bool ObjectLifetimes::PreCallValidateCmdBeginConditionalRenderingEXT( bool ObjectLifetimes::PreCallValidateCmdEndConditionalRenderingEXT( VkCommandBuffer commandBuffer) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdEndConditionalRenderingEXT-commandBuffer-parameter", kVUIDUndefined); return skip; @@ -4158,7 +3854,6 @@ bool ObjectLifetimes::PreCallValidateCmdProcessCommandsNVX( VkCommandBuffer commandBuffer, const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdProcessCommandsNVX-commandBuffer-parameter", kVUIDUndefined); if (pProcessCommandsInfo) { skip |= ValidateObject(commandBuffer, pProcessCommandsInfo->objectTable, kVulkanObjectTypeObjectTableNVX, false, "VUID-VkCmdProcessCommandsInfoNVX-objectTable-parameter", "VUID-VkCmdProcessCommandsInfoNVX-commonparent"); @@ -4180,7 +3875,6 @@ bool ObjectLifetimes::PreCallValidateCmdReserveSpaceForCommandsNVX( VkCommandBuffer commandBuffer, const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdReserveSpaceForCommandsNVX-commandBuffer-parameter", kVUIDUndefined); if (pReserveSpaceInfo) { skip |= ValidateObject(commandBuffer, pReserveSpaceInfo->objectTable, kVulkanObjectTypeObjectTableNVX, false, "VUID-VkCmdReserveSpaceForCommandsInfoNVX-objectTable-parameter", "VUID-VkCmdReserveSpaceForCommandsInfoNVX-commonparent"); @@ -4196,7 +3890,6 @@ bool ObjectLifetimes::PreCallValidateCreateIndirectCommandsLayoutNVX( const VkAllocationCallbacks* pAllocator, VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkCreateIndirectCommandsLayoutNVX-device-parameter", kVUIDUndefined); return skip; @@ -4209,7 +3902,6 @@ void ObjectLifetimes::PostCallRecordCreateIndirectCommandsLayoutNVX( VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout, VkResult result) { if (result != VK_SUCCESS) return; - auto lock = write_shared_lock(); CreateObject(device, *pIndirectCommandsLayout, kVulkanObjectTypeIndirectCommandsLayoutNVX, pAllocator); } @@ -4219,7 +3911,6 @@ bool ObjectLifetimes::PreCallValidateDestroyIndirectCommandsLayoutNVX( VkIndirectCommandsLayoutNVX indirectCommandsLayout, const VkAllocationCallbacks* pAllocator) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkDestroyIndirectCommandsLayoutNVX-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, indirectCommandsLayout, kVulkanObjectTypeIndirectCommandsLayoutNVX, false, "VUID-vkDestroyIndirectCommandsLayoutNVX-indirectCommandsLayout-parameter", "VUID-vkDestroyIndirectCommandsLayoutNVX-indirectCommandsLayout-parent"); skip |= ValidateDestroyObject(device, indirectCommandsLayout, kVulkanObjectTypeIndirectCommandsLayoutNVX, pAllocator, kVUIDUndefined, kVUIDUndefined); @@ -4231,7 +3922,6 @@ void ObjectLifetimes::PreCallRecordDestroyIndirectCommandsLayoutNVX( VkDevice device, VkIndirectCommandsLayoutNVX indirectCommandsLayout, const VkAllocationCallbacks* pAllocator) { - auto lock = write_shared_lock(); RecordDestroyObject(device, indirectCommandsLayout, kVulkanObjectTypeIndirectCommandsLayoutNVX); } @@ -4242,7 +3932,6 @@ bool ObjectLifetimes::PreCallValidateCreateObjectTableNVX( const VkAllocationCallbacks* pAllocator, VkObjectTableNVX* pObjectTable) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkCreateObjectTableNVX-device-parameter", kVUIDUndefined); return skip; @@ -4255,7 +3944,6 @@ void ObjectLifetimes::PostCallRecordCreateObjectTableNVX( VkObjectTableNVX* pObjectTable, VkResult result) { if (result != VK_SUCCESS) return; - auto lock = write_shared_lock(); CreateObject(device, *pObjectTable, kVulkanObjectTypeObjectTableNVX, pAllocator); } @@ -4265,7 +3953,6 @@ bool ObjectLifetimes::PreCallValidateDestroyObjectTableNVX( VkObjectTableNVX objectTable, const VkAllocationCallbacks* pAllocator) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkDestroyObjectTableNVX-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, objectTable, kVulkanObjectTypeObjectTableNVX, false, "VUID-vkDestroyObjectTableNVX-objectTable-parameter", "VUID-vkDestroyObjectTableNVX-objectTable-parent"); skip |= ValidateDestroyObject(device, objectTable, kVulkanObjectTypeObjectTableNVX, pAllocator, kVUIDUndefined, kVUIDUndefined); @@ -4277,7 +3964,6 @@ void ObjectLifetimes::PreCallRecordDestroyObjectTableNVX( VkDevice device, VkObjectTableNVX objectTable, const VkAllocationCallbacks* pAllocator) { - auto lock = write_shared_lock(); RecordDestroyObject(device, objectTable, kVulkanObjectTypeObjectTableNVX); } @@ -4289,7 +3975,6 @@ bool ObjectLifetimes::PreCallValidateRegisterObjectsNVX( const VkObjectTableEntryNVX* const* ppObjectTableEntries, const uint32_t* pObjectIndices) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkRegisterObjectsNVX-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, objectTable, kVulkanObjectTypeObjectTableNVX, false, "VUID-vkRegisterObjectsNVX-objectTable-parameter", "VUID-vkRegisterObjectsNVX-objectTable-parent"); @@ -4303,7 +3988,6 @@ bool ObjectLifetimes::PreCallValidateUnregisterObjectsNVX( const VkObjectEntryTypeNVX* pObjectEntryTypes, const uint32_t* pObjectIndices) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkUnregisterObjectsNVX-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, objectTable, kVulkanObjectTypeObjectTableNVX, false, "VUID-vkUnregisterObjectsNVX-objectTable-parameter", "VUID-vkUnregisterObjectsNVX-objectTable-parent"); @@ -4315,7 +3999,6 @@ bool ObjectLifetimes::PreCallValidateGetPhysicalDeviceGeneratedCommandsPropertie VkDeviceGeneratedCommandsFeaturesNVX* pFeatures, VkDeviceGeneratedCommandsLimitsNVX* pLimits) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX-physicalDevice-parameter", kVUIDUndefined); return skip; @@ -4327,7 +4010,6 @@ bool ObjectLifetimes::PreCallValidateCmdSetViewportWScalingNV( uint32_t viewportCount, const VkViewportWScalingNV* pViewportWScalings) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdSetViewportWScalingNV-commandBuffer-parameter", kVUIDUndefined); return skip; @@ -4337,7 +4019,6 @@ bool ObjectLifetimes::PreCallValidateReleaseDisplayEXT( VkPhysicalDevice physicalDevice, VkDisplayKHR display) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkReleaseDisplayEXT-physicalDevice-parameter", kVUIDUndefined); skip |= ValidateObject(physicalDevice, display, kVulkanObjectTypeDisplayKHR, false, "VUID-vkReleaseDisplayEXT-display-parameter", kVUIDUndefined); @@ -4351,7 +4032,6 @@ bool ObjectLifetimes::PreCallValidateAcquireXlibDisplayEXT( Display* dpy, VkDisplayKHR display) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkAcquireXlibDisplayEXT-physicalDevice-parameter", kVUIDUndefined); skip |= ValidateObject(physicalDevice, display, kVulkanObjectTypeDisplayKHR, false, "VUID-vkAcquireXlibDisplayEXT-display-parameter", kVUIDUndefined); @@ -4367,7 +4047,6 @@ bool ObjectLifetimes::PreCallValidateGetRandROutputDisplayEXT( RROutput rrOutput, VkDisplayKHR* pDisplay) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetRandROutputDisplayEXT-physicalDevice-parameter", kVUIDUndefined); return skip; @@ -4380,7 +4059,6 @@ void ObjectLifetimes::PostCallRecordGetRandROutputDisplayEXT( VkDisplayKHR* pDisplay, VkResult result) { if (result != VK_SUCCESS) return; - auto lock = write_shared_lock(); CreateObject(physicalDevice, *pDisplay, kVulkanObjectTypeDisplayKHR, nullptr); } @@ -4391,7 +4069,6 @@ bool ObjectLifetimes::PreCallValidateGetPhysicalDeviceSurfaceCapabilities2EXT( VkSurfaceKHR surface, VkSurfaceCapabilities2EXT* pSurfaceCapabilities) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-physicalDevice-parameter", "VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-commonparent"); skip |= ValidateObject(physicalDevice, surface, kVulkanObjectTypeSurfaceKHR, false, "VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-surface-parameter", "VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-commonparent"); @@ -4403,7 +4080,6 @@ bool ObjectLifetimes::PreCallValidateDisplayPowerControlEXT( VkDisplayKHR display, const VkDisplayPowerInfoEXT* pDisplayPowerInfo) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkDisplayPowerControlEXT-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, display, kVulkanObjectTypeDisplayKHR, false, "VUID-vkDisplayPowerControlEXT-display-parameter", kVUIDUndefined); @@ -4416,7 +4092,6 @@ bool ObjectLifetimes::PreCallValidateRegisterDeviceEventEXT( const VkAllocationCallbacks* pAllocator, VkFence* pFence) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkRegisterDeviceEventEXT-device-parameter", kVUIDUndefined); return skip; @@ -4429,7 +4104,6 @@ void ObjectLifetimes::PostCallRecordRegisterDeviceEventEXT( VkFence* pFence, VkResult result) { if (result != VK_SUCCESS) return; - auto lock = write_shared_lock(); CreateObject(device, *pFence, kVulkanObjectTypeFence, pAllocator); } @@ -4441,7 +4115,6 @@ bool ObjectLifetimes::PreCallValidateRegisterDisplayEventEXT( const VkAllocationCallbacks* pAllocator, VkFence* pFence) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkRegisterDisplayEventEXT-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, display, kVulkanObjectTypeDisplayKHR, false, "VUID-vkRegisterDisplayEventEXT-display-parameter", kVUIDUndefined); @@ -4456,7 +4129,6 @@ void ObjectLifetimes::PostCallRecordRegisterDisplayEventEXT( VkFence* pFence, VkResult result) { if (result != VK_SUCCESS) return; - auto lock = write_shared_lock(); CreateObject(device, *pFence, kVulkanObjectTypeFence, pAllocator); } @@ -4467,7 +4139,6 @@ bool ObjectLifetimes::PreCallValidateGetSwapchainCounterEXT( VkSurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetSwapchainCounterEXT-device-parameter", "VUID-vkGetSwapchainCounterEXT-commonparent"); skip |= ValidateObject(device, swapchain, kVulkanObjectTypeSwapchainKHR, false, "VUID-vkGetSwapchainCounterEXT-swapchain-parameter", "VUID-vkGetSwapchainCounterEXT-commonparent"); @@ -4479,7 +4150,6 @@ bool ObjectLifetimes::PreCallValidateGetRefreshCycleDurationGOOGLE( VkSwapchainKHR swapchain, VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetRefreshCycleDurationGOOGLE-device-parameter", "VUID-vkGetRefreshCycleDurationGOOGLE-commonparent"); skip |= ValidateObject(device, swapchain, kVulkanObjectTypeSwapchainKHR, false, "VUID-vkGetRefreshCycleDurationGOOGLE-swapchain-parameter", "VUID-vkGetRefreshCycleDurationGOOGLE-commonparent"); @@ -4492,7 +4162,6 @@ bool ObjectLifetimes::PreCallValidateGetPastPresentationTimingGOOGLE( uint32_t* pPresentationTimingCount, VkPastPresentationTimingGOOGLE* pPresentationTimings) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetPastPresentationTimingGOOGLE-device-parameter", "VUID-vkGetPastPresentationTimingGOOGLE-commonparent"); skip |= ValidateObject(device, swapchain, kVulkanObjectTypeSwapchainKHR, false, "VUID-vkGetPastPresentationTimingGOOGLE-swapchain-parameter", "VUID-vkGetPastPresentationTimingGOOGLE-commonparent"); @@ -4505,7 +4174,6 @@ bool ObjectLifetimes::PreCallValidateCmdSetDiscardRectangleEXT( uint32_t discardRectangleCount, const VkRect2D* pDiscardRectangles) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdSetDiscardRectangleEXT-commandBuffer-parameter", kVUIDUndefined); return skip; @@ -4517,7 +4185,6 @@ bool ObjectLifetimes::PreCallValidateSetHdrMetadataEXT( const VkSwapchainKHR* pSwapchains, const VkHdrMetadataEXT* pMetadata) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkSetHdrMetadataEXT-device-parameter", "VUID-vkSetHdrMetadataEXT-commonparent"); if (pSwapchains) { for (uint32_t index0 = 0; index0 < swapchainCount; ++index0) { @@ -4536,7 +4203,6 @@ bool ObjectLifetimes::PreCallValidateCreateIOSSurfaceMVK( const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(instance, instance, kVulkanObjectTypeInstance, false, "VUID-vkCreateIOSSurfaceMVK-instance-parameter", kVUIDUndefined); return skip; @@ -4549,7 +4215,6 @@ void ObjectLifetimes::PostCallRecordCreateIOSSurfaceMVK( VkSurfaceKHR* pSurface, VkResult result) { if (result != VK_SUCCESS) return; - auto lock = write_shared_lock(); CreateObject(instance, *pSurface, kVulkanObjectTypeSurfaceKHR, pAllocator); } @@ -4563,7 +4228,6 @@ bool ObjectLifetimes::PreCallValidateCreateMacOSSurfaceMVK( const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(instance, instance, kVulkanObjectTypeInstance, false, "VUID-vkCreateMacOSSurfaceMVK-instance-parameter", kVUIDUndefined); return skip; @@ -4576,7 +4240,6 @@ void ObjectLifetimes::PostCallRecordCreateMacOSSurfaceMVK( VkSurfaceKHR* pSurface, VkResult result) { if (result != VK_SUCCESS) return; - auto lock = write_shared_lock(); CreateObject(instance, *pSurface, kVulkanObjectTypeSurfaceKHR, pAllocator); } @@ -4586,7 +4249,6 @@ bool ObjectLifetimes::PreCallValidateSetDebugUtilsObjectNameEXT( VkDevice device, const VkDebugUtilsObjectNameInfoEXT* pNameInfo) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkSetDebugUtilsObjectNameEXT-device-parameter", kVUIDUndefined); return skip; @@ -4596,7 +4258,6 @@ bool ObjectLifetimes::PreCallValidateSetDebugUtilsObjectTagEXT( VkDevice device, const VkDebugUtilsObjectTagInfoEXT* pTagInfo) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkSetDebugUtilsObjectTagEXT-device-parameter", kVUIDUndefined); return skip; @@ -4606,7 +4267,6 @@ bool ObjectLifetimes::PreCallValidateQueueBeginDebugUtilsLabelEXT( VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(queue, queue, kVulkanObjectTypeQueue, false, "VUID-vkQueueBeginDebugUtilsLabelEXT-queue-parameter", kVUIDUndefined); return skip; @@ -4615,7 +4275,6 @@ bool ObjectLifetimes::PreCallValidateQueueBeginDebugUtilsLabelEXT( bool ObjectLifetimes::PreCallValidateQueueEndDebugUtilsLabelEXT( VkQueue queue) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(queue, queue, kVulkanObjectTypeQueue, false, "VUID-vkQueueEndDebugUtilsLabelEXT-queue-parameter", kVUIDUndefined); return skip; @@ -4625,7 +4284,6 @@ bool ObjectLifetimes::PreCallValidateQueueInsertDebugUtilsLabelEXT( VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(queue, queue, kVulkanObjectTypeQueue, false, "VUID-vkQueueInsertDebugUtilsLabelEXT-queue-parameter", kVUIDUndefined); return skip; @@ -4635,7 +4293,6 @@ bool ObjectLifetimes::PreCallValidateCmdBeginDebugUtilsLabelEXT( VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdBeginDebugUtilsLabelEXT-commandBuffer-parameter", kVUIDUndefined); return skip; @@ -4644,7 +4301,6 @@ bool ObjectLifetimes::PreCallValidateCmdBeginDebugUtilsLabelEXT( bool ObjectLifetimes::PreCallValidateCmdEndDebugUtilsLabelEXT( VkCommandBuffer commandBuffer) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-parameter", kVUIDUndefined); return skip; @@ -4654,7 +4310,6 @@ bool ObjectLifetimes::PreCallValidateCmdInsertDebugUtilsLabelEXT( VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdInsertDebugUtilsLabelEXT-commandBuffer-parameter", kVUIDUndefined); return skip; @@ -4666,7 +4321,6 @@ bool ObjectLifetimes::PreCallValidateCreateDebugUtilsMessengerEXT( const VkAllocationCallbacks* pAllocator, VkDebugUtilsMessengerEXT* pMessenger) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(instance, instance, kVulkanObjectTypeInstance, false, "VUID-vkCreateDebugUtilsMessengerEXT-instance-parameter", kVUIDUndefined); return skip; @@ -4679,7 +4333,6 @@ void ObjectLifetimes::PostCallRecordCreateDebugUtilsMessengerEXT( VkDebugUtilsMessengerEXT* pMessenger, VkResult result) { if (result != VK_SUCCESS) return; - auto lock = write_shared_lock(); CreateObject(instance, *pMessenger, kVulkanObjectTypeDebugUtilsMessengerEXT, pAllocator); } @@ -4689,7 +4342,6 @@ bool ObjectLifetimes::PreCallValidateDestroyDebugUtilsMessengerEXT( VkDebugUtilsMessengerEXT messenger, const VkAllocationCallbacks* pAllocator) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(instance, instance, kVulkanObjectTypeInstance, false, "VUID-vkDestroyDebugUtilsMessengerEXT-instance-parameter", kVUIDUndefined); skip |= ValidateObject(instance, messenger, kVulkanObjectTypeDebugUtilsMessengerEXT, false, "VUID-vkDestroyDebugUtilsMessengerEXT-messenger-parameter", "VUID-vkDestroyDebugUtilsMessengerEXT-messenger-parent"); skip |= ValidateDestroyObject(instance, messenger, kVulkanObjectTypeDebugUtilsMessengerEXT, pAllocator, kVUIDUndefined, kVUIDUndefined); @@ -4701,7 +4353,6 @@ void ObjectLifetimes::PreCallRecordDestroyDebugUtilsMessengerEXT( VkInstance instance, VkDebugUtilsMessengerEXT messenger, const VkAllocationCallbacks* pAllocator) { - auto lock = write_shared_lock(); RecordDestroyObject(instance, messenger, kVulkanObjectTypeDebugUtilsMessengerEXT); } @@ -4712,7 +4363,6 @@ bool ObjectLifetimes::PreCallValidateSubmitDebugUtilsMessageEXT( VkDebugUtilsMessageTypeFlagsEXT messageTypes, const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(instance, instance, kVulkanObjectTypeInstance, false, "VUID-vkSubmitDebugUtilsMessageEXT-instance-parameter", kVUIDUndefined); return skip; @@ -4725,7 +4375,6 @@ bool ObjectLifetimes::PreCallValidateGetAndroidHardwareBufferPropertiesANDROID( const struct AHardwareBuffer* buffer, VkAndroidHardwareBufferPropertiesANDROID* pProperties) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetAndroidHardwareBufferPropertiesANDROID-device-parameter", kVUIDUndefined); return skip; @@ -4739,7 +4388,6 @@ bool ObjectLifetimes::PreCallValidateGetMemoryAndroidHardwareBufferANDROID( const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, struct AHardwareBuffer** pBuffer) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetMemoryAndroidHardwareBufferANDROID-device-parameter", kVUIDUndefined); if (pInfo) { skip |= ValidateObject(device, pInfo->memory, kVulkanObjectTypeDeviceMemory, false, "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-memory-parameter", kVUIDUndefined); @@ -4753,7 +4401,6 @@ bool ObjectLifetimes::PreCallValidateCmdSetSampleLocationsEXT( VkCommandBuffer commandBuffer, const VkSampleLocationsInfoEXT* pSampleLocationsInfo) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdSetSampleLocationsEXT-commandBuffer-parameter", kVUIDUndefined); return skip; @@ -4764,7 +4411,6 @@ bool ObjectLifetimes::PreCallValidateGetPhysicalDeviceMultisamplePropertiesEXT( VkSampleCountFlagBits samples, VkMultisamplePropertiesEXT* pMultisampleProperties) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetPhysicalDeviceMultisamplePropertiesEXT-physicalDevice-parameter", kVUIDUndefined); return skip; @@ -4775,7 +4421,6 @@ bool ObjectLifetimes::PreCallValidateGetImageDrmFormatModifierPropertiesEXT( VkImage image, VkImageDrmFormatModifierPropertiesEXT* pProperties) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetImageDrmFormatModifierPropertiesEXT-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, image, kVulkanObjectTypeImage, false, "VUID-vkGetImageDrmFormatModifierPropertiesEXT-image-parameter", "VUID-vkGetImageDrmFormatModifierPropertiesEXT-image-parent"); @@ -4788,7 +4433,6 @@ bool ObjectLifetimes::PreCallValidateCreateValidationCacheEXT( const VkAllocationCallbacks* pAllocator, VkValidationCacheEXT* pValidationCache) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkCreateValidationCacheEXT-device-parameter", kVUIDUndefined); return skip; @@ -4801,7 +4445,6 @@ void ObjectLifetimes::PostCallRecordCreateValidationCacheEXT( VkValidationCacheEXT* pValidationCache, VkResult result) { if (result != VK_SUCCESS) return; - auto lock = write_shared_lock(); CreateObject(device, *pValidationCache, kVulkanObjectTypeValidationCacheEXT, pAllocator); } @@ -4811,7 +4454,6 @@ bool ObjectLifetimes::PreCallValidateDestroyValidationCacheEXT( VkValidationCacheEXT validationCache, const VkAllocationCallbacks* pAllocator) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkDestroyValidationCacheEXT-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, validationCache, kVulkanObjectTypeValidationCacheEXT, true, "VUID-vkDestroyValidationCacheEXT-validationCache-parameter", "VUID-vkDestroyValidationCacheEXT-validationCache-parent"); skip |= ValidateDestroyObject(device, validationCache, kVulkanObjectTypeValidationCacheEXT, pAllocator, kVUIDUndefined, kVUIDUndefined); @@ -4823,7 +4465,6 @@ void ObjectLifetimes::PreCallRecordDestroyValidationCacheEXT( VkDevice device, VkValidationCacheEXT validationCache, const VkAllocationCallbacks* pAllocator) { - auto lock = write_shared_lock(); RecordDestroyObject(device, validationCache, kVulkanObjectTypeValidationCacheEXT); } @@ -4834,7 +4475,6 @@ bool ObjectLifetimes::PreCallValidateMergeValidationCachesEXT( uint32_t srcCacheCount, const VkValidationCacheEXT* pSrcCaches) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkMergeValidationCachesEXT-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, dstCache, kVulkanObjectTypeValidationCacheEXT, false, "VUID-vkMergeValidationCachesEXT-dstCache-parameter", "VUID-vkMergeValidationCachesEXT-dstCache-parent"); if (pSrcCaches) { @@ -4852,7 +4492,6 @@ bool ObjectLifetimes::PreCallValidateGetValidationCacheDataEXT( size_t* pDataSize, void* pData) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetValidationCacheDataEXT-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, validationCache, kVulkanObjectTypeValidationCacheEXT, false, "VUID-vkGetValidationCacheDataEXT-validationCache-parameter", "VUID-vkGetValidationCacheDataEXT-validationCache-parent"); @@ -4864,7 +4503,6 @@ bool ObjectLifetimes::PreCallValidateCmdBindShadingRateImageNV( VkImageView imageView, VkImageLayout imageLayout) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdBindShadingRateImageNV-commandBuffer-parameter", "VUID-vkCmdBindShadingRateImageNV-commonparent"); skip |= ValidateObject(commandBuffer, imageView, kVulkanObjectTypeImageView, true, "VUID-vkCmdBindShadingRateImageNV-imageView-parameter", "VUID-vkCmdBindShadingRateImageNV-commonparent"); @@ -4877,7 +4515,6 @@ bool ObjectLifetimes::PreCallValidateCmdSetViewportShadingRatePaletteNV( uint32_t viewportCount, const VkShadingRatePaletteNV* pShadingRatePalettes) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdSetViewportShadingRatePaletteNV-commandBuffer-parameter", kVUIDUndefined); return skip; @@ -4889,7 +4526,6 @@ bool ObjectLifetimes::PreCallValidateCmdSetCoarseSampleOrderNV( uint32_t customSampleOrderCount, const VkCoarseSampleOrderCustomNV* pCustomSampleOrders) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdSetCoarseSampleOrderNV-commandBuffer-parameter", kVUIDUndefined); return skip; @@ -4901,7 +4537,6 @@ bool ObjectLifetimes::PreCallValidateCreateAccelerationStructureNV( const VkAllocationCallbacks* pAllocator, VkAccelerationStructureNV* pAccelerationStructure) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkCreateAccelerationStructureNV-device-parameter", kVUIDUndefined); if (pCreateInfo) { if (pCreateInfo->info.pGeometries) { @@ -4924,7 +4559,6 @@ void ObjectLifetimes::PostCallRecordCreateAccelerationStructureNV( VkAccelerationStructureNV* pAccelerationStructure, VkResult result) { if (result != VK_SUCCESS) return; - auto lock = write_shared_lock(); CreateObject(device, *pAccelerationStructure, kVulkanObjectTypeAccelerationStructureNV, pAllocator); } @@ -4934,7 +4568,6 @@ bool ObjectLifetimes::PreCallValidateDestroyAccelerationStructureNV( VkAccelerationStructureNV accelerationStructure, const VkAllocationCallbacks* pAllocator) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkDestroyAccelerationStructureNV-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, accelerationStructure, kVulkanObjectTypeAccelerationStructureNV, false, "VUID-vkDestroyAccelerationStructureNV-accelerationStructure-parameter", "VUID-vkDestroyAccelerationStructureNV-accelerationStructure-parent"); skip |= ValidateDestroyObject(device, accelerationStructure, kVulkanObjectTypeAccelerationStructureNV, pAllocator, kVUIDUndefined, kVUIDUndefined); @@ -4946,7 +4579,6 @@ void ObjectLifetimes::PreCallRecordDestroyAccelerationStructureNV( VkDevice device, VkAccelerationStructureNV accelerationStructure, const VkAllocationCallbacks* pAllocator) { - auto lock = write_shared_lock(); RecordDestroyObject(device, accelerationStructure, kVulkanObjectTypeAccelerationStructureNV); } @@ -4956,7 +4588,6 @@ bool ObjectLifetimes::PreCallValidateGetAccelerationStructureMemoryRequirementsN const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetAccelerationStructureMemoryRequirementsNV-device-parameter", kVUIDUndefined); if (pInfo) { skip |= ValidateObject(device, pInfo->accelerationStructure, kVulkanObjectTypeAccelerationStructureNV, false, "VUID-VkAccelerationStructureMemoryRequirementsInfoNV-accelerationStructure-parameter", kVUIDUndefined); @@ -4970,7 +4601,6 @@ bool ObjectLifetimes::PreCallValidateBindAccelerationStructureMemoryNV( uint32_t bindInfoCount, const VkBindAccelerationStructureMemoryInfoNV* pBindInfos) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkBindAccelerationStructureMemoryNV-device-parameter", kVUIDUndefined); if (pBindInfos) { for (uint32_t index0 = 0; index0 < bindInfoCount; ++index0) { @@ -4993,7 +4623,6 @@ bool ObjectLifetimes::PreCallValidateCmdBuildAccelerationStructureNV( VkBuffer scratch, VkDeviceSize scratchOffset) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdBuildAccelerationStructureNV-commandBuffer-parameter", "VUID-vkCmdBuildAccelerationStructureNV-commonparent"); if (pInfo) { if (pInfo->pGeometries) { @@ -5019,7 +4648,6 @@ bool ObjectLifetimes::PreCallValidateCmdCopyAccelerationStructureNV( VkAccelerationStructureNV src, VkCopyAccelerationStructureModeNV mode) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-parameter", "VUID-vkCmdCopyAccelerationStructureNV-commonparent"); skip |= ValidateObject(commandBuffer, dst, kVulkanObjectTypeAccelerationStructureNV, false, "VUID-vkCmdCopyAccelerationStructureNV-dst-parameter", "VUID-vkCmdCopyAccelerationStructureNV-commonparent"); skip |= ValidateObject(commandBuffer, src, kVulkanObjectTypeAccelerationStructureNV, false, "VUID-vkCmdCopyAccelerationStructureNV-src-parameter", "VUID-vkCmdCopyAccelerationStructureNV-commonparent"); @@ -5044,7 +4672,6 @@ bool ObjectLifetimes::PreCallValidateCmdTraceRaysNV( uint32_t height, uint32_t depth) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdTraceRaysNV-commandBuffer-parameter", "VUID-vkCmdTraceRaysNV-commonparent"); skip |= ValidateObject(commandBuffer, raygenShaderBindingTableBuffer, kVulkanObjectTypeBuffer, false, "VUID-vkCmdTraceRaysNV-raygenShaderBindingTableBuffer-parameter", "VUID-vkCmdTraceRaysNV-commonparent"); skip |= ValidateObject(commandBuffer, missShaderBindingTableBuffer, kVulkanObjectTypeBuffer, true, "VUID-vkCmdTraceRaysNV-missShaderBindingTableBuffer-parameter", "VUID-vkCmdTraceRaysNV-commonparent"); @@ -5062,7 +4689,6 @@ bool ObjectLifetimes::PreCallValidateCreateRayTracingPipelinesNV( const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkCreateRayTracingPipelinesNV-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, pipelineCache, kVulkanObjectTypePipelineCache, true, "VUID-vkCreateRayTracingPipelinesNV-pipelineCache-parameter", "VUID-vkCreateRayTracingPipelinesNV-pipelineCache-parent"); if (pCreateInfos) { @@ -5088,7 +4714,6 @@ void ObjectLifetimes::PostCallRecordCreateRayTracingPipelinesNV( const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines, VkResult result) { - auto lock = write_shared_lock(); if (VK_ERROR_VALIDATION_FAILED_EXT == result) return; if (pPipelines) { for (uint32_t index = 0; index < createInfoCount; index++) { @@ -5107,7 +4732,6 @@ bool ObjectLifetimes::PreCallValidateGetRayTracingShaderGroupHandlesNV( size_t dataSize, void* pData) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetRayTracingShaderGroupHandlesNV-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, pipeline, kVulkanObjectTypePipeline, false, "VUID-vkGetRayTracingShaderGroupHandlesNV-pipeline-parameter", "VUID-vkGetRayTracingShaderGroupHandlesNV-pipeline-parent"); @@ -5120,7 +4744,6 @@ bool ObjectLifetimes::PreCallValidateGetAccelerationStructureHandleNV( size_t dataSize, void* pData) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetAccelerationStructureHandleNV-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, accelerationStructure, kVulkanObjectTypeAccelerationStructureNV, false, "VUID-vkGetAccelerationStructureHandleNV-accelerationStructure-parameter", "VUID-vkGetAccelerationStructureHandleNV-accelerationStructure-parent"); @@ -5135,7 +4758,6 @@ bool ObjectLifetimes::PreCallValidateCmdWriteAccelerationStructuresPropertiesNV( VkQueryPool queryPool, uint32_t firstQuery) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-commandBuffer-parameter", "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-commonparent"); if (pAccelerationStructures) { for (uint32_t index0 = 0; index0 < accelerationStructureCount; ++index0) { @@ -5152,7 +4774,6 @@ bool ObjectLifetimes::PreCallValidateCompileDeferredNV( VkPipeline pipeline, uint32_t shader) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkCompileDeferredNV-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, pipeline, kVulkanObjectTypePipeline, false, "VUID-vkCompileDeferredNV-pipeline-parameter", "VUID-vkCompileDeferredNV-pipeline-parent"); @@ -5165,7 +4786,6 @@ bool ObjectLifetimes::PreCallValidateGetMemoryHostPointerPropertiesEXT( const void* pHostPointer, VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetMemoryHostPointerPropertiesEXT-device-parameter", kVUIDUndefined); return skip; @@ -5178,7 +4798,6 @@ bool ObjectLifetimes::PreCallValidateCmdWriteBufferMarkerAMD( VkDeviceSize dstOffset, uint32_t marker) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdWriteBufferMarkerAMD-commandBuffer-parameter", "VUID-vkCmdWriteBufferMarkerAMD-commonparent"); skip |= ValidateObject(commandBuffer, dstBuffer, kVulkanObjectTypeBuffer, false, "VUID-vkCmdWriteBufferMarkerAMD-dstBuffer-parameter", "VUID-vkCmdWriteBufferMarkerAMD-commonparent"); @@ -5190,7 +4809,6 @@ bool ObjectLifetimes::PreCallValidateGetPhysicalDeviceCalibrateableTimeDomainsEX uint32_t* pTimeDomainCount, VkTimeDomainEXT* pTimeDomains) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetPhysicalDeviceCalibrateableTimeDomainsEXT-physicalDevice-parameter", kVUIDUndefined); return skip; @@ -5203,7 +4821,6 @@ bool ObjectLifetimes::PreCallValidateGetCalibratedTimestampsEXT( uint64_t* pTimestamps, uint64_t* pMaxDeviation) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetCalibratedTimestampsEXT-device-parameter", kVUIDUndefined); return skip; @@ -5214,7 +4831,6 @@ bool ObjectLifetimes::PreCallValidateCmdDrawMeshTasksNV( uint32_t taskCount, uint32_t firstTask) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdDrawMeshTasksNV-commandBuffer-parameter", kVUIDUndefined); return skip; @@ -5227,7 +4843,6 @@ bool ObjectLifetimes::PreCallValidateCmdDrawMeshTasksIndirectNV( uint32_t drawCount, uint32_t stride) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-parameter", "VUID-vkCmdDrawMeshTasksIndirectNV-commonparent"); skip |= ValidateObject(commandBuffer, buffer, kVulkanObjectTypeBuffer, false, "VUID-vkCmdDrawMeshTasksIndirectNV-buffer-parameter", "VUID-vkCmdDrawMeshTasksIndirectNV-commonparent"); @@ -5243,7 +4858,6 @@ bool ObjectLifetimes::PreCallValidateCmdDrawMeshTasksIndirectCountNV( uint32_t maxDrawCount, uint32_t stride) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-parameter", "VUID-vkCmdDrawMeshTasksIndirectCountNV-commonparent"); skip |= ValidateObject(commandBuffer, buffer, kVulkanObjectTypeBuffer, false, "VUID-vkCmdDrawMeshTasksIndirectCountNV-buffer-parameter", "VUID-vkCmdDrawMeshTasksIndirectCountNV-commonparent"); skip |= ValidateObject(commandBuffer, countBuffer, kVulkanObjectTypeBuffer, false, "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-parameter", "VUID-vkCmdDrawMeshTasksIndirectCountNV-commonparent"); @@ -5257,7 +4871,6 @@ bool ObjectLifetimes::PreCallValidateCmdSetExclusiveScissorNV( uint32_t exclusiveScissorCount, const VkRect2D* pExclusiveScissors) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdSetExclusiveScissorNV-commandBuffer-parameter", kVUIDUndefined); return skip; @@ -5267,7 +4880,6 @@ bool ObjectLifetimes::PreCallValidateCmdSetCheckpointNV( VkCommandBuffer commandBuffer, const void* pCheckpointMarker) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdSetCheckpointNV-commandBuffer-parameter", kVUIDUndefined); return skip; @@ -5278,7 +4890,6 @@ bool ObjectLifetimes::PreCallValidateGetQueueCheckpointDataNV( uint32_t* pCheckpointDataCount, VkCheckpointDataNV* pCheckpointData) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(queue, queue, kVulkanObjectTypeQueue, false, "VUID-vkGetQueueCheckpointDataNV-queue-parameter", kVUIDUndefined); return skip; @@ -5288,7 +4899,6 @@ bool ObjectLifetimes::PreCallValidateInitializePerformanceApiINTEL( VkDevice device, const VkInitializePerformanceApiInfoINTEL* pInitializeInfo) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkInitializePerformanceApiINTEL-device-parameter", kVUIDUndefined); return skip; @@ -5297,7 +4907,6 @@ bool ObjectLifetimes::PreCallValidateInitializePerformanceApiINTEL( bool ObjectLifetimes::PreCallValidateUninitializePerformanceApiINTEL( VkDevice device) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkUninitializePerformanceApiINTEL-device-parameter", kVUIDUndefined); return skip; @@ -5307,7 +4916,6 @@ bool ObjectLifetimes::PreCallValidateCmdSetPerformanceMarkerINTEL( VkCommandBuffer commandBuffer, const VkPerformanceMarkerInfoINTEL* pMarkerInfo) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdSetPerformanceMarkerINTEL-commandBuffer-parameter", kVUIDUndefined); return skip; @@ -5317,7 +4925,6 @@ bool ObjectLifetimes::PreCallValidateCmdSetPerformanceStreamMarkerINTEL( VkCommandBuffer commandBuffer, const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdSetPerformanceStreamMarkerINTEL-commandBuffer-parameter", kVUIDUndefined); return skip; @@ -5327,7 +4934,6 @@ bool ObjectLifetimes::PreCallValidateCmdSetPerformanceOverrideINTEL( VkCommandBuffer commandBuffer, const VkPerformanceOverrideInfoINTEL* pOverrideInfo) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdSetPerformanceOverrideINTEL-commandBuffer-parameter", kVUIDUndefined); return skip; @@ -5338,7 +4944,6 @@ bool ObjectLifetimes::PreCallValidateGetPerformanceParameterINTEL( VkPerformanceParameterTypeINTEL parameter, VkPerformanceValueINTEL* pValue) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetPerformanceParameterINTEL-device-parameter", kVUIDUndefined); return skip; @@ -5349,7 +4954,6 @@ bool ObjectLifetimes::PreCallValidateSetLocalDimmingAMD( VkSwapchainKHR swapChain, VkBool32 localDimmingEnable) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkSetLocalDimmingAMD-device-parameter", "VUID-vkSetLocalDimmingAMD-commonparent"); skip |= ValidateObject(device, swapChain, kVulkanObjectTypeSwapchainKHR, false, "VUID-vkSetLocalDimmingAMD-swapChain-parameter", "VUID-vkSetLocalDimmingAMD-commonparent"); @@ -5364,7 +4968,6 @@ bool ObjectLifetimes::PreCallValidateCreateImagePipeSurfaceFUCHSIA( const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(instance, instance, kVulkanObjectTypeInstance, false, "VUID-vkCreateImagePipeSurfaceFUCHSIA-instance-parameter", kVUIDUndefined); return skip; @@ -5377,7 +4980,6 @@ void ObjectLifetimes::PostCallRecordCreateImagePipeSurfaceFUCHSIA( VkSurfaceKHR* pSurface, VkResult result) { if (result != VK_SUCCESS) return; - auto lock = write_shared_lock(); CreateObject(instance, *pSurface, kVulkanObjectTypeSurfaceKHR, pAllocator); } @@ -5391,7 +4993,6 @@ bool ObjectLifetimes::PreCallValidateCreateMetalSurfaceEXT( const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(instance, instance, kVulkanObjectTypeInstance, false, "VUID-vkCreateMetalSurfaceEXT-instance-parameter", kVUIDUndefined); return skip; @@ -5404,7 +5005,6 @@ void ObjectLifetimes::PostCallRecordCreateMetalSurfaceEXT( VkSurfaceKHR* pSurface, VkResult result) { if (result != VK_SUCCESS) return; - auto lock = write_shared_lock(); CreateObject(instance, *pSurface, kVulkanObjectTypeSurfaceKHR, pAllocator); } @@ -5414,7 +5014,6 @@ bool ObjectLifetimes::PreCallValidateGetBufferDeviceAddressEXT( VkDevice device, const VkBufferDeviceAddressInfoEXT* pInfo) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetBufferDeviceAddressEXT-device-parameter", kVUIDUndefined); return skip; @@ -5425,7 +5024,6 @@ bool ObjectLifetimes::PreCallValidateGetPhysicalDeviceCooperativeMatrixPropertie uint32_t* pPropertyCount, VkCooperativeMatrixPropertiesNV* pProperties) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetPhysicalDeviceCooperativeMatrixPropertiesNV-physicalDevice-parameter", kVUIDUndefined); return skip; @@ -5436,7 +5034,6 @@ bool ObjectLifetimes::PreCallValidateGetPhysicalDeviceSupportedFramebufferMixedS uint32_t* pCombinationCount, VkFramebufferMixedSamplesCombinationNV* pCombinations) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV-physicalDevice-parameter", kVUIDUndefined); return skip; @@ -5450,7 +5047,6 @@ bool ObjectLifetimes::PreCallValidateGetPhysicalDeviceSurfacePresentModes2EXT( uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetPhysicalDeviceSurfacePresentModes2EXT-physicalDevice-parameter", kVUIDUndefined); if (pSurfaceInfo) { skip |= ValidateObject(physicalDevice, pSurfaceInfo->surface, kVulkanObjectTypeSurfaceKHR, false, "VUID-VkPhysicalDeviceSurfaceInfo2KHR-surface-parameter", kVUIDUndefined); @@ -5466,7 +5062,6 @@ bool ObjectLifetimes::PreCallValidateAcquireFullScreenExclusiveModeEXT( VkDevice device, VkSwapchainKHR swapchain) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkAcquireFullScreenExclusiveModeEXT-device-parameter", "VUID-vkAcquireFullScreenExclusiveModeEXT-commonparent"); skip |= ValidateObject(device, swapchain, kVulkanObjectTypeSwapchainKHR, false, "VUID-vkAcquireFullScreenExclusiveModeEXT-swapchain-parameter", "VUID-vkAcquireFullScreenExclusiveModeEXT-commonparent"); @@ -5480,7 +5075,6 @@ bool ObjectLifetimes::PreCallValidateReleaseFullScreenExclusiveModeEXT( VkDevice device, VkSwapchainKHR swapchain) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, kVUIDUndefined, kVUIDUndefined); skip |= ValidateObject(device, swapchain, kVulkanObjectTypeSwapchainKHR, false, kVUIDUndefined, kVUIDUndefined); @@ -5495,7 +5089,6 @@ bool ObjectLifetimes::PreCallValidateGetDeviceGroupSurfacePresentModes2EXT( const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkDeviceGroupPresentModeFlagsKHR* pModes) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetDeviceGroupSurfacePresentModes2EXT-device-parameter", kVUIDUndefined); if (pSurfaceInfo) { skip |= ValidateObject(device, pSurfaceInfo->surface, kVulkanObjectTypeSurfaceKHR, false, "VUID-VkPhysicalDeviceSurfaceInfo2KHR-surface-parameter", kVUIDUndefined); @@ -5511,7 +5104,6 @@ bool ObjectLifetimes::PreCallValidateCreateHeadlessSurfaceEXT( const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(instance, instance, kVulkanObjectTypeInstance, false, "VUID-vkCreateHeadlessSurfaceEXT-instance-parameter", kVUIDUndefined); return skip; @@ -5524,7 +5116,6 @@ void ObjectLifetimes::PostCallRecordCreateHeadlessSurfaceEXT( VkSurfaceKHR* pSurface, VkResult result) { if (result != VK_SUCCESS) return; - auto lock = write_shared_lock(); CreateObject(instance, *pSurface, kVulkanObjectTypeSurfaceKHR, pAllocator); } @@ -5534,7 +5125,6 @@ bool ObjectLifetimes::PreCallValidateCmdSetLineStippleEXT( uint32_t lineStippleFactor, uint16_t lineStipplePattern) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdSetLineStippleEXT-commandBuffer-parameter", kVUIDUndefined); return skip; @@ -5546,7 +5136,6 @@ bool ObjectLifetimes::PreCallValidateResetQueryPoolEXT( uint32_t firstQuery, uint32_t queryCount) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkResetQueryPoolEXT-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, queryPool, kVulkanObjectTypeQueryPool, false, "VUID-vkResetQueryPoolEXT-queryPool-parameter", "VUID-vkResetQueryPoolEXT-queryPool-parent"); diff --git a/layers/object_lifetime_validation.h b/layers/object_lifetime_validation.h index cfd080f97..dcb6f000c 100644 --- a/layers/object_lifetime_validation.h +++ b/layers/object_lifetime_validation.h @@ -67,7 +67,7 @@ struct ObjTrackState { std::unique_ptr<std::unordered_set<uint64_t> > child_objects; // Child objects (used for VkDescriptorPool only) }; -typedef std::unordered_map<uint64_t, ObjTrackState *> object_map_type; +typedef vl_concurrent_unordered_map<uint64_t, std::shared_ptr<ObjTrackState>, 6> object_map_type; class ObjectLifetimes : public ValidationObject { public: @@ -82,15 +82,30 @@ class ObjectLifetimes : public ValidationObject { write_object_lifetime_mutex_t write_shared_lock() { return write_object_lifetime_mutex_t(object_lifetime_mutex); } read_object_lifetime_mutex_t read_shared_lock() { return read_object_lifetime_mutex_t(object_lifetime_mutex); } - uint64_t num_objects[kVulkanObjectTypeMax + 1]; - uint64_t num_total_objects; + std::atomic<uint64_t> num_objects[kVulkanObjectTypeMax + 1]; + std::atomic<uint64_t> num_total_objects; // Vector of unordered_maps per object type to hold ObjTrackState info - std::vector<object_map_type> object_map; + object_map_type object_map[kVulkanObjectTypeMax + 1]; // Special-case map for swapchain images - std::unordered_map<uint64_t, ObjTrackState *> swapchainImageMap; + object_map_type swapchainImageMap; // Constructor for object lifetime tracking - ObjectLifetimes() : num_objects{}, num_total_objects(0), object_map{} { object_map.resize(kVulkanObjectTypeMax + 1); } + ObjectLifetimes() : num_objects{}, num_total_objects(0) {} + + void InsertObject(object_map_type &map, uint64_t object_handle, VulkanObjectType object_type, + std::shared_ptr<ObjTrackState> pNode) { + bool inserted = map.insert(object_handle, pNode); + if (!inserted) { + // The object should not already exist. If we couldn't add it to the map, there was probably + // a race condition in the app. Report an error and move on. + VkDebugReportObjectTypeEXT debug_object_type = get_debug_report_enum[object_type]; + log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, debug_object_type, object_handle, kVUID_ObjectTracker_Info, + "Couldn't insert %s Object 0x%" PRIxLEAST64 + ", already existed. This should not happen and may indicate a " + "race condition in the application.", + object_string[object_type], object_handle); + } + } bool DeviceReportUndestroyedObjects(VkDevice device, VulkanObjectType object_type, const std::string &error_code); void DeviceDestroyUndestroyedObjects(VkDevice device, VulkanObjectType object_type); @@ -134,7 +149,7 @@ class ObjectLifetimes : public ValidationObject { VkDebugReportObjectTypeEXT debug_object_type = get_debug_report_enum[object_type]; // Look for object in object map - if (object_map[object_type].find(object_handle) == object_map[object_type].end()) { + if (!object_map[object_type].contains(object_handle)) { // If object is an image, also look for it in the swapchain image map if ((object_type != kVulkanObjectTypeImage) || (swapchainImageMap.find(object_handle) == swapchainImageMap.end())) { // Object not found, look for it in other device object maps @@ -175,13 +190,13 @@ class ObjectLifetimes : public ValidationObject { void CreateObject(T1 dispatchable_object, T2 object, VulkanObjectType object_type, const VkAllocationCallbacks *pAllocator) { uint64_t object_handle = HandleToUint64(object); bool custom_allocator = (pAllocator != nullptr); - if (!object_map[object_type].count(object_handle)) { - ObjTrackState *pNewObjNode = new ObjTrackState; + if (!object_map[object_type].contains(object_handle)) { + auto pNewObjNode = std::make_shared<ObjTrackState>(); pNewObjNode->object_type = object_type; pNewObjNode->status = custom_allocator ? OBJSTATUS_CUSTOM_ALLOCATOR : OBJSTATUS_NONE; pNewObjNode->handle = object_handle; - object_map[object_type][object_handle] = pNewObjNode; + InsertObject(object_map[object_type], object_handle, object_type, pNewObjNode); num_objects[object_type]++; num_total_objects++; @@ -196,27 +211,31 @@ class ObjectLifetimes : public ValidationObject { auto object_handle = HandleToUint64(object); assert(object_handle != VK_NULL_HANDLE); - auto item = object_map[object_type].find(object_handle); - assert(item != object_map[object_type].end()); - - ObjTrackState *pNode = item->second; + auto item = object_map[object_type].pop(object_handle); + if (item == object_map[object_type].end()) { + // We've already checked that the object exists. If we couldn't find and atomically remove it + // from the map, there must have been a race condition in the app. Report an error and move on. + VkDebugReportObjectTypeEXT debug_object_type = get_debug_report_enum[object_type]; + log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, debug_object_type, object_handle, kVUID_ObjectTracker_Info, + "Couldn't destroy %s Object 0x%" PRIxLEAST64 + ", not found. This should not happen and may indicate a " + "race condition in the application.", + object_string[object_type], object_handle); + return; + } assert(num_total_objects > 0); num_total_objects--; - assert(num_objects[pNode->object_type] > 0); + assert(num_objects[item->second->object_type] > 0); - num_objects[pNode->object_type]--; - - delete pNode; - object_map[object_type].erase(item); + num_objects[item->second->object_type]--; } template <typename T1, typename T2> void RecordDestroyObject(T1 dispatchable_object, T2 object, VulkanObjectType object_type) { auto object_handle = HandleToUint64(object); if (object_handle != VK_NULL_HANDLE) { - auto item = object_map[object_type].find(object_handle); - if (item != object_map[object_type].end()) { + if (object_map[object_type].contains(object_handle)) { DestroyObjectSilently(object, object_type); } } @@ -231,11 +250,11 @@ class ObjectLifetimes : public ValidationObject { VkDebugReportObjectTypeEXT debug_object_type = get_debug_report_enum[object_type]; bool skip = false; - if (object_handle != VK_NULL_HANDLE) { + if ((expected_custom_allocator_code != kVUIDUndefined || expected_default_allocator_code != kVUIDUndefined) && + object_handle != VK_NULL_HANDLE) { auto item = object_map[object_type].find(object_handle); if (item != object_map[object_type].end()) { - ObjTrackState *pNode = item->second; - auto allocated_with_custom = (pNode->status & OBJSTATUS_CUSTOM_ALLOCATOR) ? true : false; + auto allocated_with_custom = (item->second->status & OBJSTATUS_CUSTOM_ALLOCATOR) ? true : false; if (allocated_with_custom && !custom_allocator && expected_custom_allocator_code != kVUIDUndefined) { // This check only verifies that custom allocation callbacks were provided to both Create and Destroy calls, // it cannot verify that these allocation callbacks are compatible with each other. diff --git a/layers/object_tracker_utils.cpp b/layers/object_tracker_utils.cpp index 6262a2baa..1b0eff903 100644 --- a/layers/object_tracker_utils.cpp +++ b/layers/object_tracker_utils.cpp @@ -37,15 +37,14 @@ VulkanTypedHandle ObjTrackStateTypedHandle(const ObjTrackState &track_state) { // Destroy memRef lists and free all memory void ObjectLifetimes::DestroyQueueDataStructures(VkDevice device) { // Destroy the items in the queue map - auto queue = object_map[kVulkanObjectTypeQueue].begin(); - while (queue != object_map[kVulkanObjectTypeQueue].end()) { - uint32_t obj_index = queue->second->object_type; + auto snapshot = object_map[kVulkanObjectTypeQueue].snapshot(); + for (const auto &queue : snapshot) { + uint32_t obj_index = queue.second->object_type; assert(num_total_objects > 0); num_total_objects--; assert(num_objects[obj_index] > 0); num_objects[obj_index]--; - delete queue->second; - queue = object_map[kVulkanObjectTypeQueue].erase(queue); + object_map[kVulkanObjectTypeQueue].erase(queue.first); } } @@ -56,8 +55,8 @@ bool ObjectLifetimes::ValidateDeviceObject(const VulkanTypedHandle &device_typed const char *wrong_device_code) { auto instance_data = GetLayerDataPtr(get_dispatch_key(instance), layer_data_map); auto instance_object_lifetime_data = GetObjectLifetimeData(instance_data->object_dispatch); - for (auto object : instance_object_lifetime_data->object_map[kVulkanObjectTypeDevice]) { - if (object.second->handle == device_typed.handle) return false; + if (instance_object_lifetime_data->object_map[kVulkanObjectTypeDevice].contains(device_typed.handle)) { + return false; } return log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT, device_typed.handle, invalid_handle_code, "Invalid %s.", report_data->FormatHandle(device_typed).c_str()); @@ -65,7 +64,7 @@ bool ObjectLifetimes::ValidateDeviceObject(const VulkanTypedHandle &device_typed void ObjectLifetimes::AllocateCommandBuffer(VkDevice device, const VkCommandPool command_pool, const VkCommandBuffer command_buffer, VkCommandBufferLevel level) { - ObjTrackState *pNewObjNode = new ObjTrackState; + auto pNewObjNode = std::make_shared<ObjTrackState>(); pNewObjNode->object_type = kVulkanObjectTypeCommandBuffer; pNewObjNode->handle = HandleToUint64(command_buffer); pNewObjNode->parent_object = HandleToUint64(command_pool); @@ -74,7 +73,8 @@ void ObjectLifetimes::AllocateCommandBuffer(VkDevice device, const VkCommandPool } else { pNewObjNode->status = OBJSTATUS_NONE; } - object_map[kVulkanObjectTypeCommandBuffer][HandleToUint64(command_buffer)] = pNewObjNode; + InsertObject(object_map[kVulkanObjectTypeCommandBuffer], HandleToUint64(command_buffer), kVulkanObjectTypeCommandBuffer, + pNewObjNode); num_objects[kVulkanObjectTypeCommandBuffer]++; num_total_objects++; } @@ -82,8 +82,9 @@ void ObjectLifetimes::AllocateCommandBuffer(VkDevice device, const VkCommandPool bool ObjectLifetimes::ValidateCommandBuffer(VkDevice device, VkCommandPool command_pool, VkCommandBuffer command_buffer) { bool skip = false; uint64_t object_handle = HandleToUint64(command_buffer); - if (object_map[kVulkanObjectTypeCommandBuffer].find(object_handle) != object_map[kVulkanObjectTypeCommandBuffer].end()) { - ObjTrackState *pNode = object_map[kVulkanObjectTypeCommandBuffer][HandleToUint64(command_buffer)]; + auto iter = object_map[kVulkanObjectTypeCommandBuffer].find(object_handle); + if (iter != object_map[kVulkanObjectTypeCommandBuffer].end()) { + auto pNode = iter->second; if (pNode->parent_object != HandleToUint64(command_pool)) { // We know that the parent *must* be a command pool @@ -103,19 +104,19 @@ bool ObjectLifetimes::ValidateCommandBuffer(VkDevice device, VkCommandPool comma } void ObjectLifetimes::AllocateDescriptorSet(VkDevice device, VkDescriptorPool descriptor_pool, VkDescriptorSet descriptor_set) { - ObjTrackState *pNewObjNode = new ObjTrackState; + auto pNewObjNode = std::make_shared<ObjTrackState>(); pNewObjNode->object_type = kVulkanObjectTypeDescriptorSet; pNewObjNode->status = OBJSTATUS_NONE; pNewObjNode->handle = HandleToUint64(descriptor_set); pNewObjNode->parent_object = HandleToUint64(descriptor_pool); - object_map[kVulkanObjectTypeDescriptorSet][HandleToUint64(descriptor_set)] = pNewObjNode; + InsertObject(object_map[kVulkanObjectTypeDescriptorSet], HandleToUint64(descriptor_set), kVulkanObjectTypeDescriptorSet, + pNewObjNode); num_objects[kVulkanObjectTypeDescriptorSet]++; num_total_objects++; auto itr = object_map[kVulkanObjectTypeDescriptorPool].find(HandleToUint64(descriptor_pool)); if (itr != object_map[kVulkanObjectTypeDescriptorPool].end()) { - ObjTrackState *pPoolNode = itr->second; - pPoolNode->child_objects->insert(HandleToUint64(descriptor_set)); + itr->second->child_objects->insert(HandleToUint64(descriptor_set)); } } @@ -124,11 +125,9 @@ bool ObjectLifetimes::ValidateDescriptorSet(VkDevice device, VkDescriptorPool de uint64_t object_handle = HandleToUint64(descriptor_set); auto dsItem = object_map[kVulkanObjectTypeDescriptorSet].find(object_handle); if (dsItem != object_map[kVulkanObjectTypeDescriptorSet].end()) { - ObjTrackState *pNode = dsItem->second; - - if (pNode->parent_object != HandleToUint64(descriptor_pool)) { + if (dsItem->second->parent_object != HandleToUint64(descriptor_pool)) { // We know that the parent *must* be a descriptor pool - const auto parent_pool = CastFromUint64<VkDescriptorPool>(pNode->parent_object); + const auto parent_pool = CastFromUint64<VkDescriptorPool>(dsItem->second->parent_object); skip |= log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT, object_handle, "VUID-vkFreeDescriptorSets-pDescriptorSets-parent", "FreeDescriptorSets is attempting to free %s" @@ -189,7 +188,6 @@ bool ObjectLifetimes::PreCallValidateCmdPushDescriptorSetKHR(VkCommandBuffer com VkPipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const VkWriteDescriptorSet *pDescriptorWrites) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkCmdPushDescriptorSetKHR-commandBuffer-parameter", "VUID-vkCmdPushDescriptorSetKHR-commonparent"); skip |= ValidateObject(commandBuffer, layout, kVulkanObjectTypePipelineLayout, false, @@ -203,11 +201,11 @@ bool ObjectLifetimes::PreCallValidateCmdPushDescriptorSetKHR(VkCommandBuffer com } void ObjectLifetimes::CreateQueue(VkDevice device, VkQueue vkObj) { - ObjTrackState *p_obj_node = NULL; + std::shared_ptr<ObjTrackState> p_obj_node = NULL; auto queue_item = object_map[kVulkanObjectTypeQueue].find(HandleToUint64(vkObj)); if (queue_item == object_map[kVulkanObjectTypeQueue].end()) { - p_obj_node = new ObjTrackState; - object_map[kVulkanObjectTypeQueue][HandleToUint64(vkObj)] = p_obj_node; + p_obj_node = std::make_shared<ObjTrackState>(); + InsertObject(object_map[kVulkanObjectTypeQueue], HandleToUint64(vkObj), kVulkanObjectTypeQueue, p_obj_node); num_objects[kVulkanObjectTypeQueue]++; num_total_objects++; } else { @@ -219,18 +217,22 @@ void ObjectLifetimes::CreateQueue(VkDevice device, VkQueue vkObj) { } void ObjectLifetimes::CreateSwapchainImageObject(VkDevice dispatchable_object, VkImage swapchain_image, VkSwapchainKHR swapchain) { - ObjTrackState *pNewObjNode = new ObjTrackState; - pNewObjNode->object_type = kVulkanObjectTypeImage; - pNewObjNode->status = OBJSTATUS_NONE; - pNewObjNode->handle = HandleToUint64(swapchain_image); - pNewObjNode->parent_object = HandleToUint64(swapchain); - swapchainImageMap[HandleToUint64(swapchain_image)] = pNewObjNode; + if (!swapchainImageMap.contains(HandleToUint64(swapchain_image))) { + auto pNewObjNode = std::make_shared<ObjTrackState>(); + pNewObjNode->object_type = kVulkanObjectTypeImage; + pNewObjNode->status = OBJSTATUS_NONE; + pNewObjNode->handle = HandleToUint64(swapchain_image); + pNewObjNode->parent_object = HandleToUint64(swapchain); + InsertObject(swapchainImageMap, HandleToUint64(swapchain_image), kVulkanObjectTypeImage, pNewObjNode); + } } bool ObjectLifetimes::DeviceReportUndestroyedObjects(VkDevice device, VulkanObjectType object_type, const std::string &error_code) { bool skip = false; - for (const auto &item : object_map[object_type]) { - const ObjTrackState *object_info = item.second; + + auto snapshot = object_map[object_type].snapshot(); + for (const auto &item : snapshot) { + const auto object_info = item.second; skip |= log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, get_debug_report_enum[object_type], object_info->handle, error_code, "OBJ ERROR : For %s, %s has not been destroyed.", report_data->FormatHandle(device).c_str(), report_data->FormatHandle(ObjTrackStateTypedHandle(*object_info)).c_str()); @@ -239,25 +241,24 @@ bool ObjectLifetimes::DeviceReportUndestroyedObjects(VkDevice device, VulkanObje } void ObjectLifetimes::DeviceDestroyUndestroyedObjects(VkDevice device, VulkanObjectType object_type) { - while (!object_map[object_type].empty()) { - auto item = object_map[object_type].begin(); - - ObjTrackState *object_info = item->second; + auto snapshot = object_map[object_type].snapshot(); + for (const auto &item : snapshot) { + auto object_info = item.second; DestroyObjectSilently(object_info->handle, object_type); } } bool ObjectLifetimes::PreCallValidateDestroyInstance(VkInstance instance, const VkAllocationCallbacks *pAllocator) { bool skip = false; - auto lock = read_shared_lock(); // We validate here for coverage, though we'd not have made it this for with a bad instance. skip |= ValidateObject(instance, instance, kVulkanObjectTypeInstance, true, "VUID-vkDestroyInstance-instance-parameter", kVUIDUndefined); // Validate that child devices have been destroyed - for (const auto &iit : object_map[kVulkanObjectTypeDevice]) { - ObjTrackState *pNode = iit.second; + auto snapshot = object_map[kVulkanObjectTypeDevice].snapshot(); + for (const auto &iit : snapshot) { + auto pNode = iit.second; VkDevice device = reinterpret_cast<VkDevice>(pNode->handle); VkDebugReportObjectTypeEXT debug_object_type = get_debug_report_enum[pNode->object_type]; @@ -282,7 +283,6 @@ bool ObjectLifetimes::PreCallValidateDestroyInstance(VkInstance instance, const bool ObjectLifetimes::PreCallValidateEnumeratePhysicalDevices(VkInstance instance, uint32_t *pPhysicalDeviceCount, VkPhysicalDevice *pPhysicalDevices) { - auto lock = read_shared_lock(); bool skip = ValidateObject(instance, instance, kVulkanObjectTypeInstance, false, "VUID-vkEnumeratePhysicalDevices-instance-parameter", kVUIDUndefined); return skip; @@ -291,7 +291,6 @@ bool ObjectLifetimes::PreCallValidateEnumeratePhysicalDevices(VkInstance instanc void ObjectLifetimes::PostCallRecordEnumeratePhysicalDevices(VkInstance instance, uint32_t *pPhysicalDeviceCount, VkPhysicalDevice *pPhysicalDevices, VkResult result) { if ((result != VK_SUCCESS) && (result != VK_INCOMPLETE)) return; - auto lock = write_shared_lock(); if (pPhysicalDevices) { for (uint32_t i = 0; i < *pPhysicalDeviceCount; i++) { CreateObject(instance, pPhysicalDevices[i], kVulkanObjectTypePhysicalDevice, nullptr); @@ -300,37 +299,31 @@ void ObjectLifetimes::PostCallRecordEnumeratePhysicalDevices(VkInstance instance } void ObjectLifetimes::PreCallRecordDestroyInstance(VkInstance instance, const VkAllocationCallbacks *pAllocator) { - auto lock = write_shared_lock(); // Destroy physical devices - for (auto iit = object_map[kVulkanObjectTypePhysicalDevice].begin(); - iit != object_map[kVulkanObjectTypePhysicalDevice].end();) { - ObjTrackState *pNode = iit->second; + auto snapshot = object_map[kVulkanObjectTypePhysicalDevice].snapshot(); + for (const auto &iit : snapshot) { + auto pNode = iit.second; VkPhysicalDevice physical_device = reinterpret_cast<VkPhysicalDevice>(pNode->handle); RecordDestroyObject(instance, physical_device, kVulkanObjectTypePhysicalDevice); - iit = object_map[kVulkanObjectTypePhysicalDevice].begin(); } // Destroy child devices - for (auto iit = object_map[kVulkanObjectTypeDevice].begin(); iit != object_map[kVulkanObjectTypeDevice].end();) { - ObjTrackState *pNode = iit->second; + auto snapshot2 = object_map[kVulkanObjectTypeDevice].snapshot(); + for (const auto &iit : snapshot2) { + auto pNode = iit.second; VkDevice device = reinterpret_cast<VkDevice>(pNode->handle); DestroyUndestroyedObjects(device); RecordDestroyObject(instance, device, kVulkanObjectTypeDevice); - iit = object_map[kVulkanObjectTypeDevice].begin(); } - - object_map[kVulkanObjectTypeDevice].clear(); } void ObjectLifetimes::PostCallRecordDestroyInstance(VkInstance instance, const VkAllocationCallbacks *pAllocator) { - auto lock = write_shared_lock(); RecordDestroyObject(instance, instance, kVulkanObjectTypeInstance); } bool ObjectLifetimes::PreCallValidateDestroyDevice(VkDevice device, const VkAllocationCallbacks *pAllocator) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, true, "VUID-vkDestroyDevice-device-parameter", kVUIDUndefined); skip |= ValidateDestroyObject(physical_device, device, kVulkanObjectTypeDevice, pAllocator, "VUID-vkDestroyDevice-device-00379", "VUID-vkDestroyDevice-device-00380"); @@ -341,7 +334,6 @@ bool ObjectLifetimes::PreCallValidateDestroyDevice(VkDevice device, const VkAllo } void ObjectLifetimes::PreCallRecordDestroyDevice(VkDevice device, const VkAllocationCallbacks *pAllocator) { - auto lock = write_shared_lock(); auto instance_data = GetLayerDataPtr(get_dispatch_key(physical_device), layer_data_map); ValidationObject *validation_data = GetValidationObject(instance_data->object_dispatch, LayerObjectTypeObjectTracker); ObjectLifetimes *object_lifetimes = static_cast<ObjectLifetimes *>(validation_data); @@ -355,7 +347,6 @@ void ObjectLifetimes::PreCallRecordDestroyDevice(VkDevice device, const VkAlloca bool ObjectLifetimes::PreCallValidateGetDeviceQueue(VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue *pQueue) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetDeviceQueue-device-parameter", kVUIDUndefined); return skip; @@ -368,7 +359,6 @@ void ObjectLifetimes::PostCallRecordGetDeviceQueue(VkDevice device, uint32_t que } bool ObjectLifetimes::PreCallValidateGetDeviceQueue2(VkDevice device, const VkDeviceQueueInfo2 *pQueueInfo, VkQueue *pQueue) { - auto lock = read_shared_lock(); return ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetDeviceQueue2-device-parameter", kVUIDUndefined); } @@ -383,7 +373,6 @@ bool ObjectLifetimes::PreCallValidateUpdateDescriptorSets(VkDevice device, uint3 uint32_t descriptorCopyCount, const VkCopyDescriptorSet *pDescriptorCopies) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkUpdateDescriptorSets-device-parameter", kVUIDUndefined); if (pDescriptorCopies) { @@ -419,7 +408,7 @@ bool ObjectLifetimes::PreCallValidateResetDescriptorPool(VkDevice device, VkDesc auto itr = object_map[kVulkanObjectTypeDescriptorPool].find(HandleToUint64(descriptorPool)); if (itr != object_map[kVulkanObjectTypeDescriptorPool].end()) { - ObjTrackState *pPoolNode = itr->second; + auto pPoolNode = itr->second; for (auto set : *pPoolNode->child_objects) { skip |= ValidateDestroyObject(device, (VkDescriptorSet)set, kVulkanObjectTypeDescriptorSet, nullptr, kVUIDUndefined, kVUIDUndefined); @@ -435,7 +424,7 @@ void ObjectLifetimes::PreCallRecordResetDescriptorPool(VkDevice device, VkDescri // our descriptorSet map. auto itr = object_map[kVulkanObjectTypeDescriptorPool].find(HandleToUint64(descriptorPool)); if (itr != object_map[kVulkanObjectTypeDescriptorPool].end()) { - ObjTrackState *pPoolNode = itr->second; + auto pPoolNode = itr->second; for (auto set : *pPoolNode->child_objects) { RecordDestroyObject(device, (VkDescriptorSet)set, kVulkanObjectTypeDescriptorSet); } @@ -446,17 +435,21 @@ void ObjectLifetimes::PreCallRecordResetDescriptorPool(VkDevice device, VkDescri bool ObjectLifetimes::PreCallValidateBeginCommandBuffer(VkCommandBuffer command_buffer, const VkCommandBufferBeginInfo *begin_info) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(command_buffer, command_buffer, kVulkanObjectTypeCommandBuffer, false, "VUID-vkBeginCommandBuffer-commandBuffer-parameter", kVUIDUndefined); if (begin_info) { - ObjTrackState *pNode = object_map[kVulkanObjectTypeCommandBuffer][HandleToUint64(command_buffer)]; - if ((begin_info->pInheritanceInfo) && (pNode->status & OBJSTATUS_COMMAND_BUFFER_SECONDARY) && - (begin_info->flags & VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT)) { - skip |= ValidateObject(command_buffer, begin_info->pInheritanceInfo->framebuffer, kVulkanObjectTypeFramebuffer, true, + auto iter = object_map[kVulkanObjectTypeCommandBuffer].find(HandleToUint64(command_buffer)); + if (iter != object_map[kVulkanObjectTypeCommandBuffer].end()) { + auto pNode = iter->second; + if ((begin_info->pInheritanceInfo) && (pNode->status & OBJSTATUS_COMMAND_BUFFER_SECONDARY) && + (begin_info->flags & VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT)) { + skip |= + ValidateObject(command_buffer, begin_info->pInheritanceInfo->framebuffer, kVulkanObjectTypeFramebuffer, true, "VUID-VkCommandBufferBeginInfo-flags-00055", "VUID-VkCommandBufferInheritanceInfo-commonparent"); - skip |= ValidateObject(command_buffer, begin_info->pInheritanceInfo->renderPass, kVulkanObjectTypeRenderPass, false, + skip |= + ValidateObject(command_buffer, begin_info->pInheritanceInfo->renderPass, kVulkanObjectTypeRenderPass, false, "VUID-VkCommandBufferBeginInfo-flags-00053", "VUID-VkCommandBufferInheritanceInfo-commonparent"); + } } } return skip; @@ -465,7 +458,6 @@ bool ObjectLifetimes::PreCallValidateBeginCommandBuffer(VkCommandBuffer command_ bool ObjectLifetimes::PreCallValidateGetSwapchainImagesKHR(VkDevice device, VkSwapchainKHR swapchain, uint32_t *pSwapchainImageCount, VkImage *pSwapchainImages) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetSwapchainImagesKHR-device-parameter", "VUID-vkGetSwapchainImagesKHR-commonparent"); skip |= ValidateObject(device, swapchain, kVulkanObjectTypeSwapchainKHR, false, @@ -488,7 +480,6 @@ bool ObjectLifetimes::PreCallValidateCreateDescriptorSetLayout(VkDevice device, const VkAllocationCallbacks *pAllocator, VkDescriptorSetLayout *pSetLayout) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkCreateDescriptorSetLayout-device-parameter", kVUIDUndefined); if (pCreateInfo) { @@ -514,7 +505,6 @@ void ObjectLifetimes::PostCallRecordCreateDescriptorSetLayout(VkDevice device, c const VkAllocationCallbacks *pAllocator, VkDescriptorSetLayout *pSetLayout, VkResult result) { if (result != VK_SUCCESS) return; - auto lock = write_shared_lock(); CreateObject(device, *pSetLayout, kVulkanObjectTypeDescriptorSetLayout, pAllocator); } @@ -537,7 +527,6 @@ bool ObjectLifetimes::ValidateSamplerObjects(VkDevice device, const VkDescriptor bool ObjectLifetimes::PreCallValidateGetDescriptorSetLayoutSupport(VkDevice device, const VkDescriptorSetLayoutCreateInfo *pCreateInfo, VkDescriptorSetLayoutSupport *pSupport) { - auto lock = read_shared_lock(); bool skip = ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetDescriptorSetLayoutSupport-device-parameter", kVUIDUndefined); if (pCreateInfo) { @@ -548,7 +537,6 @@ bool ObjectLifetimes::PreCallValidateGetDescriptorSetLayoutSupport(VkDevice devi bool ObjectLifetimes::PreCallValidateGetDescriptorSetLayoutSupportKHR(VkDevice device, const VkDescriptorSetLayoutCreateInfo *pCreateInfo, VkDescriptorSetLayoutSupport *pSupport) { - auto lock = read_shared_lock(); bool skip = ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkGetDescriptorSetLayoutSupportKHR-device-parameter", kVUIDUndefined); if (pCreateInfo) { @@ -560,7 +548,6 @@ bool ObjectLifetimes::PreCallValidateGetDescriptorSetLayoutSupportKHR(VkDevice d bool ObjectLifetimes::PreCallValidateGetPhysicalDeviceQueueFamilyProperties(VkPhysicalDevice physicalDevice, uint32_t *pQueueFamilyPropertyCount, VkQueueFamilyProperties *pQueueFamilyProperties) { - auto lock = read_shared_lock(); return ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetPhysicalDeviceQueueFamilyProperties-physicalDevice-parameter", kVUIDUndefined); } @@ -572,14 +559,12 @@ void ObjectLifetimes::PostCallRecordGetPhysicalDeviceQueueFamilyProperties(VkPhy void ObjectLifetimes::PostCallRecordCreateInstance(const VkInstanceCreateInfo *pCreateInfo, const VkAllocationCallbacks *pAllocator, VkInstance *pInstance, VkResult result) { if (result != VK_SUCCESS) return; - auto lock = write_shared_lock(); CreateObject(*pInstance, *pInstance, kVulkanObjectTypeInstance, pAllocator); } bool ObjectLifetimes::PreCallValidateAllocateCommandBuffers(VkDevice device, const VkCommandBufferAllocateInfo *pAllocateInfo, VkCommandBuffer *pCommandBuffers) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkAllocateCommandBuffers-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, pAllocateInfo->commandPool, kVulkanObjectTypeCommandPool, false, @@ -590,7 +575,6 @@ bool ObjectLifetimes::PreCallValidateAllocateCommandBuffers(VkDevice device, con void ObjectLifetimes::PostCallRecordAllocateCommandBuffers(VkDevice device, const VkCommandBufferAllocateInfo *pAllocateInfo, VkCommandBuffer *pCommandBuffers, VkResult result) { if (result != VK_SUCCESS) return; - auto lock = write_shared_lock(); for (uint32_t i = 0; i < pAllocateInfo->commandBufferCount; i++) { AllocateCommandBuffer(device, pAllocateInfo->commandPool, pCommandBuffers[i], pAllocateInfo->level); } @@ -625,7 +609,6 @@ void ObjectLifetimes::PostCallRecordAllocateDescriptorSets(VkDevice device, cons bool ObjectLifetimes::PreCallValidateFreeCommandBuffers(VkDevice device, VkCommandPool commandPool, uint32_t commandBufferCount, const VkCommandBuffer *pCommandBuffers) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkFreeCommandBuffers-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, commandPool, kVulkanObjectTypeCommandPool, false, @@ -642,7 +625,6 @@ bool ObjectLifetimes::PreCallValidateFreeCommandBuffers(VkDevice device, VkComma void ObjectLifetimes::PreCallRecordFreeCommandBuffers(VkDevice device, VkCommandPool commandPool, uint32_t commandBufferCount, const VkCommandBuffer *pCommandBuffers) { - auto lock = write_shared_lock(); for (uint32_t i = 0; i < commandBufferCount; i++) { RecordDestroyObject(device, pCommandBuffers[i], kVulkanObjectTypeCommandBuffer); } @@ -650,25 +632,18 @@ void ObjectLifetimes::PreCallRecordFreeCommandBuffers(VkDevice device, VkCommand bool ObjectLifetimes::PreCallValidateDestroySwapchainKHR(VkDevice device, VkSwapchainKHR swapchain, const VkAllocationCallbacks *pAllocator) { - auto lock = read_shared_lock(); return ValidateDestroyObject(device, swapchain, kVulkanObjectTypeSwapchainKHR, pAllocator, "VUID-vkDestroySwapchainKHR-swapchain-01283", "VUID-vkDestroySwapchainKHR-swapchain-01284"); } void ObjectLifetimes::PreCallRecordDestroySwapchainKHR(VkDevice device, VkSwapchainKHR swapchain, const VkAllocationCallbacks *pAllocator) { - auto lock = write_shared_lock(); RecordDestroyObject(device, swapchain, kVulkanObjectTypeSwapchainKHR); - std::unordered_map<uint64_t, ObjTrackState *>::iterator itr = swapchainImageMap.begin(); - while (itr != swapchainImageMap.end()) { - ObjTrackState *pNode = (*itr).second; - if (pNode->parent_object == HandleToUint64(swapchain)) { - delete pNode; - auto delete_item = itr++; - swapchainImageMap.erase(delete_item); - } else { - ++itr; - } + + auto snapshot = swapchainImageMap.snapshot( + [swapchain](std::shared_ptr<ObjTrackState> pNode) { return pNode->parent_object == HandleToUint64(swapchain); }); + for (const auto &itr : snapshot) { + swapchainImageMap.erase(itr.first); } } @@ -692,7 +667,7 @@ bool ObjectLifetimes::PreCallValidateFreeDescriptorSets(VkDevice device, VkDescr void ObjectLifetimes::PreCallRecordFreeDescriptorSets(VkDevice device, VkDescriptorPool descriptorPool, uint32_t descriptorSetCount, const VkDescriptorSet *pDescriptorSets) { auto lock = write_shared_lock(); - ObjTrackState *pPoolNode = nullptr; + std::shared_ptr<ObjTrackState> pPoolNode = nullptr; auto itr = object_map[kVulkanObjectTypeDescriptorPool].find(HandleToUint64(descriptorPool)); if (itr != object_map[kVulkanObjectTypeDescriptorPool].end()) { pPoolNode = itr->second; @@ -717,7 +692,7 @@ bool ObjectLifetimes::PreCallValidateDestroyDescriptorPool(VkDevice device, VkDe auto itr = object_map[kVulkanObjectTypeDescriptorPool].find(HandleToUint64(descriptorPool)); if (itr != object_map[kVulkanObjectTypeDescriptorPool].end()) { - ObjTrackState *pPoolNode = itr->second; + auto pPoolNode = itr->second; for (auto set : *pPoolNode->child_objects) { skip |= ValidateDestroyObject(device, (VkDescriptorSet)set, kVulkanObjectTypeDescriptorSet, nullptr, kVUIDUndefined, kVUIDUndefined); @@ -733,7 +708,7 @@ void ObjectLifetimes::PreCallRecordDestroyDescriptorPool(VkDevice device, VkDesc auto lock = write_shared_lock(); auto itr = object_map[kVulkanObjectTypeDescriptorPool].find(HandleToUint64(descriptorPool)); if (itr != object_map[kVulkanObjectTypeDescriptorPool].end()) { - ObjTrackState *pPoolNode = itr->second; + auto pPoolNode = itr->second; for (auto set : *pPoolNode->child_objects) { RecordDestroyObject(device, (VkDescriptorSet)set, kVulkanObjectTypeDescriptorSet); } @@ -744,22 +719,19 @@ void ObjectLifetimes::PreCallRecordDestroyDescriptorPool(VkDevice device, VkDesc bool ObjectLifetimes::PreCallValidateDestroyCommandPool(VkDevice device, VkCommandPool commandPool, const VkAllocationCallbacks *pAllocator) { - auto lock = read_shared_lock(); bool skip = false; skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkDestroyCommandPool-device-parameter", kVUIDUndefined); skip |= ValidateObject(device, commandPool, kVulkanObjectTypeCommandPool, true, "VUID-vkDestroyCommandPool-commandPool-parameter", "VUID-vkDestroyCommandPool-commandPool-parent"); - auto itr = object_map[kVulkanObjectTypeCommandBuffer].begin(); - auto del_itr = itr; - while (itr != object_map[kVulkanObjectTypeCommandBuffer].end()) { - ObjTrackState *pNode = (*itr).second; - del_itr = itr++; - if (pNode->parent_object == HandleToUint64(commandPool)) { - skip |= ValidateCommandBuffer(device, commandPool, reinterpret_cast<VkCommandBuffer>((*del_itr).first)); - skip |= ValidateDestroyObject(device, reinterpret_cast<VkCommandBuffer>((*del_itr).first), - kVulkanObjectTypeCommandBuffer, nullptr, kVUIDUndefined, kVUIDUndefined); - } + + auto snapshot = object_map[kVulkanObjectTypeCommandBuffer].snapshot( + [commandPool](std::shared_ptr<ObjTrackState> pNode) { return pNode->parent_object == HandleToUint64(commandPool); }); + for (const auto &itr : snapshot) { + auto pNode = itr.second; + skip |= ValidateCommandBuffer(device, commandPool, reinterpret_cast<VkCommandBuffer>(itr.first)); + skip |= ValidateDestroyObject(device, reinterpret_cast<VkCommandBuffer>(itr.first), kVulkanObjectTypeCommandBuffer, nullptr, + kVUIDUndefined, kVUIDUndefined); } skip |= ValidateDestroyObject(device, commandPool, kVulkanObjectTypeCommandPool, pAllocator, "VUID-vkDestroyCommandPool-commandPool-00042", "VUID-vkDestroyCommandPool-commandPool-00043"); @@ -768,16 +740,11 @@ bool ObjectLifetimes::PreCallValidateDestroyCommandPool(VkDevice device, VkComma void ObjectLifetimes::PreCallRecordDestroyCommandPool(VkDevice device, VkCommandPool commandPool, const VkAllocationCallbacks *pAllocator) { - auto lock = write_shared_lock(); - auto itr = object_map[kVulkanObjectTypeCommandBuffer].begin(); - auto del_itr = itr; + auto snapshot = object_map[kVulkanObjectTypeCommandBuffer].snapshot( + [commandPool](std::shared_ptr<ObjTrackState> pNode) { return pNode->parent_object == HandleToUint64(commandPool); }); // A CommandPool's cmd buffers are implicitly deleted when pool is deleted. Remove this pool's cmdBuffers from cmd buffer map. - while (itr != object_map[kVulkanObjectTypeCommandBuffer].end()) { - ObjTrackState *pNode = (*itr).second; - del_itr = itr++; - if (pNode->parent_object == HandleToUint64(commandPool)) { - RecordDestroyObject(device, reinterpret_cast<VkCommandBuffer>((*del_itr).first), kVulkanObjectTypeCommandBuffer); - } + for (const auto &itr : snapshot) { + RecordDestroyObject(device, reinterpret_cast<VkCommandBuffer>(itr.first), kVulkanObjectTypeCommandBuffer); } RecordDestroyObject(device, commandPool, kVulkanObjectTypeCommandPool); } @@ -785,7 +752,6 @@ void ObjectLifetimes::PreCallRecordDestroyCommandPool(VkDevice device, VkCommand bool ObjectLifetimes::PreCallValidateGetPhysicalDeviceQueueFamilyProperties2(VkPhysicalDevice physicalDevice, uint32_t *pQueueFamilyPropertyCount, VkQueueFamilyProperties2KHR *pQueueFamilyProperties) { - auto lock = read_shared_lock(); return ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetPhysicalDeviceQueueFamilyProperties2-physicalDevice-parameter", kVUIDUndefined); } @@ -793,7 +759,6 @@ bool ObjectLifetimes::PreCallValidateGetPhysicalDeviceQueueFamilyProperties2(VkP bool ObjectLifetimes::PreCallValidateGetPhysicalDeviceQueueFamilyProperties2KHR(VkPhysicalDevice physicalDevice, uint32_t *pQueueFamilyPropertyCount, VkQueueFamilyProperties2 *pQueueFamilyProperties) { - auto lock = read_shared_lock(); return ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetPhysicalDeviceQueueFamilyProperties2-physicalDevice-parameter", kVUIDUndefined); } @@ -808,7 +773,6 @@ void ObjectLifetimes::PostCallRecordGetPhysicalDeviceQueueFamilyProperties2KHR( bool ObjectLifetimes::PreCallValidateGetPhysicalDeviceDisplayPropertiesKHR(VkPhysicalDevice physicalDevice, uint32_t *pPropertyCount, VkDisplayPropertiesKHR *pProperties) { - auto lock = read_shared_lock(); return ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetPhysicalDeviceDisplayPropertiesKHR-physicalDevice-parameter", kVUIDUndefined); } @@ -816,7 +780,6 @@ bool ObjectLifetimes::PreCallValidateGetPhysicalDeviceDisplayPropertiesKHR(VkPhy void ObjectLifetimes::PostCallRecordGetPhysicalDeviceDisplayPropertiesKHR(VkPhysicalDevice physicalDevice, uint32_t *pPropertyCount, VkDisplayPropertiesKHR *pProperties, VkResult result) { if ((result != VK_SUCCESS) && (result != VK_INCOMPLETE)) return; - auto lock = write_shared_lock(); if (pProperties) { for (uint32_t i = 0; i < *pPropertyCount; ++i) { CreateObject(physicalDevice, pProperties[i].display, kVulkanObjectTypeDisplayKHR, nullptr); @@ -828,7 +791,6 @@ bool ObjectLifetimes::PreCallValidateGetDisplayModePropertiesKHR(VkPhysicalDevic uint32_t *pPropertyCount, VkDisplayModePropertiesKHR *pProperties) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetDisplayModePropertiesKHR-physicalDevice-parameter", kVUIDUndefined); skip |= ValidateObject(physicalDevice, display, kVulkanObjectTypeDisplayKHR, false, @@ -841,7 +803,6 @@ void ObjectLifetimes::PostCallRecordGetDisplayModePropertiesKHR(VkPhysicalDevice uint32_t *pPropertyCount, VkDisplayModePropertiesKHR *pProperties, VkResult result) { if ((result != VK_SUCCESS) && (result != VK_INCOMPLETE)) return; - auto lock = write_shared_lock(); if (pProperties) { for (uint32_t i = 0; i < *pPropertyCount; ++i) { CreateObject(physicalDevice, pProperties[i].displayMode, kVulkanObjectTypeDisplayModeKHR, nullptr); @@ -852,7 +813,6 @@ void ObjectLifetimes::PostCallRecordGetDisplayModePropertiesKHR(VkPhysicalDevice bool ObjectLifetimes::PreCallValidateGetPhysicalDeviceDisplayProperties2KHR(VkPhysicalDevice physicalDevice, uint32_t *pPropertyCount, VkDisplayProperties2KHR *pProperties) { - auto lock = read_shared_lock(); return ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetPhysicalDeviceDisplayProperties2KHR-physicalDevice-parameter", kVUIDUndefined); } @@ -861,7 +821,6 @@ void ObjectLifetimes::PostCallRecordGetPhysicalDeviceDisplayProperties2KHR(VkPhy uint32_t *pPropertyCount, VkDisplayProperties2KHR *pProperties, VkResult result) { if ((result != VK_SUCCESS) && (result != VK_INCOMPLETE)) return; - auto lock = write_shared_lock(); for (uint32_t index = 0; index < *pPropertyCount; ++index) { CreateObject(physicalDevice, pProperties[index].displayProperties.display, kVulkanObjectTypeDisplayKHR, nullptr); } @@ -871,7 +830,6 @@ bool ObjectLifetimes::PreCallValidateGetDisplayModeProperties2KHR(VkPhysicalDevi uint32_t *pPropertyCount, VkDisplayModeProperties2KHR *pProperties) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(physicalDevice, physicalDevice, kVulkanObjectTypePhysicalDevice, false, "VUID-vkGetDisplayModeProperties2KHR-physicalDevice-parameter", kVUIDUndefined); skip |= ValidateObject(physicalDevice, display, kVulkanObjectTypeDisplayKHR, false, @@ -884,7 +842,6 @@ void ObjectLifetimes::PostCallRecordGetDisplayModeProperties2KHR(VkPhysicalDevic uint32_t *pPropertyCount, VkDisplayModeProperties2KHR *pProperties, VkResult result) { if ((result != VK_SUCCESS) && (result != VK_INCOMPLETE)) return; - auto lock = write_shared_lock(); for (uint32_t index = 0; index < *pPropertyCount; ++index) { CreateObject(physicalDevice, pProperties[index].displayModeProperties.displayMode, kVulkanObjectTypeDisplayModeKHR, nullptr); @@ -895,7 +852,6 @@ bool ObjectLifetimes::PreCallValidateAcquirePerformanceConfigurationINTEL( VkDevice device, const VkPerformanceConfigurationAcquireInfoINTEL *pAcquireInfo, VkPerformanceConfigurationINTEL *pConfiguration) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkAcquirePerformanceConfigurationINTEL-device-parameter", kVUIDUndefined); @@ -905,7 +861,6 @@ bool ObjectLifetimes::PreCallValidateAcquirePerformanceConfigurationINTEL( bool ObjectLifetimes::PreCallValidateReleasePerformanceConfigurationINTEL(VkDevice device, VkPerformanceConfigurationINTEL configuration) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkReleasePerformanceConfigurationINTEL-device-parameter", kVUIDUndefined); @@ -915,7 +870,6 @@ bool ObjectLifetimes::PreCallValidateReleasePerformanceConfigurationINTEL(VkDevi bool ObjectLifetimes::PreCallValidateQueueSetPerformanceConfigurationINTEL(VkQueue queue, VkPerformanceConfigurationINTEL configuration) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(queue, queue, kVulkanObjectTypeQueue, false, "VUID-vkQueueSetPerformanceConfigurationINTEL-queue-parameter", "VUID-vkQueueSetPerformanceConfigurationINTEL-commonparent"); @@ -926,7 +880,6 @@ bool ObjectLifetimes::PreCallValidateQueueSetPerformanceConfigurationINTEL(VkQue bool ObjectLifetimes::PreCallValidateCreateFramebuffer(VkDevice device, const VkFramebufferCreateInfo *pCreateInfo, const VkAllocationCallbacks *pAllocator, VkFramebuffer *pFramebuffer) { bool skip = false; - auto lock = read_shared_lock(); skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkCreateFramebuffer-device-parameter", kVUIDUndefined); if (pCreateInfo) { @@ -947,6 +900,5 @@ void ObjectLifetimes::PostCallRecordCreateFramebuffer(VkDevice device, const VkF const VkAllocationCallbacks *pAllocator, VkFramebuffer *pFramebuffer, VkResult result) { if (result != VK_SUCCESS) return; - auto lock = write_shared_lock(); CreateObject(device, *pFramebuffer, kVulkanObjectTypeFramebuffer, pAllocator); } diff --git a/layers/vk_layer_utils.h b/layers/vk_layer_utils.h index 9b1bccec4..7bb89739c 100644 --- a/layers/vk_layer_utils.h +++ b/layers/vk_layer_utils.h @@ -171,7 +171,9 @@ static inline int u_ffs(int val) { // operations are supported: // // insert_or_assign: Insert a new element or update an existing element. +// insert: Insert a new element and return whether it was inserted. // erase: Remove an element. +// contains: Returns true if the key is in the map. // find: Returns != end() if found, value is in ret->second. // pop: Erases and returns the erased value if found. // @@ -184,6 +186,9 @@ static inline int u_ffs(int val) { // if (iter != map.end()) { // T t = iter->second; // ... +// +// snapshot: Return an array of elements (key, value pairs) that satisfy an optional +// predicate. This can be used as a substitute for iterators in exceptional cases. template <typename Key, typename T, int BUCKETSLOG2 = 2> class vl_concurrent_unordered_map { public: @@ -193,6 +198,13 @@ class vl_concurrent_unordered_map { maps[h][key] = value; } + bool insert(const Key &key, const T &value) { + uint32_t h = ConcurrentMapHashObject(key); + write_lock_guard_t lock(locks[h].lock); + auto ret = maps[h].insert(typename std::unordered_map<Key, T>::value_type(key, value)); + return ret.second; + } + // returns size_type size_t erase(const Key &key) { uint32_t h = ConcurrentMapHashObject(key); @@ -200,10 +212,16 @@ class vl_concurrent_unordered_map { return maps[h].erase(key); } + bool contains(const Key &key) { + uint32_t h = ConcurrentMapHashObject(key); + read_lock_guard_t lock(locks[h].lock); + return maps[h].count(key) != 0; + } + // type returned by find() and end(). class FindResult { public: - FindResult(bool a, T b) : result(a, b) {} + FindResult(bool a, T b) : result(a, std::move(b)) {} // == and != only support comparing against end() bool operator==(const FindResult &other) const { @@ -223,10 +241,9 @@ class vl_concurrent_unordered_map { std::pair<bool, T> result; }; - // find()/end() return a FindResult containing a reference. For end(), that - // reference is to this dummy member. - T dummy; - FindResult end() { return FindResult(false, dummy); } + // find()/end() return a FindResult containing a copy of the value. For end(), + // return a default value. + FindResult end() { return FindResult(false, T()); } FindResult find(const Key &key) { uint32_t h = ConcurrentMapHashObject(key); @@ -235,7 +252,11 @@ class vl_concurrent_unordered_map { auto itr = maps[h].find(key); bool found = itr != maps[h].end(); - return found ? FindResult(true, itr->second) : end(); + if (found) { + return FindResult(true, itr->second); + } else { + return end(); + } } FindResult pop(const Key &key) { @@ -246,7 +267,7 @@ class vl_concurrent_unordered_map { bool found = itr != maps[h].end(); if (found) { - auto ret = FindResult(true, itr->second); + auto ret = std::move(FindResult(true, itr->second)); maps[h].erase(itr); return ret; } else { @@ -254,6 +275,19 @@ class vl_concurrent_unordered_map { } } + std::vector<std::pair<const Key, T>> snapshot(std::function<bool(T)> f = nullptr) { + std::vector<std::pair<const Key, T>> ret; + for (int h = 0; h < BUCKETS; ++h) { + read_lock_guard_t lock(locks[h].lock); + for (auto j : maps[h]) { + if (!f || f(j.second)) { + ret.push_back(j); + } + } + } + return ret; + } + private: static const int BUCKETS = (1 << BUCKETSLOG2); // shared_mutex support added in MSVC 2015 update 2 diff --git a/scripts/object_tracker_generator.py b/scripts/object_tracker_generator.py index 0f1045cd6..ffb6a9df9 100644 --- a/scripts/object_tracker_generator.py +++ b/scripts/object_tracker_generator.py @@ -963,7 +963,6 @@ class ObjectTrackerOutputGenerator(OutputGenerator): self.appendSection('command', '') self.appendSection('command', pre_cv_func_decl) self.appendSection('command', ' bool skip = false;') - self.appendSection('command', ' auto lock = read_shared_lock();') self.appendSection('command', pre_call_validate) self.appendSection('command', ' return skip;') self.appendSection('command', '}') @@ -973,7 +972,6 @@ class ObjectTrackerOutputGenerator(OutputGenerator): pre_cr_func_decl = 'void ObjectLifetimes::PreCallRecord' + func_decl_template + ' {' self.appendSection('command', '') self.appendSection('command', pre_cr_func_decl) - self.appendSection('command', ' auto lock = write_shared_lock();') self.appendSection('command', pre_call_record) self.appendSection('command', '}') @@ -988,7 +986,6 @@ class ObjectTrackerOutputGenerator(OutputGenerator): if 'CreateGraphicsPipelines' not in cmdname and 'CreateComputePipelines' not in cmdname and 'CreateRayTracingPipelines' not in cmdname: post_cr_func_decl = post_cr_func_decl.replace('{', '{\n if (result != VK_SUCCESS) return;') self.appendSection('command', post_cr_func_decl) - self.appendSection('command', ' auto lock = write_shared_lock();') self.appendSection('command', post_call_record) self.appendSection('command', '}') |