/* WARNING: This is auto-generated file. Do not modify, since changes will
 * be lost! Modify the generating script instead.
 */
static const struct
{
	std::string driver;
	deUint32 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_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}
};
