1 module erupted.functions; 2 3 public import erupted.types; 4 5 extern(System) @nogc nothrow { 6 7 // VK_VERSION_1_0 8 alias PFN_vkCreateInstance = VkResult function(const(VkInstanceCreateInfo)* pCreateInfo, const(VkAllocationCallbacks)* pAllocator, VkInstance* pInstance); 9 alias PFN_vkDestroyInstance = void function(VkInstance instance, const(VkAllocationCallbacks)* pAllocator); 10 alias PFN_vkEnumeratePhysicalDevices = VkResult function(VkInstance instance, uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices); 11 alias PFN_vkGetPhysicalDeviceFeatures = void function(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures); 12 alias PFN_vkGetPhysicalDeviceFormatProperties = void function(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties); 13 alias PFN_vkGetPhysicalDeviceImageFormatProperties = VkResult function(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties); 14 alias PFN_vkGetPhysicalDeviceProperties = void function(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties); 15 alias PFN_vkGetPhysicalDeviceQueueFamilyProperties = void function(VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties* pQueueFamilyProperties); 16 alias PFN_vkGetPhysicalDeviceMemoryProperties = void function(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties); 17 alias PFN_vkGetInstanceProcAddr = PFN_vkVoidFunction function(VkInstance instance, const(char)* pName); 18 alias PFN_vkGetDeviceProcAddr = PFN_vkVoidFunction function(VkDevice device, const(char)* pName); 19 alias PFN_vkCreateDevice = VkResult function(VkPhysicalDevice physicalDevice, const(VkDeviceCreateInfo)* pCreateInfo, const(VkAllocationCallbacks)* pAllocator, VkDevice* pDevice); 20 alias PFN_vkDestroyDevice = void function(VkDevice device, const(VkAllocationCallbacks)* pAllocator); 21 alias PFN_vkEnumerateInstanceExtensionProperties = VkResult function(const(char)* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties); 22 alias PFN_vkEnumerateDeviceExtensionProperties = VkResult function(VkPhysicalDevice physicalDevice, const(char)* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties); 23 alias PFN_vkEnumerateInstanceLayerProperties = VkResult function(uint32_t* pPropertyCount, VkLayerProperties* pProperties); 24 alias PFN_vkEnumerateDeviceLayerProperties = VkResult function(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkLayerProperties* pProperties); 25 alias PFN_vkGetDeviceQueue = void function(VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue* pQueue); 26 alias PFN_vkQueueSubmit = VkResult function(VkQueue queue, uint32_t submitCount, const(VkSubmitInfo)* pSubmits, VkFence fence); 27 alias PFN_vkQueueWaitIdle = VkResult function(VkQueue queue); 28 alias PFN_vkDeviceWaitIdle = VkResult function(VkDevice device); 29 alias PFN_vkAllocateMemory = VkResult function(VkDevice device, const(VkMemoryAllocateInfo)* pAllocateInfo, const(VkAllocationCallbacks)* pAllocator, VkDeviceMemory* pMemory); 30 alias PFN_vkFreeMemory = void function(VkDevice device, VkDeviceMemory memory, const(VkAllocationCallbacks)* pAllocator); 31 alias PFN_vkMapMemory = VkResult function(VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData); 32 alias PFN_vkUnmapMemory = void function(VkDevice device, VkDeviceMemory memory); 33 alias PFN_vkFlushMappedMemoryRanges = VkResult function(VkDevice device, uint32_t memoryRangeCount, const(VkMappedMemoryRange)* pMemoryRanges); 34 alias PFN_vkInvalidateMappedMemoryRanges = VkResult function(VkDevice device, uint32_t memoryRangeCount, const(VkMappedMemoryRange)* pMemoryRanges); 35 alias PFN_vkGetDeviceMemoryCommitment = void function(VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes); 36 alias PFN_vkBindBufferMemory = VkResult function(VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset); 37 alias PFN_vkBindImageMemory = VkResult function(VkDevice device, VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset); 38 alias PFN_vkGetBufferMemoryRequirements = void function(VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements); 39 alias PFN_vkGetImageMemoryRequirements = void function(VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements); 40 alias PFN_vkGetImageSparseMemoryRequirements = void function(VkDevice device, VkImage image, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements* pSparseMemoryRequirements); 41 alias PFN_vkGetPhysicalDeviceSparseImageFormatProperties = void function(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pPropertyCount, VkSparseImageFormatProperties* pProperties); 42 alias PFN_vkQueueBindSparse = VkResult function(VkQueue queue, uint32_t bindInfoCount, const(VkBindSparseInfo)* pBindInfo, VkFence fence); 43 alias PFN_vkCreateFence = VkResult function(VkDevice device, const(VkFenceCreateInfo)* pCreateInfo, const(VkAllocationCallbacks)* pAllocator, VkFence* pFence); 44 alias PFN_vkDestroyFence = void function(VkDevice device, VkFence fence, const(VkAllocationCallbacks)* pAllocator); 45 alias PFN_vkResetFences = VkResult function(VkDevice device, uint32_t fenceCount, const(VkFence)* pFences); 46 alias PFN_vkGetFenceStatus = VkResult function(VkDevice device, VkFence fence); 47 alias PFN_vkWaitForFences = VkResult function(VkDevice device, uint32_t fenceCount, const(VkFence)* pFences, VkBool32 waitAll, uint64_t timeout); 48 alias PFN_vkCreateSemaphore = VkResult function(VkDevice device, const(VkSemaphoreCreateInfo)* pCreateInfo, const(VkAllocationCallbacks)* pAllocator, VkSemaphore* pSemaphore); 49 alias PFN_vkDestroySemaphore = void function(VkDevice device, VkSemaphore semaphore, const(VkAllocationCallbacks)* pAllocator); 50 alias PFN_vkCreateEvent = VkResult function(VkDevice device, const(VkEventCreateInfo)* pCreateInfo, const(VkAllocationCallbacks)* pAllocator, VkEvent* pEvent); 51 alias PFN_vkDestroyEvent = void function(VkDevice device, VkEvent event, const(VkAllocationCallbacks)* pAllocator); 52 alias PFN_vkGetEventStatus = VkResult function(VkDevice device, VkEvent event); 53 alias PFN_vkSetEvent = VkResult function(VkDevice device, VkEvent event); 54 alias PFN_vkResetEvent = VkResult function(VkDevice device, VkEvent event); 55 alias PFN_vkCreateQueryPool = VkResult function(VkDevice device, const(VkQueryPoolCreateInfo)* pCreateInfo, const(VkAllocationCallbacks)* pAllocator, VkQueryPool* pQueryPool); 56 alias PFN_vkDestroyQueryPool = void function(VkDevice device, VkQueryPool queryPool, const(VkAllocationCallbacks)* pAllocator); 57 alias PFN_vkGetQueryPoolResults = VkResult function(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, size_t dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags); 58 alias PFN_vkCreateBuffer = VkResult function(VkDevice device, const(VkBufferCreateInfo)* pCreateInfo, const(VkAllocationCallbacks)* pAllocator, VkBuffer* pBuffer); 59 alias PFN_vkDestroyBuffer = void function(VkDevice device, VkBuffer buffer, const(VkAllocationCallbacks)* pAllocator); 60 alias PFN_vkCreateBufferView = VkResult function(VkDevice device, const(VkBufferViewCreateInfo)* pCreateInfo, const(VkAllocationCallbacks)* pAllocator, VkBufferView* pView); 61 alias PFN_vkDestroyBufferView = void function(VkDevice device, VkBufferView bufferView, const(VkAllocationCallbacks)* pAllocator); 62 alias PFN_vkCreateImage = VkResult function(VkDevice device, const(VkImageCreateInfo)* pCreateInfo, const(VkAllocationCallbacks)* pAllocator, VkImage* pImage); 63 alias PFN_vkDestroyImage = void function(VkDevice device, VkImage image, const(VkAllocationCallbacks)* pAllocator); 64 alias PFN_vkGetImageSubresourceLayout = void function(VkDevice device, VkImage image, const(VkImageSubresource)* pSubresource, VkSubresourceLayout* pLayout); 65 alias PFN_vkCreateImageView = VkResult function(VkDevice device, const(VkImageViewCreateInfo)* pCreateInfo, const(VkAllocationCallbacks)* pAllocator, VkImageView* pView); 66 alias PFN_vkDestroyImageView = void function(VkDevice device, VkImageView imageView, const(VkAllocationCallbacks)* pAllocator); 67 alias PFN_vkCreateShaderModule = VkResult function(VkDevice device, const(VkShaderModuleCreateInfo)* pCreateInfo, const(VkAllocationCallbacks)* pAllocator, VkShaderModule* pShaderModule); 68 alias PFN_vkDestroyShaderModule = void function(VkDevice device, VkShaderModule shaderModule, const(VkAllocationCallbacks)* pAllocator); 69 alias PFN_vkCreatePipelineCache = VkResult function(VkDevice device, const(VkPipelineCacheCreateInfo)* pCreateInfo, const(VkAllocationCallbacks)* pAllocator, VkPipelineCache* pPipelineCache); 70 alias PFN_vkDestroyPipelineCache = void function(VkDevice device, VkPipelineCache pipelineCache, const(VkAllocationCallbacks)* pAllocator); 71 alias PFN_vkGetPipelineCacheData = VkResult function(VkDevice device, VkPipelineCache pipelineCache, size_t* pDataSize, void* pData); 72 alias PFN_vkMergePipelineCaches = VkResult function(VkDevice device, VkPipelineCache dstCache, uint32_t srcCacheCount, const(VkPipelineCache)* pSrcCaches); 73 alias PFN_vkCreateGraphicsPipelines = VkResult function(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const(VkGraphicsPipelineCreateInfo)* pCreateInfos, const(VkAllocationCallbacks)* pAllocator, VkPipeline* pPipelines); 74 alias PFN_vkCreateComputePipelines = VkResult function(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const(VkComputePipelineCreateInfo)* pCreateInfos, const(VkAllocationCallbacks)* pAllocator, VkPipeline* pPipelines); 75 alias PFN_vkDestroyPipeline = void function(VkDevice device, VkPipeline pipeline, const(VkAllocationCallbacks)* pAllocator); 76 alias PFN_vkCreatePipelineLayout = VkResult function(VkDevice device, const(VkPipelineLayoutCreateInfo)* pCreateInfo, const(VkAllocationCallbacks)* pAllocator, VkPipelineLayout* pPipelineLayout); 77 alias PFN_vkDestroyPipelineLayout = void function(VkDevice device, VkPipelineLayout pipelineLayout, const(VkAllocationCallbacks)* pAllocator); 78 alias PFN_vkCreateSampler = VkResult function(VkDevice device, const(VkSamplerCreateInfo)* pCreateInfo, const(VkAllocationCallbacks)* pAllocator, VkSampler* pSampler); 79 alias PFN_vkDestroySampler = void function(VkDevice device, VkSampler sampler, const(VkAllocationCallbacks)* pAllocator); 80 alias PFN_vkCreateDescriptorSetLayout = VkResult function(VkDevice device, const(VkDescriptorSetLayoutCreateInfo)* pCreateInfo, const(VkAllocationCallbacks)* pAllocator, VkDescriptorSetLayout* pSetLayout); 81 alias PFN_vkDestroyDescriptorSetLayout = void function(VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const(VkAllocationCallbacks)* pAllocator); 82 alias PFN_vkCreateDescriptorPool = VkResult function(VkDevice device, const(VkDescriptorPoolCreateInfo)* pCreateInfo, const(VkAllocationCallbacks)* pAllocator, VkDescriptorPool* pDescriptorPool); 83 alias PFN_vkDestroyDescriptorPool = void function(VkDevice device, VkDescriptorPool descriptorPool, const(VkAllocationCallbacks)* pAllocator); 84 alias PFN_vkResetDescriptorPool = VkResult function(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags); 85 alias PFN_vkAllocateDescriptorSets = VkResult function(VkDevice device, const(VkDescriptorSetAllocateInfo)* pAllocateInfo, VkDescriptorSet* pDescriptorSets); 86 alias PFN_vkFreeDescriptorSets = VkResult function(VkDevice device, VkDescriptorPool descriptorPool, uint32_t descriptorSetCount, const(VkDescriptorSet)* pDescriptorSets); 87 alias PFN_vkUpdateDescriptorSets = void function(VkDevice device, uint32_t descriptorWriteCount, const(VkWriteDescriptorSet)* pDescriptorWrites, uint32_t descriptorCopyCount, const(VkCopyDescriptorSet)* pDescriptorCopies); 88 alias PFN_vkCreateFramebuffer = VkResult function(VkDevice device, const(VkFramebufferCreateInfo)* pCreateInfo, const(VkAllocationCallbacks)* pAllocator, VkFramebuffer* pFramebuffer); 89 alias PFN_vkDestroyFramebuffer = void function(VkDevice device, VkFramebuffer framebuffer, const(VkAllocationCallbacks)* pAllocator); 90 alias PFN_vkCreateRenderPass = VkResult function(VkDevice device, const(VkRenderPassCreateInfo)* pCreateInfo, const(VkAllocationCallbacks)* pAllocator, VkRenderPass* pRenderPass); 91 alias PFN_vkDestroyRenderPass = void function(VkDevice device, VkRenderPass renderPass, const(VkAllocationCallbacks)* pAllocator); 92 alias PFN_vkGetRenderAreaGranularity = void function(VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity); 93 alias PFN_vkCreateCommandPool = VkResult function(VkDevice device, const(VkCommandPoolCreateInfo)* pCreateInfo, const(VkAllocationCallbacks)* pAllocator, VkCommandPool* pCommandPool); 94 alias PFN_vkDestroyCommandPool = void function(VkDevice device, VkCommandPool commandPool, const(VkAllocationCallbacks)* pAllocator); 95 alias PFN_vkResetCommandPool = VkResult function(VkDevice device, VkCommandPool commandPool, VkCommandPoolResetFlags flags); 96 alias PFN_vkAllocateCommandBuffers = VkResult function(VkDevice device, const(VkCommandBufferAllocateInfo)* pAllocateInfo, VkCommandBuffer* pCommandBuffers); 97 alias PFN_vkFreeCommandBuffers = void function(VkDevice device, VkCommandPool commandPool, uint32_t commandBufferCount, const(VkCommandBuffer)* pCommandBuffers); 98 alias PFN_vkBeginCommandBuffer = VkResult function(VkCommandBuffer commandBuffer, const(VkCommandBufferBeginInfo)* pBeginInfo); 99 alias PFN_vkEndCommandBuffer = VkResult function(VkCommandBuffer commandBuffer); 100 alias PFN_vkResetCommandBuffer = VkResult function(VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags); 101 alias PFN_vkCmdBindPipeline = void function(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline); 102 alias PFN_vkCmdSetViewport = void function(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const(VkViewport)* pViewports); 103 alias PFN_vkCmdSetScissor = void function(VkCommandBuffer commandBuffer, uint32_t firstScissor, uint32_t scissorCount, const(VkRect2D)* pScissors); 104 alias PFN_vkCmdSetLineWidth = void function(VkCommandBuffer commandBuffer, float lineWidth); 105 alias PFN_vkCmdSetDepthBias = void function(VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor); 106 alias PFN_vkCmdSetBlendConstants = void function(VkCommandBuffer commandBuffer, const float[4] blendConstants); 107 alias PFN_vkCmdSetDepthBounds = void function(VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds); 108 alias PFN_vkCmdSetStencilCompareMask = void function(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t compareMask); 109 alias PFN_vkCmdSetStencilWriteMask = void function(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t writeMask); 110 alias PFN_vkCmdSetStencilReference = void function(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t reference); 111 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); 112 alias PFN_vkCmdBindIndexBuffer = void function(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType); 113 alias PFN_vkCmdBindVertexBuffers = void function(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const(VkBuffer)* pBuffers, const(VkDeviceSize)* pOffsets); 114 alias PFN_vkCmdDraw = void function(VkCommandBuffer commandBuffer, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance); 115 alias PFN_vkCmdDrawIndexed = void function(VkCommandBuffer commandBuffer, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance); 116 alias PFN_vkCmdDrawIndirect = void function(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride); 117 alias PFN_vkCmdDrawIndexedIndirect = void function(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride); 118 alias PFN_vkCmdDispatch = void function(VkCommandBuffer commandBuffer, uint32_t x, uint32_t y, uint32_t z); 119 alias PFN_vkCmdDispatchIndirect = void function(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset); 120 alias PFN_vkCmdCopyBuffer = void function(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer, uint32_t regionCount, const(VkBufferCopy)* pRegions); 121 alias PFN_vkCmdCopyImage = void function(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const(VkImageCopy)* pRegions); 122 alias PFN_vkCmdBlitImage = void function(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const(VkImageBlit)* pRegions, VkFilter filter); 123 alias PFN_vkCmdCopyBufferToImage = void function(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const(VkBufferImageCopy)* pRegions); 124 alias PFN_vkCmdCopyImageToBuffer = void function(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, uint32_t regionCount, const(VkBufferImageCopy)* pRegions); 125 alias PFN_vkCmdUpdateBuffer = void function(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const(void)* pData); 126 alias PFN_vkCmdFillBuffer = void function(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, uint32_t data); 127 alias PFN_vkCmdClearColorImage = void function(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const(VkClearColorValue)* pColor, uint32_t rangeCount, const(VkImageSubresourceRange)* pRanges); 128 alias PFN_vkCmdClearDepthStencilImage = void function(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const(VkClearDepthStencilValue)* pDepthStencil, uint32_t rangeCount, const(VkImageSubresourceRange)* pRanges); 129 alias PFN_vkCmdClearAttachments = void function(VkCommandBuffer commandBuffer, uint32_t attachmentCount, const(VkClearAttachment)* pAttachments, uint32_t rectCount, const(VkClearRect)* pRects); 130 alias PFN_vkCmdResolveImage = void function(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const(VkImageResolve)* pRegions); 131 alias PFN_vkCmdSetEvent = void function(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask); 132 alias PFN_vkCmdResetEvent = void function(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask); 133 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); 134 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); 135 alias PFN_vkCmdBeginQuery = void function(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags); 136 alias PFN_vkCmdEndQuery = void function(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query); 137 alias PFN_vkCmdResetQueryPool = void function(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount); 138 alias PFN_vkCmdWriteTimestamp = void function(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t query); 139 alias PFN_vkCmdCopyQueryPoolResults = void function(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags); 140 alias PFN_vkCmdPushConstants = void function(VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const(void)* pValues); 141 alias PFN_vkCmdBeginRenderPass = void function(VkCommandBuffer commandBuffer, const(VkRenderPassBeginInfo)* pRenderPassBegin, VkSubpassContents contents); 142 alias PFN_vkCmdNextSubpass = void function(VkCommandBuffer commandBuffer, VkSubpassContents contents); 143 alias PFN_vkCmdEndRenderPass = void function(VkCommandBuffer commandBuffer); 144 alias PFN_vkCmdExecuteCommands = void function(VkCommandBuffer commandBuffer, uint32_t commandBufferCount, const(VkCommandBuffer)* pCommandBuffers); 145 146 // VK_KHR_surface 147 alias PFN_vkDestroySurfaceKHR = void function(VkInstance instance, VkSurfaceKHR surface, const(VkAllocationCallbacks)* pAllocator); 148 alias PFN_vkGetPhysicalDeviceSurfaceSupportKHR = VkResult function(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported); 149 alias PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = VkResult function(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities); 150 alias PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = VkResult function(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats); 151 alias PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = VkResult function(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes); 152 153 // VK_KHR_swapchain 154 alias PFN_vkCreateSwapchainKHR = VkResult function(VkDevice device, const(VkSwapchainCreateInfoKHR)* pCreateInfo, const(VkAllocationCallbacks)* pAllocator, VkSwapchainKHR* pSwapchain); 155 alias PFN_vkDestroySwapchainKHR = void function(VkDevice device, VkSwapchainKHR swapchain, const(VkAllocationCallbacks)* pAllocator); 156 alias PFN_vkGetSwapchainImagesKHR = VkResult function(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pSwapchainImageCount, VkImage* pSwapchainImages); 157 alias PFN_vkAcquireNextImageKHR = VkResult function(VkDevice device, VkSwapchainKHR swapchain, uint64_t timeout, VkSemaphore semaphore, VkFence fence, uint32_t* pImageIndex); 158 alias PFN_vkQueuePresentKHR = VkResult function(VkQueue queue, const(VkPresentInfoKHR)* pPresentInfo); 159 160 // VK_KHR_display 161 alias PFN_vkGetPhysicalDeviceDisplayPropertiesKHR = VkResult function(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPropertiesKHR* pProperties); 162 alias PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = VkResult function(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties); 163 alias PFN_vkGetDisplayPlaneSupportedDisplaysKHR = VkResult function(VkPhysicalDevice physicalDevice, uint32_t planeIndex, uint32_t* pDisplayCount, VkDisplayKHR* pDisplays); 164 alias PFN_vkGetDisplayModePropertiesKHR = VkResult function(VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModePropertiesKHR* pProperties); 165 alias PFN_vkCreateDisplayModeKHR = VkResult function(VkPhysicalDevice physicalDevice, VkDisplayKHR display, const(VkDisplayModeCreateInfoKHR)* pCreateInfo, const(VkAllocationCallbacks)* pAllocator, VkDisplayModeKHR* pMode); 166 alias PFN_vkGetDisplayPlaneCapabilitiesKHR = VkResult function(VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, uint32_t planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities); 167 alias PFN_vkCreateDisplayPlaneSurfaceKHR = VkResult function(VkInstance instance, const(VkDisplaySurfaceCreateInfoKHR)* pCreateInfo, const(VkAllocationCallbacks)* pAllocator, VkSurfaceKHR* pSurface); 168 169 // VK_KHR_display_swapchain 170 alias PFN_vkCreateSharedSwapchainsKHR = VkResult function(VkDevice device, uint32_t swapchainCount, const(VkSwapchainCreateInfoKHR)* pCreateInfos, const(VkAllocationCallbacks)* pAllocator, VkSwapchainKHR* pSwapchains); 171 172 // VK_KHR_xlib_surface 173 version(VK_USE_PLATFORM_XLIB_KHR) { 174 alias PFN_vkCreateXlibSurfaceKHR = VkResult function(VkInstance instance, const(VkXlibSurfaceCreateInfoKHR)* pCreateInfo, const(VkAllocationCallbacks)* pAllocator, VkSurfaceKHR* pSurface); 175 alias PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR = VkBool32 function(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, Display* dpy, VisualID visualID); 176 } 177 178 // VK_KHR_xcb_surface 179 version(VK_USE_PLATFORM_XCB_KHR) { 180 alias PFN_vkCreateXcbSurfaceKHR = VkResult function(VkInstance instance, const(VkXcbSurfaceCreateInfoKHR)* pCreateInfo, const(VkAllocationCallbacks)* pAllocator, VkSurfaceKHR* pSurface); 181 alias PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR = VkBool32 function(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id); 182 } 183 184 // VK_KHR_wayland_surface 185 version(VK_USE_PLATFORM_WAYLAND_KHR) { 186 alias PFN_vkCreateWaylandSurfaceKHR = VkResult function(VkInstance instance, const(VkWaylandSurfaceCreateInfoKHR)* pCreateInfo, const(VkAllocationCallbacks)* pAllocator, VkSurfaceKHR* pSurface); 187 alias PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR = VkBool32 function(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, wl_display* display); 188 } 189 190 // VK_KHR_mir_surface 191 version(VK_USE_PLATFORM_MIR_KHR) { 192 alias PFN_vkCreateMirSurfaceKHR = VkResult function(VkInstance instance, const(VkMirSurfaceCreateInfoKHR)* pCreateInfo, const(VkAllocationCallbacks)* pAllocator, VkSurfaceKHR* pSurface); 193 alias PFN_vkGetPhysicalDeviceMirPresentationSupportKHR = VkBool32 function(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, MirConnection* connection); 194 } 195 196 // VK_KHR_android_surface 197 version(VK_USE_PLATFORM_ANDROID_KHR) { 198 alias PFN_vkCreateAndroidSurfaceKHR = VkResult function(VkInstance instance, const(VkAndroidSurfaceCreateInfoKHR)* pCreateInfo, const(VkAllocationCallbacks)* pAllocator, VkSurfaceKHR* pSurface); 199 } 200 201 // VK_KHR_win32_surface 202 version(VK_USE_PLATFORM_WIN32_KHR) { 203 alias PFN_vkCreateWin32SurfaceKHR = VkResult function(VkInstance instance, const(VkWin32SurfaceCreateInfoKHR)* pCreateInfo, const(VkAllocationCallbacks)* pAllocator, VkSurfaceKHR* pSurface); 204 alias PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR = VkBool32 function(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex); 205 } 206 207 // VK_EXT_debug_report 208 alias PFN_vkCreateDebugReportCallbackEXT = VkResult function(VkInstance instance, const(VkDebugReportCallbackCreateInfoEXT)* pCreateInfo, const(VkAllocationCallbacks)* pAllocator, VkDebugReportCallbackEXT* pCallback); 209 alias PFN_vkDestroyDebugReportCallbackEXT = void function(VkInstance instance, VkDebugReportCallbackEXT callback, const(VkAllocationCallbacks)* pAllocator); 210 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); 211 212 // VK_EXT_debug_marker 213 alias PFN_vkDebugMarkerSetObjectTagEXT = VkResult function(VkDevice device, VkDebugMarkerObjectTagInfoEXT* pTagInfo); 214 alias PFN_vkDebugMarkerSetObjectNameEXT = VkResult function(VkDevice device, VkDebugMarkerObjectNameInfoEXT* pNameInfo); 215 alias PFN_vkCmdDebugMarkerBeginEXT = void function(VkCommandBuffer commandBuffer, VkDebugMarkerMarkerInfoEXT* pMarkerInfo); 216 alias PFN_vkCmdDebugMarkerEndEXT = void function(VkCommandBuffer commandBuffer); 217 alias PFN_vkCmdDebugMarkerInsertEXT = void function(VkCommandBuffer commandBuffer, VkDebugMarkerMarkerInfoEXT* pMarkerInfo); 218 } 219 220 __gshared { 221 222 // VK_VERSION_1_0 223 PFN_vkCreateInstance vkCreateInstance; 224 PFN_vkDestroyInstance vkDestroyInstance; 225 PFN_vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices; 226 PFN_vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures; 227 PFN_vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties; 228 PFN_vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties; 229 PFN_vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties; 230 PFN_vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties; 231 PFN_vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties; 232 PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr; 233 PFN_vkGetDeviceProcAddr vkGetDeviceProcAddr; 234 PFN_vkCreateDevice vkCreateDevice; 235 PFN_vkDestroyDevice vkDestroyDevice; 236 PFN_vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties; 237 PFN_vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties; 238 PFN_vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties; 239 PFN_vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties; 240 PFN_vkGetDeviceQueue vkGetDeviceQueue; 241 PFN_vkQueueSubmit vkQueueSubmit; 242 PFN_vkQueueWaitIdle vkQueueWaitIdle; 243 PFN_vkDeviceWaitIdle vkDeviceWaitIdle; 244 PFN_vkAllocateMemory vkAllocateMemory; 245 PFN_vkFreeMemory vkFreeMemory; 246 PFN_vkMapMemory vkMapMemory; 247 PFN_vkUnmapMemory vkUnmapMemory; 248 PFN_vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges; 249 PFN_vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges; 250 PFN_vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment; 251 PFN_vkBindBufferMemory vkBindBufferMemory; 252 PFN_vkBindImageMemory vkBindImageMemory; 253 PFN_vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements; 254 PFN_vkGetImageMemoryRequirements vkGetImageMemoryRequirements; 255 PFN_vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements; 256 PFN_vkGetPhysicalDeviceSparseImageFormatProperties vkGetPhysicalDeviceSparseImageFormatProperties; 257 PFN_vkQueueBindSparse vkQueueBindSparse; 258 PFN_vkCreateFence vkCreateFence; 259 PFN_vkDestroyFence vkDestroyFence; 260 PFN_vkResetFences vkResetFences; 261 PFN_vkGetFenceStatus vkGetFenceStatus; 262 PFN_vkWaitForFences vkWaitForFences; 263 PFN_vkCreateSemaphore vkCreateSemaphore; 264 PFN_vkDestroySemaphore vkDestroySemaphore; 265 PFN_vkCreateEvent vkCreateEvent; 266 PFN_vkDestroyEvent vkDestroyEvent; 267 PFN_vkGetEventStatus vkGetEventStatus; 268 PFN_vkSetEvent vkSetEvent; 269 PFN_vkResetEvent vkResetEvent; 270 PFN_vkCreateQueryPool vkCreateQueryPool; 271 PFN_vkDestroyQueryPool vkDestroyQueryPool; 272 PFN_vkGetQueryPoolResults vkGetQueryPoolResults; 273 PFN_vkCreateBuffer vkCreateBuffer; 274 PFN_vkDestroyBuffer vkDestroyBuffer; 275 PFN_vkCreateBufferView vkCreateBufferView; 276 PFN_vkDestroyBufferView vkDestroyBufferView; 277 PFN_vkCreateImage vkCreateImage; 278 PFN_vkDestroyImage vkDestroyImage; 279 PFN_vkGetImageSubresourceLayout vkGetImageSubresourceLayout; 280 PFN_vkCreateImageView vkCreateImageView; 281 PFN_vkDestroyImageView vkDestroyImageView; 282 PFN_vkCreateShaderModule vkCreateShaderModule; 283 PFN_vkDestroyShaderModule vkDestroyShaderModule; 284 PFN_vkCreatePipelineCache vkCreatePipelineCache; 285 PFN_vkDestroyPipelineCache vkDestroyPipelineCache; 286 PFN_vkGetPipelineCacheData vkGetPipelineCacheData; 287 PFN_vkMergePipelineCaches vkMergePipelineCaches; 288 PFN_vkCreateGraphicsPipelines vkCreateGraphicsPipelines; 289 PFN_vkCreateComputePipelines vkCreateComputePipelines; 290 PFN_vkDestroyPipeline vkDestroyPipeline; 291 PFN_vkCreatePipelineLayout vkCreatePipelineLayout; 292 PFN_vkDestroyPipelineLayout vkDestroyPipelineLayout; 293 PFN_vkCreateSampler vkCreateSampler; 294 PFN_vkDestroySampler vkDestroySampler; 295 PFN_vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout; 296 PFN_vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout; 297 PFN_vkCreateDescriptorPool vkCreateDescriptorPool; 298 PFN_vkDestroyDescriptorPool vkDestroyDescriptorPool; 299 PFN_vkResetDescriptorPool vkResetDescriptorPool; 300 PFN_vkAllocateDescriptorSets vkAllocateDescriptorSets; 301 PFN_vkFreeDescriptorSets vkFreeDescriptorSets; 302 PFN_vkUpdateDescriptorSets vkUpdateDescriptorSets; 303 PFN_vkCreateFramebuffer vkCreateFramebuffer; 304 PFN_vkDestroyFramebuffer vkDestroyFramebuffer; 305 PFN_vkCreateRenderPass vkCreateRenderPass; 306 PFN_vkDestroyRenderPass vkDestroyRenderPass; 307 PFN_vkGetRenderAreaGranularity vkGetRenderAreaGranularity; 308 PFN_vkCreateCommandPool vkCreateCommandPool; 309 PFN_vkDestroyCommandPool vkDestroyCommandPool; 310 PFN_vkResetCommandPool vkResetCommandPool; 311 PFN_vkAllocateCommandBuffers vkAllocateCommandBuffers; 312 PFN_vkFreeCommandBuffers vkFreeCommandBuffers; 313 PFN_vkBeginCommandBuffer vkBeginCommandBuffer; 314 PFN_vkEndCommandBuffer vkEndCommandBuffer; 315 PFN_vkResetCommandBuffer vkResetCommandBuffer; 316 PFN_vkCmdBindPipeline vkCmdBindPipeline; 317 PFN_vkCmdSetViewport vkCmdSetViewport; 318 PFN_vkCmdSetScissor vkCmdSetScissor; 319 PFN_vkCmdSetLineWidth vkCmdSetLineWidth; 320 PFN_vkCmdSetDepthBias vkCmdSetDepthBias; 321 PFN_vkCmdSetBlendConstants vkCmdSetBlendConstants; 322 PFN_vkCmdSetDepthBounds vkCmdSetDepthBounds; 323 PFN_vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask; 324 PFN_vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask; 325 PFN_vkCmdSetStencilReference vkCmdSetStencilReference; 326 PFN_vkCmdBindDescriptorSets vkCmdBindDescriptorSets; 327 PFN_vkCmdBindIndexBuffer vkCmdBindIndexBuffer; 328 PFN_vkCmdBindVertexBuffers vkCmdBindVertexBuffers; 329 PFN_vkCmdDraw vkCmdDraw; 330 PFN_vkCmdDrawIndexed vkCmdDrawIndexed; 331 PFN_vkCmdDrawIndirect vkCmdDrawIndirect; 332 PFN_vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect; 333 PFN_vkCmdDispatch vkCmdDispatch; 334 PFN_vkCmdDispatchIndirect vkCmdDispatchIndirect; 335 PFN_vkCmdCopyBuffer vkCmdCopyBuffer; 336 PFN_vkCmdCopyImage vkCmdCopyImage; 337 PFN_vkCmdBlitImage vkCmdBlitImage; 338 PFN_vkCmdCopyBufferToImage vkCmdCopyBufferToImage; 339 PFN_vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer; 340 PFN_vkCmdUpdateBuffer vkCmdUpdateBuffer; 341 PFN_vkCmdFillBuffer vkCmdFillBuffer; 342 PFN_vkCmdClearColorImage vkCmdClearColorImage; 343 PFN_vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage; 344 PFN_vkCmdClearAttachments vkCmdClearAttachments; 345 PFN_vkCmdResolveImage vkCmdResolveImage; 346 PFN_vkCmdSetEvent vkCmdSetEvent; 347 PFN_vkCmdResetEvent vkCmdResetEvent; 348 PFN_vkCmdWaitEvents vkCmdWaitEvents; 349 PFN_vkCmdPipelineBarrier vkCmdPipelineBarrier; 350 PFN_vkCmdBeginQuery vkCmdBeginQuery; 351 PFN_vkCmdEndQuery vkCmdEndQuery; 352 PFN_vkCmdResetQueryPool vkCmdResetQueryPool; 353 PFN_vkCmdWriteTimestamp vkCmdWriteTimestamp; 354 PFN_vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults; 355 PFN_vkCmdPushConstants vkCmdPushConstants; 356 PFN_vkCmdBeginRenderPass vkCmdBeginRenderPass; 357 PFN_vkCmdNextSubpass vkCmdNextSubpass; 358 PFN_vkCmdEndRenderPass vkCmdEndRenderPass; 359 PFN_vkCmdExecuteCommands vkCmdExecuteCommands; 360 361 // VK_KHR_surface 362 PFN_vkDestroySurfaceKHR vkDestroySurfaceKHR; 363 PFN_vkGetPhysicalDeviceSurfaceSupportKHR vkGetPhysicalDeviceSurfaceSupportKHR; 364 PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR vkGetPhysicalDeviceSurfaceCapabilitiesKHR; 365 PFN_vkGetPhysicalDeviceSurfaceFormatsKHR vkGetPhysicalDeviceSurfaceFormatsKHR; 366 PFN_vkGetPhysicalDeviceSurfacePresentModesKHR vkGetPhysicalDeviceSurfacePresentModesKHR; 367 368 // VK_KHR_swapchain 369 PFN_vkCreateSwapchainKHR vkCreateSwapchainKHR; 370 PFN_vkDestroySwapchainKHR vkDestroySwapchainKHR; 371 PFN_vkGetSwapchainImagesKHR vkGetSwapchainImagesKHR; 372 PFN_vkAcquireNextImageKHR vkAcquireNextImageKHR; 373 PFN_vkQueuePresentKHR vkQueuePresentKHR; 374 375 // VK_KHR_display 376 PFN_vkGetPhysicalDeviceDisplayPropertiesKHR vkGetPhysicalDeviceDisplayPropertiesKHR; 377 PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR vkGetPhysicalDeviceDisplayPlanePropertiesKHR; 378 PFN_vkGetDisplayPlaneSupportedDisplaysKHR vkGetDisplayPlaneSupportedDisplaysKHR; 379 PFN_vkGetDisplayModePropertiesKHR vkGetDisplayModePropertiesKHR; 380 PFN_vkCreateDisplayModeKHR vkCreateDisplayModeKHR; 381 PFN_vkGetDisplayPlaneCapabilitiesKHR vkGetDisplayPlaneCapabilitiesKHR; 382 PFN_vkCreateDisplayPlaneSurfaceKHR vkCreateDisplayPlaneSurfaceKHR; 383 384 // VK_KHR_display_swapchain 385 PFN_vkCreateSharedSwapchainsKHR vkCreateSharedSwapchainsKHR; 386 387 // VK_KHR_xlib_surface 388 version(VK_USE_PLATFORM_XLIB_KHR) { 389 PFN_vkCreateXlibSurfaceKHR vkCreateXlibSurfaceKHR; 390 PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR vkGetPhysicalDeviceXlibPresentationSupportKHR; 391 } 392 393 // VK_KHR_xcb_surface 394 version(VK_USE_PLATFORM_XCB_KHR) { 395 PFN_vkCreateXcbSurfaceKHR vkCreateXcbSurfaceKHR; 396 PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR vkGetPhysicalDeviceXcbPresentationSupportKHR; 397 } 398 399 // VK_KHR_wayland_surface 400 version(VK_USE_PLATFORM_WAYLAND_KHR) { 401 PFN_vkCreateWaylandSurfaceKHR vkCreateWaylandSurfaceKHR; 402 PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR vkGetPhysicalDeviceWaylandPresentationSupportKHR; 403 } 404 405 // VK_KHR_mir_surface 406 version(VK_USE_PLATFORM_MIR_KHR) { 407 PFN_vkCreateMirSurfaceKHR vkCreateMirSurfaceKHR; 408 PFN_vkGetPhysicalDeviceMirPresentationSupportKHR vkGetPhysicalDeviceMirPresentationSupportKHR; 409 } 410 411 // VK_KHR_android_surface 412 version(VK_USE_PLATFORM_ANDROID_KHR) { 413 PFN_vkCreateAndroidSurfaceKHR vkCreateAndroidSurfaceKHR; 414 } 415 416 // VK_KHR_win32_surface 417 version(VK_USE_PLATFORM_WIN32_KHR) { 418 PFN_vkCreateWin32SurfaceKHR vkCreateWin32SurfaceKHR; 419 PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR vkGetPhysicalDeviceWin32PresentationSupportKHR; 420 } 421 422 // VK_EXT_debug_report 423 PFN_vkCreateDebugReportCallbackEXT vkCreateDebugReportCallbackEXT; 424 PFN_vkDestroyDebugReportCallbackEXT vkDestroyDebugReportCallbackEXT; 425 PFN_vkDebugReportMessageEXT vkDebugReportMessageEXT; 426 427 // VK_EXT_debug_marker 428 PFN_vkDebugMarkerSetObjectTagEXT vkDebugMarkerSetObjectTagEXT; 429 PFN_vkDebugMarkerSetObjectNameEXT vkDebugMarkerSetObjectNameEXT; 430 PFN_vkCmdDebugMarkerBeginEXT vkCmdDebugMarkerBeginEXT; 431 PFN_vkCmdDebugMarkerEndEXT vkCmdDebugMarkerEndEXT; 432 PFN_vkCmdDebugMarkerInsertEXT vkCmdDebugMarkerInsertEXT; 433 } 434 435 /// if not using version "with-derelict-loader" this function must be called first 436 /// sets vkCreateInstance function pointer and acquires basic functions to retrieve information about the implementation 437 void loadGlobalLevelFunctions(typeof(vkGetInstanceProcAddr) getProcAddr) { 438 vkGetInstanceProcAddr = getProcAddr; 439 vkEnumerateInstanceExtensionProperties = cast(typeof(vkEnumerateInstanceExtensionProperties)) vkGetInstanceProcAddr(null, "vkEnumerateInstanceExtensionProperties"); 440 vkEnumerateInstanceLayerProperties = cast(typeof(vkEnumerateInstanceLayerProperties)) vkGetInstanceProcAddr(null, "vkEnumerateInstanceLayerProperties"); 441 vkCreateInstance = cast(typeof(vkCreateInstance)) vkGetInstanceProcAddr(null, "vkCreateInstance"); 442 } 443 444 /// with a valid VkInstance call this function to retrieve additional VkInstance, VkPhysicalDevice, ... related functions 445 void loadInstanceLevelFunctions(VkInstance instance) { 446 assert(vkGetInstanceProcAddr !is null, "Must call loadGlobalLevelFunctions before loadInstanceLevelFunctions"); 447 448 // VK_VERSION_1_0 449 vkDestroyInstance = cast(typeof(vkDestroyInstance)) vkGetInstanceProcAddr(instance, "vkDestroyInstance"); 450 vkEnumeratePhysicalDevices = cast(typeof(vkEnumeratePhysicalDevices)) vkGetInstanceProcAddr(instance, "vkEnumeratePhysicalDevices"); 451 vkGetPhysicalDeviceFeatures = cast(typeof(vkGetPhysicalDeviceFeatures)) vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceFeatures"); 452 vkGetPhysicalDeviceFormatProperties = cast(typeof(vkGetPhysicalDeviceFormatProperties)) vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceFormatProperties"); 453 vkGetPhysicalDeviceImageFormatProperties = cast(typeof(vkGetPhysicalDeviceImageFormatProperties)) vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceImageFormatProperties"); 454 vkGetPhysicalDeviceProperties = cast(typeof(vkGetPhysicalDeviceProperties)) vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceProperties"); 455 vkGetPhysicalDeviceQueueFamilyProperties = cast(typeof(vkGetPhysicalDeviceQueueFamilyProperties)) vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceQueueFamilyProperties"); 456 vkGetPhysicalDeviceMemoryProperties = cast(typeof(vkGetPhysicalDeviceMemoryProperties)) vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceMemoryProperties"); 457 vkGetDeviceProcAddr = cast(typeof(vkGetDeviceProcAddr)) vkGetInstanceProcAddr(instance, "vkGetDeviceProcAddr"); 458 vkCreateDevice = cast(typeof(vkCreateDevice)) vkGetInstanceProcAddr(instance, "vkCreateDevice"); 459 vkEnumerateDeviceExtensionProperties = cast(typeof(vkEnumerateDeviceExtensionProperties)) vkGetInstanceProcAddr(instance, "vkEnumerateDeviceExtensionProperties"); 460 vkEnumerateDeviceLayerProperties = cast(typeof(vkEnumerateDeviceLayerProperties)) vkGetInstanceProcAddr(instance, "vkEnumerateDeviceLayerProperties"); 461 vkGetPhysicalDeviceSparseImageFormatProperties = cast(typeof(vkGetPhysicalDeviceSparseImageFormatProperties)) vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceSparseImageFormatProperties"); 462 463 // VK_KHR_surface 464 vkDestroySurfaceKHR = cast(typeof(vkDestroySurfaceKHR)) vkGetInstanceProcAddr(instance, "vkDestroySurfaceKHR"); 465 vkGetPhysicalDeviceSurfaceSupportKHR = cast(typeof(vkGetPhysicalDeviceSurfaceSupportKHR)) vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceSurfaceSupportKHR"); 466 vkGetPhysicalDeviceSurfaceCapabilitiesKHR = cast(typeof(vkGetPhysicalDeviceSurfaceCapabilitiesKHR)) vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"); 467 vkGetPhysicalDeviceSurfaceFormatsKHR = cast(typeof(vkGetPhysicalDeviceSurfaceFormatsKHR)) vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceSurfaceFormatsKHR"); 468 vkGetPhysicalDeviceSurfacePresentModesKHR = cast(typeof(vkGetPhysicalDeviceSurfacePresentModesKHR)) vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceSurfacePresentModesKHR"); 469 470 // VK_KHR_display 471 vkGetPhysicalDeviceDisplayPropertiesKHR = cast(typeof(vkGetPhysicalDeviceDisplayPropertiesKHR)) vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceDisplayPropertiesKHR"); 472 vkGetPhysicalDeviceDisplayPlanePropertiesKHR = cast(typeof(vkGetPhysicalDeviceDisplayPlanePropertiesKHR)) vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"); 473 vkGetDisplayPlaneSupportedDisplaysKHR = cast(typeof(vkGetDisplayPlaneSupportedDisplaysKHR)) vkGetInstanceProcAddr(instance, "vkGetDisplayPlaneSupportedDisplaysKHR"); 474 vkGetDisplayModePropertiesKHR = cast(typeof(vkGetDisplayModePropertiesKHR)) vkGetInstanceProcAddr(instance, "vkGetDisplayModePropertiesKHR"); 475 vkCreateDisplayModeKHR = cast(typeof(vkCreateDisplayModeKHR)) vkGetInstanceProcAddr(instance, "vkCreateDisplayModeKHR"); 476 vkGetDisplayPlaneCapabilitiesKHR = cast(typeof(vkGetDisplayPlaneCapabilitiesKHR)) vkGetInstanceProcAddr(instance, "vkGetDisplayPlaneCapabilitiesKHR"); 477 vkCreateDisplayPlaneSurfaceKHR = cast(typeof(vkCreateDisplayPlaneSurfaceKHR)) vkGetInstanceProcAddr(instance, "vkCreateDisplayPlaneSurfaceKHR"); 478 479 // VK_KHR_xlib_surface 480 version(VK_USE_PLATFORM_XLIB_KHR) { 481 vkCreateXlibSurfaceKHR = cast(typeof(vkCreateXlibSurfaceKHR)) vkGetInstanceProcAddr(instance, "vkCreateXlibSurfaceKHR"); 482 vkGetPhysicalDeviceXlibPresentationSupportKHR = cast(typeof(vkGetPhysicalDeviceXlibPresentationSupportKHR)) vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceXlibPresentationSupportKHR"); 483 } 484 485 // VK_KHR_xcb_surface 486 version(VK_USE_PLATFORM_XCB_KHR) { 487 vkCreateXcbSurfaceKHR = cast(typeof(vkCreateXcbSurfaceKHR)) vkGetInstanceProcAddr(instance, "vkCreateXcbSurfaceKHR"); 488 vkGetPhysicalDeviceXcbPresentationSupportKHR = cast(typeof(vkGetPhysicalDeviceXcbPresentationSupportKHR)) vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceXcbPresentationSupportKHR"); 489 } 490 491 // VK_KHR_wayland_surface 492 version(VK_USE_PLATFORM_WAYLAND_KHR) { 493 vkCreateWaylandSurfaceKHR = cast(typeof(vkCreateWaylandSurfaceKHR)) vkGetInstanceProcAddr(instance, "vkCreateWaylandSurfaceKHR"); 494 vkGetPhysicalDeviceWaylandPresentationSupportKHR = cast(typeof(vkGetPhysicalDeviceWaylandPresentationSupportKHR)) vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"); 495 } 496 497 // VK_KHR_mir_surface 498 version(VK_USE_PLATFORM_MIR_KHR) { 499 vkCreateMirSurfaceKHR = cast(typeof(vkCreateMirSurfaceKHR)) vkGetInstanceProcAddr(instance, "vkCreateMirSurfaceKHR"); 500 vkGetPhysicalDeviceMirPresentationSupportKHR = cast(typeof(vkGetPhysicalDeviceMirPresentationSupportKHR)) vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceMirPresentationSupportKHR"); 501 } 502 503 // VK_KHR_android_surface 504 version(VK_USE_PLATFORM_ANDROID_KHR) { 505 vkCreateAndroidSurfaceKHR = cast(typeof(vkCreateAndroidSurfaceKHR)) vkGetInstanceProcAddr(instance, "vkCreateAndroidSurfaceKHR"); 506 } 507 508 // VK_KHR_win32_surface 509 version(VK_USE_PLATFORM_WIN32_KHR) { 510 vkCreateWin32SurfaceKHR = cast(typeof(vkCreateWin32SurfaceKHR)) vkGetInstanceProcAddr(instance, "vkCreateWin32SurfaceKHR"); 511 vkGetPhysicalDeviceWin32PresentationSupportKHR = cast(typeof(vkGetPhysicalDeviceWin32PresentationSupportKHR)) vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceWin32PresentationSupportKHR"); 512 } 513 514 // VK_EXT_debug_report 515 vkCreateDebugReportCallbackEXT = cast(typeof(vkCreateDebugReportCallbackEXT)) vkGetInstanceProcAddr(instance, "vkCreateDebugReportCallbackEXT"); 516 vkDestroyDebugReportCallbackEXT = cast(typeof(vkDestroyDebugReportCallbackEXT)) vkGetInstanceProcAddr(instance, "vkDestroyDebugReportCallbackEXT"); 517 vkDebugReportMessageEXT = cast(typeof(vkDebugReportMessageEXT)) vkGetInstanceProcAddr(instance, "vkDebugReportMessageEXT");} 518 519 /// with a valid VkInstance call this function to retrieve VkDevice, VkQueue and VkCommandBuffer related functions 520 /// the functions call indirectly through the VkInstance and will be internally dispatched by the implementation 521 /// use loadDeviceLevelFunctions(VkDevice device) bellow to avoid this indirection and get the pointers directly form a VkDevice 522 void loadDeviceLevelFunctions(VkInstance instance) { 523 assert(vkGetInstanceProcAddr !is null, "Must call loadInstanceLevelFunctions before loadDeviceLevelFunctions"); 524 525 // VK_VERSION_1_0 526 vkDestroyDevice = cast(typeof(vkDestroyDevice)) vkGetInstanceProcAddr(instance, "vkDestroyDevice"); 527 vkGetDeviceQueue = cast(typeof(vkGetDeviceQueue)) vkGetInstanceProcAddr(instance, "vkGetDeviceQueue"); 528 vkQueueSubmit = cast(typeof(vkQueueSubmit)) vkGetInstanceProcAddr(instance, "vkQueueSubmit"); 529 vkQueueWaitIdle = cast(typeof(vkQueueWaitIdle)) vkGetInstanceProcAddr(instance, "vkQueueWaitIdle"); 530 vkDeviceWaitIdle = cast(typeof(vkDeviceWaitIdle)) vkGetInstanceProcAddr(instance, "vkDeviceWaitIdle"); 531 vkAllocateMemory = cast(typeof(vkAllocateMemory)) vkGetInstanceProcAddr(instance, "vkAllocateMemory"); 532 vkFreeMemory = cast(typeof(vkFreeMemory)) vkGetInstanceProcAddr(instance, "vkFreeMemory"); 533 vkMapMemory = cast(typeof(vkMapMemory)) vkGetInstanceProcAddr(instance, "vkMapMemory"); 534 vkUnmapMemory = cast(typeof(vkUnmapMemory)) vkGetInstanceProcAddr(instance, "vkUnmapMemory"); 535 vkFlushMappedMemoryRanges = cast(typeof(vkFlushMappedMemoryRanges)) vkGetInstanceProcAddr(instance, "vkFlushMappedMemoryRanges"); 536 vkInvalidateMappedMemoryRanges = cast(typeof(vkInvalidateMappedMemoryRanges)) vkGetInstanceProcAddr(instance, "vkInvalidateMappedMemoryRanges"); 537 vkGetDeviceMemoryCommitment = cast(typeof(vkGetDeviceMemoryCommitment)) vkGetInstanceProcAddr(instance, "vkGetDeviceMemoryCommitment"); 538 vkBindBufferMemory = cast(typeof(vkBindBufferMemory)) vkGetInstanceProcAddr(instance, "vkBindBufferMemory"); 539 vkBindImageMemory = cast(typeof(vkBindImageMemory)) vkGetInstanceProcAddr(instance, "vkBindImageMemory"); 540 vkGetBufferMemoryRequirements = cast(typeof(vkGetBufferMemoryRequirements)) vkGetInstanceProcAddr(instance, "vkGetBufferMemoryRequirements"); 541 vkGetImageMemoryRequirements = cast(typeof(vkGetImageMemoryRequirements)) vkGetInstanceProcAddr(instance, "vkGetImageMemoryRequirements"); 542 vkGetImageSparseMemoryRequirements = cast(typeof(vkGetImageSparseMemoryRequirements)) vkGetInstanceProcAddr(instance, "vkGetImageSparseMemoryRequirements"); 543 vkQueueBindSparse = cast(typeof(vkQueueBindSparse)) vkGetInstanceProcAddr(instance, "vkQueueBindSparse"); 544 vkCreateFence = cast(typeof(vkCreateFence)) vkGetInstanceProcAddr(instance, "vkCreateFence"); 545 vkDestroyFence = cast(typeof(vkDestroyFence)) vkGetInstanceProcAddr(instance, "vkDestroyFence"); 546 vkResetFences = cast(typeof(vkResetFences)) vkGetInstanceProcAddr(instance, "vkResetFences"); 547 vkGetFenceStatus = cast(typeof(vkGetFenceStatus)) vkGetInstanceProcAddr(instance, "vkGetFenceStatus"); 548 vkWaitForFences = cast(typeof(vkWaitForFences)) vkGetInstanceProcAddr(instance, "vkWaitForFences"); 549 vkCreateSemaphore = cast(typeof(vkCreateSemaphore)) vkGetInstanceProcAddr(instance, "vkCreateSemaphore"); 550 vkDestroySemaphore = cast(typeof(vkDestroySemaphore)) vkGetInstanceProcAddr(instance, "vkDestroySemaphore"); 551 vkCreateEvent = cast(typeof(vkCreateEvent)) vkGetInstanceProcAddr(instance, "vkCreateEvent"); 552 vkDestroyEvent = cast(typeof(vkDestroyEvent)) vkGetInstanceProcAddr(instance, "vkDestroyEvent"); 553 vkGetEventStatus = cast(typeof(vkGetEventStatus)) vkGetInstanceProcAddr(instance, "vkGetEventStatus"); 554 vkSetEvent = cast(typeof(vkSetEvent)) vkGetInstanceProcAddr(instance, "vkSetEvent"); 555 vkResetEvent = cast(typeof(vkResetEvent)) vkGetInstanceProcAddr(instance, "vkResetEvent"); 556 vkCreateQueryPool = cast(typeof(vkCreateQueryPool)) vkGetInstanceProcAddr(instance, "vkCreateQueryPool"); 557 vkDestroyQueryPool = cast(typeof(vkDestroyQueryPool)) vkGetInstanceProcAddr(instance, "vkDestroyQueryPool"); 558 vkGetQueryPoolResults = cast(typeof(vkGetQueryPoolResults)) vkGetInstanceProcAddr(instance, "vkGetQueryPoolResults"); 559 vkCreateBuffer = cast(typeof(vkCreateBuffer)) vkGetInstanceProcAddr(instance, "vkCreateBuffer"); 560 vkDestroyBuffer = cast(typeof(vkDestroyBuffer)) vkGetInstanceProcAddr(instance, "vkDestroyBuffer"); 561 vkCreateBufferView = cast(typeof(vkCreateBufferView)) vkGetInstanceProcAddr(instance, "vkCreateBufferView"); 562 vkDestroyBufferView = cast(typeof(vkDestroyBufferView)) vkGetInstanceProcAddr(instance, "vkDestroyBufferView"); 563 vkCreateImage = cast(typeof(vkCreateImage)) vkGetInstanceProcAddr(instance, "vkCreateImage"); 564 vkDestroyImage = cast(typeof(vkDestroyImage)) vkGetInstanceProcAddr(instance, "vkDestroyImage"); 565 vkGetImageSubresourceLayout = cast(typeof(vkGetImageSubresourceLayout)) vkGetInstanceProcAddr(instance, "vkGetImageSubresourceLayout"); 566 vkCreateImageView = cast(typeof(vkCreateImageView)) vkGetInstanceProcAddr(instance, "vkCreateImageView"); 567 vkDestroyImageView = cast(typeof(vkDestroyImageView)) vkGetInstanceProcAddr(instance, "vkDestroyImageView"); 568 vkCreateShaderModule = cast(typeof(vkCreateShaderModule)) vkGetInstanceProcAddr(instance, "vkCreateShaderModule"); 569 vkDestroyShaderModule = cast(typeof(vkDestroyShaderModule)) vkGetInstanceProcAddr(instance, "vkDestroyShaderModule"); 570 vkCreatePipelineCache = cast(typeof(vkCreatePipelineCache)) vkGetInstanceProcAddr(instance, "vkCreatePipelineCache"); 571 vkDestroyPipelineCache = cast(typeof(vkDestroyPipelineCache)) vkGetInstanceProcAddr(instance, "vkDestroyPipelineCache"); 572 vkGetPipelineCacheData = cast(typeof(vkGetPipelineCacheData)) vkGetInstanceProcAddr(instance, "vkGetPipelineCacheData"); 573 vkMergePipelineCaches = cast(typeof(vkMergePipelineCaches)) vkGetInstanceProcAddr(instance, "vkMergePipelineCaches"); 574 vkCreateGraphicsPipelines = cast(typeof(vkCreateGraphicsPipelines)) vkGetInstanceProcAddr(instance, "vkCreateGraphicsPipelines"); 575 vkCreateComputePipelines = cast(typeof(vkCreateComputePipelines)) vkGetInstanceProcAddr(instance, "vkCreateComputePipelines"); 576 vkDestroyPipeline = cast(typeof(vkDestroyPipeline)) vkGetInstanceProcAddr(instance, "vkDestroyPipeline"); 577 vkCreatePipelineLayout = cast(typeof(vkCreatePipelineLayout)) vkGetInstanceProcAddr(instance, "vkCreatePipelineLayout"); 578 vkDestroyPipelineLayout = cast(typeof(vkDestroyPipelineLayout)) vkGetInstanceProcAddr(instance, "vkDestroyPipelineLayout"); 579 vkCreateSampler = cast(typeof(vkCreateSampler)) vkGetInstanceProcAddr(instance, "vkCreateSampler"); 580 vkDestroySampler = cast(typeof(vkDestroySampler)) vkGetInstanceProcAddr(instance, "vkDestroySampler"); 581 vkCreateDescriptorSetLayout = cast(typeof(vkCreateDescriptorSetLayout)) vkGetInstanceProcAddr(instance, "vkCreateDescriptorSetLayout"); 582 vkDestroyDescriptorSetLayout = cast(typeof(vkDestroyDescriptorSetLayout)) vkGetInstanceProcAddr(instance, "vkDestroyDescriptorSetLayout"); 583 vkCreateDescriptorPool = cast(typeof(vkCreateDescriptorPool)) vkGetInstanceProcAddr(instance, "vkCreateDescriptorPool"); 584 vkDestroyDescriptorPool = cast(typeof(vkDestroyDescriptorPool)) vkGetInstanceProcAddr(instance, "vkDestroyDescriptorPool"); 585 vkResetDescriptorPool = cast(typeof(vkResetDescriptorPool)) vkGetInstanceProcAddr(instance, "vkResetDescriptorPool"); 586 vkAllocateDescriptorSets = cast(typeof(vkAllocateDescriptorSets)) vkGetInstanceProcAddr(instance, "vkAllocateDescriptorSets"); 587 vkFreeDescriptorSets = cast(typeof(vkFreeDescriptorSets)) vkGetInstanceProcAddr(instance, "vkFreeDescriptorSets"); 588 vkUpdateDescriptorSets = cast(typeof(vkUpdateDescriptorSets)) vkGetInstanceProcAddr(instance, "vkUpdateDescriptorSets"); 589 vkCreateFramebuffer = cast(typeof(vkCreateFramebuffer)) vkGetInstanceProcAddr(instance, "vkCreateFramebuffer"); 590 vkDestroyFramebuffer = cast(typeof(vkDestroyFramebuffer)) vkGetInstanceProcAddr(instance, "vkDestroyFramebuffer"); 591 vkCreateRenderPass = cast(typeof(vkCreateRenderPass)) vkGetInstanceProcAddr(instance, "vkCreateRenderPass"); 592 vkDestroyRenderPass = cast(typeof(vkDestroyRenderPass)) vkGetInstanceProcAddr(instance, "vkDestroyRenderPass"); 593 vkGetRenderAreaGranularity = cast(typeof(vkGetRenderAreaGranularity)) vkGetInstanceProcAddr(instance, "vkGetRenderAreaGranularity"); 594 vkCreateCommandPool = cast(typeof(vkCreateCommandPool)) vkGetInstanceProcAddr(instance, "vkCreateCommandPool"); 595 vkDestroyCommandPool = cast(typeof(vkDestroyCommandPool)) vkGetInstanceProcAddr(instance, "vkDestroyCommandPool"); 596 vkResetCommandPool = cast(typeof(vkResetCommandPool)) vkGetInstanceProcAddr(instance, "vkResetCommandPool"); 597 vkAllocateCommandBuffers = cast(typeof(vkAllocateCommandBuffers)) vkGetInstanceProcAddr(instance, "vkAllocateCommandBuffers"); 598 vkFreeCommandBuffers = cast(typeof(vkFreeCommandBuffers)) vkGetInstanceProcAddr(instance, "vkFreeCommandBuffers"); 599 vkBeginCommandBuffer = cast(typeof(vkBeginCommandBuffer)) vkGetInstanceProcAddr(instance, "vkBeginCommandBuffer"); 600 vkEndCommandBuffer = cast(typeof(vkEndCommandBuffer)) vkGetInstanceProcAddr(instance, "vkEndCommandBuffer"); 601 vkResetCommandBuffer = cast(typeof(vkResetCommandBuffer)) vkGetInstanceProcAddr(instance, "vkResetCommandBuffer"); 602 vkCmdBindPipeline = cast(typeof(vkCmdBindPipeline)) vkGetInstanceProcAddr(instance, "vkCmdBindPipeline"); 603 vkCmdSetViewport = cast(typeof(vkCmdSetViewport)) vkGetInstanceProcAddr(instance, "vkCmdSetViewport"); 604 vkCmdSetScissor = cast(typeof(vkCmdSetScissor)) vkGetInstanceProcAddr(instance, "vkCmdSetScissor"); 605 vkCmdSetLineWidth = cast(typeof(vkCmdSetLineWidth)) vkGetInstanceProcAddr(instance, "vkCmdSetLineWidth"); 606 vkCmdSetDepthBias = cast(typeof(vkCmdSetDepthBias)) vkGetInstanceProcAddr(instance, "vkCmdSetDepthBias"); 607 vkCmdSetBlendConstants = cast(typeof(vkCmdSetBlendConstants)) vkGetInstanceProcAddr(instance, "vkCmdSetBlendConstants"); 608 vkCmdSetDepthBounds = cast(typeof(vkCmdSetDepthBounds)) vkGetInstanceProcAddr(instance, "vkCmdSetDepthBounds"); 609 vkCmdSetStencilCompareMask = cast(typeof(vkCmdSetStencilCompareMask)) vkGetInstanceProcAddr(instance, "vkCmdSetStencilCompareMask"); 610 vkCmdSetStencilWriteMask = cast(typeof(vkCmdSetStencilWriteMask)) vkGetInstanceProcAddr(instance, "vkCmdSetStencilWriteMask"); 611 vkCmdSetStencilReference = cast(typeof(vkCmdSetStencilReference)) vkGetInstanceProcAddr(instance, "vkCmdSetStencilReference"); 612 vkCmdBindDescriptorSets = cast(typeof(vkCmdBindDescriptorSets)) vkGetInstanceProcAddr(instance, "vkCmdBindDescriptorSets"); 613 vkCmdBindIndexBuffer = cast(typeof(vkCmdBindIndexBuffer)) vkGetInstanceProcAddr(instance, "vkCmdBindIndexBuffer"); 614 vkCmdBindVertexBuffers = cast(typeof(vkCmdBindVertexBuffers)) vkGetInstanceProcAddr(instance, "vkCmdBindVertexBuffers"); 615 vkCmdDraw = cast(typeof(vkCmdDraw)) vkGetInstanceProcAddr(instance, "vkCmdDraw"); 616 vkCmdDrawIndexed = cast(typeof(vkCmdDrawIndexed)) vkGetInstanceProcAddr(instance, "vkCmdDrawIndexed"); 617 vkCmdDrawIndirect = cast(typeof(vkCmdDrawIndirect)) vkGetInstanceProcAddr(instance, "vkCmdDrawIndirect"); 618 vkCmdDrawIndexedIndirect = cast(typeof(vkCmdDrawIndexedIndirect)) vkGetInstanceProcAddr(instance, "vkCmdDrawIndexedIndirect"); 619 vkCmdDispatch = cast(typeof(vkCmdDispatch)) vkGetInstanceProcAddr(instance, "vkCmdDispatch"); 620 vkCmdDispatchIndirect = cast(typeof(vkCmdDispatchIndirect)) vkGetInstanceProcAddr(instance, "vkCmdDispatchIndirect"); 621 vkCmdCopyBuffer = cast(typeof(vkCmdCopyBuffer)) vkGetInstanceProcAddr(instance, "vkCmdCopyBuffer"); 622 vkCmdCopyImage = cast(typeof(vkCmdCopyImage)) vkGetInstanceProcAddr(instance, "vkCmdCopyImage"); 623 vkCmdBlitImage = cast(typeof(vkCmdBlitImage)) vkGetInstanceProcAddr(instance, "vkCmdBlitImage"); 624 vkCmdCopyBufferToImage = cast(typeof(vkCmdCopyBufferToImage)) vkGetInstanceProcAddr(instance, "vkCmdCopyBufferToImage"); 625 vkCmdCopyImageToBuffer = cast(typeof(vkCmdCopyImageToBuffer)) vkGetInstanceProcAddr(instance, "vkCmdCopyImageToBuffer"); 626 vkCmdUpdateBuffer = cast(typeof(vkCmdUpdateBuffer)) vkGetInstanceProcAddr(instance, "vkCmdUpdateBuffer"); 627 vkCmdFillBuffer = cast(typeof(vkCmdFillBuffer)) vkGetInstanceProcAddr(instance, "vkCmdFillBuffer"); 628 vkCmdClearColorImage = cast(typeof(vkCmdClearColorImage)) vkGetInstanceProcAddr(instance, "vkCmdClearColorImage"); 629 vkCmdClearDepthStencilImage = cast(typeof(vkCmdClearDepthStencilImage)) vkGetInstanceProcAddr(instance, "vkCmdClearDepthStencilImage"); 630 vkCmdClearAttachments = cast(typeof(vkCmdClearAttachments)) vkGetInstanceProcAddr(instance, "vkCmdClearAttachments"); 631 vkCmdResolveImage = cast(typeof(vkCmdResolveImage)) vkGetInstanceProcAddr(instance, "vkCmdResolveImage"); 632 vkCmdSetEvent = cast(typeof(vkCmdSetEvent)) vkGetInstanceProcAddr(instance, "vkCmdSetEvent"); 633 vkCmdResetEvent = cast(typeof(vkCmdResetEvent)) vkGetInstanceProcAddr(instance, "vkCmdResetEvent"); 634 vkCmdWaitEvents = cast(typeof(vkCmdWaitEvents)) vkGetInstanceProcAddr(instance, "vkCmdWaitEvents"); 635 vkCmdPipelineBarrier = cast(typeof(vkCmdPipelineBarrier)) vkGetInstanceProcAddr(instance, "vkCmdPipelineBarrier"); 636 vkCmdBeginQuery = cast(typeof(vkCmdBeginQuery)) vkGetInstanceProcAddr(instance, "vkCmdBeginQuery"); 637 vkCmdEndQuery = cast(typeof(vkCmdEndQuery)) vkGetInstanceProcAddr(instance, "vkCmdEndQuery"); 638 vkCmdResetQueryPool = cast(typeof(vkCmdResetQueryPool)) vkGetInstanceProcAddr(instance, "vkCmdResetQueryPool"); 639 vkCmdWriteTimestamp = cast(typeof(vkCmdWriteTimestamp)) vkGetInstanceProcAddr(instance, "vkCmdWriteTimestamp"); 640 vkCmdCopyQueryPoolResults = cast(typeof(vkCmdCopyQueryPoolResults)) vkGetInstanceProcAddr(instance, "vkCmdCopyQueryPoolResults"); 641 vkCmdPushConstants = cast(typeof(vkCmdPushConstants)) vkGetInstanceProcAddr(instance, "vkCmdPushConstants"); 642 vkCmdBeginRenderPass = cast(typeof(vkCmdBeginRenderPass)) vkGetInstanceProcAddr(instance, "vkCmdBeginRenderPass"); 643 vkCmdNextSubpass = cast(typeof(vkCmdNextSubpass)) vkGetInstanceProcAddr(instance, "vkCmdNextSubpass"); 644 vkCmdEndRenderPass = cast(typeof(vkCmdEndRenderPass)) vkGetInstanceProcAddr(instance, "vkCmdEndRenderPass"); 645 vkCmdExecuteCommands = cast(typeof(vkCmdExecuteCommands)) vkGetInstanceProcAddr(instance, "vkCmdExecuteCommands"); 646 647 // VK_KHR_swapchain 648 vkCreateSwapchainKHR = cast(typeof(vkCreateSwapchainKHR)) vkGetInstanceProcAddr(instance, "vkCreateSwapchainKHR"); 649 vkDestroySwapchainKHR = cast(typeof(vkDestroySwapchainKHR)) vkGetInstanceProcAddr(instance, "vkDestroySwapchainKHR"); 650 vkGetSwapchainImagesKHR = cast(typeof(vkGetSwapchainImagesKHR)) vkGetInstanceProcAddr(instance, "vkGetSwapchainImagesKHR"); 651 vkAcquireNextImageKHR = cast(typeof(vkAcquireNextImageKHR)) vkGetInstanceProcAddr(instance, "vkAcquireNextImageKHR"); 652 vkQueuePresentKHR = cast(typeof(vkQueuePresentKHR)) vkGetInstanceProcAddr(instance, "vkQueuePresentKHR"); 653 654 // VK_KHR_display_swapchain 655 vkCreateSharedSwapchainsKHR = cast(typeof(vkCreateSharedSwapchainsKHR)) vkGetInstanceProcAddr(instance, "vkCreateSharedSwapchainsKHR"); 656 657 // VK_EXT_debug_marker 658 vkDebugMarkerSetObjectTagEXT = cast(typeof(vkDebugMarkerSetObjectTagEXT)) vkGetInstanceProcAddr(instance, "vkDebugMarkerSetObjectTagEXT"); 659 vkDebugMarkerSetObjectNameEXT = cast(typeof(vkDebugMarkerSetObjectNameEXT)) vkGetInstanceProcAddr(instance, "vkDebugMarkerSetObjectNameEXT"); 660 vkCmdDebugMarkerBeginEXT = cast(typeof(vkCmdDebugMarkerBeginEXT)) vkGetInstanceProcAddr(instance, "vkCmdDebugMarkerBeginEXT"); 661 vkCmdDebugMarkerEndEXT = cast(typeof(vkCmdDebugMarkerEndEXT)) vkGetInstanceProcAddr(instance, "vkCmdDebugMarkerEndEXT"); 662 vkCmdDebugMarkerInsertEXT = cast(typeof(vkCmdDebugMarkerInsertEXT)) vkGetInstanceProcAddr(instance, "vkCmdDebugMarkerInsertEXT");} 663 664 /// with a valid VkDevice call this function to retrieve VkDevice, VkQueue and VkCommandBuffer related functions 665 /// the functions call directly VkDevice and related resources and can be retrieved for one and only one VkDevice 666 /// calling this function again with another VkDevices will overwrite the __gshared functions retrieved previously 667 /// use createGroupedDeviceLevelFunctions bellow if usage of multiple VkDevices is required 668 void loadDeviceLevelFunctions(VkDevice device) { 669 assert(vkGetDeviceProcAddr !is null, "Must call loadInstanceLevelFunctions before loadDeviceLevelFunctions"); 670 671 // VK_VERSION_1_0 672 vkDestroyDevice = cast(typeof(vkDestroyDevice)) vkGetDeviceProcAddr(device, "vkDestroyDevice"); 673 vkGetDeviceQueue = cast(typeof(vkGetDeviceQueue)) vkGetDeviceProcAddr(device, "vkGetDeviceQueue"); 674 vkQueueSubmit = cast(typeof(vkQueueSubmit)) vkGetDeviceProcAddr(device, "vkQueueSubmit"); 675 vkQueueWaitIdle = cast(typeof(vkQueueWaitIdle)) vkGetDeviceProcAddr(device, "vkQueueWaitIdle"); 676 vkDeviceWaitIdle = cast(typeof(vkDeviceWaitIdle)) vkGetDeviceProcAddr(device, "vkDeviceWaitIdle"); 677 vkAllocateMemory = cast(typeof(vkAllocateMemory)) vkGetDeviceProcAddr(device, "vkAllocateMemory"); 678 vkFreeMemory = cast(typeof(vkFreeMemory)) vkGetDeviceProcAddr(device, "vkFreeMemory"); 679 vkMapMemory = cast(typeof(vkMapMemory)) vkGetDeviceProcAddr(device, "vkMapMemory"); 680 vkUnmapMemory = cast(typeof(vkUnmapMemory)) vkGetDeviceProcAddr(device, "vkUnmapMemory"); 681 vkFlushMappedMemoryRanges = cast(typeof(vkFlushMappedMemoryRanges)) vkGetDeviceProcAddr(device, "vkFlushMappedMemoryRanges"); 682 vkInvalidateMappedMemoryRanges = cast(typeof(vkInvalidateMappedMemoryRanges)) vkGetDeviceProcAddr(device, "vkInvalidateMappedMemoryRanges"); 683 vkGetDeviceMemoryCommitment = cast(typeof(vkGetDeviceMemoryCommitment)) vkGetDeviceProcAddr(device, "vkGetDeviceMemoryCommitment"); 684 vkBindBufferMemory = cast(typeof(vkBindBufferMemory)) vkGetDeviceProcAddr(device, "vkBindBufferMemory"); 685 vkBindImageMemory = cast(typeof(vkBindImageMemory)) vkGetDeviceProcAddr(device, "vkBindImageMemory"); 686 vkGetBufferMemoryRequirements = cast(typeof(vkGetBufferMemoryRequirements)) vkGetDeviceProcAddr(device, "vkGetBufferMemoryRequirements"); 687 vkGetImageMemoryRequirements = cast(typeof(vkGetImageMemoryRequirements)) vkGetDeviceProcAddr(device, "vkGetImageMemoryRequirements"); 688 vkGetImageSparseMemoryRequirements = cast(typeof(vkGetImageSparseMemoryRequirements)) vkGetDeviceProcAddr(device, "vkGetImageSparseMemoryRequirements"); 689 vkQueueBindSparse = cast(typeof(vkQueueBindSparse)) vkGetDeviceProcAddr(device, "vkQueueBindSparse"); 690 vkCreateFence = cast(typeof(vkCreateFence)) vkGetDeviceProcAddr(device, "vkCreateFence"); 691 vkDestroyFence = cast(typeof(vkDestroyFence)) vkGetDeviceProcAddr(device, "vkDestroyFence"); 692 vkResetFences = cast(typeof(vkResetFences)) vkGetDeviceProcAddr(device, "vkResetFences"); 693 vkGetFenceStatus = cast(typeof(vkGetFenceStatus)) vkGetDeviceProcAddr(device, "vkGetFenceStatus"); 694 vkWaitForFences = cast(typeof(vkWaitForFences)) vkGetDeviceProcAddr(device, "vkWaitForFences"); 695 vkCreateSemaphore = cast(typeof(vkCreateSemaphore)) vkGetDeviceProcAddr(device, "vkCreateSemaphore"); 696 vkDestroySemaphore = cast(typeof(vkDestroySemaphore)) vkGetDeviceProcAddr(device, "vkDestroySemaphore"); 697 vkCreateEvent = cast(typeof(vkCreateEvent)) vkGetDeviceProcAddr(device, "vkCreateEvent"); 698 vkDestroyEvent = cast(typeof(vkDestroyEvent)) vkGetDeviceProcAddr(device, "vkDestroyEvent"); 699 vkGetEventStatus = cast(typeof(vkGetEventStatus)) vkGetDeviceProcAddr(device, "vkGetEventStatus"); 700 vkSetEvent = cast(typeof(vkSetEvent)) vkGetDeviceProcAddr(device, "vkSetEvent"); 701 vkResetEvent = cast(typeof(vkResetEvent)) vkGetDeviceProcAddr(device, "vkResetEvent"); 702 vkCreateQueryPool = cast(typeof(vkCreateQueryPool)) vkGetDeviceProcAddr(device, "vkCreateQueryPool"); 703 vkDestroyQueryPool = cast(typeof(vkDestroyQueryPool)) vkGetDeviceProcAddr(device, "vkDestroyQueryPool"); 704 vkGetQueryPoolResults = cast(typeof(vkGetQueryPoolResults)) vkGetDeviceProcAddr(device, "vkGetQueryPoolResults"); 705 vkCreateBuffer = cast(typeof(vkCreateBuffer)) vkGetDeviceProcAddr(device, "vkCreateBuffer"); 706 vkDestroyBuffer = cast(typeof(vkDestroyBuffer)) vkGetDeviceProcAddr(device, "vkDestroyBuffer"); 707 vkCreateBufferView = cast(typeof(vkCreateBufferView)) vkGetDeviceProcAddr(device, "vkCreateBufferView"); 708 vkDestroyBufferView = cast(typeof(vkDestroyBufferView)) vkGetDeviceProcAddr(device, "vkDestroyBufferView"); 709 vkCreateImage = cast(typeof(vkCreateImage)) vkGetDeviceProcAddr(device, "vkCreateImage"); 710 vkDestroyImage = cast(typeof(vkDestroyImage)) vkGetDeviceProcAddr(device, "vkDestroyImage"); 711 vkGetImageSubresourceLayout = cast(typeof(vkGetImageSubresourceLayout)) vkGetDeviceProcAddr(device, "vkGetImageSubresourceLayout"); 712 vkCreateImageView = cast(typeof(vkCreateImageView)) vkGetDeviceProcAddr(device, "vkCreateImageView"); 713 vkDestroyImageView = cast(typeof(vkDestroyImageView)) vkGetDeviceProcAddr(device, "vkDestroyImageView"); 714 vkCreateShaderModule = cast(typeof(vkCreateShaderModule)) vkGetDeviceProcAddr(device, "vkCreateShaderModule"); 715 vkDestroyShaderModule = cast(typeof(vkDestroyShaderModule)) vkGetDeviceProcAddr(device, "vkDestroyShaderModule"); 716 vkCreatePipelineCache = cast(typeof(vkCreatePipelineCache)) vkGetDeviceProcAddr(device, "vkCreatePipelineCache"); 717 vkDestroyPipelineCache = cast(typeof(vkDestroyPipelineCache)) vkGetDeviceProcAddr(device, "vkDestroyPipelineCache"); 718 vkGetPipelineCacheData = cast(typeof(vkGetPipelineCacheData)) vkGetDeviceProcAddr(device, "vkGetPipelineCacheData"); 719 vkMergePipelineCaches = cast(typeof(vkMergePipelineCaches)) vkGetDeviceProcAddr(device, "vkMergePipelineCaches"); 720 vkCreateGraphicsPipelines = cast(typeof(vkCreateGraphicsPipelines)) vkGetDeviceProcAddr(device, "vkCreateGraphicsPipelines"); 721 vkCreateComputePipelines = cast(typeof(vkCreateComputePipelines)) vkGetDeviceProcAddr(device, "vkCreateComputePipelines"); 722 vkDestroyPipeline = cast(typeof(vkDestroyPipeline)) vkGetDeviceProcAddr(device, "vkDestroyPipeline"); 723 vkCreatePipelineLayout = cast(typeof(vkCreatePipelineLayout)) vkGetDeviceProcAddr(device, "vkCreatePipelineLayout"); 724 vkDestroyPipelineLayout = cast(typeof(vkDestroyPipelineLayout)) vkGetDeviceProcAddr(device, "vkDestroyPipelineLayout"); 725 vkCreateSampler = cast(typeof(vkCreateSampler)) vkGetDeviceProcAddr(device, "vkCreateSampler"); 726 vkDestroySampler = cast(typeof(vkDestroySampler)) vkGetDeviceProcAddr(device, "vkDestroySampler"); 727 vkCreateDescriptorSetLayout = cast(typeof(vkCreateDescriptorSetLayout)) vkGetDeviceProcAddr(device, "vkCreateDescriptorSetLayout"); 728 vkDestroyDescriptorSetLayout = cast(typeof(vkDestroyDescriptorSetLayout)) vkGetDeviceProcAddr(device, "vkDestroyDescriptorSetLayout"); 729 vkCreateDescriptorPool = cast(typeof(vkCreateDescriptorPool)) vkGetDeviceProcAddr(device, "vkCreateDescriptorPool"); 730 vkDestroyDescriptorPool = cast(typeof(vkDestroyDescriptorPool)) vkGetDeviceProcAddr(device, "vkDestroyDescriptorPool"); 731 vkResetDescriptorPool = cast(typeof(vkResetDescriptorPool)) vkGetDeviceProcAddr(device, "vkResetDescriptorPool"); 732 vkAllocateDescriptorSets = cast(typeof(vkAllocateDescriptorSets)) vkGetDeviceProcAddr(device, "vkAllocateDescriptorSets"); 733 vkFreeDescriptorSets = cast(typeof(vkFreeDescriptorSets)) vkGetDeviceProcAddr(device, "vkFreeDescriptorSets"); 734 vkUpdateDescriptorSets = cast(typeof(vkUpdateDescriptorSets)) vkGetDeviceProcAddr(device, "vkUpdateDescriptorSets"); 735 vkCreateFramebuffer = cast(typeof(vkCreateFramebuffer)) vkGetDeviceProcAddr(device, "vkCreateFramebuffer"); 736 vkDestroyFramebuffer = cast(typeof(vkDestroyFramebuffer)) vkGetDeviceProcAddr(device, "vkDestroyFramebuffer"); 737 vkCreateRenderPass = cast(typeof(vkCreateRenderPass)) vkGetDeviceProcAddr(device, "vkCreateRenderPass"); 738 vkDestroyRenderPass = cast(typeof(vkDestroyRenderPass)) vkGetDeviceProcAddr(device, "vkDestroyRenderPass"); 739 vkGetRenderAreaGranularity = cast(typeof(vkGetRenderAreaGranularity)) vkGetDeviceProcAddr(device, "vkGetRenderAreaGranularity"); 740 vkCreateCommandPool = cast(typeof(vkCreateCommandPool)) vkGetDeviceProcAddr(device, "vkCreateCommandPool"); 741 vkDestroyCommandPool = cast(typeof(vkDestroyCommandPool)) vkGetDeviceProcAddr(device, "vkDestroyCommandPool"); 742 vkResetCommandPool = cast(typeof(vkResetCommandPool)) vkGetDeviceProcAddr(device, "vkResetCommandPool"); 743 vkAllocateCommandBuffers = cast(typeof(vkAllocateCommandBuffers)) vkGetDeviceProcAddr(device, "vkAllocateCommandBuffers"); 744 vkFreeCommandBuffers = cast(typeof(vkFreeCommandBuffers)) vkGetDeviceProcAddr(device, "vkFreeCommandBuffers"); 745 vkBeginCommandBuffer = cast(typeof(vkBeginCommandBuffer)) vkGetDeviceProcAddr(device, "vkBeginCommandBuffer"); 746 vkEndCommandBuffer = cast(typeof(vkEndCommandBuffer)) vkGetDeviceProcAddr(device, "vkEndCommandBuffer"); 747 vkResetCommandBuffer = cast(typeof(vkResetCommandBuffer)) vkGetDeviceProcAddr(device, "vkResetCommandBuffer"); 748 vkCmdBindPipeline = cast(typeof(vkCmdBindPipeline)) vkGetDeviceProcAddr(device, "vkCmdBindPipeline"); 749 vkCmdSetViewport = cast(typeof(vkCmdSetViewport)) vkGetDeviceProcAddr(device, "vkCmdSetViewport"); 750 vkCmdSetScissor = cast(typeof(vkCmdSetScissor)) vkGetDeviceProcAddr(device, "vkCmdSetScissor"); 751 vkCmdSetLineWidth = cast(typeof(vkCmdSetLineWidth)) vkGetDeviceProcAddr(device, "vkCmdSetLineWidth"); 752 vkCmdSetDepthBias = cast(typeof(vkCmdSetDepthBias)) vkGetDeviceProcAddr(device, "vkCmdSetDepthBias"); 753 vkCmdSetBlendConstants = cast(typeof(vkCmdSetBlendConstants)) vkGetDeviceProcAddr(device, "vkCmdSetBlendConstants"); 754 vkCmdSetDepthBounds = cast(typeof(vkCmdSetDepthBounds)) vkGetDeviceProcAddr(device, "vkCmdSetDepthBounds"); 755 vkCmdSetStencilCompareMask = cast(typeof(vkCmdSetStencilCompareMask)) vkGetDeviceProcAddr(device, "vkCmdSetStencilCompareMask"); 756 vkCmdSetStencilWriteMask = cast(typeof(vkCmdSetStencilWriteMask)) vkGetDeviceProcAddr(device, "vkCmdSetStencilWriteMask"); 757 vkCmdSetStencilReference = cast(typeof(vkCmdSetStencilReference)) vkGetDeviceProcAddr(device, "vkCmdSetStencilReference"); 758 vkCmdBindDescriptorSets = cast(typeof(vkCmdBindDescriptorSets)) vkGetDeviceProcAddr(device, "vkCmdBindDescriptorSets"); 759 vkCmdBindIndexBuffer = cast(typeof(vkCmdBindIndexBuffer)) vkGetDeviceProcAddr(device, "vkCmdBindIndexBuffer"); 760 vkCmdBindVertexBuffers = cast(typeof(vkCmdBindVertexBuffers)) vkGetDeviceProcAddr(device, "vkCmdBindVertexBuffers"); 761 vkCmdDraw = cast(typeof(vkCmdDraw)) vkGetDeviceProcAddr(device, "vkCmdDraw"); 762 vkCmdDrawIndexed = cast(typeof(vkCmdDrawIndexed)) vkGetDeviceProcAddr(device, "vkCmdDrawIndexed"); 763 vkCmdDrawIndirect = cast(typeof(vkCmdDrawIndirect)) vkGetDeviceProcAddr(device, "vkCmdDrawIndirect"); 764 vkCmdDrawIndexedIndirect = cast(typeof(vkCmdDrawIndexedIndirect)) vkGetDeviceProcAddr(device, "vkCmdDrawIndexedIndirect"); 765 vkCmdDispatch = cast(typeof(vkCmdDispatch)) vkGetDeviceProcAddr(device, "vkCmdDispatch"); 766 vkCmdDispatchIndirect = cast(typeof(vkCmdDispatchIndirect)) vkGetDeviceProcAddr(device, "vkCmdDispatchIndirect"); 767 vkCmdCopyBuffer = cast(typeof(vkCmdCopyBuffer)) vkGetDeviceProcAddr(device, "vkCmdCopyBuffer"); 768 vkCmdCopyImage = cast(typeof(vkCmdCopyImage)) vkGetDeviceProcAddr(device, "vkCmdCopyImage"); 769 vkCmdBlitImage = cast(typeof(vkCmdBlitImage)) vkGetDeviceProcAddr(device, "vkCmdBlitImage"); 770 vkCmdCopyBufferToImage = cast(typeof(vkCmdCopyBufferToImage)) vkGetDeviceProcAddr(device, "vkCmdCopyBufferToImage"); 771 vkCmdCopyImageToBuffer = cast(typeof(vkCmdCopyImageToBuffer)) vkGetDeviceProcAddr(device, "vkCmdCopyImageToBuffer"); 772 vkCmdUpdateBuffer = cast(typeof(vkCmdUpdateBuffer)) vkGetDeviceProcAddr(device, "vkCmdUpdateBuffer"); 773 vkCmdFillBuffer = cast(typeof(vkCmdFillBuffer)) vkGetDeviceProcAddr(device, "vkCmdFillBuffer"); 774 vkCmdClearColorImage = cast(typeof(vkCmdClearColorImage)) vkGetDeviceProcAddr(device, "vkCmdClearColorImage"); 775 vkCmdClearDepthStencilImage = cast(typeof(vkCmdClearDepthStencilImage)) vkGetDeviceProcAddr(device, "vkCmdClearDepthStencilImage"); 776 vkCmdClearAttachments = cast(typeof(vkCmdClearAttachments)) vkGetDeviceProcAddr(device, "vkCmdClearAttachments"); 777 vkCmdResolveImage = cast(typeof(vkCmdResolveImage)) vkGetDeviceProcAddr(device, "vkCmdResolveImage"); 778 vkCmdSetEvent = cast(typeof(vkCmdSetEvent)) vkGetDeviceProcAddr(device, "vkCmdSetEvent"); 779 vkCmdResetEvent = cast(typeof(vkCmdResetEvent)) vkGetDeviceProcAddr(device, "vkCmdResetEvent"); 780 vkCmdWaitEvents = cast(typeof(vkCmdWaitEvents)) vkGetDeviceProcAddr(device, "vkCmdWaitEvents"); 781 vkCmdPipelineBarrier = cast(typeof(vkCmdPipelineBarrier)) vkGetDeviceProcAddr(device, "vkCmdPipelineBarrier"); 782 vkCmdBeginQuery = cast(typeof(vkCmdBeginQuery)) vkGetDeviceProcAddr(device, "vkCmdBeginQuery"); 783 vkCmdEndQuery = cast(typeof(vkCmdEndQuery)) vkGetDeviceProcAddr(device, "vkCmdEndQuery"); 784 vkCmdResetQueryPool = cast(typeof(vkCmdResetQueryPool)) vkGetDeviceProcAddr(device, "vkCmdResetQueryPool"); 785 vkCmdWriteTimestamp = cast(typeof(vkCmdWriteTimestamp)) vkGetDeviceProcAddr(device, "vkCmdWriteTimestamp"); 786 vkCmdCopyQueryPoolResults = cast(typeof(vkCmdCopyQueryPoolResults)) vkGetDeviceProcAddr(device, "vkCmdCopyQueryPoolResults"); 787 vkCmdPushConstants = cast(typeof(vkCmdPushConstants)) vkGetDeviceProcAddr(device, "vkCmdPushConstants"); 788 vkCmdBeginRenderPass = cast(typeof(vkCmdBeginRenderPass)) vkGetDeviceProcAddr(device, "vkCmdBeginRenderPass"); 789 vkCmdNextSubpass = cast(typeof(vkCmdNextSubpass)) vkGetDeviceProcAddr(device, "vkCmdNextSubpass"); 790 vkCmdEndRenderPass = cast(typeof(vkCmdEndRenderPass)) vkGetDeviceProcAddr(device, "vkCmdEndRenderPass"); 791 vkCmdExecuteCommands = cast(typeof(vkCmdExecuteCommands)) vkGetDeviceProcAddr(device, "vkCmdExecuteCommands"); 792 793 // VK_KHR_swapchain 794 vkCreateSwapchainKHR = cast(typeof(vkCreateSwapchainKHR)) vkGetDeviceProcAddr(device, "vkCreateSwapchainKHR"); 795 vkDestroySwapchainKHR = cast(typeof(vkDestroySwapchainKHR)) vkGetDeviceProcAddr(device, "vkDestroySwapchainKHR"); 796 vkGetSwapchainImagesKHR = cast(typeof(vkGetSwapchainImagesKHR)) vkGetDeviceProcAddr(device, "vkGetSwapchainImagesKHR"); 797 vkAcquireNextImageKHR = cast(typeof(vkAcquireNextImageKHR)) vkGetDeviceProcAddr(device, "vkAcquireNextImageKHR"); 798 vkQueuePresentKHR = cast(typeof(vkQueuePresentKHR)) vkGetDeviceProcAddr(device, "vkQueuePresentKHR"); 799 800 // VK_KHR_display_swapchain 801 vkCreateSharedSwapchainsKHR = cast(typeof(vkCreateSharedSwapchainsKHR)) vkGetDeviceProcAddr(device, "vkCreateSharedSwapchainsKHR"); 802 803 // VK_EXT_debug_marker 804 vkDebugMarkerSetObjectTagEXT = cast(typeof(vkDebugMarkerSetObjectTagEXT)) vkGetDeviceProcAddr(device, "vkDebugMarkerSetObjectTagEXT"); 805 vkDebugMarkerSetObjectNameEXT = cast(typeof(vkDebugMarkerSetObjectNameEXT)) vkGetDeviceProcAddr(device, "vkDebugMarkerSetObjectNameEXT"); 806 vkCmdDebugMarkerBeginEXT = cast(typeof(vkCmdDebugMarkerBeginEXT)) vkGetDeviceProcAddr(device, "vkCmdDebugMarkerBeginEXT"); 807 vkCmdDebugMarkerEndEXT = cast(typeof(vkCmdDebugMarkerEndEXT)) vkGetDeviceProcAddr(device, "vkCmdDebugMarkerEndEXT"); 808 vkCmdDebugMarkerInsertEXT = cast(typeof(vkCmdDebugMarkerInsertEXT)) vkGetDeviceProcAddr(device, "vkCmdDebugMarkerInsertEXT");} 809 810 /// with a valid VkDevice call this function to retrieve VkDevice, VkQueue and VkCommandBuffer related functions grouped in a DispatchDevice struct 811 /// the functions call directly VkDevice and related resources and can be retrieved for any VkDevice 812 DispatchDevice createDispatchDeviceLevelFunctions(VkDevice device) { 813 assert(vkGetDeviceProcAddr !is null, "Must call loadInstanceLevelFunctions before loadDeviceLevelFunctions"); 814 815 DispatchDevice dispatchDevice; 816 with(dispatchDevice) { 817 818 // VK_VERSION_1_0 819 vkDestroyDevice = cast(typeof(vkDestroyDevice)) vkGetDeviceProcAddr(device, "vkDestroyDevice"); 820 vkGetDeviceQueue = cast(typeof(vkGetDeviceQueue)) vkGetDeviceProcAddr(device, "vkGetDeviceQueue"); 821 vkQueueSubmit = cast(typeof(vkQueueSubmit)) vkGetDeviceProcAddr(device, "vkQueueSubmit"); 822 vkQueueWaitIdle = cast(typeof(vkQueueWaitIdle)) vkGetDeviceProcAddr(device, "vkQueueWaitIdle"); 823 vkDeviceWaitIdle = cast(typeof(vkDeviceWaitIdle)) vkGetDeviceProcAddr(device, "vkDeviceWaitIdle"); 824 vkAllocateMemory = cast(typeof(vkAllocateMemory)) vkGetDeviceProcAddr(device, "vkAllocateMemory"); 825 vkFreeMemory = cast(typeof(vkFreeMemory)) vkGetDeviceProcAddr(device, "vkFreeMemory"); 826 vkMapMemory = cast(typeof(vkMapMemory)) vkGetDeviceProcAddr(device, "vkMapMemory"); 827 vkUnmapMemory = cast(typeof(vkUnmapMemory)) vkGetDeviceProcAddr(device, "vkUnmapMemory"); 828 vkFlushMappedMemoryRanges = cast(typeof(vkFlushMappedMemoryRanges)) vkGetDeviceProcAddr(device, "vkFlushMappedMemoryRanges"); 829 vkInvalidateMappedMemoryRanges = cast(typeof(vkInvalidateMappedMemoryRanges)) vkGetDeviceProcAddr(device, "vkInvalidateMappedMemoryRanges"); 830 vkGetDeviceMemoryCommitment = cast(typeof(vkGetDeviceMemoryCommitment)) vkGetDeviceProcAddr(device, "vkGetDeviceMemoryCommitment"); 831 vkBindBufferMemory = cast(typeof(vkBindBufferMemory)) vkGetDeviceProcAddr(device, "vkBindBufferMemory"); 832 vkBindImageMemory = cast(typeof(vkBindImageMemory)) vkGetDeviceProcAddr(device, "vkBindImageMemory"); 833 vkGetBufferMemoryRequirements = cast(typeof(vkGetBufferMemoryRequirements)) vkGetDeviceProcAddr(device, "vkGetBufferMemoryRequirements"); 834 vkGetImageMemoryRequirements = cast(typeof(vkGetImageMemoryRequirements)) vkGetDeviceProcAddr(device, "vkGetImageMemoryRequirements"); 835 vkGetImageSparseMemoryRequirements = cast(typeof(vkGetImageSparseMemoryRequirements)) vkGetDeviceProcAddr(device, "vkGetImageSparseMemoryRequirements"); 836 vkQueueBindSparse = cast(typeof(vkQueueBindSparse)) vkGetDeviceProcAddr(device, "vkQueueBindSparse"); 837 vkCreateFence = cast(typeof(vkCreateFence)) vkGetDeviceProcAddr(device, "vkCreateFence"); 838 vkDestroyFence = cast(typeof(vkDestroyFence)) vkGetDeviceProcAddr(device, "vkDestroyFence"); 839 vkResetFences = cast(typeof(vkResetFences)) vkGetDeviceProcAddr(device, "vkResetFences"); 840 vkGetFenceStatus = cast(typeof(vkGetFenceStatus)) vkGetDeviceProcAddr(device, "vkGetFenceStatus"); 841 vkWaitForFences = cast(typeof(vkWaitForFences)) vkGetDeviceProcAddr(device, "vkWaitForFences"); 842 vkCreateSemaphore = cast(typeof(vkCreateSemaphore)) vkGetDeviceProcAddr(device, "vkCreateSemaphore"); 843 vkDestroySemaphore = cast(typeof(vkDestroySemaphore)) vkGetDeviceProcAddr(device, "vkDestroySemaphore"); 844 vkCreateEvent = cast(typeof(vkCreateEvent)) vkGetDeviceProcAddr(device, "vkCreateEvent"); 845 vkDestroyEvent = cast(typeof(vkDestroyEvent)) vkGetDeviceProcAddr(device, "vkDestroyEvent"); 846 vkGetEventStatus = cast(typeof(vkGetEventStatus)) vkGetDeviceProcAddr(device, "vkGetEventStatus"); 847 vkSetEvent = cast(typeof(vkSetEvent)) vkGetDeviceProcAddr(device, "vkSetEvent"); 848 vkResetEvent = cast(typeof(vkResetEvent)) vkGetDeviceProcAddr(device, "vkResetEvent"); 849 vkCreateQueryPool = cast(typeof(vkCreateQueryPool)) vkGetDeviceProcAddr(device, "vkCreateQueryPool"); 850 vkDestroyQueryPool = cast(typeof(vkDestroyQueryPool)) vkGetDeviceProcAddr(device, "vkDestroyQueryPool"); 851 vkGetQueryPoolResults = cast(typeof(vkGetQueryPoolResults)) vkGetDeviceProcAddr(device, "vkGetQueryPoolResults"); 852 vkCreateBuffer = cast(typeof(vkCreateBuffer)) vkGetDeviceProcAddr(device, "vkCreateBuffer"); 853 vkDestroyBuffer = cast(typeof(vkDestroyBuffer)) vkGetDeviceProcAddr(device, "vkDestroyBuffer"); 854 vkCreateBufferView = cast(typeof(vkCreateBufferView)) vkGetDeviceProcAddr(device, "vkCreateBufferView"); 855 vkDestroyBufferView = cast(typeof(vkDestroyBufferView)) vkGetDeviceProcAddr(device, "vkDestroyBufferView"); 856 vkCreateImage = cast(typeof(vkCreateImage)) vkGetDeviceProcAddr(device, "vkCreateImage"); 857 vkDestroyImage = cast(typeof(vkDestroyImage)) vkGetDeviceProcAddr(device, "vkDestroyImage"); 858 vkGetImageSubresourceLayout = cast(typeof(vkGetImageSubresourceLayout)) vkGetDeviceProcAddr(device, "vkGetImageSubresourceLayout"); 859 vkCreateImageView = cast(typeof(vkCreateImageView)) vkGetDeviceProcAddr(device, "vkCreateImageView"); 860 vkDestroyImageView = cast(typeof(vkDestroyImageView)) vkGetDeviceProcAddr(device, "vkDestroyImageView"); 861 vkCreateShaderModule = cast(typeof(vkCreateShaderModule)) vkGetDeviceProcAddr(device, "vkCreateShaderModule"); 862 vkDestroyShaderModule = cast(typeof(vkDestroyShaderModule)) vkGetDeviceProcAddr(device, "vkDestroyShaderModule"); 863 vkCreatePipelineCache = cast(typeof(vkCreatePipelineCache)) vkGetDeviceProcAddr(device, "vkCreatePipelineCache"); 864 vkDestroyPipelineCache = cast(typeof(vkDestroyPipelineCache)) vkGetDeviceProcAddr(device, "vkDestroyPipelineCache"); 865 vkGetPipelineCacheData = cast(typeof(vkGetPipelineCacheData)) vkGetDeviceProcAddr(device, "vkGetPipelineCacheData"); 866 vkMergePipelineCaches = cast(typeof(vkMergePipelineCaches)) vkGetDeviceProcAddr(device, "vkMergePipelineCaches"); 867 vkCreateGraphicsPipelines = cast(typeof(vkCreateGraphicsPipelines)) vkGetDeviceProcAddr(device, "vkCreateGraphicsPipelines"); 868 vkCreateComputePipelines = cast(typeof(vkCreateComputePipelines)) vkGetDeviceProcAddr(device, "vkCreateComputePipelines"); 869 vkDestroyPipeline = cast(typeof(vkDestroyPipeline)) vkGetDeviceProcAddr(device, "vkDestroyPipeline"); 870 vkCreatePipelineLayout = cast(typeof(vkCreatePipelineLayout)) vkGetDeviceProcAddr(device, "vkCreatePipelineLayout"); 871 vkDestroyPipelineLayout = cast(typeof(vkDestroyPipelineLayout)) vkGetDeviceProcAddr(device, "vkDestroyPipelineLayout"); 872 vkCreateSampler = cast(typeof(vkCreateSampler)) vkGetDeviceProcAddr(device, "vkCreateSampler"); 873 vkDestroySampler = cast(typeof(vkDestroySampler)) vkGetDeviceProcAddr(device, "vkDestroySampler"); 874 vkCreateDescriptorSetLayout = cast(typeof(vkCreateDescriptorSetLayout)) vkGetDeviceProcAddr(device, "vkCreateDescriptorSetLayout"); 875 vkDestroyDescriptorSetLayout = cast(typeof(vkDestroyDescriptorSetLayout)) vkGetDeviceProcAddr(device, "vkDestroyDescriptorSetLayout"); 876 vkCreateDescriptorPool = cast(typeof(vkCreateDescriptorPool)) vkGetDeviceProcAddr(device, "vkCreateDescriptorPool"); 877 vkDestroyDescriptorPool = cast(typeof(vkDestroyDescriptorPool)) vkGetDeviceProcAddr(device, "vkDestroyDescriptorPool"); 878 vkResetDescriptorPool = cast(typeof(vkResetDescriptorPool)) vkGetDeviceProcAddr(device, "vkResetDescriptorPool"); 879 vkAllocateDescriptorSets = cast(typeof(vkAllocateDescriptorSets)) vkGetDeviceProcAddr(device, "vkAllocateDescriptorSets"); 880 vkFreeDescriptorSets = cast(typeof(vkFreeDescriptorSets)) vkGetDeviceProcAddr(device, "vkFreeDescriptorSets"); 881 vkUpdateDescriptorSets = cast(typeof(vkUpdateDescriptorSets)) vkGetDeviceProcAddr(device, "vkUpdateDescriptorSets"); 882 vkCreateFramebuffer = cast(typeof(vkCreateFramebuffer)) vkGetDeviceProcAddr(device, "vkCreateFramebuffer"); 883 vkDestroyFramebuffer = cast(typeof(vkDestroyFramebuffer)) vkGetDeviceProcAddr(device, "vkDestroyFramebuffer"); 884 vkCreateRenderPass = cast(typeof(vkCreateRenderPass)) vkGetDeviceProcAddr(device, "vkCreateRenderPass"); 885 vkDestroyRenderPass = cast(typeof(vkDestroyRenderPass)) vkGetDeviceProcAddr(device, "vkDestroyRenderPass"); 886 vkGetRenderAreaGranularity = cast(typeof(vkGetRenderAreaGranularity)) vkGetDeviceProcAddr(device, "vkGetRenderAreaGranularity"); 887 vkCreateCommandPool = cast(typeof(vkCreateCommandPool)) vkGetDeviceProcAddr(device, "vkCreateCommandPool"); 888 vkDestroyCommandPool = cast(typeof(vkDestroyCommandPool)) vkGetDeviceProcAddr(device, "vkDestroyCommandPool"); 889 vkResetCommandPool = cast(typeof(vkResetCommandPool)) vkGetDeviceProcAddr(device, "vkResetCommandPool"); 890 vkAllocateCommandBuffers = cast(typeof(vkAllocateCommandBuffers)) vkGetDeviceProcAddr(device, "vkAllocateCommandBuffers"); 891 vkFreeCommandBuffers = cast(typeof(vkFreeCommandBuffers)) vkGetDeviceProcAddr(device, "vkFreeCommandBuffers"); 892 vkBeginCommandBuffer = cast(typeof(vkBeginCommandBuffer)) vkGetDeviceProcAddr(device, "vkBeginCommandBuffer"); 893 vkEndCommandBuffer = cast(typeof(vkEndCommandBuffer)) vkGetDeviceProcAddr(device, "vkEndCommandBuffer"); 894 vkResetCommandBuffer = cast(typeof(vkResetCommandBuffer)) vkGetDeviceProcAddr(device, "vkResetCommandBuffer"); 895 vkCmdBindPipeline = cast(typeof(vkCmdBindPipeline)) vkGetDeviceProcAddr(device, "vkCmdBindPipeline"); 896 vkCmdSetViewport = cast(typeof(vkCmdSetViewport)) vkGetDeviceProcAddr(device, "vkCmdSetViewport"); 897 vkCmdSetScissor = cast(typeof(vkCmdSetScissor)) vkGetDeviceProcAddr(device, "vkCmdSetScissor"); 898 vkCmdSetLineWidth = cast(typeof(vkCmdSetLineWidth)) vkGetDeviceProcAddr(device, "vkCmdSetLineWidth"); 899 vkCmdSetDepthBias = cast(typeof(vkCmdSetDepthBias)) vkGetDeviceProcAddr(device, "vkCmdSetDepthBias"); 900 vkCmdSetBlendConstants = cast(typeof(vkCmdSetBlendConstants)) vkGetDeviceProcAddr(device, "vkCmdSetBlendConstants"); 901 vkCmdSetDepthBounds = cast(typeof(vkCmdSetDepthBounds)) vkGetDeviceProcAddr(device, "vkCmdSetDepthBounds"); 902 vkCmdSetStencilCompareMask = cast(typeof(vkCmdSetStencilCompareMask)) vkGetDeviceProcAddr(device, "vkCmdSetStencilCompareMask"); 903 vkCmdSetStencilWriteMask = cast(typeof(vkCmdSetStencilWriteMask)) vkGetDeviceProcAddr(device, "vkCmdSetStencilWriteMask"); 904 vkCmdSetStencilReference = cast(typeof(vkCmdSetStencilReference)) vkGetDeviceProcAddr(device, "vkCmdSetStencilReference"); 905 vkCmdBindDescriptorSets = cast(typeof(vkCmdBindDescriptorSets)) vkGetDeviceProcAddr(device, "vkCmdBindDescriptorSets"); 906 vkCmdBindIndexBuffer = cast(typeof(vkCmdBindIndexBuffer)) vkGetDeviceProcAddr(device, "vkCmdBindIndexBuffer"); 907 vkCmdBindVertexBuffers = cast(typeof(vkCmdBindVertexBuffers)) vkGetDeviceProcAddr(device, "vkCmdBindVertexBuffers"); 908 vkCmdDraw = cast(typeof(vkCmdDraw)) vkGetDeviceProcAddr(device, "vkCmdDraw"); 909 vkCmdDrawIndexed = cast(typeof(vkCmdDrawIndexed)) vkGetDeviceProcAddr(device, "vkCmdDrawIndexed"); 910 vkCmdDrawIndirect = cast(typeof(vkCmdDrawIndirect)) vkGetDeviceProcAddr(device, "vkCmdDrawIndirect"); 911 vkCmdDrawIndexedIndirect = cast(typeof(vkCmdDrawIndexedIndirect)) vkGetDeviceProcAddr(device, "vkCmdDrawIndexedIndirect"); 912 vkCmdDispatch = cast(typeof(vkCmdDispatch)) vkGetDeviceProcAddr(device, "vkCmdDispatch"); 913 vkCmdDispatchIndirect = cast(typeof(vkCmdDispatchIndirect)) vkGetDeviceProcAddr(device, "vkCmdDispatchIndirect"); 914 vkCmdCopyBuffer = cast(typeof(vkCmdCopyBuffer)) vkGetDeviceProcAddr(device, "vkCmdCopyBuffer"); 915 vkCmdCopyImage = cast(typeof(vkCmdCopyImage)) vkGetDeviceProcAddr(device, "vkCmdCopyImage"); 916 vkCmdBlitImage = cast(typeof(vkCmdBlitImage)) vkGetDeviceProcAddr(device, "vkCmdBlitImage"); 917 vkCmdCopyBufferToImage = cast(typeof(vkCmdCopyBufferToImage)) vkGetDeviceProcAddr(device, "vkCmdCopyBufferToImage"); 918 vkCmdCopyImageToBuffer = cast(typeof(vkCmdCopyImageToBuffer)) vkGetDeviceProcAddr(device, "vkCmdCopyImageToBuffer"); 919 vkCmdUpdateBuffer = cast(typeof(vkCmdUpdateBuffer)) vkGetDeviceProcAddr(device, "vkCmdUpdateBuffer"); 920 vkCmdFillBuffer = cast(typeof(vkCmdFillBuffer)) vkGetDeviceProcAddr(device, "vkCmdFillBuffer"); 921 vkCmdClearColorImage = cast(typeof(vkCmdClearColorImage)) vkGetDeviceProcAddr(device, "vkCmdClearColorImage"); 922 vkCmdClearDepthStencilImage = cast(typeof(vkCmdClearDepthStencilImage)) vkGetDeviceProcAddr(device, "vkCmdClearDepthStencilImage"); 923 vkCmdClearAttachments = cast(typeof(vkCmdClearAttachments)) vkGetDeviceProcAddr(device, "vkCmdClearAttachments"); 924 vkCmdResolveImage = cast(typeof(vkCmdResolveImage)) vkGetDeviceProcAddr(device, "vkCmdResolveImage"); 925 vkCmdSetEvent = cast(typeof(vkCmdSetEvent)) vkGetDeviceProcAddr(device, "vkCmdSetEvent"); 926 vkCmdResetEvent = cast(typeof(vkCmdResetEvent)) vkGetDeviceProcAddr(device, "vkCmdResetEvent"); 927 vkCmdWaitEvents = cast(typeof(vkCmdWaitEvents)) vkGetDeviceProcAddr(device, "vkCmdWaitEvents"); 928 vkCmdPipelineBarrier = cast(typeof(vkCmdPipelineBarrier)) vkGetDeviceProcAddr(device, "vkCmdPipelineBarrier"); 929 vkCmdBeginQuery = cast(typeof(vkCmdBeginQuery)) vkGetDeviceProcAddr(device, "vkCmdBeginQuery"); 930 vkCmdEndQuery = cast(typeof(vkCmdEndQuery)) vkGetDeviceProcAddr(device, "vkCmdEndQuery"); 931 vkCmdResetQueryPool = cast(typeof(vkCmdResetQueryPool)) vkGetDeviceProcAddr(device, "vkCmdResetQueryPool"); 932 vkCmdWriteTimestamp = cast(typeof(vkCmdWriteTimestamp)) vkGetDeviceProcAddr(device, "vkCmdWriteTimestamp"); 933 vkCmdCopyQueryPoolResults = cast(typeof(vkCmdCopyQueryPoolResults)) vkGetDeviceProcAddr(device, "vkCmdCopyQueryPoolResults"); 934 vkCmdPushConstants = cast(typeof(vkCmdPushConstants)) vkGetDeviceProcAddr(device, "vkCmdPushConstants"); 935 vkCmdBeginRenderPass = cast(typeof(vkCmdBeginRenderPass)) vkGetDeviceProcAddr(device, "vkCmdBeginRenderPass"); 936 vkCmdNextSubpass = cast(typeof(vkCmdNextSubpass)) vkGetDeviceProcAddr(device, "vkCmdNextSubpass"); 937 vkCmdEndRenderPass = cast(typeof(vkCmdEndRenderPass)) vkGetDeviceProcAddr(device, "vkCmdEndRenderPass"); 938 vkCmdExecuteCommands = cast(typeof(vkCmdExecuteCommands)) vkGetDeviceProcAddr(device, "vkCmdExecuteCommands"); 939 940 // VK_KHR_swapchain 941 vkCreateSwapchainKHR = cast(typeof(vkCreateSwapchainKHR)) vkGetDeviceProcAddr(device, "vkCreateSwapchainKHR"); 942 vkDestroySwapchainKHR = cast(typeof(vkDestroySwapchainKHR)) vkGetDeviceProcAddr(device, "vkDestroySwapchainKHR"); 943 vkGetSwapchainImagesKHR = cast(typeof(vkGetSwapchainImagesKHR)) vkGetDeviceProcAddr(device, "vkGetSwapchainImagesKHR"); 944 vkAcquireNextImageKHR = cast(typeof(vkAcquireNextImageKHR)) vkGetDeviceProcAddr(device, "vkAcquireNextImageKHR"); 945 vkQueuePresentKHR = cast(typeof(vkQueuePresentKHR)) vkGetDeviceProcAddr(device, "vkQueuePresentKHR"); 946 947 // VK_KHR_display_swapchain 948 vkCreateSharedSwapchainsKHR = cast(typeof(vkCreateSharedSwapchainsKHR)) vkGetDeviceProcAddr(device, "vkCreateSharedSwapchainsKHR"); 949 950 // VK_EXT_debug_marker 951 vkDebugMarkerSetObjectTagEXT = cast(typeof(vkDebugMarkerSetObjectTagEXT)) vkGetDeviceProcAddr(device, "vkDebugMarkerSetObjectTagEXT"); 952 vkDebugMarkerSetObjectNameEXT = cast(typeof(vkDebugMarkerSetObjectNameEXT)) vkGetDeviceProcAddr(device, "vkDebugMarkerSetObjectNameEXT"); 953 vkCmdDebugMarkerBeginEXT = cast(typeof(vkCmdDebugMarkerBeginEXT)) vkGetDeviceProcAddr(device, "vkCmdDebugMarkerBeginEXT"); 954 vkCmdDebugMarkerEndEXT = cast(typeof(vkCmdDebugMarkerEndEXT)) vkGetDeviceProcAddr(device, "vkCmdDebugMarkerEndEXT"); 955 vkCmdDebugMarkerInsertEXT = cast(typeof(vkCmdDebugMarkerInsertEXT)) vkGetDeviceProcAddr(device, "vkCmdDebugMarkerInsertEXT"); } 956 957 return dispatchDevice; 958 } 959 960 961 // struct to group per device deviceLevelFunctions into a custom namespace 962 private struct DispatchDevice { 963 PFN_vkDestroyDevice vkDestroyDevice; 964 PFN_vkGetDeviceQueue vkGetDeviceQueue; 965 PFN_vkQueueSubmit vkQueueSubmit; 966 PFN_vkQueueWaitIdle vkQueueWaitIdle; 967 PFN_vkDeviceWaitIdle vkDeviceWaitIdle; 968 PFN_vkAllocateMemory vkAllocateMemory; 969 PFN_vkFreeMemory vkFreeMemory; 970 PFN_vkMapMemory vkMapMemory; 971 PFN_vkUnmapMemory vkUnmapMemory; 972 PFN_vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges; 973 PFN_vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges; 974 PFN_vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment; 975 PFN_vkBindBufferMemory vkBindBufferMemory; 976 PFN_vkBindImageMemory vkBindImageMemory; 977 PFN_vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements; 978 PFN_vkGetImageMemoryRequirements vkGetImageMemoryRequirements; 979 PFN_vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements; 980 PFN_vkQueueBindSparse vkQueueBindSparse; 981 PFN_vkCreateFence vkCreateFence; 982 PFN_vkDestroyFence vkDestroyFence; 983 PFN_vkResetFences vkResetFences; 984 PFN_vkGetFenceStatus vkGetFenceStatus; 985 PFN_vkWaitForFences vkWaitForFences; 986 PFN_vkCreateSemaphore vkCreateSemaphore; 987 PFN_vkDestroySemaphore vkDestroySemaphore; 988 PFN_vkCreateEvent vkCreateEvent; 989 PFN_vkDestroyEvent vkDestroyEvent; 990 PFN_vkGetEventStatus vkGetEventStatus; 991 PFN_vkSetEvent vkSetEvent; 992 PFN_vkResetEvent vkResetEvent; 993 PFN_vkCreateQueryPool vkCreateQueryPool; 994 PFN_vkDestroyQueryPool vkDestroyQueryPool; 995 PFN_vkGetQueryPoolResults vkGetQueryPoolResults; 996 PFN_vkCreateBuffer vkCreateBuffer; 997 PFN_vkDestroyBuffer vkDestroyBuffer; 998 PFN_vkCreateBufferView vkCreateBufferView; 999 PFN_vkDestroyBufferView vkDestroyBufferView; 1000 PFN_vkCreateImage vkCreateImage; 1001 PFN_vkDestroyImage vkDestroyImage; 1002 PFN_vkGetImageSubresourceLayout vkGetImageSubresourceLayout; 1003 PFN_vkCreateImageView vkCreateImageView; 1004 PFN_vkDestroyImageView vkDestroyImageView; 1005 PFN_vkCreateShaderModule vkCreateShaderModule; 1006 PFN_vkDestroyShaderModule vkDestroyShaderModule; 1007 PFN_vkCreatePipelineCache vkCreatePipelineCache; 1008 PFN_vkDestroyPipelineCache vkDestroyPipelineCache; 1009 PFN_vkGetPipelineCacheData vkGetPipelineCacheData; 1010 PFN_vkMergePipelineCaches vkMergePipelineCaches; 1011 PFN_vkCreateGraphicsPipelines vkCreateGraphicsPipelines; 1012 PFN_vkCreateComputePipelines vkCreateComputePipelines; 1013 PFN_vkDestroyPipeline vkDestroyPipeline; 1014 PFN_vkCreatePipelineLayout vkCreatePipelineLayout; 1015 PFN_vkDestroyPipelineLayout vkDestroyPipelineLayout; 1016 PFN_vkCreateSampler vkCreateSampler; 1017 PFN_vkDestroySampler vkDestroySampler; 1018 PFN_vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout; 1019 PFN_vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout; 1020 PFN_vkCreateDescriptorPool vkCreateDescriptorPool; 1021 PFN_vkDestroyDescriptorPool vkDestroyDescriptorPool; 1022 PFN_vkResetDescriptorPool vkResetDescriptorPool; 1023 PFN_vkAllocateDescriptorSets vkAllocateDescriptorSets; 1024 PFN_vkFreeDescriptorSets vkFreeDescriptorSets; 1025 PFN_vkUpdateDescriptorSets vkUpdateDescriptorSets; 1026 PFN_vkCreateFramebuffer vkCreateFramebuffer; 1027 PFN_vkDestroyFramebuffer vkDestroyFramebuffer; 1028 PFN_vkCreateRenderPass vkCreateRenderPass; 1029 PFN_vkDestroyRenderPass vkDestroyRenderPass; 1030 PFN_vkGetRenderAreaGranularity vkGetRenderAreaGranularity; 1031 PFN_vkCreateCommandPool vkCreateCommandPool; 1032 PFN_vkDestroyCommandPool vkDestroyCommandPool; 1033 PFN_vkResetCommandPool vkResetCommandPool; 1034 PFN_vkAllocateCommandBuffers vkAllocateCommandBuffers; 1035 PFN_vkFreeCommandBuffers vkFreeCommandBuffers; 1036 PFN_vkBeginCommandBuffer vkBeginCommandBuffer; 1037 PFN_vkEndCommandBuffer vkEndCommandBuffer; 1038 PFN_vkResetCommandBuffer vkResetCommandBuffer; 1039 PFN_vkCmdBindPipeline vkCmdBindPipeline; 1040 PFN_vkCmdSetViewport vkCmdSetViewport; 1041 PFN_vkCmdSetScissor vkCmdSetScissor; 1042 PFN_vkCmdSetLineWidth vkCmdSetLineWidth; 1043 PFN_vkCmdSetDepthBias vkCmdSetDepthBias; 1044 PFN_vkCmdSetBlendConstants vkCmdSetBlendConstants; 1045 PFN_vkCmdSetDepthBounds vkCmdSetDepthBounds; 1046 PFN_vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask; 1047 PFN_vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask; 1048 PFN_vkCmdSetStencilReference vkCmdSetStencilReference; 1049 PFN_vkCmdBindDescriptorSets vkCmdBindDescriptorSets; 1050 PFN_vkCmdBindIndexBuffer vkCmdBindIndexBuffer; 1051 PFN_vkCmdBindVertexBuffers vkCmdBindVertexBuffers; 1052 PFN_vkCmdDraw vkCmdDraw; 1053 PFN_vkCmdDrawIndexed vkCmdDrawIndexed; 1054 PFN_vkCmdDrawIndirect vkCmdDrawIndirect; 1055 PFN_vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect; 1056 PFN_vkCmdDispatch vkCmdDispatch; 1057 PFN_vkCmdDispatchIndirect vkCmdDispatchIndirect; 1058 PFN_vkCmdCopyBuffer vkCmdCopyBuffer; 1059 PFN_vkCmdCopyImage vkCmdCopyImage; 1060 PFN_vkCmdBlitImage vkCmdBlitImage; 1061 PFN_vkCmdCopyBufferToImage vkCmdCopyBufferToImage; 1062 PFN_vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer; 1063 PFN_vkCmdUpdateBuffer vkCmdUpdateBuffer; 1064 PFN_vkCmdFillBuffer vkCmdFillBuffer; 1065 PFN_vkCmdClearColorImage vkCmdClearColorImage; 1066 PFN_vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage; 1067 PFN_vkCmdClearAttachments vkCmdClearAttachments; 1068 PFN_vkCmdResolveImage vkCmdResolveImage; 1069 PFN_vkCmdSetEvent vkCmdSetEvent; 1070 PFN_vkCmdResetEvent vkCmdResetEvent; 1071 PFN_vkCmdWaitEvents vkCmdWaitEvents; 1072 PFN_vkCmdPipelineBarrier vkCmdPipelineBarrier; 1073 PFN_vkCmdBeginQuery vkCmdBeginQuery; 1074 PFN_vkCmdEndQuery vkCmdEndQuery; 1075 PFN_vkCmdResetQueryPool vkCmdResetQueryPool; 1076 PFN_vkCmdWriteTimestamp vkCmdWriteTimestamp; 1077 PFN_vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults; 1078 PFN_vkCmdPushConstants vkCmdPushConstants; 1079 PFN_vkCmdBeginRenderPass vkCmdBeginRenderPass; 1080 PFN_vkCmdNextSubpass vkCmdNextSubpass; 1081 PFN_vkCmdEndRenderPass vkCmdEndRenderPass; 1082 PFN_vkCmdExecuteCommands vkCmdExecuteCommands; 1083 PFN_vkCreateSwapchainKHR vkCreateSwapchainKHR; 1084 PFN_vkDestroySwapchainKHR vkDestroySwapchainKHR; 1085 PFN_vkGetSwapchainImagesKHR vkGetSwapchainImagesKHR; 1086 PFN_vkAcquireNextImageKHR vkAcquireNextImageKHR; 1087 PFN_vkQueuePresentKHR vkQueuePresentKHR; 1088 PFN_vkCreateSharedSwapchainsKHR vkCreateSharedSwapchainsKHR; 1089 PFN_vkDebugMarkerSetObjectTagEXT vkDebugMarkerSetObjectTagEXT; 1090 PFN_vkDebugMarkerSetObjectNameEXT vkDebugMarkerSetObjectNameEXT; 1091 PFN_vkCmdDebugMarkerBeginEXT vkCmdDebugMarkerBeginEXT; 1092 PFN_vkCmdDebugMarkerEndEXT vkCmdDebugMarkerEndEXT; 1093 PFN_vkCmdDebugMarkerInsertEXT vkCmdDebugMarkerInsertEXT; 1094 } 1095 1096 // Derelict loader to acquire entry point vkGetInstanceProcAddr 1097 version(ERUPTED_FROM_DERELICT) { 1098 import derelict.util.loader; 1099 import derelict.util.system; 1100 1101 private { 1102 version(Windows) 1103 enum libNames = "vulkan-1.dll"; 1104 1105 else version(Posix) 1106 enum libNames = "libvulkan.so.1"; 1107 1108 else 1109 static assert(0,"Need to implement Vulkan libNames for this operating system."); 1110 } 1111 1112 class DerelictEruptedLoader : SharedLibLoader { 1113 this() { 1114 super(libNames); 1115 } 1116 1117 protected override void loadSymbols() { 1118 typeof(vkGetInstanceProcAddr) getProcAddr; 1119 bindFunc(cast(void**)&getProcAddr, "vkGetInstanceProcAddr"); 1120 loadGlobalLevelFunctions(getProcAddr); 1121 } 1122 } 1123 1124 __gshared DerelictEruptedLoader DerelictErupted; 1125 1126 shared static this() { 1127 DerelictErupted = new DerelictEruptedLoader(); 1128 } 1129 } 1130 1131