// *** 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
WRAPPER(VkBuffer)
WRAPPER(VkImage)
WRAPPER(VkSemaphore)
WRAPPER(VkFence)
WRAPPER(VkDeviceMemory)
WRAPPER(VkEvent)
WRAPPER(VkQueryPool)
WRAPPER(VkBufferView)
WRAPPER(VkImageView)
WRAPPER(VkShaderModule)
WRAPPER(VkPipelineCache)
WRAPPER(VkPipelineLayout)
WRAPPER(VkPipeline)
WRAPPER(VkRenderPass)
WRAPPER(VkDescriptorSetLayout)
WRAPPER(VkSampler)
WRAPPER(VkDescriptorSet)
WRAPPER(VkDescriptorPool)
WRAPPER(VkFramebuffer)
WRAPPER(VkCommandPool)
WRAPPER(VkSamplerYcbcrConversion)
WRAPPER(VkDescriptorUpdateTemplate)
WRAPPER(VkPrivateDataSlot)
WRAPPER_PARENT_INSTANCE(VkSurfaceKHR)
WRAPPER(VkSwapchainKHR)
WRAPPER_PARENT_INSTANCE(VkDisplayKHR)
WRAPPER(VkDisplayModeKHR)
WRAPPER(VkVideoSessionKHR)
WRAPPER(VkVideoSessionParametersKHR)
WRAPPER(VkDeferredOperationKHR)
WRAPPER_PARENT_INSTANCE(VkDebugReportCallbackEXT)
WRAPPER(VkCuModuleNVX)
WRAPPER(VkCuFunctionNVX)
WRAPPER_PARENT_INSTANCE(VkDebugUtilsMessengerEXT)
WRAPPER(VkValidationCacheEXT)
WRAPPER(VkAccelerationStructureNV)
WRAPPER(VkPerformanceConfigurationINTEL)
WRAPPER(VkIndirectCommandsLayoutNV)
WRAPPER(VkAccelerationStructureKHR)
#ifdef VK_USE_PLATFORM_FUCHSIA
WRAPPER(VkBufferCollectionFUCHSIA)
#endif // VK_USE_PLATFORM_FUCHSIA
WRAPPER(VkMicromapEXT)
WRAPPER(VkOpticalFlowSessionNV)
WRAPPER(VkShaderEXT)
// clang-format on

// NOLINTEND
