/* WARNING: This is auto-generated file. Do not modify, since changes will
 * be lost! Modify the generating script instead.
 */
enum HandleType
{
	HANDLE_TYPE_BUFFER								= 0,
	HANDLE_TYPE_IMAGE,
	HANDLE_TYPE_INSTANCE,
	HANDLE_TYPE_PHYSICAL_DEVICE,
	HANDLE_TYPE_DEVICE,
	HANDLE_TYPE_QUEUE,
	HANDLE_TYPE_SEMAPHORE,
	HANDLE_TYPE_COMMAND_BUFFER,
	HANDLE_TYPE_FENCE,
	HANDLE_TYPE_DEVICE_MEMORY,
	HANDLE_TYPE_EVENT,
	HANDLE_TYPE_QUERY_POOL,
	HANDLE_TYPE_BUFFER_VIEW,
	HANDLE_TYPE_IMAGE_VIEW,
	HANDLE_TYPE_SHADER_MODULE,
	HANDLE_TYPE_PIPELINE_CACHE,
	HANDLE_TYPE_PIPELINE_LAYOUT,
	HANDLE_TYPE_PIPELINE,
	HANDLE_TYPE_RENDER_PASS,
	HANDLE_TYPE_DESCRIPTOR_SET_LAYOUT,
	HANDLE_TYPE_SAMPLER,
	HANDLE_TYPE_DESCRIPTOR_SET,
	HANDLE_TYPE_DESCRIPTOR_POOL,
	HANDLE_TYPE_FRAMEBUFFER,
	HANDLE_TYPE_COMMAND_POOL,
	HANDLE_TYPE_SAMPLER_YCBCR_CONVERSION,
	HANDLE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE,
	HANDLE_TYPE_SURFACE_KHR,
	HANDLE_TYPE_SWAPCHAIN_KHR,
	HANDLE_TYPE_DISPLAY_KHR,
	HANDLE_TYPE_DISPLAY_MODE_KHR,
	HANDLE_TYPE_DEBUG_REPORT_CALLBACK_EXT,
	HANDLE_TYPE_DEBUG_UTILS_MESSENGER_EXT,
	HANDLE_TYPE_VALIDATION_CACHE_EXT,
	HANDLE_TYPE_ACCELERATION_STRUCTURE_KHR,
	HANDLE_TYPE_PERFORMANCE_CONFIGURATION_INTEL,
	HANDLE_TYPE_INDIRECT_COMMANDS_LAYOUT_NV,
	HANDLE_TYPE_PRIVATE_DATA_SLOT_EXT,
	HANDLE_TYPE_DEFERRED_OPERATION_KHR,
	HANDLE_TYPE_ACCELERATION_STRUCTURE_NV,
	HANDLE_TYPE_SAMPLER_YCBCR_CONVERSION_KHR		= HANDLE_TYPE_SAMPLER_YCBCR_CONVERSION,
	HANDLE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR		= HANDLE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE,
	HANDLE_TYPE_LAST								= HANDLE_TYPE_ACCELERATION_STRUCTURE_NV + 1
};

