/* 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_DEFERRED_OPERATION_KHR,
	HANDLE_TYPE_DEBUG_REPORT_CALLBACK_EXT,
	HANDLE_TYPE_CU_MODULE_NVX,
	HANDLE_TYPE_CU_FUNCTION_NVX,
	HANDLE_TYPE_DEBUG_UTILS_MESSENGER_EXT,
	HANDLE_TYPE_VALIDATION_CACHE_EXT,
	HANDLE_TYPE_ACCELERATION_STRUCTURE_NV,
	HANDLE_TYPE_PERFORMANCE_CONFIGURATION_INTEL,
	HANDLE_TYPE_INDIRECT_COMMANDS_LAYOUT_NV,
	HANDLE_TYPE_PRIVATE_DATA_SLOT_EXT,
	HANDLE_TYPE_ACCELERATION_STRUCTURE_KHR,
	HANDLE_TYPE_VIDEO_SESSION_KHR,
	HANDLE_TYPE_VIDEO_SESSION_PARAMETERS_KHR,
	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_VIDEO_SESSION_PARAMETERS_KHR + 1
};

