// *** 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
counter<VkBuffer> c_VkBuffer;
counter<VkImage> c_VkImage;
counter<VkSemaphore> c_VkSemaphore;
counter<VkFence> c_VkFence;
counter<VkDeviceMemory> c_VkDeviceMemory;
counter<VkEvent> c_VkEvent;
counter<VkQueryPool> c_VkQueryPool;
counter<VkBufferView> c_VkBufferView;
counter<VkImageView> c_VkImageView;
counter<VkShaderModule> c_VkShaderModule;
counter<VkPipelineCache> c_VkPipelineCache;
counter<VkPipelineLayout> c_VkPipelineLayout;
counter<VkPipeline> c_VkPipeline;
counter<VkRenderPass> c_VkRenderPass;
counter<VkDescriptorSetLayout> c_VkDescriptorSetLayout;
counter<VkSampler> c_VkSampler;
counter<VkDescriptorSet> c_VkDescriptorSet;
counter<VkDescriptorPool> c_VkDescriptorPool;
counter<VkFramebuffer> c_VkFramebuffer;
counter<VkCommandPool> c_VkCommandPool;
counter<VkSamplerYcbcrConversion> c_VkSamplerYcbcrConversion;
counter<VkDescriptorUpdateTemplate> c_VkDescriptorUpdateTemplate;
counter<VkPrivateDataSlot> c_VkPrivateDataSlot;
counter<VkSurfaceKHR> c_VkSurfaceKHR;
counter<VkSwapchainKHR> c_VkSwapchainKHR;
counter<VkDisplayKHR> c_VkDisplayKHR;
counter<VkDisplayModeKHR> c_VkDisplayModeKHR;
counter<VkVideoSessionKHR> c_VkVideoSessionKHR;
counter<VkVideoSessionParametersKHR> c_VkVideoSessionParametersKHR;
counter<VkDeferredOperationKHR> c_VkDeferredOperationKHR;
counter<VkDebugReportCallbackEXT> c_VkDebugReportCallbackEXT;
counter<VkCuModuleNVX> c_VkCuModuleNVX;
counter<VkCuFunctionNVX> c_VkCuFunctionNVX;
counter<VkDebugUtilsMessengerEXT> c_VkDebugUtilsMessengerEXT;
counter<VkValidationCacheEXT> c_VkValidationCacheEXT;
counter<VkAccelerationStructureNV> c_VkAccelerationStructureNV;
counter<VkPerformanceConfigurationINTEL> c_VkPerformanceConfigurationINTEL;
counter<VkIndirectCommandsLayoutNV> c_VkIndirectCommandsLayoutNV;
counter<VkAccelerationStructureKHR> c_VkAccelerationStructureKHR;
#ifdef VK_USE_PLATFORM_FUCHSIA
counter<VkBufferCollectionFUCHSIA> c_VkBufferCollectionFUCHSIA;
#endif // VK_USE_PLATFORM_FUCHSIA
counter<VkMicromapEXT> c_VkMicromapEXT;
counter<VkOpticalFlowSessionNV> c_VkOpticalFlowSessionNV;
counter<VkShaderEXT> c_VkShaderEXT;
// clang-format on

// NOLINTEND
