/* 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.getPhysicalDeviceFeatures2KHR						= (GetPhysicalDeviceFeatures2KHRFunc)						GET_PROC_ADDR("vkGetPhysicalDeviceFeatures2KHR");
m_vk.getPhysicalDeviceProperties2KHR					= (GetPhysicalDeviceProperties2KHRFunc)						GET_PROC_ADDR("vkGetPhysicalDeviceProperties2KHR");
m_vk.getPhysicalDeviceFormatProperties2KHR				= (GetPhysicalDeviceFormatProperties2KHRFunc)				GET_PROC_ADDR("vkGetPhysicalDeviceFormatProperties2KHR");
m_vk.getPhysicalDeviceImageFormatProperties2KHR			= (GetPhysicalDeviceImageFormatProperties2KHRFunc)			GET_PROC_ADDR("vkGetPhysicalDeviceImageFormatProperties2KHR");
m_vk.getPhysicalDeviceQueueFamilyProperties2KHR			= (GetPhysicalDeviceQueueFamilyProperties2KHRFunc)			GET_PROC_ADDR("vkGetPhysicalDeviceQueueFamilyProperties2KHR");
m_vk.getPhysicalDeviceMemoryProperties2KHR				= (GetPhysicalDeviceMemoryProperties2KHRFunc)				GET_PROC_ADDR("vkGetPhysicalDeviceMemoryProperties2KHR");
m_vk.getPhysicalDeviceSparseImageFormatProperties2KHR	= (GetPhysicalDeviceSparseImageFormatProperties2KHRFunc)	GET_PROC_ADDR("vkGetPhysicalDeviceSparseImageFormatProperties2KHR");
m_vk.getPhysicalDeviceSurfaceCapabilities2KHR			= (GetPhysicalDeviceSurfaceCapabilities2KHRFunc)			GET_PROC_ADDR("vkGetPhysicalDeviceSurfaceCapabilities2KHR");
m_vk.getPhysicalDeviceSurfaceFormats2KHR				= (GetPhysicalDeviceSurfaceFormats2KHRFunc)					GET_PROC_ADDR("vkGetPhysicalDeviceSurfaceFormats2KHR");
m_vk.getPhysicalDeviceExternalFencePropertiesKHR		= (GetPhysicalDeviceExternalFencePropertiesKHRFunc)			GET_PROC_ADDR("vkGetPhysicalDeviceExternalFencePropertiesKHR");
m_vk.createDebugReportCallbackEXT						= (CreateDebugReportCallbackEXTFunc)						GET_PROC_ADDR("vkCreateDebugReportCallbackEXT");
m_vk.destroyDebugReportCallbackEXT						= (DestroyDebugReportCallbackEXTFunc)						GET_PROC_ADDR("vkDestroyDebugReportCallbackEXT");
m_vk.debugReportMessageEXT								= (DebugReportMessageEXTFunc)								GET_PROC_ADDR("vkDebugReportMessageEXT");
m_vk.getPhysicalDeviceExternalBufferPropertiesKHR		= (GetPhysicalDeviceExternalBufferPropertiesKHRFunc)		GET_PROC_ADDR("vkGetPhysicalDeviceExternalBufferPropertiesKHR");
m_vk.getPhysicalDeviceExternalSemaphorePropertiesKHR	= (GetPhysicalDeviceExternalSemaphorePropertiesKHRFunc)		GET_PROC_ADDR("vkGetPhysicalDeviceExternalSemaphorePropertiesKHR");
