/* WARNING: This is auto-generated file. Do not modify, since changes will
 * be lost! Modify the generating script instead.
 */
DestroyInstanceFunc													destroyInstance;
EnumeratePhysicalDevicesFunc										enumeratePhysicalDevices;
GetPhysicalDeviceFeaturesFunc										getPhysicalDeviceFeatures;
GetPhysicalDeviceFormatPropertiesFunc								getPhysicalDeviceFormatProperties;
GetPhysicalDeviceImageFormatPropertiesFunc							getPhysicalDeviceImageFormatProperties;
GetPhysicalDevicePropertiesFunc										getPhysicalDeviceProperties;
GetPhysicalDeviceQueueFamilyPropertiesFunc							getPhysicalDeviceQueueFamilyProperties;
GetPhysicalDeviceMemoryPropertiesFunc								getPhysicalDeviceMemoryProperties;
CreateDeviceFunc													createDevice;
EnumerateDeviceExtensionPropertiesFunc								enumerateDeviceExtensionProperties;
EnumerateDeviceLayerPropertiesFunc									enumerateDeviceLayerProperties;
GetPhysicalDeviceSparseImageFormatPropertiesFunc					getPhysicalDeviceSparseImageFormatProperties;
EnumeratePhysicalDeviceGroupsFunc									enumeratePhysicalDeviceGroups;
GetPhysicalDeviceFeatures2Func										getPhysicalDeviceFeatures2;
GetPhysicalDeviceProperties2Func									getPhysicalDeviceProperties2;
GetPhysicalDeviceFormatProperties2Func								getPhysicalDeviceFormatProperties2;
GetPhysicalDeviceImageFormatProperties2Func							getPhysicalDeviceImageFormatProperties2;
GetPhysicalDeviceQueueFamilyProperties2Func							getPhysicalDeviceQueueFamilyProperties2;
GetPhysicalDeviceMemoryProperties2Func								getPhysicalDeviceMemoryProperties2;
GetPhysicalDeviceSparseImageFormatProperties2Func					getPhysicalDeviceSparseImageFormatProperties2;
GetPhysicalDeviceExternalBufferPropertiesFunc						getPhysicalDeviceExternalBufferProperties;
GetPhysicalDeviceExternalFencePropertiesFunc						getPhysicalDeviceExternalFenceProperties;
GetPhysicalDeviceExternalSemaphorePropertiesFunc					getPhysicalDeviceExternalSemaphoreProperties;
DestroySurfaceKHRFunc												destroySurfaceKHR;
GetPhysicalDeviceSurfaceSupportKHRFunc								getPhysicalDeviceSurfaceSupportKHR;
GetPhysicalDeviceSurfaceCapabilitiesKHRFunc							getPhysicalDeviceSurfaceCapabilitiesKHR;
GetPhysicalDeviceSurfaceFormatsKHRFunc								getPhysicalDeviceSurfaceFormatsKHR;
GetPhysicalDeviceSurfacePresentModesKHRFunc							getPhysicalDeviceSurfacePresentModesKHR;
GetPhysicalDevicePresentRectanglesKHRFunc							getPhysicalDevicePresentRectanglesKHR;
GetPhysicalDeviceDisplayPropertiesKHRFunc							getPhysicalDeviceDisplayPropertiesKHR;
GetPhysicalDeviceDisplayPlanePropertiesKHRFunc						getPhysicalDeviceDisplayPlanePropertiesKHR;
GetDisplayPlaneSupportedDisplaysKHRFunc								getDisplayPlaneSupportedDisplaysKHR;
GetDisplayModePropertiesKHRFunc										getDisplayModePropertiesKHR;
CreateDisplayModeKHRFunc											createDisplayModeKHR;
GetDisplayPlaneCapabilitiesKHRFunc									getDisplayPlaneCapabilitiesKHR;
CreateDisplayPlaneSurfaceKHRFunc									createDisplayPlaneSurfaceKHR;
GetPhysicalDeviceFeatures2KHRFunc									getPhysicalDeviceFeatures2KHR;
GetPhysicalDeviceProperties2KHRFunc									getPhysicalDeviceProperties2KHR;
GetPhysicalDeviceFormatProperties2KHRFunc							getPhysicalDeviceFormatProperties2KHR;
GetPhysicalDeviceImageFormatProperties2KHRFunc						getPhysicalDeviceImageFormatProperties2KHR;
GetPhysicalDeviceQueueFamilyProperties2KHRFunc						getPhysicalDeviceQueueFamilyProperties2KHR;
GetPhysicalDeviceMemoryProperties2KHRFunc							getPhysicalDeviceMemoryProperties2KHR;
GetPhysicalDeviceSparseImageFormatProperties2KHRFunc				getPhysicalDeviceSparseImageFormatProperties2KHR;
GetPhysicalDeviceExternalBufferPropertiesKHRFunc					getPhysicalDeviceExternalBufferPropertiesKHR;
GetPhysicalDeviceExternalSemaphorePropertiesKHRFunc					getPhysicalDeviceExternalSemaphorePropertiesKHR;
GetPhysicalDeviceExternalFencePropertiesKHRFunc						getPhysicalDeviceExternalFencePropertiesKHR;
GetPhysicalDeviceSurfaceCapabilities2KHRFunc						getPhysicalDeviceSurfaceCapabilities2KHR;
GetPhysicalDeviceSurfaceFormats2KHRFunc								getPhysicalDeviceSurfaceFormats2KHR;
GetPhysicalDeviceDisplayProperties2KHRFunc							getPhysicalDeviceDisplayProperties2KHR;
GetPhysicalDeviceDisplayPlaneProperties2KHRFunc						getPhysicalDeviceDisplayPlaneProperties2KHR;
GetDisplayModeProperties2KHRFunc									getDisplayModeProperties2KHR;
GetDisplayPlaneCapabilities2KHRFunc									getDisplayPlaneCapabilities2KHR;
CreateDebugReportCallbackEXTFunc									createDebugReportCallbackEXT;
DestroyDebugReportCallbackEXTFunc									destroyDebugReportCallbackEXT;
DebugReportMessageEXTFunc											debugReportMessageEXT;
GetPhysicalDeviceExternalImageFormatPropertiesNVFunc				getPhysicalDeviceExternalImageFormatPropertiesNV;
GetPhysicalDeviceGeneratedCommandsPropertiesNVXFunc					getPhysicalDeviceGeneratedCommandsPropertiesNVX;
ReleaseDisplayEXTFunc												releaseDisplayEXT;
GetPhysicalDeviceSurfaceCapabilities2EXTFunc						getPhysicalDeviceSurfaceCapabilities2EXT;
CreateDebugUtilsMessengerEXTFunc									createDebugUtilsMessengerEXT;
DestroyDebugUtilsMessengerEXTFunc									destroyDebugUtilsMessengerEXT;
SubmitDebugUtilsMessageEXTFunc										submitDebugUtilsMessageEXT;
GetPhysicalDeviceMultisamplePropertiesEXTFunc						getPhysicalDeviceMultisamplePropertiesEXT;
GetPhysicalDeviceCalibrateableTimeDomainsEXTFunc					getPhysicalDeviceCalibrateableTimeDomainsEXT;
GetPhysicalDeviceCooperativeMatrixPropertiesNVFunc					getPhysicalDeviceCooperativeMatrixPropertiesNV;
GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNVFunc	getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV;
CreateHeadlessSurfaceEXTFunc										createHeadlessSurfaceEXT;
CreateAndroidSurfaceKHRFunc											createAndroidSurfaceKHR;
CreateImagePipeSurfaceFUCHSIAFunc									createImagePipeSurfaceFUCHSIA;
CreateStreamDescriptorSurfaceGGPFunc								createStreamDescriptorSurfaceGGP;
CreateIOSSurfaceMVKFunc												createIOSSurfaceMVK;
CreateMacOSSurfaceMVKFunc											createMacOSSurfaceMVK;
CreateMetalSurfaceEXTFunc											createMetalSurfaceEXT;
CreateViSurfaceNNFunc												createViSurfaceNN;
CreateWaylandSurfaceKHRFunc											createWaylandSurfaceKHR;
GetPhysicalDeviceWaylandPresentationSupportKHRFunc					getPhysicalDeviceWaylandPresentationSupportKHR;
CreateWin32SurfaceKHRFunc											createWin32SurfaceKHR;
GetPhysicalDeviceWin32PresentationSupportKHRFunc					getPhysicalDeviceWin32PresentationSupportKHR;
GetPhysicalDeviceSurfacePresentModes2EXTFunc						getPhysicalDeviceSurfacePresentModes2EXT;
CreateXcbSurfaceKHRFunc												createXcbSurfaceKHR;
GetPhysicalDeviceXcbPresentationSupportKHRFunc						getPhysicalDeviceXcbPresentationSupportKHR;
CreateXlibSurfaceKHRFunc											createXlibSurfaceKHR;
GetPhysicalDeviceXlibPresentationSupportKHRFunc						getPhysicalDeviceXlibPresentationSupportKHR;
AcquireXlibDisplayEXTFunc											acquireXlibDisplayEXT;
GetRandROutputDisplayEXTFunc										getRandROutputDisplayEXT;
