1 2 /// Vulkan functions 3 module dvulkan.functions; 4 // THIS FILE IS AUTOMATICALLY GENERATED. DO NOT MODIFY. 5 6 import dvulkan.types; 7 import std.typetuple; 8 import std.traits; 9 import std.algorithm : startsWith; 10 version(DVulkanAllExtensions) { 11 version = DVulkan_VK_VERSION_1_0; 12 version = DVulkan_VK_KHR_surface; 13 version = DVulkan_VK_KHR_swapchain; 14 version = DVulkan_VK_KHR_display; 15 version = DVulkan_VK_KHR_display_swapchain; 16 version = DVulkan_VK_KHR_sampler_mirror_clamp_to_edge; 17 version = DVulkan_VK_ANDROID_native_buffer; 18 version = DVulkan_VK_EXT_debug_report; 19 version = DVulkan_VK_NV_glsl_shader; 20 version = DVulkan_VK_NV_extension_1; 21 version = DVulkan_VK_IMG_filter_cubic; 22 version = DVulkan_VK_AMD_extension_1; 23 version = DVulkan_VK_AMD_extension_2; 24 version = DVulkan_VK_AMD_rasterization_order; 25 version = DVulkan_VK_AMD_extension_4; 26 version = DVulkan_VK_AMD_extension_5; 27 version = DVulkan_VK_AMD_extension_6; 28 version = DVulkan_VK_EXT_debug_marker; 29 } 30 31 extern(System) @nogc nothrow { 32 33 /// Struct containing function pointers to all Vulkan functions. 34 struct VulkanFunctions { 35 /// The instance that the functions were loaded from, if applicable. 36 VkInstance instance; 37 /// The device that the functions were loaded from, if applicable. 38 VkDevice device; 39 40 /// Loads the following functions, by calling the passed in vkGetInstanceProcAddr function: 41 /// vkGetInstanceProcAddr (copies the one passed in), 42 /// vkEnumerateInstanceExtensionProperties, 43 /// vkEnumerateInstanceLayerProperties, and 44 /// vkCreateInstance 45 void loadInitializationFunctions(PFN_vkGetInstanceProcAddr getProcAddr) { 46 vkGetInstanceProcAddr = getProcAddr; 47 vkEnumerateInstanceExtensionProperties = cast(PFN_vkEnumerateInstanceExtensionProperties) vkGetInstanceProcAddr(null, "vkEnumerateInstanceExtensionProperties"); 48 vkEnumerateInstanceLayerProperties = cast(PFN_vkEnumerateInstanceLayerProperties) vkGetInstanceProcAddr(null, "vkEnumerateInstanceLayerProperties"); 49 vkCreateInstance = cast(PFN_vkCreateInstance) vkGetInstanceProcAddr(null, "vkCreateInstance"); 50 } 51 52 /// Loads all functions from an instance (except functions loaded by loadInitializationFunctions). 53 /// The functions may be used with any device created from this instance (but will have a slight dispatching overhead). 54 /// Sets `instance` to the passed in instance. 55 void loadInstanceFunctions(VkInstance instance) { 56 assert(this.vkGetInstanceProcAddr, "loadInstanceFunctions called without vkGetInstanceProcAddr set"); 57 58 enum shouldLoad(string name) = 59 name.startsWith("vk") && 60 staticIndexOf!(name, 61 "vkGetInstanceProcAddr", 62 "vkEnumerateInstanceExtensionProperties", 63 "vkEnumerateInstanceLayerProperties", 64 "vkCreateInstance", 65 ) == -1; 66 alias funcsToLoad = Filter!(shouldLoad, AllFuncs); 67 68 this.instance = instance; 69 foreach(string name; funcsToLoad) { 70 __traits(getMember, this, name) = cast(typeof(__traits(getMember, VulkanFunctions, name))) 71 vkGetInstanceProcAddr(instance, name); 72 } 73 } 74 75 /// Loads functions specific for a device. 76 /// This loads all Vulkan functions that take a VkDevice, VkQueue, or VkCommandBuffer as their first argument. 77 /// The functions may only be used with the passed-in device, and should be free of dispatching overhead. 78 /// Sets `device` to the passed-in device. 79 void loadDeviceFunctions(VkDevice device) { 80 assert(this.vkGetDeviceProcAddr, "loadInstanceFunctions called without vkGetDeviceProcAddr set"); 81 82 enum shouldLoad(string name) = 83 Parameters!(__traits(getMember, VulkanFunctions, "PFN_"~name)).length > 0 && 84 staticIndexOf!(Parameters!(__traits(getMember, VulkanFunctions, "PFN_"~name))[0], VkDevice, VkQueue, VkCommandBuffer) != -1; 85 alias funcsToLoad = Filter!(shouldLoad, AllFuncs); 86 87 this.device = device; 88 foreach(string name; funcsToLoad) { 89 __traits(getMember, this, name) = cast(typeof(__traits(getMember, VulkanFunctions, name))) 90 vkGetDeviceProcAddr(device, name); 91 } 92 } 93 94 private enum IsVKFunc(string name) = name.startsWith("vk"); 95 package alias AllFuncs = Filter!(IsVKFunc, __traits(allMembers, VulkanFunctions)); 96 version(DVulkan_VK_VERSION_1_0) { 97 alias PFN_vkCreateInstance = VkResult function(const(VkInstanceCreateInfo)* pCreateInfo,const(VkAllocationCallbacks)* pAllocator,VkInstance* pInstance); 98 PFN_vkCreateInstance vkCreateInstance; 99 alias PFN_vkDestroyInstance = void function(VkInstance instance,const(VkAllocationCallbacks)* pAllocator); 100 PFN_vkDestroyInstance vkDestroyInstance; 101 alias PFN_vkEnumeratePhysicalDevices = VkResult function(VkInstance instance,uint32_t* pPhysicalDeviceCount,VkPhysicalDevice* pPhysicalDevices); 102 PFN_vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices; 103 alias PFN_vkGetPhysicalDeviceFeatures = void function(VkPhysicalDevice physicalDevice,VkPhysicalDeviceFeatures* pFeatures); 104 PFN_vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures; 105 alias PFN_vkGetPhysicalDeviceFormatProperties = void function(VkPhysicalDevice physicalDevice,VkFormat format,VkFormatProperties* pFormatProperties); 106 PFN_vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties; 107 alias PFN_vkGetPhysicalDeviceImageFormatProperties = VkResult function(VkPhysicalDevice physicalDevice,VkFormat format,VkImageType type,VkImageTiling tiling,VkImageUsageFlags usage,VkImageCreateFlags flags,VkImageFormatProperties* pImageFormatProperties); 108 PFN_vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties; 109 alias PFN_vkGetPhysicalDeviceProperties = void function(VkPhysicalDevice physicalDevice,VkPhysicalDeviceProperties* pProperties); 110 PFN_vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties; 111 alias PFN_vkGetPhysicalDeviceQueueFamilyProperties = void function(VkPhysicalDevice physicalDevice,uint32_t* pQueueFamilyPropertyCount,VkQueueFamilyProperties* pQueueFamilyProperties); 112 PFN_vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties; 113 alias PFN_vkGetPhysicalDeviceMemoryProperties = void function(VkPhysicalDevice physicalDevice,VkPhysicalDeviceMemoryProperties* pMemoryProperties); 114 PFN_vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties; 115 alias PFN_vkGetInstanceProcAddr = PFN_vkVoidFunction function(VkInstance instance,const(char)* pName); 116 PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr; 117 alias PFN_vkGetDeviceProcAddr = PFN_vkVoidFunction function(VkDevice device,const(char)* pName); 118 PFN_vkGetDeviceProcAddr vkGetDeviceProcAddr; 119 alias PFN_vkCreateDevice = VkResult function(VkPhysicalDevice physicalDevice,const(VkDeviceCreateInfo)* pCreateInfo,const(VkAllocationCallbacks)* pAllocator,VkDevice* pDevice); 120 PFN_vkCreateDevice vkCreateDevice; 121 alias PFN_vkDestroyDevice = void function(VkDevice device,const(VkAllocationCallbacks)* pAllocator); 122 PFN_vkDestroyDevice vkDestroyDevice; 123 alias PFN_vkEnumerateInstanceExtensionProperties = VkResult function(const(char)* pLayerName,uint32_t* pPropertyCount,VkExtensionProperties* pProperties); 124 PFN_vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties; 125 alias PFN_vkEnumerateDeviceExtensionProperties = VkResult function(VkPhysicalDevice physicalDevice,const(char)* pLayerName,uint32_t* pPropertyCount,VkExtensionProperties* pProperties); 126 PFN_vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties; 127 alias PFN_vkEnumerateInstanceLayerProperties = VkResult function(uint32_t* pPropertyCount,VkLayerProperties* pProperties); 128 PFN_vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties; 129 alias PFN_vkEnumerateDeviceLayerProperties = VkResult function(VkPhysicalDevice physicalDevice,uint32_t* pPropertyCount,VkLayerProperties* pProperties); 130 PFN_vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties; 131 alias PFN_vkGetDeviceQueue = void function(VkDevice device,uint32_t queueFamilyIndex,uint32_t queueIndex,VkQueue* pQueue); 132 PFN_vkGetDeviceQueue vkGetDeviceQueue; 133 alias PFN_vkQueueSubmit = VkResult function(VkQueue queue,uint32_t submitCount,const(VkSubmitInfo)* pSubmits,VkFence fence); 134 PFN_vkQueueSubmit vkQueueSubmit; 135 alias PFN_vkQueueWaitIdle = VkResult function(VkQueue queue); 136 PFN_vkQueueWaitIdle vkQueueWaitIdle; 137 alias PFN_vkDeviceWaitIdle = VkResult function(VkDevice device); 138 PFN_vkDeviceWaitIdle vkDeviceWaitIdle; 139 alias PFN_vkAllocateMemory = VkResult function(VkDevice device,const(VkMemoryAllocateInfo)* pAllocateInfo,const(VkAllocationCallbacks)* pAllocator,VkDeviceMemory* pMemory); 140 PFN_vkAllocateMemory vkAllocateMemory; 141 alias PFN_vkFreeMemory = void function(VkDevice device,VkDeviceMemory memory,const(VkAllocationCallbacks)* pAllocator); 142 PFN_vkFreeMemory vkFreeMemory; 143 alias PFN_vkMapMemory = VkResult function(VkDevice device,VkDeviceMemory memory,VkDeviceSize offset,VkDeviceSize size,VkMemoryMapFlags flags,void** ppData); 144 PFN_vkMapMemory vkMapMemory; 145 alias PFN_vkUnmapMemory = void function(VkDevice device,VkDeviceMemory memory); 146 PFN_vkUnmapMemory vkUnmapMemory; 147 alias PFN_vkFlushMappedMemoryRanges = VkResult function(VkDevice device,uint32_t memoryRangeCount,const(VkMappedMemoryRange)* pMemoryRanges); 148 PFN_vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges; 149 alias PFN_vkInvalidateMappedMemoryRanges = VkResult function(VkDevice device,uint32_t memoryRangeCount,const(VkMappedMemoryRange)* pMemoryRanges); 150 PFN_vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges; 151 alias PFN_vkGetDeviceMemoryCommitment = void function(VkDevice device,VkDeviceMemory memory,VkDeviceSize* pCommittedMemoryInBytes); 152 PFN_vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment; 153 alias PFN_vkBindBufferMemory = VkResult function(VkDevice device,VkBuffer buffer,VkDeviceMemory memory,VkDeviceSize memoryOffset); 154 PFN_vkBindBufferMemory vkBindBufferMemory; 155 alias PFN_vkBindImageMemory = VkResult function(VkDevice device,VkImage image,VkDeviceMemory memory,VkDeviceSize memoryOffset); 156 PFN_vkBindImageMemory vkBindImageMemory; 157 alias PFN_vkGetBufferMemoryRequirements = void function(VkDevice device,VkBuffer buffer,VkMemoryRequirements* pMemoryRequirements); 158 PFN_vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements; 159 alias PFN_vkGetImageMemoryRequirements = void function(VkDevice device,VkImage image,VkMemoryRequirements* pMemoryRequirements); 160 PFN_vkGetImageMemoryRequirements vkGetImageMemoryRequirements; 161 alias PFN_vkGetImageSparseMemoryRequirements = void function(VkDevice device,VkImage image,uint32_t* pSparseMemoryRequirementCount,VkSparseImageMemoryRequirements* pSparseMemoryRequirements); 162 PFN_vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements; 163 alias PFN_vkGetPhysicalDeviceSparseImageFormatProperties = void function(VkPhysicalDevice physicalDevice,VkFormat format,VkImageType type,VkSampleCountFlagBits samples,VkImageUsageFlags usage,VkImageTiling tiling,uint32_t* pPropertyCount,VkSparseImageFormatProperties* pProperties); 164 PFN_vkGetPhysicalDeviceSparseImageFormatProperties vkGetPhysicalDeviceSparseImageFormatProperties; 165 alias PFN_vkQueueBindSparse = VkResult function(VkQueue queue,uint32_t bindInfoCount,const(VkBindSparseInfo)* pBindInfo,VkFence fence); 166 PFN_vkQueueBindSparse vkQueueBindSparse; 167 alias PFN_vkCreateFence = VkResult function(VkDevice device,const(VkFenceCreateInfo)* pCreateInfo,const(VkAllocationCallbacks)* pAllocator,VkFence* pFence); 168 PFN_vkCreateFence vkCreateFence; 169 alias PFN_vkDestroyFence = void function(VkDevice device,VkFence fence,const(VkAllocationCallbacks)* pAllocator); 170 PFN_vkDestroyFence vkDestroyFence; 171 alias PFN_vkResetFences = VkResult function(VkDevice device,uint32_t fenceCount,const(VkFence)* pFences); 172 PFN_vkResetFences vkResetFences; 173 alias PFN_vkGetFenceStatus = VkResult function(VkDevice device,VkFence fence); 174 PFN_vkGetFenceStatus vkGetFenceStatus; 175 alias PFN_vkWaitForFences = VkResult function(VkDevice device,uint32_t fenceCount,const(VkFence)* pFences,VkBool32 waitAll,uint64_t timeout); 176 PFN_vkWaitForFences vkWaitForFences; 177 alias PFN_vkCreateSemaphore = VkResult function(VkDevice device,const(VkSemaphoreCreateInfo)* pCreateInfo,const(VkAllocationCallbacks)* pAllocator,VkSemaphore* pSemaphore); 178 PFN_vkCreateSemaphore vkCreateSemaphore; 179 alias PFN_vkDestroySemaphore = void function(VkDevice device,VkSemaphore semaphore,const(VkAllocationCallbacks)* pAllocator); 180 PFN_vkDestroySemaphore vkDestroySemaphore; 181 alias PFN_vkCreateEvent = VkResult function(VkDevice device,const(VkEventCreateInfo)* pCreateInfo,const(VkAllocationCallbacks)* pAllocator,VkEvent* pEvent); 182 PFN_vkCreateEvent vkCreateEvent; 183 alias PFN_vkDestroyEvent = void function(VkDevice device,VkEvent event,const(VkAllocationCallbacks)* pAllocator); 184 PFN_vkDestroyEvent vkDestroyEvent; 185 alias PFN_vkGetEventStatus = VkResult function(VkDevice device,VkEvent event); 186 PFN_vkGetEventStatus vkGetEventStatus; 187 alias PFN_vkSetEvent = VkResult function(VkDevice device,VkEvent event); 188 PFN_vkSetEvent vkSetEvent; 189 alias PFN_vkResetEvent = VkResult function(VkDevice device,VkEvent event); 190 PFN_vkResetEvent vkResetEvent; 191 alias PFN_vkCreateQueryPool = VkResult function(VkDevice device,const(VkQueryPoolCreateInfo)* pCreateInfo,const(VkAllocationCallbacks)* pAllocator,VkQueryPool* pQueryPool); 192 PFN_vkCreateQueryPool vkCreateQueryPool; 193 alias PFN_vkDestroyQueryPool = void function(VkDevice device,VkQueryPool queryPool,const(VkAllocationCallbacks)* pAllocator); 194 PFN_vkDestroyQueryPool vkDestroyQueryPool; 195 alias PFN_vkGetQueryPoolResults = VkResult function(VkDevice device,VkQueryPool queryPool,uint32_t firstQuery,uint32_t queryCount,size_t dataSize,void* pData,VkDeviceSize stride,VkQueryResultFlags flags); 196 PFN_vkGetQueryPoolResults vkGetQueryPoolResults; 197 alias PFN_vkCreateBuffer = VkResult function(VkDevice device,const(VkBufferCreateInfo)* pCreateInfo,const(VkAllocationCallbacks)* pAllocator,VkBuffer* pBuffer); 198 PFN_vkCreateBuffer vkCreateBuffer; 199 alias PFN_vkDestroyBuffer = void function(VkDevice device,VkBuffer buffer,const(VkAllocationCallbacks)* pAllocator); 200 PFN_vkDestroyBuffer vkDestroyBuffer; 201 alias PFN_vkCreateBufferView = VkResult function(VkDevice device,const(VkBufferViewCreateInfo)* pCreateInfo,const(VkAllocationCallbacks)* pAllocator,VkBufferView* pView); 202 PFN_vkCreateBufferView vkCreateBufferView; 203 alias PFN_vkDestroyBufferView = void function(VkDevice device,VkBufferView bufferView,const(VkAllocationCallbacks)* pAllocator); 204 PFN_vkDestroyBufferView vkDestroyBufferView; 205 alias PFN_vkCreateImage = VkResult function(VkDevice device,const(VkImageCreateInfo)* pCreateInfo,const(VkAllocationCallbacks)* pAllocator,VkImage* pImage); 206 PFN_vkCreateImage vkCreateImage; 207 alias PFN_vkDestroyImage = void function(VkDevice device,VkImage image,const(VkAllocationCallbacks)* pAllocator); 208 PFN_vkDestroyImage vkDestroyImage; 209 alias PFN_vkGetImageSubresourceLayout = void function(VkDevice device,VkImage image,const(VkImageSubresource)* pSubresource,VkSubresourceLayout* pLayout); 210 PFN_vkGetImageSubresourceLayout vkGetImageSubresourceLayout; 211 alias PFN_vkCreateImageView = VkResult function(VkDevice device,const(VkImageViewCreateInfo)* pCreateInfo,const(VkAllocationCallbacks)* pAllocator,VkImageView* pView); 212 PFN_vkCreateImageView vkCreateImageView; 213 alias PFN_vkDestroyImageView = void function(VkDevice device,VkImageView imageView,const(VkAllocationCallbacks)* pAllocator); 214 PFN_vkDestroyImageView vkDestroyImageView; 215 alias PFN_vkCreateShaderModule = VkResult function(VkDevice device,const(VkShaderModuleCreateInfo)* pCreateInfo,const(VkAllocationCallbacks)* pAllocator,VkShaderModule* pShaderModule); 216 PFN_vkCreateShaderModule vkCreateShaderModule; 217 alias PFN_vkDestroyShaderModule = void function(VkDevice device,VkShaderModule shaderModule,const(VkAllocationCallbacks)* pAllocator); 218 PFN_vkDestroyShaderModule vkDestroyShaderModule; 219 alias PFN_vkCreatePipelineCache = VkResult function(VkDevice device,const(VkPipelineCacheCreateInfo)* pCreateInfo,const(VkAllocationCallbacks)* pAllocator,VkPipelineCache* pPipelineCache); 220 PFN_vkCreatePipelineCache vkCreatePipelineCache; 221 alias PFN_vkDestroyPipelineCache = void function(VkDevice device,VkPipelineCache pipelineCache,const(VkAllocationCallbacks)* pAllocator); 222 PFN_vkDestroyPipelineCache vkDestroyPipelineCache; 223 alias PFN_vkGetPipelineCacheData = VkResult function(VkDevice device,VkPipelineCache pipelineCache,size_t* pDataSize,void* pData); 224 PFN_vkGetPipelineCacheData vkGetPipelineCacheData; 225 alias PFN_vkMergePipelineCaches = VkResult function(VkDevice device,VkPipelineCache dstCache,uint32_t srcCacheCount,const(VkPipelineCache)* pSrcCaches); 226 PFN_vkMergePipelineCaches vkMergePipelineCaches; 227 alias PFN_vkCreateGraphicsPipelines = VkResult function(VkDevice device,VkPipelineCache pipelineCache,uint32_t createInfoCount,const(VkGraphicsPipelineCreateInfo)* pCreateInfos,const(VkAllocationCallbacks)* pAllocator,VkPipeline* pPipelines); 228 PFN_vkCreateGraphicsPipelines vkCreateGraphicsPipelines; 229 alias PFN_vkCreateComputePipelines = VkResult function(VkDevice device,VkPipelineCache pipelineCache,uint32_t createInfoCount,const(VkComputePipelineCreateInfo)* pCreateInfos,const(VkAllocationCallbacks)* pAllocator,VkPipeline* pPipelines); 230 PFN_vkCreateComputePipelines vkCreateComputePipelines; 231 alias PFN_vkDestroyPipeline = void function(VkDevice device,VkPipeline pipeline,const(VkAllocationCallbacks)* pAllocator); 232 PFN_vkDestroyPipeline vkDestroyPipeline; 233 alias PFN_vkCreatePipelineLayout = VkResult function(VkDevice device,const(VkPipelineLayoutCreateInfo)* pCreateInfo,const(VkAllocationCallbacks)* pAllocator,VkPipelineLayout* pPipelineLayout); 234 PFN_vkCreatePipelineLayout vkCreatePipelineLayout; 235 alias PFN_vkDestroyPipelineLayout = void function(VkDevice device,VkPipelineLayout pipelineLayout,const(VkAllocationCallbacks)* pAllocator); 236 PFN_vkDestroyPipelineLayout vkDestroyPipelineLayout; 237 alias PFN_vkCreateSampler = VkResult function(VkDevice device,const(VkSamplerCreateInfo)* pCreateInfo,const(VkAllocationCallbacks)* pAllocator,VkSampler* pSampler); 238 PFN_vkCreateSampler vkCreateSampler; 239 alias PFN_vkDestroySampler = void function(VkDevice device,VkSampler sampler,const(VkAllocationCallbacks)* pAllocator); 240 PFN_vkDestroySampler vkDestroySampler; 241 alias PFN_vkCreateDescriptorSetLayout = VkResult function(VkDevice device,const(VkDescriptorSetLayoutCreateInfo)* pCreateInfo,const(VkAllocationCallbacks)* pAllocator,VkDescriptorSetLayout* pSetLayout); 242 PFN_vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout; 243 alias PFN_vkDestroyDescriptorSetLayout = void function(VkDevice device,VkDescriptorSetLayout descriptorSetLayout,const(VkAllocationCallbacks)* pAllocator); 244 PFN_vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout; 245 alias PFN_vkCreateDescriptorPool = VkResult function(VkDevice device,const(VkDescriptorPoolCreateInfo)* pCreateInfo,const(VkAllocationCallbacks)* pAllocator,VkDescriptorPool* pDescriptorPool); 246 PFN_vkCreateDescriptorPool vkCreateDescriptorPool; 247 alias PFN_vkDestroyDescriptorPool = void function(VkDevice device,VkDescriptorPool descriptorPool,const(VkAllocationCallbacks)* pAllocator); 248 PFN_vkDestroyDescriptorPool vkDestroyDescriptorPool; 249 alias PFN_vkResetDescriptorPool = VkResult function(VkDevice device,VkDescriptorPool descriptorPool,VkDescriptorPoolResetFlags flags); 250 PFN_vkResetDescriptorPool vkResetDescriptorPool; 251 alias PFN_vkAllocateDescriptorSets = VkResult function(VkDevice device,const(VkDescriptorSetAllocateInfo)* pAllocateInfo,VkDescriptorSet* pDescriptorSets); 252 PFN_vkAllocateDescriptorSets vkAllocateDescriptorSets; 253 alias PFN_vkFreeDescriptorSets = VkResult function(VkDevice device,VkDescriptorPool descriptorPool,uint32_t descriptorSetCount,const(VkDescriptorSet)* pDescriptorSets); 254 PFN_vkFreeDescriptorSets vkFreeDescriptorSets; 255 alias PFN_vkUpdateDescriptorSets = void function(VkDevice device,uint32_t descriptorWriteCount,const(VkWriteDescriptorSet)* pDescriptorWrites,uint32_t descriptorCopyCount,const(VkCopyDescriptorSet)* pDescriptorCopies); 256 PFN_vkUpdateDescriptorSets vkUpdateDescriptorSets; 257 alias PFN_vkCreateFramebuffer = VkResult function(VkDevice device,const(VkFramebufferCreateInfo)* pCreateInfo,const(VkAllocationCallbacks)* pAllocator,VkFramebuffer* pFramebuffer); 258 PFN_vkCreateFramebuffer vkCreateFramebuffer; 259 alias PFN_vkDestroyFramebuffer = void function(VkDevice device,VkFramebuffer framebuffer,const(VkAllocationCallbacks)* pAllocator); 260 PFN_vkDestroyFramebuffer vkDestroyFramebuffer; 261 alias PFN_vkCreateRenderPass = VkResult function(VkDevice device,const(VkRenderPassCreateInfo)* pCreateInfo,const(VkAllocationCallbacks)* pAllocator,VkRenderPass* pRenderPass); 262 PFN_vkCreateRenderPass vkCreateRenderPass; 263 alias PFN_vkDestroyRenderPass = void function(VkDevice device,VkRenderPass renderPass,const(VkAllocationCallbacks)* pAllocator); 264 PFN_vkDestroyRenderPass vkDestroyRenderPass; 265 alias PFN_vkGetRenderAreaGranularity = void function(VkDevice device,VkRenderPass renderPass,VkExtent2D* pGranularity); 266 PFN_vkGetRenderAreaGranularity vkGetRenderAreaGranularity; 267 alias PFN_vkCreateCommandPool = VkResult function(VkDevice device,const(VkCommandPoolCreateInfo)* pCreateInfo,const(VkAllocationCallbacks)* pAllocator,VkCommandPool* pCommandPool); 268 PFN_vkCreateCommandPool vkCreateCommandPool; 269 alias PFN_vkDestroyCommandPool = void function(VkDevice device,VkCommandPool commandPool,const(VkAllocationCallbacks)* pAllocator); 270 PFN_vkDestroyCommandPool vkDestroyCommandPool; 271 alias PFN_vkResetCommandPool = VkResult function(VkDevice device,VkCommandPool commandPool,VkCommandPoolResetFlags flags); 272 PFN_vkResetCommandPool vkResetCommandPool; 273 alias PFN_vkAllocateCommandBuffers = VkResult function(VkDevice device,const(VkCommandBufferAllocateInfo)* pAllocateInfo,VkCommandBuffer* pCommandBuffers); 274 PFN_vkAllocateCommandBuffers vkAllocateCommandBuffers; 275 alias PFN_vkFreeCommandBuffers = void function(VkDevice device,VkCommandPool commandPool,uint32_t commandBufferCount,const(VkCommandBuffer)* pCommandBuffers); 276 PFN_vkFreeCommandBuffers vkFreeCommandBuffers; 277 alias PFN_vkBeginCommandBuffer = VkResult function(VkCommandBuffer commandBuffer,const(VkCommandBufferBeginInfo)* pBeginInfo); 278 PFN_vkBeginCommandBuffer vkBeginCommandBuffer; 279 alias PFN_vkEndCommandBuffer = VkResult function(VkCommandBuffer commandBuffer); 280 PFN_vkEndCommandBuffer vkEndCommandBuffer; 281 alias PFN_vkResetCommandBuffer = VkResult function(VkCommandBuffer commandBuffer,VkCommandBufferResetFlags flags); 282 PFN_vkResetCommandBuffer vkResetCommandBuffer; 283 alias PFN_vkCmdBindPipeline = void function(VkCommandBuffer commandBuffer,VkPipelineBindPoint pipelineBindPoint,VkPipeline pipeline); 284 PFN_vkCmdBindPipeline vkCmdBindPipeline; 285 alias PFN_vkCmdSetViewport = void function(VkCommandBuffer commandBuffer,uint32_t firstViewport,uint32_t viewportCount,const(VkViewport)* pViewports); 286 PFN_vkCmdSetViewport vkCmdSetViewport; 287 alias PFN_vkCmdSetScissor = void function(VkCommandBuffer commandBuffer,uint32_t firstScissor,uint32_t scissorCount,const(VkRect2D)* pScissors); 288 PFN_vkCmdSetScissor vkCmdSetScissor; 289 alias PFN_vkCmdSetLineWidth = void function(VkCommandBuffer commandBuffer,float lineWidth); 290 PFN_vkCmdSetLineWidth vkCmdSetLineWidth; 291 alias PFN_vkCmdSetDepthBias = void function(VkCommandBuffer commandBuffer,float depthBiasConstantFactor,float depthBiasClamp,float depthBiasSlopeFactor); 292 PFN_vkCmdSetDepthBias vkCmdSetDepthBias; 293 alias PFN_vkCmdSetBlendConstants = void function(VkCommandBuffer commandBuffer,const float[4] blendConstants); 294 PFN_vkCmdSetBlendConstants vkCmdSetBlendConstants; 295 alias PFN_vkCmdSetDepthBounds = void function(VkCommandBuffer commandBuffer,float minDepthBounds,float maxDepthBounds); 296 PFN_vkCmdSetDepthBounds vkCmdSetDepthBounds; 297 alias PFN_vkCmdSetStencilCompareMask = void function(VkCommandBuffer commandBuffer,VkStencilFaceFlags faceMask,uint32_t compareMask); 298 PFN_vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask; 299 alias PFN_vkCmdSetStencilWriteMask = void function(VkCommandBuffer commandBuffer,VkStencilFaceFlags faceMask,uint32_t writeMask); 300 PFN_vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask; 301 alias PFN_vkCmdSetStencilReference = void function(VkCommandBuffer commandBuffer,VkStencilFaceFlags faceMask,uint32_t reference); 302 PFN_vkCmdSetStencilReference vkCmdSetStencilReference; 303 alias PFN_vkCmdBindDescriptorSets = void function(VkCommandBuffer commandBuffer,VkPipelineBindPoint pipelineBindPoint,VkPipelineLayout layout,uint32_t firstSet,uint32_t descriptorSetCount,const(VkDescriptorSet)* pDescriptorSets,uint32_t dynamicOffsetCount,const(uint32_t)* pDynamicOffsets); 304 PFN_vkCmdBindDescriptorSets vkCmdBindDescriptorSets; 305 alias PFN_vkCmdBindIndexBuffer = void function(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkIndexType indexType); 306 PFN_vkCmdBindIndexBuffer vkCmdBindIndexBuffer; 307 alias PFN_vkCmdBindVertexBuffers = void function(VkCommandBuffer commandBuffer,uint32_t firstBinding,uint32_t bindingCount,const(VkBuffer)* pBuffers,const(VkDeviceSize)* pOffsets); 308 PFN_vkCmdBindVertexBuffers vkCmdBindVertexBuffers; 309 alias PFN_vkCmdDraw = void function(VkCommandBuffer commandBuffer,uint32_t vertexCount,uint32_t instanceCount,uint32_t firstVertex,uint32_t firstInstance); 310 PFN_vkCmdDraw vkCmdDraw; 311 alias PFN_vkCmdDrawIndexed = void function(VkCommandBuffer commandBuffer,uint32_t indexCount,uint32_t instanceCount,uint32_t firstIndex,int32_t vertexOffset,uint32_t firstInstance); 312 PFN_vkCmdDrawIndexed vkCmdDrawIndexed; 313 alias PFN_vkCmdDrawIndirect = void function(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,uint32_t drawCount,uint32_t stride); 314 PFN_vkCmdDrawIndirect vkCmdDrawIndirect; 315 alias PFN_vkCmdDrawIndexedIndirect = void function(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,uint32_t drawCount,uint32_t stride); 316 PFN_vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect; 317 alias PFN_vkCmdDispatch = void function(VkCommandBuffer commandBuffer,uint32_t x,uint32_t y,uint32_t z); 318 PFN_vkCmdDispatch vkCmdDispatch; 319 alias PFN_vkCmdDispatchIndirect = void function(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset); 320 PFN_vkCmdDispatchIndirect vkCmdDispatchIndirect; 321 alias PFN_vkCmdCopyBuffer = void function(VkCommandBuffer commandBuffer,VkBuffer srcBuffer,VkBuffer dstBuffer,uint32_t regionCount,const(VkBufferCopy)* pRegions); 322 PFN_vkCmdCopyBuffer vkCmdCopyBuffer; 323 alias PFN_vkCmdCopyImage = void function(VkCommandBuffer commandBuffer,VkImage srcImage,VkImageLayout srcImageLayout,VkImage dstImage,VkImageLayout dstImageLayout,uint32_t regionCount,const(VkImageCopy)* pRegions); 324 PFN_vkCmdCopyImage vkCmdCopyImage; 325 alias PFN_vkCmdBlitImage = void function(VkCommandBuffer commandBuffer,VkImage srcImage,VkImageLayout srcImageLayout,VkImage dstImage,VkImageLayout dstImageLayout,uint32_t regionCount,const(VkImageBlit)* pRegions,VkFilter filter); 326 PFN_vkCmdBlitImage vkCmdBlitImage; 327 alias PFN_vkCmdCopyBufferToImage = void function(VkCommandBuffer commandBuffer,VkBuffer srcBuffer,VkImage dstImage,VkImageLayout dstImageLayout,uint32_t regionCount,const(VkBufferImageCopy)* pRegions); 328 PFN_vkCmdCopyBufferToImage vkCmdCopyBufferToImage; 329 alias PFN_vkCmdCopyImageToBuffer = void function(VkCommandBuffer commandBuffer,VkImage srcImage,VkImageLayout srcImageLayout,VkBuffer dstBuffer,uint32_t regionCount,const(VkBufferImageCopy)* pRegions); 330 PFN_vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer; 331 alias PFN_vkCmdUpdateBuffer = void function(VkCommandBuffer commandBuffer,VkBuffer dstBuffer,VkDeviceSize dstOffset,VkDeviceSize dataSize,const(uint32_t)* pData); 332 PFN_vkCmdUpdateBuffer vkCmdUpdateBuffer; 333 alias PFN_vkCmdFillBuffer = void function(VkCommandBuffer commandBuffer,VkBuffer dstBuffer,VkDeviceSize dstOffset,VkDeviceSize size,uint32_t data); 334 PFN_vkCmdFillBuffer vkCmdFillBuffer; 335 alias PFN_vkCmdClearColorImage = void function(VkCommandBuffer commandBuffer,VkImage image,VkImageLayout imageLayout,const(VkClearColorValue)* pColor,uint32_t rangeCount,const(VkImageSubresourceRange)* pRanges); 336 PFN_vkCmdClearColorImage vkCmdClearColorImage; 337 alias PFN_vkCmdClearDepthStencilImage = void function(VkCommandBuffer commandBuffer,VkImage image,VkImageLayout imageLayout,const(VkClearDepthStencilValue)* pDepthStencil,uint32_t rangeCount,const(VkImageSubresourceRange)* pRanges); 338 PFN_vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage; 339 alias PFN_vkCmdClearAttachments = void function(VkCommandBuffer commandBuffer,uint32_t attachmentCount,const(VkClearAttachment)* pAttachments,uint32_t rectCount,const(VkClearRect)* pRects); 340 PFN_vkCmdClearAttachments vkCmdClearAttachments; 341 alias PFN_vkCmdResolveImage = void function(VkCommandBuffer commandBuffer,VkImage srcImage,VkImageLayout srcImageLayout,VkImage dstImage,VkImageLayout dstImageLayout,uint32_t regionCount,const(VkImageResolve)* pRegions); 342 PFN_vkCmdResolveImage vkCmdResolveImage; 343 alias PFN_vkCmdSetEvent = void function(VkCommandBuffer commandBuffer,VkEvent event,VkPipelineStageFlags stageMask); 344 PFN_vkCmdSetEvent vkCmdSetEvent; 345 alias PFN_vkCmdResetEvent = void function(VkCommandBuffer commandBuffer,VkEvent event,VkPipelineStageFlags stageMask); 346 PFN_vkCmdResetEvent vkCmdResetEvent; 347 alias PFN_vkCmdWaitEvents = void function(VkCommandBuffer commandBuffer,uint32_t eventCount,const(VkEvent)* pEvents,VkPipelineStageFlags srcStageMask,VkPipelineStageFlags dstStageMask,uint32_t memoryBarrierCount,const(VkMemoryBarrier)* pMemoryBarriers,uint32_t bufferMemoryBarrierCount,const(VkBufferMemoryBarrier)* pBufferMemoryBarriers,uint32_t imageMemoryBarrierCount,const(VkImageMemoryBarrier)* pImageMemoryBarriers); 348 PFN_vkCmdWaitEvents vkCmdWaitEvents; 349 alias PFN_vkCmdPipelineBarrier = void function(VkCommandBuffer commandBuffer,VkPipelineStageFlags srcStageMask,VkPipelineStageFlags dstStageMask,VkDependencyFlags dependencyFlags,uint32_t memoryBarrierCount,const(VkMemoryBarrier)* pMemoryBarriers,uint32_t bufferMemoryBarrierCount,const(VkBufferMemoryBarrier)* pBufferMemoryBarriers,uint32_t imageMemoryBarrierCount,const(VkImageMemoryBarrier)* pImageMemoryBarriers); 350 PFN_vkCmdPipelineBarrier vkCmdPipelineBarrier; 351 alias PFN_vkCmdBeginQuery = void function(VkCommandBuffer commandBuffer,VkQueryPool queryPool,uint32_t query,VkQueryControlFlags flags); 352 PFN_vkCmdBeginQuery vkCmdBeginQuery; 353 alias PFN_vkCmdEndQuery = void function(VkCommandBuffer commandBuffer,VkQueryPool queryPool,uint32_t query); 354 PFN_vkCmdEndQuery vkCmdEndQuery; 355 alias PFN_vkCmdResetQueryPool = void function(VkCommandBuffer commandBuffer,VkQueryPool queryPool,uint32_t firstQuery,uint32_t queryCount); 356 PFN_vkCmdResetQueryPool vkCmdResetQueryPool; 357 alias PFN_vkCmdWriteTimestamp = void function(VkCommandBuffer commandBuffer,VkPipelineStageFlagBits pipelineStage,VkQueryPool queryPool,uint32_t query); 358 PFN_vkCmdWriteTimestamp vkCmdWriteTimestamp; 359 alias PFN_vkCmdCopyQueryPoolResults = void function(VkCommandBuffer commandBuffer,VkQueryPool queryPool,uint32_t firstQuery,uint32_t queryCount,VkBuffer dstBuffer,VkDeviceSize dstOffset,VkDeviceSize stride,VkQueryResultFlags flags); 360 PFN_vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults; 361 alias PFN_vkCmdPushConstants = void function(VkCommandBuffer commandBuffer,VkPipelineLayout layout,VkShaderStageFlags stageFlags,uint32_t offset,uint32_t size,const(void)* pValues); 362 PFN_vkCmdPushConstants vkCmdPushConstants; 363 alias PFN_vkCmdBeginRenderPass = void function(VkCommandBuffer commandBuffer,const(VkRenderPassBeginInfo)* pRenderPassBegin,VkSubpassContents contents); 364 PFN_vkCmdBeginRenderPass vkCmdBeginRenderPass; 365 alias PFN_vkCmdNextSubpass = void function(VkCommandBuffer commandBuffer,VkSubpassContents contents); 366 PFN_vkCmdNextSubpass vkCmdNextSubpass; 367 alias PFN_vkCmdEndRenderPass = void function(VkCommandBuffer commandBuffer); 368 PFN_vkCmdEndRenderPass vkCmdEndRenderPass; 369 alias PFN_vkCmdExecuteCommands = void function(VkCommandBuffer commandBuffer,uint32_t commandBufferCount,const(VkCommandBuffer)* pCommandBuffers); 370 PFN_vkCmdExecuteCommands vkCmdExecuteCommands; 371 } 372 version(DVulkan_VK_KHR_surface) { 373 alias PFN_vkDestroySurfaceKHR = void function(VkInstance instance,VkSurfaceKHR surface,const(VkAllocationCallbacks)* pAllocator); 374 PFN_vkDestroySurfaceKHR vkDestroySurfaceKHR; 375 alias PFN_vkGetPhysicalDeviceSurfaceSupportKHR = VkResult function(VkPhysicalDevice physicalDevice,uint32_t queueFamilyIndex,VkSurfaceKHR surface,VkBool32* pSupported); 376 PFN_vkGetPhysicalDeviceSurfaceSupportKHR vkGetPhysicalDeviceSurfaceSupportKHR; 377 alias PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = VkResult function(VkPhysicalDevice physicalDevice,VkSurfaceKHR surface,VkSurfaceCapabilitiesKHR* pSurfaceCapabilities); 378 PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR vkGetPhysicalDeviceSurfaceCapabilitiesKHR; 379 alias PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = VkResult function(VkPhysicalDevice physicalDevice,VkSurfaceKHR surface,uint32_t* pSurfaceFormatCount,VkSurfaceFormatKHR* pSurfaceFormats); 380 PFN_vkGetPhysicalDeviceSurfaceFormatsKHR vkGetPhysicalDeviceSurfaceFormatsKHR; 381 alias PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = VkResult function(VkPhysicalDevice physicalDevice,VkSurfaceKHR surface,uint32_t* pPresentModeCount,VkPresentModeKHR* pPresentModes); 382 PFN_vkGetPhysicalDeviceSurfacePresentModesKHR vkGetPhysicalDeviceSurfacePresentModesKHR; 383 } 384 version(DVulkan_VK_KHR_swapchain) { 385 alias PFN_vkCreateSwapchainKHR = VkResult function(VkDevice device,const(VkSwapchainCreateInfoKHR)* pCreateInfo,const(VkAllocationCallbacks)* pAllocator,VkSwapchainKHR* pSwapchain); 386 PFN_vkCreateSwapchainKHR vkCreateSwapchainKHR; 387 alias PFN_vkDestroySwapchainKHR = void function(VkDevice device,VkSwapchainKHR swapchain,const(VkAllocationCallbacks)* pAllocator); 388 PFN_vkDestroySwapchainKHR vkDestroySwapchainKHR; 389 alias PFN_vkGetSwapchainImagesKHR = VkResult function(VkDevice device,VkSwapchainKHR swapchain,uint32_t* pSwapchainImageCount,VkImage* pSwapchainImages); 390 PFN_vkGetSwapchainImagesKHR vkGetSwapchainImagesKHR; 391 alias PFN_vkAcquireNextImageKHR = VkResult function(VkDevice device,VkSwapchainKHR swapchain,uint64_t timeout,VkSemaphore semaphore,VkFence fence,uint32_t* pImageIndex); 392 PFN_vkAcquireNextImageKHR vkAcquireNextImageKHR; 393 alias PFN_vkQueuePresentKHR = VkResult function(VkQueue queue,const(VkPresentInfoKHR)* pPresentInfo); 394 PFN_vkQueuePresentKHR vkQueuePresentKHR; 395 } 396 version(DVulkan_VK_KHR_display) { 397 alias PFN_vkGetPhysicalDeviceDisplayPropertiesKHR = VkResult function(VkPhysicalDevice physicalDevice,uint32_t* pPropertyCount,VkDisplayPropertiesKHR* pProperties); 398 PFN_vkGetPhysicalDeviceDisplayPropertiesKHR vkGetPhysicalDeviceDisplayPropertiesKHR; 399 alias PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = VkResult function(VkPhysicalDevice physicalDevice,uint32_t* pPropertyCount,VkDisplayPlanePropertiesKHR* pProperties); 400 PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR vkGetPhysicalDeviceDisplayPlanePropertiesKHR; 401 alias PFN_vkGetDisplayPlaneSupportedDisplaysKHR = VkResult function(VkPhysicalDevice physicalDevice,uint32_t planeIndex,uint32_t* pDisplayCount,VkDisplayKHR* pDisplays); 402 PFN_vkGetDisplayPlaneSupportedDisplaysKHR vkGetDisplayPlaneSupportedDisplaysKHR; 403 alias PFN_vkGetDisplayModePropertiesKHR = VkResult function(VkPhysicalDevice physicalDevice,VkDisplayKHR display,uint32_t* pPropertyCount,VkDisplayModePropertiesKHR* pProperties); 404 PFN_vkGetDisplayModePropertiesKHR vkGetDisplayModePropertiesKHR; 405 alias PFN_vkCreateDisplayModeKHR = VkResult function(VkPhysicalDevice physicalDevice,VkDisplayKHR display,const(VkDisplayModeCreateInfoKHR)* pCreateInfo,const(VkAllocationCallbacks)* pAllocator,VkDisplayModeKHR* pMode); 406 PFN_vkCreateDisplayModeKHR vkCreateDisplayModeKHR; 407 alias PFN_vkGetDisplayPlaneCapabilitiesKHR = VkResult function(VkPhysicalDevice physicalDevice,VkDisplayModeKHR mode,uint32_t planeIndex,VkDisplayPlaneCapabilitiesKHR* pCapabilities); 408 PFN_vkGetDisplayPlaneCapabilitiesKHR vkGetDisplayPlaneCapabilitiesKHR; 409 alias PFN_vkCreateDisplayPlaneSurfaceKHR = VkResult function(VkInstance instance,const(VkDisplaySurfaceCreateInfoKHR)* pCreateInfo,const(VkAllocationCallbacks)* pAllocator,VkSurfaceKHR* pSurface); 410 PFN_vkCreateDisplayPlaneSurfaceKHR vkCreateDisplayPlaneSurfaceKHR; 411 } 412 version(DVulkan_VK_KHR_display_swapchain) { 413 alias PFN_vkCreateSharedSwapchainsKHR = VkResult function(VkDevice device,uint32_t swapchainCount,const(VkSwapchainCreateInfoKHR)* pCreateInfos,const(VkAllocationCallbacks)* pAllocator,VkSwapchainKHR* pSwapchains); 414 PFN_vkCreateSharedSwapchainsKHR vkCreateSharedSwapchainsKHR; 415 } 416 version(DVulkan_VK_EXT_debug_report) { 417 alias PFN_vkCreateDebugReportCallbackEXT = VkResult function(VkInstance instance,const(VkDebugReportCallbackCreateInfoEXT)* pCreateInfo,const(VkAllocationCallbacks)* pAllocator,VkDebugReportCallbackEXT* pCallback); 418 PFN_vkCreateDebugReportCallbackEXT vkCreateDebugReportCallbackEXT; 419 alias PFN_vkDestroyDebugReportCallbackEXT = void function(VkInstance instance,VkDebugReportCallbackEXT callback,const(VkAllocationCallbacks)* pAllocator); 420 PFN_vkDestroyDebugReportCallbackEXT vkDestroyDebugReportCallbackEXT; 421 alias PFN_vkDebugReportMessageEXT = void function(VkInstance instance,VkDebugReportFlagsEXT flags,VkDebugReportObjectTypeEXT objectType,uint64_t object,size_t location,int32_t messageCode,const(char)* pLayerPrefix,const(char)* pMessage); 422 PFN_vkDebugReportMessageEXT vkDebugReportMessageEXT; 423 } 424 version(DVulkan_VK_EXT_debug_marker) { 425 alias PFN_vkDebugMarkerSetObjectTagEXT = VkResult function(VkDevice device,VkDebugMarkerObjectTagInfoEXT* pTagInfo); 426 PFN_vkDebugMarkerSetObjectTagEXT vkDebugMarkerSetObjectTagEXT; 427 alias PFN_vkDebugMarkerSetObjectNameEXT = VkResult function(VkDevice device,VkDebugMarkerObjectNameInfoEXT* pNameInfo); 428 PFN_vkDebugMarkerSetObjectNameEXT vkDebugMarkerSetObjectNameEXT; 429 alias PFN_vkCmdDebugMarkerBeginEXT = void function(VkCommandBuffer commandBuffer,VkDebugMarkerMarkerInfoEXT* pMarkerInfo); 430 PFN_vkCmdDebugMarkerBeginEXT vkCmdDebugMarkerBeginEXT; 431 alias PFN_vkCmdDebugMarkerEndEXT = void function(VkCommandBuffer commandBuffer); 432 PFN_vkCmdDebugMarkerEndEXT vkCmdDebugMarkerEndEXT; 433 alias PFN_vkCmdDebugMarkerInsertEXT = void function(VkCommandBuffer commandBuffer,VkDebugMarkerMarkerInfoEXT* pMarkerInfo); 434 PFN_vkCmdDebugMarkerInsertEXT vkCmdDebugMarkerInsertEXT; 435 } 436 }} 437 438 439 version(DVulkanDerelict) { 440 version(Have_derelict_util) {} 441 else static assert(false, "DVulkanDerelict specified but derelict-util is not available. Add derelict-util to your dependencies."); 442 443 import derelict.util.loader; 444 import derelict.util.system; 445 446 private { 447 version(Windows) 448 enum libNames = "vulkan-1.dll"; 449 else version(linux) 450 enum libNames = "libvulkan.so.1"; 451 else 452 static assert(0,"Need to implement DVulkan libNames for this operating system."); 453 } 454 455 /// Loader using Derelict to load the Vulkan shared library. 456 class DVulkanDerelictLoader : SharedLibLoader { 457 private VulkanFunctions.PFN_vkGetInstanceProcAddr getInstanceProcAddr; 458 this() { 459 super(libNames); 460 } 461 462 protected override void loadSymbols() { 463 bindFunc(cast(void**)&getInstanceProcAddr, "vkGetInstanceProcAddr"); 464 } 465 466 /// Returns initialization function pointers from the shared library. 467 /// See VulkanFunctions.loadInitializationFunctions. 468 VulkanFunctions getInitializationFunctions() { 469 assert(getInstanceProcAddr, "getInitializationFunctions called before library loaded"); 470 VulkanFunctions funcs; 471 funcs.loadInitializationFunctions(getInstanceProcAddr); 472 return funcs; 473 } 474 475 version(DVulkanGlobalFunctions) { 476 /// Loads initialization function pointers from the shared library to the global functions. 477 /// See VulkanFunctions.loadInitializationFunctions. 478 void loadInitializationFunctions() { 479 assert(getInstanceProcAddr, "loadInitializationFunctions called before library loaded"); 480 static import dvulkan.global; 481 dvulkan.global.loadInitializationFunctions(getInstanceProcAddr); 482 } 483 } 484 } 485 486 __gshared DVulkanDerelictLoader DVulkanDerelict; 487 488 shared static this() { 489 DVulkanDerelict = new DVulkanDerelictLoader(); 490 } 491 }