#if defined(VK_INSTANCE_FUNCTIONS)
	VK_FUNC(EnumeratePhysicalDevices);
	VK_FUNC(GetPhysicalDeviceQueueFamilyProperties);
	VK_FUNC(GetPhysicalDeviceProperties);
	VK_FUNC(CreateDevice);
	VK_FUNC(GetDeviceProcAddr);
	VK_FUNC(GetPhysicalDeviceSurfaceCapabilitiesKHR);
	VK_FUNC(GetPhysicalDeviceSurfaceFormatsKHR);
	VK_FUNC(GetPhysicalDeviceMemoryProperties2);

#if defined(VK_USE_PLATFORM_WIN32_KHR)
	VK_FUNC(CreateWin32SurfaceKHR);
#endif

#if defined(VK_USE_PLATFORM_WAYLAND_KHR)
	VK_FUNC(CreateWaylandSurfaceKHR);
#endif
#if defined(VK_USE_PLATFORM_XLIB_KHR)
	VK_FUNC(CreateXlibSurfaceKHR);
#endif

	#undef VK_INSTANCE_FUNCTIONS
#endif

#if defined(VK_DEVICE_FUNCTIONS)
	VK_FUNC(GetDeviceQueue);
	VK_FUNC(CreateSwapchainKHR);
	VK_FUNC(GetSwapchainImagesKHR);
	VK_FUNC(CreateImageView);
	VK_FUNC(CreateCommandPool);
	VK_FUNC(CreateSemaphore);
	VK_FUNC(CreateFence);
	VK_FUNC(AllocateCommandBuffers);
	VK_FUNC(WaitForFences);
	VK_FUNC(ResetFences);
	VK_FUNC(ResetCommandPool);
	VK_FUNC(AcquireNextImageKHR);
	VK_FUNC(QueueSubmit);
	VK_FUNC(QueuePresentKHR);
	VK_FUNC(BeginCommandBuffer);
	VK_FUNC(EndCommandBuffer);
	VK_FUNC(DeviceWaitIdle);
	VK_FUNC(AllocateMemory);
	VK_FUNC(CreateBuffer);
	VK_FUNC(GetBufferMemoryRequirements);
	VK_FUNC(BindBufferMemory);
	VK_FUNC(CreateImage);
	VK_FUNC(GetImageMemoryRequirements);
	VK_FUNC(BindImageMemory);
	VK_FUNC(MapMemory);
	VK_FUNC(CreateGraphicsPipelines);
	VK_FUNC(CreateShaderModule);
	VK_FUNC(CreateDescriptorSetLayout);
	VK_FUNC(CreatePipelineLayout);
	VK_FUNC(CmdBindPipeline);
	VK_FUNC(CreateDescriptorPool);
	VK_FUNC(ResetDescriptorPool);
	VK_FUNC(AllocateDescriptorSets);
	VK_FUNC(CmdBindDescriptorSets);
	VK_FUNC(UpdateDescriptorSets);
	VK_FUNC(CreateSampler);
	VK_FUNC(CmdDraw);
	VK_FUNC(CmdSetViewport);
	VK_FUNC(CmdSetScissor);
	VK_FUNC(CmdDrawIndexed);
	VK_FUNC(CmdBindIndexBuffer);

	VK_FUNC(CmdPushConstants);
	VK_FUNC(CmdCopyBufferToImage);
	VK_FUNC(CmdPipelineBarrier2);
	VK_FUNC(CmdBeginRendering);
	VK_FUNC(CmdEndRendering);
	#undef VK_DEVICE_FUNCTIONS
#endif
