/* WARNING: This is auto-generated file. Do not modify, since changes will
 * be lost! Modify the generating script instead.
 * This file was generated by /scripts/gen_framework.py
 */
static const struct
{
	std::string driver;
	uint32_t id;
} driverIds [] =
{
	{"VK_DRIVER_ID_AMD_PROPRIETARY", 1},
	{"VK_DRIVER_ID_AMD_OPEN_SOURCE", 2},
	{"VK_DRIVER_ID_MESA_RADV", 3},
	{"VK_DRIVER_ID_NVIDIA_PROPRIETARY", 4},
	{"VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS", 5},
	{"VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA", 6},
	{"VK_DRIVER_ID_IMAGINATION_PROPRIETARY", 7},
	{"VK_DRIVER_ID_QUALCOMM_PROPRIETARY", 8},
	{"VK_DRIVER_ID_ARM_PROPRIETARY", 9},
	{"VK_DRIVER_ID_GOOGLE_SWIFTSHADER", 10},
	{"VK_DRIVER_ID_GGP_PROPRIETARY", 11},
	{"VK_DRIVER_ID_BROADCOM_PROPRIETARY", 12},
	{"VK_DRIVER_ID_MESA_LLVMPIPE", 13},
	{"VK_DRIVER_ID_MOLTENVK", 14},
	{"VK_DRIVER_ID_COREAVI_PROPRIETARY", 15},
	{"VK_DRIVER_ID_JUICE_PROPRIETARY", 16},
	{"VK_DRIVER_ID_VERISILICON_PROPRIETARY", 17},
	{"VK_DRIVER_ID_MESA_TURNIP", 18},
	{"VK_DRIVER_ID_MESA_V3DV", 19},
	{"VK_DRIVER_ID_MESA_PANVK", 20},
	{"VK_DRIVER_ID_SAMSUNG_PROPRIETARY", 21},
	{"VK_DRIVER_ID_MESA_VENUS", 22},
	{"VK_DRIVER_ID_AMD_PROPRIETARY_KHR", 1},	// VK_DRIVER_ID_AMD_PROPRIETARY
	{"VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR", 2},	// VK_DRIVER_ID_AMD_OPEN_SOURCE
	{"VK_DRIVER_ID_MESA_RADV_KHR", 3},	// VK_DRIVER_ID_MESA_RADV
	{"VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR", 4},	// VK_DRIVER_ID_NVIDIA_PROPRIETARY
	{"VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR", 5},	// VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS
	{"VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR", 6},	// VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA
	{"VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR", 7},	// VK_DRIVER_ID_IMAGINATION_PROPRIETARY
	{"VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR", 8},	// VK_DRIVER_ID_QUALCOMM_PROPRIETARY
	{"VK_DRIVER_ID_ARM_PROPRIETARY_KHR", 9},	// VK_DRIVER_ID_ARM_PROPRIETARY
	{"VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR", 10},	// VK_DRIVER_ID_GOOGLE_SWIFTSHADER
	{"VK_DRIVER_ID_GGP_PROPRIETARY_KHR", 11},	// VK_DRIVER_ID_GGP_PROPRIETARY
	{"VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR", 12},	// VK_DRIVER_ID_BROADCOM_PROPRIETARY
	{"VK_DRIVER_ID_MAX_ENUM", 0x7FFFFFFF}
};
