#ifndef VULKAN_WRAPPER_H #define VULKAN_WRAPPER_H #ifdef VTK_NO_VULKAN_LOADING // We are not using the vulkan loader #else // We are using the vulkan loader #define VK_NO_PROTOTYPES 1 #endif #ifdef __ANDROID__ # define VK_USE_PLATFORM_ANDROID_KHR 1 #elif defined __APPLE__ # define VK_USE_PLATFORM_MACOS_MVK 1 # define VK_USE_PLATFORM_METAL_EXT 1 # define VK_ENABLE_BETA_EXTENSIONS 1 #endif #include /** * Initialize the Vulkan function pointer variables declared in this header. * Returns false if vulkan is not available. */ _Bool vtk_load_vulkan_symbols(); #ifndef VTK_NO_VULKAN_LOADING #ifdef __cplusplus extern "C" { #endif #ifdef __cplusplus } #endif // VK_core extern PFN_vkCreateInstance vkCreateInstance; extern PFN_vkDestroyInstance vkDestroyInstance; extern PFN_vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices; extern PFN_vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures; extern PFN_vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties; extern PFN_vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties; extern PFN_vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties; extern PFN_vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties; extern PFN_vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties; extern PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr; extern PFN_vkGetDeviceProcAddr vkGetDeviceProcAddr; extern PFN_vkCreateDevice vkCreateDevice; extern PFN_vkDestroyDevice vkDestroyDevice; extern PFN_vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties; extern PFN_vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties; extern PFN_vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties; extern PFN_vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties; extern PFN_vkGetDeviceQueue vkGetDeviceQueue; extern PFN_vkQueueSubmit vkQueueSubmit; extern PFN_vkQueueWaitIdle vkQueueWaitIdle; extern PFN_vkDeviceWaitIdle vkDeviceWaitIdle; extern PFN_vkAllocateMemory vkAllocateMemory; extern PFN_vkFreeMemory vkFreeMemory; extern PFN_vkMapMemory vkMapMemory; extern PFN_vkUnmapMemory vkUnmapMemory; extern PFN_vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges; extern PFN_vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges; extern PFN_vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment; extern PFN_vkBindBufferMemory vkBindBufferMemory; extern PFN_vkBindImageMemory vkBindImageMemory; extern PFN_vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements; extern PFN_vkGetImageMemoryRequirements vkGetImageMemoryRequirements; extern PFN_vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements; extern PFN_vkGetPhysicalDeviceSparseImageFormatProperties vkGetPhysicalDeviceSparseImageFormatProperties; extern PFN_vkQueueBindSparse vkQueueBindSparse; extern PFN_vkCreateFence vkCreateFence; extern PFN_vkDestroyFence vkDestroyFence; extern PFN_vkResetFences vkResetFences; extern PFN_vkGetFenceStatus vkGetFenceStatus; extern PFN_vkWaitForFences vkWaitForFences; extern PFN_vkCreateSemaphore vkCreateSemaphore; extern PFN_vkDestroySemaphore vkDestroySemaphore; extern PFN_vkCreateEvent vkCreateEvent; extern PFN_vkDestroyEvent vkDestroyEvent; extern PFN_vkGetEventStatus vkGetEventStatus; extern PFN_vkSetEvent vkSetEvent; extern PFN_vkResetEvent vkResetEvent; extern PFN_vkCreateQueryPool vkCreateQueryPool; extern PFN_vkDestroyQueryPool vkDestroyQueryPool; extern PFN_vkGetQueryPoolResults vkGetQueryPoolResults; extern PFN_vkCreateBuffer vkCreateBuffer; extern PFN_vkDestroyBuffer vkDestroyBuffer; extern PFN_vkCreateBufferView vkCreateBufferView; extern PFN_vkDestroyBufferView vkDestroyBufferView; extern PFN_vkCreateImage vkCreateImage; extern PFN_vkDestroyImage vkDestroyImage; extern PFN_vkGetImageSubresourceLayout vkGetImageSubresourceLayout; extern PFN_vkCreateImageView vkCreateImageView; extern PFN_vkDestroyImageView vkDestroyImageView; extern PFN_vkCreateShaderModule vkCreateShaderModule; extern PFN_vkDestroyShaderModule vkDestroyShaderModule; extern PFN_vkCreatePipelineCache vkCreatePipelineCache; extern PFN_vkDestroyPipelineCache vkDestroyPipelineCache; extern PFN_vkGetPipelineCacheData vkGetPipelineCacheData; extern PFN_vkMergePipelineCaches vkMergePipelineCaches; extern PFN_vkCreateGraphicsPipelines vkCreateGraphicsPipelines; extern PFN_vkCreateComputePipelines vkCreateComputePipelines; extern PFN_vkDestroyPipeline vkDestroyPipeline; extern PFN_vkCreatePipelineLayout vkCreatePipelineLayout; extern PFN_vkDestroyPipelineLayout vkDestroyPipelineLayout; extern PFN_vkCreateSampler vkCreateSampler; extern PFN_vkDestroySampler vkDestroySampler; extern PFN_vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout; extern PFN_vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout; extern PFN_vkCreateDescriptorPool vkCreateDescriptorPool; extern PFN_vkDestroyDescriptorPool vkDestroyDescriptorPool; extern PFN_vkResetDescriptorPool vkResetDescriptorPool; extern PFN_vkAllocateDescriptorSets vkAllocateDescriptorSets; extern PFN_vkFreeDescriptorSets vkFreeDescriptorSets; extern PFN_vkUpdateDescriptorSets vkUpdateDescriptorSets; extern PFN_vkCreateFramebuffer vkCreateFramebuffer; extern PFN_vkDestroyFramebuffer vkDestroyFramebuffer; extern PFN_vkCreateRenderPass vkCreateRenderPass; extern PFN_vkDestroyRenderPass vkDestroyRenderPass; extern PFN_vkGetRenderAreaGranularity vkGetRenderAreaGranularity; extern PFN_vkCreateCommandPool vkCreateCommandPool; extern PFN_vkDestroyCommandPool vkDestroyCommandPool; extern PFN_vkResetCommandPool vkResetCommandPool; extern PFN_vkAllocateCommandBuffers vkAllocateCommandBuffers; extern PFN_vkFreeCommandBuffers vkFreeCommandBuffers; extern PFN_vkBeginCommandBuffer vkBeginCommandBuffer; extern PFN_vkEndCommandBuffer vkEndCommandBuffer; extern PFN_vkResetCommandBuffer vkResetCommandBuffer; extern PFN_vkCmdBindPipeline vkCmdBindPipeline; extern PFN_vkCmdSetViewport vkCmdSetViewport; extern PFN_vkCmdSetScissor vkCmdSetScissor; extern PFN_vkCmdSetLineWidth vkCmdSetLineWidth; extern PFN_vkCmdSetDepthBias vkCmdSetDepthBias; extern PFN_vkCmdSetBlendConstants vkCmdSetBlendConstants; extern PFN_vkCmdSetDepthBounds vkCmdSetDepthBounds; extern PFN_vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask; extern PFN_vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask; extern PFN_vkCmdSetStencilReference vkCmdSetStencilReference; extern PFN_vkCmdBindDescriptorSets vkCmdBindDescriptorSets; extern PFN_vkCmdBindIndexBuffer vkCmdBindIndexBuffer; extern PFN_vkCmdBindVertexBuffers vkCmdBindVertexBuffers; extern PFN_vkCmdDraw vkCmdDraw; extern PFN_vkCmdDrawIndexed vkCmdDrawIndexed; extern PFN_vkCmdDrawIndirect vkCmdDrawIndirect; extern PFN_vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect; extern PFN_vkCmdDispatch vkCmdDispatch; extern PFN_vkCmdDispatchIndirect vkCmdDispatchIndirect; extern PFN_vkCmdCopyBuffer vkCmdCopyBuffer; extern PFN_vkCmdCopyImage vkCmdCopyImage; extern PFN_vkCmdBlitImage vkCmdBlitImage; extern PFN_vkCmdCopyBufferToImage vkCmdCopyBufferToImage; extern PFN_vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer; extern PFN_vkCmdUpdateBuffer vkCmdUpdateBuffer; extern PFN_vkCmdFillBuffer vkCmdFillBuffer; extern PFN_vkCmdClearColorImage vkCmdClearColorImage; extern PFN_vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage; extern PFN_vkCmdClearAttachments vkCmdClearAttachments; extern PFN_vkCmdResolveImage vkCmdResolveImage; extern PFN_vkCmdSetEvent vkCmdSetEvent; extern PFN_vkCmdResetEvent vkCmdResetEvent; extern PFN_vkCmdWaitEvents vkCmdWaitEvents; extern PFN_vkCmdPipelineBarrier vkCmdPipelineBarrier; extern PFN_vkCmdBeginQuery vkCmdBeginQuery; extern PFN_vkCmdEndQuery vkCmdEndQuery; extern PFN_vkCmdResetQueryPool vkCmdResetQueryPool; extern PFN_vkCmdWriteTimestamp vkCmdWriteTimestamp; extern PFN_vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults; extern PFN_vkCmdPushConstants vkCmdPushConstants; extern PFN_vkCmdBeginRenderPass vkCmdBeginRenderPass; extern PFN_vkCmdNextSubpass vkCmdNextSubpass; extern PFN_vkCmdEndRenderPass vkCmdEndRenderPass; extern PFN_vkCmdExecuteCommands vkCmdExecuteCommands; // VK_KHR_surface extern PFN_vkDestroySurfaceKHR vkDestroySurfaceKHR; extern PFN_vkGetPhysicalDeviceSurfaceSupportKHR vkGetPhysicalDeviceSurfaceSupportKHR; extern PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR vkGetPhysicalDeviceSurfaceCapabilitiesKHR; extern PFN_vkGetPhysicalDeviceSurfaceFormatsKHR vkGetPhysicalDeviceSurfaceFormatsKHR; extern PFN_vkGetPhysicalDeviceSurfacePresentModesKHR vkGetPhysicalDeviceSurfacePresentModesKHR; // VK_KHR_swapchain extern PFN_vkCreateSwapchainKHR vkCreateSwapchainKHR; extern PFN_vkDestroySwapchainKHR vkDestroySwapchainKHR; extern PFN_vkGetSwapchainImagesKHR vkGetSwapchainImagesKHR; extern PFN_vkAcquireNextImageKHR vkAcquireNextImageKHR; extern PFN_vkQueuePresentKHR vkQueuePresentKHR; // VK_KHR_display extern PFN_vkGetPhysicalDeviceDisplayPropertiesKHR vkGetPhysicalDeviceDisplayPropertiesKHR; extern PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR vkGetPhysicalDeviceDisplayPlanePropertiesKHR; extern PFN_vkGetDisplayPlaneSupportedDisplaysKHR vkGetDisplayPlaneSupportedDisplaysKHR; extern PFN_vkGetDisplayModePropertiesKHR vkGetDisplayModePropertiesKHR; extern PFN_vkCreateDisplayModeKHR vkCreateDisplayModeKHR; extern PFN_vkGetDisplayPlaneCapabilitiesKHR vkGetDisplayPlaneCapabilitiesKHR; extern PFN_vkCreateDisplayPlaneSurfaceKHR vkCreateDisplayPlaneSurfaceKHR; // VK_KHR_display_swapchain extern PFN_vkCreateSharedSwapchainsKHR vkCreateSharedSwapchainsKHR; #ifdef VK_USE_PLATFORM_XLIB_KHR // VK_KHR_xlib_surface extern PFN_vkCreateXlibSurfaceKHR vkCreateXlibSurfaceKHR; extern PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR vkGetPhysicalDeviceXlibPresentationSupportKHR; #endif #ifdef VK_USE_PLATFORM_XCB_KHR // VK_KHR_xcb_surface extern PFN_vkCreateXcbSurfaceKHR vkCreateXcbSurfaceKHR; extern PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR vkGetPhysicalDeviceXcbPresentationSupportKHR; #endif #ifdef VK_USE_PLATFORM_WAYLAND_KHR // VK_KHR_wayland_surface extern PFN_vkCreateWaylandSurfaceKHR vkCreateWaylandSurfaceKHR; extern PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR vkGetPhysicalDeviceWaylandPresentationSupportKHR; #endif #ifdef VK_USE_PLATFORM_MIR_KHR // VK_KHR_mir_surface extern PFN_vkCreateMirSurfaceKHR vkCreateMirSurfaceKHR; extern PFN_vkGetPhysicalDeviceMirPresentationSupportKHR vkGetPhysicalDeviceMirPresentationSupportKHR; #endif #ifdef VK_USE_PLATFORM_ANDROID_KHR // VK_KHR_android_surface extern PFN_vkCreateAndroidSurfaceKHR vkCreateAndroidSurfaceKHR; #endif #ifdef VK_USE_PLATFORM_WIN32_KHR // VK_KHR_win32_surface extern PFN_vkCreateWin32SurfaceKHR vkCreateWin32SurfaceKHR; extern PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR vkGetPhysicalDeviceWin32PresentationSupportKHR; #endif #ifdef VK_USE_PLATFORM_MACOS_MVK extern PFN_vkCreateMetalSurfaceEXT vkCreateMetalSurfaceEXT; #endif #ifdef USE_DEBUG_EXTENTIONS #include // VK_EXT_debug_report extern PFN_vkCreateDebugReportCallbackEXT vkCreateDebugReportCallbackEXT; extern PFN_vkDestroyDebugReportCallbackEXT vkDestroyDebugReportCallbackEXT; extern PFN_vkDebugReportMessageEXT vkDebugReportMessageEXT; #endif #endif // ifndef VTK_NO_VULKAN_LOADING #endif // VULKAN_WRAPPER_H