/* WARNING: This is auto-generated file. Do not modify, since changes will
 * be lost! Modify the generating script instead.
 */
m_vk.destroyInstance								= (DestroyInstanceFunc)									GET_PROC_ADDR("vkDestroyInstance");
m_vk.enumeratePhysicalDevices						= (EnumeratePhysicalDevicesFunc)						GET_PROC_ADDR("vkEnumeratePhysicalDevices");
m_vk.getPhysicalDeviceFeatures						= (GetPhysicalDeviceFeaturesFunc)						GET_PROC_ADDR("vkGetPhysicalDeviceFeatures");
m_vk.getPhysicalDeviceFormatProperties				= (GetPhysicalDeviceFormatPropertiesFunc)				GET_PROC_ADDR("vkGetPhysicalDeviceFormatProperties");
m_vk.getPhysicalDeviceImageFormatProperties			= (GetPhysicalDeviceImageFormatPropertiesFunc)			GET_PROC_ADDR("vkGetPhysicalDeviceImageFormatProperties");
m_vk.getPhysicalDeviceProperties					= (GetPhysicalDevicePropertiesFunc)						GET_PROC_ADDR("vkGetPhysicalDeviceProperties");
m_vk.getPhysicalDeviceQueueFamilyProperties			= (GetPhysicalDeviceQueueFamilyPropertiesFunc)			GET_PROC_ADDR("vkGetPhysicalDeviceQueueFamilyProperties");
m_vk.getPhysicalDeviceMemoryProperties				= (GetPhysicalDeviceMemoryPropertiesFunc)				GET_PROC_ADDR("vkGetPhysicalDeviceMemoryProperties");
m_vk.getDeviceProcAddr								= (GetDeviceProcAddrFunc)								GET_PROC_ADDR("vkGetDeviceProcAddr");
m_vk.createDevice									= (CreateDeviceFunc)									GET_PROC_ADDR("vkCreateDevice");
m_vk.enumerateDeviceExtensionProperties				= (EnumerateDeviceExtensionPropertiesFunc)				GET_PROC_ADDR("vkEnumerateDeviceExtensionProperties");
m_vk.enumerateDeviceLayerProperties					= (EnumerateDeviceLayerPropertiesFunc)					GET_PROC_ADDR("vkEnumerateDeviceLayerProperties");
m_vk.getPhysicalDeviceSparseImageFormatProperties	= (GetPhysicalDeviceSparseImageFormatPropertiesFunc)	GET_PROC_ADDR("vkGetPhysicalDeviceSparseImageFormatProperties");
m_vk.destroySurfaceKHR								= (DestroySurfaceKHRFunc)								GET_PROC_ADDR("vkDestroySurfaceKHR");
m_vk.getPhysicalDeviceSurfaceSupportKHR				= (GetPhysicalDeviceSurfaceSupportKHRFunc)				GET_PROC_ADDR("vkGetPhysicalDeviceSurfaceSupportKHR");
m_vk.getPhysicalDeviceSurfaceCapabilitiesKHR		= (GetPhysicalDeviceSurfaceCapabilitiesKHRFunc)			GET_PROC_ADDR("vkGetPhysicalDeviceSurfaceCapabilitiesKHR");
m_vk.getPhysicalDeviceSurfaceFormatsKHR				= (GetPhysicalDeviceSurfaceFormatsKHRFunc)				GET_PROC_ADDR("vkGetPhysicalDeviceSurfaceFormatsKHR");
m_vk.getPhysicalDeviceSurfacePresentModesKHR		= (GetPhysicalDeviceSurfacePresentModesKHRFunc)			GET_PROC_ADDR("vkGetPhysicalDeviceSurfacePresentModesKHR");
m_vk.getPhysicalDeviceDisplayPropertiesKHR			= (GetPhysicalDeviceDisplayPropertiesKHRFunc)			GET_PROC_ADDR("vkGetPhysicalDeviceDisplayPropertiesKHR");
m_vk.getPhysicalDeviceDisplayPlanePropertiesKHR		= (GetPhysicalDeviceDisplayPlanePropertiesKHRFunc)		GET_PROC_ADDR("vkGetPhysicalDeviceDisplayPlanePropertiesKHR");
m_vk.getDisplayPlaneSupportedDisplaysKHR			= (GetDisplayPlaneSupportedDisplaysKHRFunc)				GET_PROC_ADDR("vkGetDisplayPlaneSupportedDisplaysKHR");
m_vk.getDisplayModePropertiesKHR					= (GetDisplayModePropertiesKHRFunc)						GET_PROC_ADDR("vkGetDisplayModePropertiesKHR");
m_vk.createDisplayModeKHR							= (CreateDisplayModeKHRFunc)							GET_PROC_ADDR("vkCreateDisplayModeKHR");
m_vk.getDisplayPlaneCapabilitiesKHR					= (GetDisplayPlaneCapabilitiesKHRFunc)					GET_PROC_ADDR("vkGetDisplayPlaneCapabilitiesKHR");
m_vk.createDisplayPlaneSurfaceKHR					= (CreateDisplayPlaneSurfaceKHRFunc)					GET_PROC_ADDR("vkCreateDisplayPlaneSurfaceKHR");
m_vk.createXlibSurfaceKHR							= (CreateXlibSurfaceKHRFunc)							GET_PROC_ADDR("vkCreateXlibSurfaceKHR");
m_vk.getPhysicalDeviceXlibPresentationSupportKHR	= (GetPhysicalDeviceXlibPresentationSupportKHRFunc)		GET_PROC_ADDR("vkGetPhysicalDeviceXlibPresentationSupportKHR");
m_vk.createXcbSurfaceKHR							= (CreateXcbSurfaceKHRFunc)								GET_PROC_ADDR("vkCreateXcbSurfaceKHR");
m_vk.getPhysicalDeviceXcbPresentationSupportKHR		= (GetPhysicalDeviceXcbPresentationSupportKHRFunc)		GET_PROC_ADDR("vkGetPhysicalDeviceXcbPresentationSupportKHR");
m_vk.createWaylandSurfaceKHR						= (CreateWaylandSurfaceKHRFunc)							GET_PROC_ADDR("vkCreateWaylandSurfaceKHR");
m_vk.getPhysicalDeviceWaylandPresentationSupportKHR	= (GetPhysicalDeviceWaylandPresentationSupportKHRFunc)	GET_PROC_ADDR("vkGetPhysicalDeviceWaylandPresentationSupportKHR");
m_vk.createMirSurfaceKHR							= (CreateMirSurfaceKHRFunc)								GET_PROC_ADDR("vkCreateMirSurfaceKHR");
m_vk.getPhysicalDeviceMirPresentationSupportKHR		= (GetPhysicalDeviceMirPresentationSupportKHRFunc)		GET_PROC_ADDR("vkGetPhysicalDeviceMirPresentationSupportKHR");
m_vk.createAndroidSurfaceKHR						= (CreateAndroidSurfaceKHRFunc)							GET_PROC_ADDR("vkCreateAndroidSurfaceKHR");
m_vk.createWin32SurfaceKHR							= (CreateWin32SurfaceKHRFunc)							GET_PROC_ADDR("vkCreateWin32SurfaceKHR");
m_vk.getPhysicalDeviceWin32PresentationSupportKHR	= (GetPhysicalDeviceWin32PresentationSupportKHRFunc)	GET_PROC_ADDR("vkGetPhysicalDeviceWin32PresentationSupportKHR");
m_vk.createDebugReportCallbackEXT					= (CreateDebugReportCallbackEXTFunc)					GET_PROC_ADDR("vkCreateDebugReportCallbackEXT");
m_vk.destroyDebugReportCallbackEXT					= (DestroyDebugReportCallbackEXTFunc)					GET_PROC_ADDR("vkDestroyDebugReportCallbackEXT");
m_vk.debugReportMessageEXT							= (DebugReportMessageEXTFunc)							GET_PROC_ADDR("vkDebugReportMessageEXT");
