diff options
| author | ladevieq <ladevie.quentin@gmail.com> | 2020-12-25 00:55:10 +0100 |
|---|---|---|
| committer | ladevieq <ladevie.quentin@gmail.com> | 2020-12-25 00:57:56 +0100 |
| commit | 198004233b111334df7ca82954fe61a2a1ad3bd5 (patch) | |
| tree | ef677a842374e7c836acf63b685469bde2c10f34 /include | |
| parent | e35c849f1bd0ed3c3123fb253897a6e427f789ab (diff) | |
Setup vulkan and vulkan loader
Diffstat (limited to 'include')
| -rw-r--r-- | include/vulkan-loader.hpp | 147 |
1 files changed, 147 insertions, 0 deletions
diff --git a/include/vulkan-loader.hpp b/include/vulkan-loader.hpp new file mode 100644 index 0000000..53bb1a2 --- /dev/null +++ b/include/vulkan-loader.hpp @@ -0,0 +1,147 @@ +#ifndef __VULKAN_LOADER_HPP_ +#define __VULKAN_LOADER_HPP_ + +#if defined(WINDOWS) +#include <Windows.h> +#include <windowsx.h> + +#define VK_USE_PLATFORM_WIN32_KHR +#endif + +#define VK_NO_PROTOTYPES +#include <vulkan/vulkan.h> + +#define VULKAN_EXPORTED_FUNCTIONS \ + X(vkGetInstanceProcAddr) \ + X(vkGetDeviceProcAddr) + +#define VULKAN_APPLICATION_FUNCTIONS \ + X(vkCreateInstance) \ + X(vkEnumerateInstanceVersion) \ + X(vkEnumerateInstanceExtensionProperties) \ + X(vkEnumerateInstanceLayerProperties) + +#define VULKAN_INSTANCE_FUNCTIONS \ + X(vkDestroyInstance) \ + X(vkEnumeratePhysicalDevices) \ + X(vkGetPhysicalDeviceProperties) \ + X(vkGetPhysicalDeviceFeatures) \ + X(vkGetPhysicalDeviceQueueFamilyProperties) \ + X(vkGetPhysicalDeviceMemoryProperties) \ + X(vkCreateDevice) \ + X(vkEnumerateDeviceExtensionProperties) \ + X(vkDestroySurfaceKHR) \ + X(vkGetPhysicalDeviceSurfaceSupportKHR) \ + X(vkGetPhysicalDeviceSurfaceCapabilitiesKHR) \ + X(vkGetPhysicalDeviceSurfaceFormatsKHR) \ + X(vkGetPhysicalDeviceSurfacePresentModesKHR) \ + X(vkCreateDebugUtilsMessengerEXT) \ + X(vkDestroyDebugUtilsMessengerEXT) + +#if defined(WINDOWS) +#define PLATFORM_VULKAN_INSTANCE_FUNCTIONS X(vkCreateWin32SurfaceKHR) +#else +#define PLATFORM_VULKAN_INSTANCE_FUNCTIONS +#endif + +#define VULKAN_DEVICE_FUNCTIONS \ + X(vkGetDeviceQueue) \ + X(vkDestroyDevice) \ + X(vkDeviceWaitIdle) \ + X(vkCreateSwapchainKHR) \ + X(vkGetSwapchainImagesKHR) \ + X(vkAcquireNextImageKHR) \ + X(vkDestroySwapchainKHR) \ + X(vkQueueSubmit) \ + X(vkQueuePresentKHR) \ + X(vkCreateSemaphore) \ + X(vkDestroySemaphore) \ + X(vkCreateCommandPool) \ + X(vkAllocateCommandBuffers) \ + X(vkFreeCommandBuffers) \ + X(vkDestroyCommandPool) \ + X(vkBeginCommandBuffer) \ + X(vkCmdPipelineBarrier) \ + X(vkCmdClearColorImage) \ + X(vkCmdBeginRenderPass) \ + X(vkCmdBindPipeline) \ + X(vkCmdBindVertexBuffers) \ + X(vkCmdBindIndexBuffer) \ + X(vkCmdBindDescriptorSets) \ + X(vkCmdCopyBuffer) \ + X(vkCmdCopyImage) \ + X(vkCmdCopyBufferToImage) \ + X(vkCmdDraw) \ + X(vkCmdDrawIndexed) \ + X(vkCmdEndRenderPass) \ + X(vkEndCommandBuffer) \ + X(vkCreateRenderPass) \ + X(vkCreateBuffer) \ + X(vkCreateImage) \ + X(vkCreateImageView) \ + X(vkCreateSampler) \ + X(vkCreateFramebuffer) \ + X(vkCreateShaderModule) \ + X(vkCreatePipelineLayout) \ + X(vkCreateGraphicsPipelines) \ + X(vkCreateFence) \ + X(vkCreateDescriptorSetLayout) \ + X(vkCreateDescriptorPool) \ + X(vkAllocateDescriptorSets) \ + X(vkUpdateDescriptorSets) \ + X(vkGetBufferMemoryRequirements) \ + X(vkGetImageMemoryRequirements) \ + X(vkAllocateMemory) \ + X(vkMapMemory) \ + X(vkInvalidateMappedMemoryRanges) \ + X(vkFlushMappedMemoryRanges) \ + X(vkUnmapMemory) \ + X(vkFreeMemory) \ + X(vkBindBufferMemory) \ + X(vkBindImageMemory) \ + X(vkWaitForFences) \ + X(vkResetFences) \ + X(vkDestroyFence) \ + X(vkFreeDescriptorSets) \ + X(vkDestroyDescriptorPool) \ + X(vkDestroyDescriptorSetLayout) \ + X(vkDestroyPipeline) \ + X(vkDestroyPipelineLayout) \ + X(vkDestroyShaderModule) \ + X(vkDestroyFramebuffer) \ + X(vkDestroySampler) \ + X(vkDestroyImageView) \ + X(vkDestroyImage) \ + X(vkDestroyBuffer) \ + X(vkDestroyRenderPass) + +#define X(name) extern PFN_##name name; + VULKAN_EXPORTED_FUNCTIONS + VULKAN_APPLICATION_FUNCTIONS + VULKAN_INSTANCE_FUNCTIONS + PLATFORM_VULKAN_INSTANCE_FUNCTIONS + VULKAN_DEVICE_FUNCTIONS +#undef X + + +#define X(name) void Load_##name(); + VULKAN_EXPORTED_FUNCTIONS + VULKAN_APPLICATION_FUNCTIONS +#undef X + +#define X(name) void Load_##name(VkInstance _instance); + VULKAN_INSTANCE_FUNCTIONS + PLATFORM_VULKAN_INSTANCE_FUNCTIONS +#undef X + +#define X(name) void Load_##name(VkDevice _device); + VULKAN_DEVICE_FUNCTIONS +#undef X + + void load_vulkan(); + + void load_instance_functions(VkInstance instance); + + void load_device_functions(VkDevice device); + +#endif // !__VULKAN_LOADER_HPP_ |
