// *** THIS FILE IS GENERATED - DO NOT EDIT ***
// See thread_safety_generator.py for modifications

/***************************************************************************
 *
 * Copyright (c) 2015-2023 The Khronos Group Inc.
 * Copyright (c) 2015-2023 Valve Corporation
 * Copyright (c) 2015-2023 LunarG, Inc.
 * Copyright (c) 2015-2023 Google Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 ****************************************************************************/

// NOLINTBEGIN
// clang-format off
c_VkBuffer(kVulkanObjectTypeBuffer, this),
c_VkImage(kVulkanObjectTypeImage, this),
c_VkSemaphore(kVulkanObjectTypeSemaphore, this),
c_VkFence(kVulkanObjectTypeFence, this),
c_VkDeviceMemory(kVulkanObjectTypeDeviceMemory, this),
c_VkEvent(kVulkanObjectTypeEvent, this),
c_VkQueryPool(kVulkanObjectTypeQueryPool, this),
c_VkBufferView(kVulkanObjectTypeBufferView, this),
c_VkImageView(kVulkanObjectTypeImageView, this),
c_VkShaderModule(kVulkanObjectTypeShaderModule, this),
c_VkPipelineCache(kVulkanObjectTypePipelineCache, this),
c_VkPipelineLayout(kVulkanObjectTypePipelineLayout, this),
c_VkPipeline(kVulkanObjectTypePipeline, this),
c_VkRenderPass(kVulkanObjectTypeRenderPass, this),
c_VkDescriptorSetLayout(kVulkanObjectTypeDescriptorSetLayout, this),
c_VkSampler(kVulkanObjectTypeSampler, this),
c_VkDescriptorSet(kVulkanObjectTypeDescriptorSet, this),
c_VkDescriptorPool(kVulkanObjectTypeDescriptorPool, this),
c_VkFramebuffer(kVulkanObjectTypeFramebuffer, this),
c_VkCommandPool(kVulkanObjectTypeCommandPool, this),
c_VkSamplerYcbcrConversion(kVulkanObjectTypeSamplerYcbcrConversion, this),
c_VkDescriptorUpdateTemplate(kVulkanObjectTypeDescriptorUpdateTemplate, this),
c_VkPrivateDataSlot(kVulkanObjectTypePrivateDataSlot, this),
c_VkSurfaceKHR(kVulkanObjectTypeSurfaceKHR, this),
c_VkSwapchainKHR(kVulkanObjectTypeSwapchainKHR, this),
c_VkDisplayKHR(kVulkanObjectTypeDisplayKHR, this),
c_VkDisplayModeKHR(kVulkanObjectTypeDisplayModeKHR, this),
c_VkVideoSessionKHR(kVulkanObjectTypeVideoSessionKHR, this),
c_VkVideoSessionParametersKHR(kVulkanObjectTypeVideoSessionParametersKHR, this),
c_VkDeferredOperationKHR(kVulkanObjectTypeDeferredOperationKHR, this),
c_VkDebugReportCallbackEXT(kVulkanObjectTypeDebugReportCallbackEXT, this),
c_VkCuModuleNVX(kVulkanObjectTypeCuModuleNVX, this),
c_VkCuFunctionNVX(kVulkanObjectTypeCuFunctionNVX, this),
c_VkDebugUtilsMessengerEXT(kVulkanObjectTypeDebugUtilsMessengerEXT, this),
c_VkValidationCacheEXT(kVulkanObjectTypeValidationCacheEXT, this),
c_VkAccelerationStructureNV(kVulkanObjectTypeAccelerationStructureNV, this),
c_VkPerformanceConfigurationINTEL(kVulkanObjectTypePerformanceConfigurationINTEL, this),
c_VkIndirectCommandsLayoutNV(kVulkanObjectTypeIndirectCommandsLayoutNV, this),
c_VkAccelerationStructureKHR(kVulkanObjectTypeAccelerationStructureKHR, this),
#ifdef VK_USE_PLATFORM_FUCHSIA
c_VkBufferCollectionFUCHSIA(kVulkanObjectTypeBufferCollectionFUCHSIA, this),
#endif // VK_USE_PLATFORM_FUCHSIA
c_VkMicromapEXT(kVulkanObjectTypeMicromapEXT, this),
c_VkOpticalFlowSessionNV(kVulkanObjectTypeOpticalFlowSessionNV, this),
c_VkShaderEXT(kVulkanObjectTypeShaderEXT, this),
    // clang-format on

    // NOLINTEND
