/* 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
 */
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;
GetPhysicalDeviceToolPropertiesFunc									getPhysicalDeviceToolProperties;
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;
EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHRFunc	enumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR;
GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHRFunc			getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR;
GetPhysicalDeviceSurfaceCapabilities2KHRFunc						getPhysicalDeviceSurfaceCapabilities2KHR;
GetPhysicalDeviceSurfaceFormats2KHRFunc								getPhysicalDeviceSurfaceFormats2KHR;
GetPhysicalDeviceDisplayProperties2KHRFunc							getPhysicalDeviceDisplayProperties2KHR;
GetPhysicalDeviceDisplayPlaneProperties2KHRFunc						getPhysicalDeviceDisplayPlaneProperties2KHR;
GetDisplayModeProperties2KHRFunc									getDisplayModeProperties2KHR;
GetDisplayPlaneCapabilities2KHRFunc									getDisplayPlaneCapabilities2KHR;
GetPhysicalDeviceFragmentShadingRatesKHRFunc						getPhysicalDeviceFragmentShadingRatesKHR;
CreateDebugReportCallbackEXTFunc									createDebugReportCallbackEXT;
DestroyDebugReportCallbackEXTFunc									destroyDebugReportCallbackEXT;
DebugReportMessageEXTFunc											debugReportMessageEXT;
GetPhysicalDeviceExternalImageFormatPropertiesNVFunc				getPhysicalDeviceExternalImageFormatPropertiesNV;
ReleaseDisplayEXTFunc												releaseDisplayEXT;
GetPhysicalDeviceSurfaceCapabilities2EXTFunc						getPhysicalDeviceSurfaceCapabilities2EXT;
CreateDebugUtilsMessengerEXTFunc									createDebugUtilsMessengerEXT;
DestroyDebugUtilsMessengerEXTFunc									destroyDebugUtilsMessengerEXT;
SubmitDebugUtilsMessageEXTFunc										submitDebugUtilsMessageEXT;
GetPhysicalDeviceMultisamplePropertiesEXTFunc						getPhysicalDeviceMultisamplePropertiesEXT;
GetPhysicalDeviceCalibrateableTimeDomainsEXTFunc					getPhysicalDeviceCalibrateableTimeDomainsEXT;
GetPhysicalDeviceToolPropertiesEXTFunc								getPhysicalDeviceToolPropertiesEXT;
GetPhysicalDeviceCooperativeMatrixPropertiesNVFunc					getPhysicalDeviceCooperativeMatrixPropertiesNV;
GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNVFunc	getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV;
CreateHeadlessSurfaceEXTFunc										createHeadlessSurfaceEXT;
AcquireDrmDisplayEXTFunc											acquireDrmDisplayEXT;
GetDrmDisplayEXTFunc												getDrmDisplayEXT;
AcquireWinrtDisplayNVFunc											acquireWinrtDisplayNV;
GetWinrtDisplayNVFunc												getWinrtDisplayNV;
CreateAndroidSurfaceKHRFunc											createAndroidSurfaceKHR;
GetPhysicalDeviceVideoCapabilitiesKHRFunc							getPhysicalDeviceVideoCapabilitiesKHR;
GetPhysicalDeviceVideoFormatPropertiesKHRFunc						getPhysicalDeviceVideoFormatPropertiesKHR;
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;
