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(uint32_t)* 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 struct EruptedLoader { 436 @disable this(); 437 @disable this(this); 438 439 /// if not using version "with-derelict-loader" this function must be called first 440 /// sets vkCreateInstance function pointer and acquires basic functions to retrieve information about the implementation 441 static void loadGlobalLevelFunctions(typeof(vkGetInstanceProcAddr) getProcAddr) { 442 vkGetInstanceProcAddr = getProcAddr; 443 vkEnumerateInstanceExtensionProperties = cast(typeof(vkEnumerateInstanceExtensionProperties)) vkGetInstanceProcAddr(null, "vkEnumerateInstanceExtensionProperties"); 444 vkEnumerateInstanceLayerProperties = cast(typeof(vkEnumerateInstanceLayerProperties)) vkGetInstanceProcAddr(null, "vkEnumerateInstanceLayerProperties"); 445 vkCreateInstance = cast(typeof(vkCreateInstance)) vkGetInstanceProcAddr(null, "vkCreateInstance"); 446 } 447 448 /// with a valid VkInstance call this function to retrieve additional VkInstance, VkPhysicalDevice, ... related functions 449 static void loadInstanceLevelFunctions(VkInstance instance) { 450 assert(vkGetInstanceProcAddr !is null, "Must call EruptedLoader.loadGlobalLevelFunctions before EruptedLoader.loadInstanceLevelFunctions"); 451 452 // VK_VERSION_1_0 453 vkDestroyInstance = cast(typeof(vkDestroyInstance)) vkGetInstanceProcAddr(instance, "vkDestroyInstance"); 454 vkEnumeratePhysicalDevices = cast(typeof(vkEnumeratePhysicalDevices)) vkGetInstanceProcAddr(instance, "vkEnumeratePhysicalDevices"); 455 vkGetPhysicalDeviceFeatures = cast(typeof(vkGetPhysicalDeviceFeatures)) vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceFeatures"); 456 vkGetPhysicalDeviceFormatProperties = cast(typeof(vkGetPhysicalDeviceFormatProperties)) vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceFormatProperties"); 457 vkGetPhysicalDeviceImageFormatProperties = cast(typeof(vkGetPhysicalDeviceImageFormatProperties)) vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceImageFormatProperties"); 458 vkGetPhysicalDeviceProperties = cast(typeof(vkGetPhysicalDeviceProperties)) vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceProperties"); 459 vkGetPhysicalDeviceQueueFamilyProperties = cast(typeof(vkGetPhysicalDeviceQueueFamilyProperties)) vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceQueueFamilyProperties"); 460 vkGetPhysicalDeviceMemoryProperties = cast(typeof(vkGetPhysicalDeviceMemoryProperties)) vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceMemoryProperties"); 461 vkGetDeviceProcAddr = cast(typeof(vkGetDeviceProcAddr)) vkGetInstanceProcAddr(instance, "vkGetDeviceProcAddr"); 462 vkCreateDevice = cast(typeof(vkCreateDevice)) vkGetInstanceProcAddr(instance, "vkCreateDevice"); 463 vkEnumerateDeviceExtensionProperties = cast(typeof(vkEnumerateDeviceExtensionProperties)) vkGetInstanceProcAddr(instance, "vkEnumerateDeviceExtensionProperties"); 464 vkEnumerateDeviceLayerProperties = cast(typeof(vkEnumerateDeviceLayerProperties)) vkGetInstanceProcAddr(instance, "vkEnumerateDeviceLayerProperties"); 465 vkGetPhysicalDeviceSparseImageFormatProperties = cast(typeof(vkGetPhysicalDeviceSparseImageFormatProperties)) vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceSparseImageFormatProperties"); 466 467 // VK_KHR_surface 468 vkDestroySurfaceKHR = cast(typeof(vkDestroySurfaceKHR)) vkGetInstanceProcAddr(instance, "vkDestroySurfaceKHR"); 469 vkGetPhysicalDeviceSurfaceSupportKHR = cast(typeof(vkGetPhysicalDeviceSurfaceSupportKHR)) vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceSurfaceSupportKHR"); 470 vkGetPhysicalDeviceSurfaceCapabilitiesKHR = cast(typeof(vkGetPhysicalDeviceSurfaceCapabilitiesKHR)) vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"); 471 vkGetPhysicalDeviceSurfaceFormatsKHR = cast(typeof(vkGetPhysicalDeviceSurfaceFormatsKHR)) vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceSurfaceFormatsKHR"); 472 vkGetPhysicalDeviceSurfacePresentModesKHR = cast(typeof(vkGetPhysicalDeviceSurfacePresentModesKHR)) vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceSurfacePresentModesKHR"); 473 474 // VK_KHR_display 475 vkGetPhysicalDeviceDisplayPropertiesKHR = cast(typeof(vkGetPhysicalDeviceDisplayPropertiesKHR)) vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceDisplayPropertiesKHR"); 476 vkGetPhysicalDeviceDisplayPlanePropertiesKHR = cast(typeof(vkGetPhysicalDeviceDisplayPlanePropertiesKHR)) vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"); 477 vkGetDisplayPlaneSupportedDisplaysKHR = cast(typeof(vkGetDisplayPlaneSupportedDisplaysKHR)) vkGetInstanceProcAddr(instance, "vkGetDisplayPlaneSupportedDisplaysKHR"); 478 vkGetDisplayModePropertiesKHR = cast(typeof(vkGetDisplayModePropertiesKHR)) vkGetInstanceProcAddr(instance, "vkGetDisplayModePropertiesKHR"); 479 vkCreateDisplayModeKHR = cast(typeof(vkCreateDisplayModeKHR)) vkGetInstanceProcAddr(instance, "vkCreateDisplayModeKHR"); 480 vkGetDisplayPlaneCapabilitiesKHR = cast(typeof(vkGetDisplayPlaneCapabilitiesKHR)) vkGetInstanceProcAddr(instance, "vkGetDisplayPlaneCapabilitiesKHR"); 481 vkCreateDisplayPlaneSurfaceKHR = cast(typeof(vkCreateDisplayPlaneSurfaceKHR)) vkGetInstanceProcAddr(instance, "vkCreateDisplayPlaneSurfaceKHR"); 482 483 // VK_KHR_xlib_surface 484 version(VK_USE_PLATFORM_XLIB_KHR) { 485 vkCreateXlibSurfaceKHR = cast(typeof(vkCreateXlibSurfaceKHR)) vkGetInstanceProcAddr(instance, "vkCreateXlibSurfaceKHR"); 486 vkGetPhysicalDeviceXlibPresentationSupportKHR = cast(typeof(vkGetPhysicalDeviceXlibPresentationSupportKHR)) vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceXlibPresentationSupportKHR"); 487 } 488 489 // VK_KHR_xcb_surface 490 version(VK_USE_PLATFORM_XCB_KHR) { 491 vkCreateXcbSurfaceKHR = cast(typeof(vkCreateXcbSurfaceKHR)) vkGetInstanceProcAddr(instance, "vkCreateXcbSurfaceKHR"); 492 vkGetPhysicalDeviceXcbPresentationSupportKHR = cast(typeof(vkGetPhysicalDeviceXcbPresentationSupportKHR)) vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceXcbPresentationSupportKHR"); 493 } 494 495 // VK_KHR_wayland_surface 496 version(VK_USE_PLATFORM_WAYLAND_KHR) { 497 vkCreateWaylandSurfaceKHR = cast(typeof(vkCreateWaylandSurfaceKHR)) vkGetInstanceProcAddr(instance, "vkCreateWaylandSurfaceKHR"); 498 vkGetPhysicalDeviceWaylandPresentationSupportKHR = cast(typeof(vkGetPhysicalDeviceWaylandPresentationSupportKHR)) vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"); 499 } 500 501 // VK_KHR_mir_surface 502 version(VK_USE_PLATFORM_MIR_KHR) { 503 vkCreateMirSurfaceKHR = cast(typeof(vkCreateMirSurfaceKHR)) vkGetInstanceProcAddr(instance, "vkCreateMirSurfaceKHR"); 504 vkGetPhysicalDeviceMirPresentationSupportKHR = cast(typeof(vkGetPhysicalDeviceMirPresentationSupportKHR)) vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceMirPresentationSupportKHR"); 505 } 506 507 // VK_KHR_android_surface 508 version(VK_USE_PLATFORM_ANDROID_KHR) { 509 vkCreateAndroidSurfaceKHR = cast(typeof(vkCreateAndroidSurfaceKHR)) vkGetInstanceProcAddr(instance, "vkCreateAndroidSurfaceKHR"); 510 } 511 512 // VK_KHR_win32_surface 513 version(VK_USE_PLATFORM_WIN32_KHR) { 514 vkCreateWin32SurfaceKHR = cast(typeof(vkCreateWin32SurfaceKHR)) vkGetInstanceProcAddr(instance, "vkCreateWin32SurfaceKHR"); 515 vkGetPhysicalDeviceWin32PresentationSupportKHR = cast(typeof(vkGetPhysicalDeviceWin32PresentationSupportKHR)) vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceWin32PresentationSupportKHR"); 516 } 517 518 // VK_EXT_debug_report 519 vkCreateDebugReportCallbackEXT = cast(typeof(vkCreateDebugReportCallbackEXT)) vkGetInstanceProcAddr(instance, "vkCreateDebugReportCallbackEXT"); 520 vkDestroyDebugReportCallbackEXT = cast(typeof(vkDestroyDebugReportCallbackEXT)) vkGetInstanceProcAddr(instance, "vkDestroyDebugReportCallbackEXT"); 521 vkDebugReportMessageEXT = cast(typeof(vkDebugReportMessageEXT)) vkGetInstanceProcAddr(instance, "vkDebugReportMessageEXT"); 522 } 523 524 /// with a valid VkInstance call this function to retrieve VkDevice, VkQueue and VkCommandBuffer related functions 525 /// the functions call indirectly through the VkInstance and will be internally dispatched by the implementation 526 static void loadDeviceLevelFunctions(VkInstance instance) { 527 assert(vkGetInstanceProcAddr !is null, "Must call EruptedLoader.loadInstanceLevelFunctions before EruptedLoader.loadDeviceLevelFunctions"); 528 529 // VK_VERSION_1_0 530 vkDestroyDevice = cast(typeof(vkDestroyDevice)) vkGetInstanceProcAddr(instance, "vkDestroyDevice"); 531 vkGetDeviceQueue = cast(typeof(vkGetDeviceQueue)) vkGetInstanceProcAddr(instance, "vkGetDeviceQueue"); 532 vkQueueSubmit = cast(typeof(vkQueueSubmit)) vkGetInstanceProcAddr(instance, "vkQueueSubmit"); 533 vkQueueWaitIdle = cast(typeof(vkQueueWaitIdle)) vkGetInstanceProcAddr(instance, "vkQueueWaitIdle"); 534 vkDeviceWaitIdle = cast(typeof(vkDeviceWaitIdle)) vkGetInstanceProcAddr(instance, "vkDeviceWaitIdle"); 535 vkAllocateMemory = cast(typeof(vkAllocateMemory)) vkGetInstanceProcAddr(instance, "vkAllocateMemory"); 536 vkFreeMemory = cast(typeof(vkFreeMemory)) vkGetInstanceProcAddr(instance, "vkFreeMemory"); 537 vkMapMemory = cast(typeof(vkMapMemory)) vkGetInstanceProcAddr(instance, "vkMapMemory"); 538 vkUnmapMemory = cast(typeof(vkUnmapMemory)) vkGetInstanceProcAddr(instance, "vkUnmapMemory"); 539 vkFlushMappedMemoryRanges = cast(typeof(vkFlushMappedMemoryRanges)) vkGetInstanceProcAddr(instance, "vkFlushMappedMemoryRanges"); 540 vkInvalidateMappedMemoryRanges = cast(typeof(vkInvalidateMappedMemoryRanges)) vkGetInstanceProcAddr(instance, "vkInvalidateMappedMemoryRanges"); 541 vkGetDeviceMemoryCommitment = cast(typeof(vkGetDeviceMemoryCommitment)) vkGetInstanceProcAddr(instance, "vkGetDeviceMemoryCommitment"); 542 vkBindBufferMemory = cast(typeof(vkBindBufferMemory)) vkGetInstanceProcAddr(instance, "vkBindBufferMemory"); 543 vkBindImageMemory = cast(typeof(vkBindImageMemory)) vkGetInstanceProcAddr(instance, "vkBindImageMemory"); 544 vkGetBufferMemoryRequirements = cast(typeof(vkGetBufferMemoryRequirements)) vkGetInstanceProcAddr(instance, "vkGetBufferMemoryRequirements"); 545 vkGetImageMemoryRequirements = cast(typeof(vkGetImageMemoryRequirements)) vkGetInstanceProcAddr(instance, "vkGetImageMemoryRequirements"); 546 vkGetImageSparseMemoryRequirements = cast(typeof(vkGetImageSparseMemoryRequirements)) vkGetInstanceProcAddr(instance, "vkGetImageSparseMemoryRequirements"); 547 vkQueueBindSparse = cast(typeof(vkQueueBindSparse)) vkGetInstanceProcAddr(instance, "vkQueueBindSparse"); 548 vkCreateFence = cast(typeof(vkCreateFence)) vkGetInstanceProcAddr(instance, "vkCreateFence"); 549 vkDestroyFence = cast(typeof(vkDestroyFence)) vkGetInstanceProcAddr(instance, "vkDestroyFence"); 550 vkResetFences = cast(typeof(vkResetFences)) vkGetInstanceProcAddr(instance, "vkResetFences"); 551 vkGetFenceStatus = cast(typeof(vkGetFenceStatus)) vkGetInstanceProcAddr(instance, "vkGetFenceStatus"); 552 vkWaitForFences = cast(typeof(vkWaitForFences)) vkGetInstanceProcAddr(instance, "vkWaitForFences"); 553 vkCreateSemaphore = cast(typeof(vkCreateSemaphore)) vkGetInstanceProcAddr(instance, "vkCreateSemaphore"); 554 vkDestroySemaphore = cast(typeof(vkDestroySemaphore)) vkGetInstanceProcAddr(instance, "vkDestroySemaphore"); 555 vkCreateEvent = cast(typeof(vkCreateEvent)) vkGetInstanceProcAddr(instance, "vkCreateEvent"); 556 vkDestroyEvent = cast(typeof(vkDestroyEvent)) vkGetInstanceProcAddr(instance, "vkDestroyEvent"); 557 vkGetEventStatus = cast(typeof(vkGetEventStatus)) vkGetInstanceProcAddr(instance, "vkGetEventStatus"); 558 vkSetEvent = cast(typeof(vkSetEvent)) vkGetInstanceProcAddr(instance, "vkSetEvent"); 559 vkResetEvent = cast(typeof(vkResetEvent)) vkGetInstanceProcAddr(instance, "vkResetEvent"); 560 vkCreateQueryPool = cast(typeof(vkCreateQueryPool)) vkGetInstanceProcAddr(instance, "vkCreateQueryPool"); 561 vkDestroyQueryPool = cast(typeof(vkDestroyQueryPool)) vkGetInstanceProcAddr(instance, "vkDestroyQueryPool"); 562 vkGetQueryPoolResults = cast(typeof(vkGetQueryPoolResults)) vkGetInstanceProcAddr(instance, "vkGetQueryPoolResults"); 563 vkCreateBuffer = cast(typeof(vkCreateBuffer)) vkGetInstanceProcAddr(instance, "vkCreateBuffer"); 564 vkDestroyBuffer = cast(typeof(vkDestroyBuffer)) vkGetInstanceProcAddr(instance, "vkDestroyBuffer"); 565 vkCreateBufferView = cast(typeof(vkCreateBufferView)) vkGetInstanceProcAddr(instance, "vkCreateBufferView"); 566 vkDestroyBufferView = cast(typeof(vkDestroyBufferView)) vkGetInstanceProcAddr(instance, "vkDestroyBufferView"); 567 vkCreateImage = cast(typeof(vkCreateImage)) vkGetInstanceProcAddr(instance, "vkCreateImage"); 568 vkDestroyImage = cast(typeof(vkDestroyImage)) vkGetInstanceProcAddr(instance, "vkDestroyImage"); 569 vkGetImageSubresourceLayout = cast(typeof(vkGetImageSubresourceLayout)) vkGetInstanceProcAddr(instance, "vkGetImageSubresourceLayout"); 570 vkCreateImageView = cast(typeof(vkCreateImageView)) vkGetInstanceProcAddr(instance, "vkCreateImageView"); 571 vkDestroyImageView = cast(typeof(vkDestroyImageView)) vkGetInstanceProcAddr(instance, "vkDestroyImageView"); 572 vkCreateShaderModule = cast(typeof(vkCreateShaderModule)) vkGetInstanceProcAddr(instance, "vkCreateShaderModule"); 573 vkDestroyShaderModule = cast(typeof(vkDestroyShaderModule)) vkGetInstanceProcAddr(instance, "vkDestroyShaderModule"); 574 vkCreatePipelineCache = cast(typeof(vkCreatePipelineCache)) vkGetInstanceProcAddr(instance, "vkCreatePipelineCache"); 575 vkDestroyPipelineCache = cast(typeof(vkDestroyPipelineCache)) vkGetInstanceProcAddr(instance, "vkDestroyPipelineCache"); 576 vkGetPipelineCacheData = cast(typeof(vkGetPipelineCacheData)) vkGetInstanceProcAddr(instance, "vkGetPipelineCacheData"); 577 vkMergePipelineCaches = cast(typeof(vkMergePipelineCaches)) vkGetInstanceProcAddr(instance, "vkMergePipelineCaches"); 578 vkCreateGraphicsPipelines = cast(typeof(vkCreateGraphicsPipelines)) vkGetInstanceProcAddr(instance, "vkCreateGraphicsPipelines"); 579 vkCreateComputePipelines = cast(typeof(vkCreateComputePipelines)) vkGetInstanceProcAddr(instance, "vkCreateComputePipelines"); 580 vkDestroyPipeline = cast(typeof(vkDestroyPipeline)) vkGetInstanceProcAddr(instance, "vkDestroyPipeline"); 581 vkCreatePipelineLayout = cast(typeof(vkCreatePipelineLayout)) vkGetInstanceProcAddr(instance, "vkCreatePipelineLayout"); 582 vkDestroyPipelineLayout = cast(typeof(vkDestroyPipelineLayout)) vkGetInstanceProcAddr(instance, "vkDestroyPipelineLayout"); 583 vkCreateSampler = cast(typeof(vkCreateSampler)) vkGetInstanceProcAddr(instance, "vkCreateSampler"); 584 vkDestroySampler = cast(typeof(vkDestroySampler)) vkGetInstanceProcAddr(instance, "vkDestroySampler"); 585 vkCreateDescriptorSetLayout = cast(typeof(vkCreateDescriptorSetLayout)) vkGetInstanceProcAddr(instance, "vkCreateDescriptorSetLayout"); 586 vkDestroyDescriptorSetLayout = cast(typeof(vkDestroyDescriptorSetLayout)) vkGetInstanceProcAddr(instance, "vkDestroyDescriptorSetLayout"); 587 vkCreateDescriptorPool = cast(typeof(vkCreateDescriptorPool)) vkGetInstanceProcAddr(instance, "vkCreateDescriptorPool"); 588 vkDestroyDescriptorPool = cast(typeof(vkDestroyDescriptorPool)) vkGetInstanceProcAddr(instance, "vkDestroyDescriptorPool"); 589 vkResetDescriptorPool = cast(typeof(vkResetDescriptorPool)) vkGetInstanceProcAddr(instance, "vkResetDescriptorPool"); 590 vkAllocateDescriptorSets = cast(typeof(vkAllocateDescriptorSets)) vkGetInstanceProcAddr(instance, "vkAllocateDescriptorSets"); 591 vkFreeDescriptorSets = cast(typeof(vkFreeDescriptorSets)) vkGetInstanceProcAddr(instance, "vkFreeDescriptorSets"); 592 vkUpdateDescriptorSets = cast(typeof(vkUpdateDescriptorSets)) vkGetInstanceProcAddr(instance, "vkUpdateDescriptorSets"); 593 vkCreateFramebuffer = cast(typeof(vkCreateFramebuffer)) vkGetInstanceProcAddr(instance, "vkCreateFramebuffer"); 594 vkDestroyFramebuffer = cast(typeof(vkDestroyFramebuffer)) vkGetInstanceProcAddr(instance, "vkDestroyFramebuffer"); 595 vkCreateRenderPass = cast(typeof(vkCreateRenderPass)) vkGetInstanceProcAddr(instance, "vkCreateRenderPass"); 596 vkDestroyRenderPass = cast(typeof(vkDestroyRenderPass)) vkGetInstanceProcAddr(instance, "vkDestroyRenderPass"); 597 vkGetRenderAreaGranularity = cast(typeof(vkGetRenderAreaGranularity)) vkGetInstanceProcAddr(instance, "vkGetRenderAreaGranularity"); 598 vkCreateCommandPool = cast(typeof(vkCreateCommandPool)) vkGetInstanceProcAddr(instance, "vkCreateCommandPool"); 599 vkDestroyCommandPool = cast(typeof(vkDestroyCommandPool)) vkGetInstanceProcAddr(instance, "vkDestroyCommandPool"); 600 vkResetCommandPool = cast(typeof(vkResetCommandPool)) vkGetInstanceProcAddr(instance, "vkResetCommandPool"); 601 vkAllocateCommandBuffers = cast(typeof(vkAllocateCommandBuffers)) vkGetInstanceProcAddr(instance, "vkAllocateCommandBuffers"); 602 vkFreeCommandBuffers = cast(typeof(vkFreeCommandBuffers)) vkGetInstanceProcAddr(instance, "vkFreeCommandBuffers"); 603 vkBeginCommandBuffer = cast(typeof(vkBeginCommandBuffer)) vkGetInstanceProcAddr(instance, "vkBeginCommandBuffer"); 604 vkEndCommandBuffer = cast(typeof(vkEndCommandBuffer)) vkGetInstanceProcAddr(instance, "vkEndCommandBuffer"); 605 vkResetCommandBuffer = cast(typeof(vkResetCommandBuffer)) vkGetInstanceProcAddr(instance, "vkResetCommandBuffer"); 606 vkCmdBindPipeline = cast(typeof(vkCmdBindPipeline)) vkGetInstanceProcAddr(instance, "vkCmdBindPipeline"); 607 vkCmdSetViewport = cast(typeof(vkCmdSetViewport)) vkGetInstanceProcAddr(instance, "vkCmdSetViewport"); 608 vkCmdSetScissor = cast(typeof(vkCmdSetScissor)) vkGetInstanceProcAddr(instance, "vkCmdSetScissor"); 609 vkCmdSetLineWidth = cast(typeof(vkCmdSetLineWidth)) vkGetInstanceProcAddr(instance, "vkCmdSetLineWidth"); 610 vkCmdSetDepthBias = cast(typeof(vkCmdSetDepthBias)) vkGetInstanceProcAddr(instance, "vkCmdSetDepthBias"); 611 vkCmdSetBlendConstants = cast(typeof(vkCmdSetBlendConstants)) vkGetInstanceProcAddr(instance, "vkCmdSetBlendConstants"); 612 vkCmdSetDepthBounds = cast(typeof(vkCmdSetDepthBounds)) vkGetInstanceProcAddr(instance, "vkCmdSetDepthBounds"); 613 vkCmdSetStencilCompareMask = cast(typeof(vkCmdSetStencilCompareMask)) vkGetInstanceProcAddr(instance, "vkCmdSetStencilCompareMask"); 614 vkCmdSetStencilWriteMask = cast(typeof(vkCmdSetStencilWriteMask)) vkGetInstanceProcAddr(instance, "vkCmdSetStencilWriteMask"); 615 vkCmdSetStencilReference = cast(typeof(vkCmdSetStencilReference)) vkGetInstanceProcAddr(instance, "vkCmdSetStencilReference"); 616 vkCmdBindDescriptorSets = cast(typeof(vkCmdBindDescriptorSets)) vkGetInstanceProcAddr(instance, "vkCmdBindDescriptorSets"); 617 vkCmdBindIndexBuffer = cast(typeof(vkCmdBindIndexBuffer)) vkGetInstanceProcAddr(instance, "vkCmdBindIndexBuffer"); 618 vkCmdBindVertexBuffers = cast(typeof(vkCmdBindVertexBuffers)) vkGetInstanceProcAddr(instance, "vkCmdBindVertexBuffers"); 619 vkCmdDraw = cast(typeof(vkCmdDraw)) vkGetInstanceProcAddr(instance, "vkCmdDraw"); 620 vkCmdDrawIndexed = cast(typeof(vkCmdDrawIndexed)) vkGetInstanceProcAddr(instance, "vkCmdDrawIndexed"); 621 vkCmdDrawIndirect = cast(typeof(vkCmdDrawIndirect)) vkGetInstanceProcAddr(instance, "vkCmdDrawIndirect"); 622 vkCmdDrawIndexedIndirect = cast(typeof(vkCmdDrawIndexedIndirect)) vkGetInstanceProcAddr(instance, "vkCmdDrawIndexedIndirect"); 623 vkCmdDispatch = cast(typeof(vkCmdDispatch)) vkGetInstanceProcAddr(instance, "vkCmdDispatch"); 624 vkCmdDispatchIndirect = cast(typeof(vkCmdDispatchIndirect)) vkGetInstanceProcAddr(instance, "vkCmdDispatchIndirect"); 625 vkCmdCopyBuffer = cast(typeof(vkCmdCopyBuffer)) vkGetInstanceProcAddr(instance, "vkCmdCopyBuffer"); 626 vkCmdCopyImage = cast(typeof(vkCmdCopyImage)) vkGetInstanceProcAddr(instance, "vkCmdCopyImage"); 627 vkCmdBlitImage = cast(typeof(vkCmdBlitImage)) vkGetInstanceProcAddr(instance, "vkCmdBlitImage"); 628 vkCmdCopyBufferToImage = cast(typeof(vkCmdCopyBufferToImage)) vkGetInstanceProcAddr(instance, "vkCmdCopyBufferToImage"); 629 vkCmdCopyImageToBuffer = cast(typeof(vkCmdCopyImageToBuffer)) vkGetInstanceProcAddr(instance, "vkCmdCopyImageToBuffer"); 630 vkCmdUpdateBuffer = cast(typeof(vkCmdUpdateBuffer)) vkGetInstanceProcAddr(instance, "vkCmdUpdateBuffer"); 631 vkCmdFillBuffer = cast(typeof(vkCmdFillBuffer)) vkGetInstanceProcAddr(instance, "vkCmdFillBuffer"); 632 vkCmdClearColorImage = cast(typeof(vkCmdClearColorImage)) vkGetInstanceProcAddr(instance, "vkCmdClearColorImage"); 633 vkCmdClearDepthStencilImage = cast(typeof(vkCmdClearDepthStencilImage)) vkGetInstanceProcAddr(instance, "vkCmdClearDepthStencilImage"); 634 vkCmdClearAttachments = cast(typeof(vkCmdClearAttachments)) vkGetInstanceProcAddr(instance, "vkCmdClearAttachments"); 635 vkCmdResolveImage = cast(typeof(vkCmdResolveImage)) vkGetInstanceProcAddr(instance, "vkCmdResolveImage"); 636 vkCmdSetEvent = cast(typeof(vkCmdSetEvent)) vkGetInstanceProcAddr(instance, "vkCmdSetEvent"); 637 vkCmdResetEvent = cast(typeof(vkCmdResetEvent)) vkGetInstanceProcAddr(instance, "vkCmdResetEvent"); 638 vkCmdWaitEvents = cast(typeof(vkCmdWaitEvents)) vkGetInstanceProcAddr(instance, "vkCmdWaitEvents"); 639 vkCmdPipelineBarrier = cast(typeof(vkCmdPipelineBarrier)) vkGetInstanceProcAddr(instance, "vkCmdPipelineBarrier"); 640 vkCmdBeginQuery = cast(typeof(vkCmdBeginQuery)) vkGetInstanceProcAddr(instance, "vkCmdBeginQuery"); 641 vkCmdEndQuery = cast(typeof(vkCmdEndQuery)) vkGetInstanceProcAddr(instance, "vkCmdEndQuery"); 642 vkCmdResetQueryPool = cast(typeof(vkCmdResetQueryPool)) vkGetInstanceProcAddr(instance, "vkCmdResetQueryPool"); 643 vkCmdWriteTimestamp = cast(typeof(vkCmdWriteTimestamp)) vkGetInstanceProcAddr(instance, "vkCmdWriteTimestamp"); 644 vkCmdCopyQueryPoolResults = cast(typeof(vkCmdCopyQueryPoolResults)) vkGetInstanceProcAddr(instance, "vkCmdCopyQueryPoolResults"); 645 vkCmdPushConstants = cast(typeof(vkCmdPushConstants)) vkGetInstanceProcAddr(instance, "vkCmdPushConstants"); 646 vkCmdBeginRenderPass = cast(typeof(vkCmdBeginRenderPass)) vkGetInstanceProcAddr(instance, "vkCmdBeginRenderPass"); 647 vkCmdNextSubpass = cast(typeof(vkCmdNextSubpass)) vkGetInstanceProcAddr(instance, "vkCmdNextSubpass"); 648 vkCmdEndRenderPass = cast(typeof(vkCmdEndRenderPass)) vkGetInstanceProcAddr(instance, "vkCmdEndRenderPass"); 649 vkCmdExecuteCommands = cast(typeof(vkCmdExecuteCommands)) vkGetInstanceProcAddr(instance, "vkCmdExecuteCommands"); 650 651 // VK_KHR_swapchain 652 vkCreateSwapchainKHR = cast(typeof(vkCreateSwapchainKHR)) vkGetInstanceProcAddr(instance, "vkCreateSwapchainKHR"); 653 vkDestroySwapchainKHR = cast(typeof(vkDestroySwapchainKHR)) vkGetInstanceProcAddr(instance, "vkDestroySwapchainKHR"); 654 vkGetSwapchainImagesKHR = cast(typeof(vkGetSwapchainImagesKHR)) vkGetInstanceProcAddr(instance, "vkGetSwapchainImagesKHR"); 655 vkAcquireNextImageKHR = cast(typeof(vkAcquireNextImageKHR)) vkGetInstanceProcAddr(instance, "vkAcquireNextImageKHR"); 656 vkQueuePresentKHR = cast(typeof(vkQueuePresentKHR)) vkGetInstanceProcAddr(instance, "vkQueuePresentKHR"); 657 658 // VK_KHR_display_swapchain 659 vkCreateSharedSwapchainsKHR = cast(typeof(vkCreateSharedSwapchainsKHR)) vkGetInstanceProcAddr(instance, "vkCreateSharedSwapchainsKHR"); 660 661 // VK_EXT_debug_marker 662 vkDebugMarkerSetObjectTagEXT = cast(typeof(vkDebugMarkerSetObjectTagEXT)) vkGetInstanceProcAddr(instance, "vkDebugMarkerSetObjectTagEXT"); 663 vkDebugMarkerSetObjectNameEXT = cast(typeof(vkDebugMarkerSetObjectNameEXT)) vkGetInstanceProcAddr(instance, "vkDebugMarkerSetObjectNameEXT"); 664 vkCmdDebugMarkerBeginEXT = cast(typeof(vkCmdDebugMarkerBeginEXT)) vkGetInstanceProcAddr(instance, "vkCmdDebugMarkerBeginEXT"); 665 vkCmdDebugMarkerEndEXT = cast(typeof(vkCmdDebugMarkerEndEXT)) vkGetInstanceProcAddr(instance, "vkCmdDebugMarkerEndEXT"); 666 vkCmdDebugMarkerInsertEXT = cast(typeof(vkCmdDebugMarkerInsertEXT)) vkGetInstanceProcAddr(instance, "vkCmdDebugMarkerInsertEXT"); 667 } 668 669 /// with a valid VkDevice call this function to retrieve VkDevice, VkQueue and VkCommandBuffer related functions 670 /// the functions call directly VkDevice and related resources and can be retrieved for one and only one VkDevice 671 /// otherwise a call to with to VkDevices would overwrite the __gshared functions of another previously called VkDevice 672 /// use createGroupedDeviceLevelFunctions bellow if usage of multiple VkDevices is required 673 static void loadDeviceLevelFunctions(VkDevice device) { 674 assert(vkGetDeviceProcAddr !is null, "Must call EruptedLoader.loadInstanceLevelFunctions before EruptedLoader.loadDeviceLevelFunctions"); 675 676 // VK_VERSION_1_0 677 vkDestroyDevice = cast(typeof(vkDestroyDevice)) vkGetDeviceProcAddr(device, "vkDestroyDevice"); 678 vkGetDeviceQueue = cast(typeof(vkGetDeviceQueue)) vkGetDeviceProcAddr(device, "vkGetDeviceQueue"); 679 vkQueueSubmit = cast(typeof(vkQueueSubmit)) vkGetDeviceProcAddr(device, "vkQueueSubmit"); 680 vkQueueWaitIdle = cast(typeof(vkQueueWaitIdle)) vkGetDeviceProcAddr(device, "vkQueueWaitIdle"); 681 vkDeviceWaitIdle = cast(typeof(vkDeviceWaitIdle)) vkGetDeviceProcAddr(device, "vkDeviceWaitIdle"); 682 vkAllocateMemory = cast(typeof(vkAllocateMemory)) vkGetDeviceProcAddr(device, "vkAllocateMemory"); 683 vkFreeMemory = cast(typeof(vkFreeMemory)) vkGetDeviceProcAddr(device, "vkFreeMemory"); 684 vkMapMemory = cast(typeof(vkMapMemory)) vkGetDeviceProcAddr(device, "vkMapMemory"); 685 vkUnmapMemory = cast(typeof(vkUnmapMemory)) vkGetDeviceProcAddr(device, "vkUnmapMemory"); 686 vkFlushMappedMemoryRanges = cast(typeof(vkFlushMappedMemoryRanges)) vkGetDeviceProcAddr(device, "vkFlushMappedMemoryRanges"); 687 vkInvalidateMappedMemoryRanges = cast(typeof(vkInvalidateMappedMemoryRanges)) vkGetDeviceProcAddr(device, "vkInvalidateMappedMemoryRanges"); 688 vkGetDeviceMemoryCommitment = cast(typeof(vkGetDeviceMemoryCommitment)) vkGetDeviceProcAddr(device, "vkGetDeviceMemoryCommitment"); 689 vkBindBufferMemory = cast(typeof(vkBindBufferMemory)) vkGetDeviceProcAddr(device, "vkBindBufferMemory"); 690 vkBindImageMemory = cast(typeof(vkBindImageMemory)) vkGetDeviceProcAddr(device, "vkBindImageMemory"); 691 vkGetBufferMemoryRequirements = cast(typeof(vkGetBufferMemoryRequirements)) vkGetDeviceProcAddr(device, "vkGetBufferMemoryRequirements"); 692 vkGetImageMemoryRequirements = cast(typeof(vkGetImageMemoryRequirements)) vkGetDeviceProcAddr(device, "vkGetImageMemoryRequirements"); 693 vkGetImageSparseMemoryRequirements = cast(typeof(vkGetImageSparseMemoryRequirements)) vkGetDeviceProcAddr(device, "vkGetImageSparseMemoryRequirements"); 694 vkQueueBindSparse = cast(typeof(vkQueueBindSparse)) vkGetDeviceProcAddr(device, "vkQueueBindSparse"); 695 vkCreateFence = cast(typeof(vkCreateFence)) vkGetDeviceProcAddr(device, "vkCreateFence"); 696 vkDestroyFence = cast(typeof(vkDestroyFence)) vkGetDeviceProcAddr(device, "vkDestroyFence"); 697 vkResetFences = cast(typeof(vkResetFences)) vkGetDeviceProcAddr(device, "vkResetFences"); 698 vkGetFenceStatus = cast(typeof(vkGetFenceStatus)) vkGetDeviceProcAddr(device, "vkGetFenceStatus"); 699 vkWaitForFences = cast(typeof(vkWaitForFences)) vkGetDeviceProcAddr(device, "vkWaitForFences"); 700 vkCreateSemaphore = cast(typeof(vkCreateSemaphore)) vkGetDeviceProcAddr(device, "vkCreateSemaphore"); 701 vkDestroySemaphore = cast(typeof(vkDestroySemaphore)) vkGetDeviceProcAddr(device, "vkDestroySemaphore"); 702 vkCreateEvent = cast(typeof(vkCreateEvent)) vkGetDeviceProcAddr(device, "vkCreateEvent"); 703 vkDestroyEvent = cast(typeof(vkDestroyEvent)) vkGetDeviceProcAddr(device, "vkDestroyEvent"); 704 vkGetEventStatus = cast(typeof(vkGetEventStatus)) vkGetDeviceProcAddr(device, "vkGetEventStatus"); 705 vkSetEvent = cast(typeof(vkSetEvent)) vkGetDeviceProcAddr(device, "vkSetEvent"); 706 vkResetEvent = cast(typeof(vkResetEvent)) vkGetDeviceProcAddr(device, "vkResetEvent"); 707 vkCreateQueryPool = cast(typeof(vkCreateQueryPool)) vkGetDeviceProcAddr(device, "vkCreateQueryPool"); 708 vkDestroyQueryPool = cast(typeof(vkDestroyQueryPool)) vkGetDeviceProcAddr(device, "vkDestroyQueryPool"); 709 vkGetQueryPoolResults = cast(typeof(vkGetQueryPoolResults)) vkGetDeviceProcAddr(device, "vkGetQueryPoolResults"); 710 vkCreateBuffer = cast(typeof(vkCreateBuffer)) vkGetDeviceProcAddr(device, "vkCreateBuffer"); 711 vkDestroyBuffer = cast(typeof(vkDestroyBuffer)) vkGetDeviceProcAddr(device, "vkDestroyBuffer"); 712 vkCreateBufferView = cast(typeof(vkCreateBufferView)) vkGetDeviceProcAddr(device, "vkCreateBufferView"); 713 vkDestroyBufferView = cast(typeof(vkDestroyBufferView)) vkGetDeviceProcAddr(device, "vkDestroyBufferView"); 714 vkCreateImage = cast(typeof(vkCreateImage)) vkGetDeviceProcAddr(device, "vkCreateImage"); 715 vkDestroyImage = cast(typeof(vkDestroyImage)) vkGetDeviceProcAddr(device, "vkDestroyImage"); 716 vkGetImageSubresourceLayout = cast(typeof(vkGetImageSubresourceLayout)) vkGetDeviceProcAddr(device, "vkGetImageSubresourceLayout"); 717 vkCreateImageView = cast(typeof(vkCreateImageView)) vkGetDeviceProcAddr(device, "vkCreateImageView"); 718 vkDestroyImageView = cast(typeof(vkDestroyImageView)) vkGetDeviceProcAddr(device, "vkDestroyImageView"); 719 vkCreateShaderModule = cast(typeof(vkCreateShaderModule)) vkGetDeviceProcAddr(device, "vkCreateShaderModule"); 720 vkDestroyShaderModule = cast(typeof(vkDestroyShaderModule)) vkGetDeviceProcAddr(device, "vkDestroyShaderModule"); 721 vkCreatePipelineCache = cast(typeof(vkCreatePipelineCache)) vkGetDeviceProcAddr(device, "vkCreatePipelineCache"); 722 vkDestroyPipelineCache = cast(typeof(vkDestroyPipelineCache)) vkGetDeviceProcAddr(device, "vkDestroyPipelineCache"); 723 vkGetPipelineCacheData = cast(typeof(vkGetPipelineCacheData)) vkGetDeviceProcAddr(device, "vkGetPipelineCacheData"); 724 vkMergePipelineCaches = cast(typeof(vkMergePipelineCaches)) vkGetDeviceProcAddr(device, "vkMergePipelineCaches"); 725 vkCreateGraphicsPipelines = cast(typeof(vkCreateGraphicsPipelines)) vkGetDeviceProcAddr(device, "vkCreateGraphicsPipelines"); 726 vkCreateComputePipelines = cast(typeof(vkCreateComputePipelines)) vkGetDeviceProcAddr(device, "vkCreateComputePipelines"); 727 vkDestroyPipeline = cast(typeof(vkDestroyPipeline)) vkGetDeviceProcAddr(device, "vkDestroyPipeline"); 728 vkCreatePipelineLayout = cast(typeof(vkCreatePipelineLayout)) vkGetDeviceProcAddr(device, "vkCreatePipelineLayout"); 729 vkDestroyPipelineLayout = cast(typeof(vkDestroyPipelineLayout)) vkGetDeviceProcAddr(device, "vkDestroyPipelineLayout"); 730 vkCreateSampler = cast(typeof(vkCreateSampler)) vkGetDeviceProcAddr(device, "vkCreateSampler"); 731 vkDestroySampler = cast(typeof(vkDestroySampler)) vkGetDeviceProcAddr(device, "vkDestroySampler"); 732 vkCreateDescriptorSetLayout = cast(typeof(vkCreateDescriptorSetLayout)) vkGetDeviceProcAddr(device, "vkCreateDescriptorSetLayout"); 733 vkDestroyDescriptorSetLayout = cast(typeof(vkDestroyDescriptorSetLayout)) vkGetDeviceProcAddr(device, "vkDestroyDescriptorSetLayout"); 734 vkCreateDescriptorPool = cast(typeof(vkCreateDescriptorPool)) vkGetDeviceProcAddr(device, "vkCreateDescriptorPool"); 735 vkDestroyDescriptorPool = cast(typeof(vkDestroyDescriptorPool)) vkGetDeviceProcAddr(device, "vkDestroyDescriptorPool"); 736 vkResetDescriptorPool = cast(typeof(vkResetDescriptorPool)) vkGetDeviceProcAddr(device, "vkResetDescriptorPool"); 737 vkAllocateDescriptorSets = cast(typeof(vkAllocateDescriptorSets)) vkGetDeviceProcAddr(device, "vkAllocateDescriptorSets"); 738 vkFreeDescriptorSets = cast(typeof(vkFreeDescriptorSets)) vkGetDeviceProcAddr(device, "vkFreeDescriptorSets"); 739 vkUpdateDescriptorSets = cast(typeof(vkUpdateDescriptorSets)) vkGetDeviceProcAddr(device, "vkUpdateDescriptorSets"); 740 vkCreateFramebuffer = cast(typeof(vkCreateFramebuffer)) vkGetDeviceProcAddr(device, "vkCreateFramebuffer"); 741 vkDestroyFramebuffer = cast(typeof(vkDestroyFramebuffer)) vkGetDeviceProcAddr(device, "vkDestroyFramebuffer"); 742 vkCreateRenderPass = cast(typeof(vkCreateRenderPass)) vkGetDeviceProcAddr(device, "vkCreateRenderPass"); 743 vkDestroyRenderPass = cast(typeof(vkDestroyRenderPass)) vkGetDeviceProcAddr(device, "vkDestroyRenderPass"); 744 vkGetRenderAreaGranularity = cast(typeof(vkGetRenderAreaGranularity)) vkGetDeviceProcAddr(device, "vkGetRenderAreaGranularity"); 745 vkCreateCommandPool = cast(typeof(vkCreateCommandPool)) vkGetDeviceProcAddr(device, "vkCreateCommandPool"); 746 vkDestroyCommandPool = cast(typeof(vkDestroyCommandPool)) vkGetDeviceProcAddr(device, "vkDestroyCommandPool"); 747 vkResetCommandPool = cast(typeof(vkResetCommandPool)) vkGetDeviceProcAddr(device, "vkResetCommandPool"); 748 vkAllocateCommandBuffers = cast(typeof(vkAllocateCommandBuffers)) vkGetDeviceProcAddr(device, "vkAllocateCommandBuffers"); 749 vkFreeCommandBuffers = cast(typeof(vkFreeCommandBuffers)) vkGetDeviceProcAddr(device, "vkFreeCommandBuffers"); 750 vkBeginCommandBuffer = cast(typeof(vkBeginCommandBuffer)) vkGetDeviceProcAddr(device, "vkBeginCommandBuffer"); 751 vkEndCommandBuffer = cast(typeof(vkEndCommandBuffer)) vkGetDeviceProcAddr(device, "vkEndCommandBuffer"); 752 vkResetCommandBuffer = cast(typeof(vkResetCommandBuffer)) vkGetDeviceProcAddr(device, "vkResetCommandBuffer"); 753 vkCmdBindPipeline = cast(typeof(vkCmdBindPipeline)) vkGetDeviceProcAddr(device, "vkCmdBindPipeline"); 754 vkCmdSetViewport = cast(typeof(vkCmdSetViewport)) vkGetDeviceProcAddr(device, "vkCmdSetViewport"); 755 vkCmdSetScissor = cast(typeof(vkCmdSetScissor)) vkGetDeviceProcAddr(device, "vkCmdSetScissor"); 756 vkCmdSetLineWidth = cast(typeof(vkCmdSetLineWidth)) vkGetDeviceProcAddr(device, "vkCmdSetLineWidth"); 757 vkCmdSetDepthBias = cast(typeof(vkCmdSetDepthBias)) vkGetDeviceProcAddr(device, "vkCmdSetDepthBias"); 758 vkCmdSetBlendConstants = cast(typeof(vkCmdSetBlendConstants)) vkGetDeviceProcAddr(device, "vkCmdSetBlendConstants"); 759 vkCmdSetDepthBounds = cast(typeof(vkCmdSetDepthBounds)) vkGetDeviceProcAddr(device, "vkCmdSetDepthBounds"); 760 vkCmdSetStencilCompareMask = cast(typeof(vkCmdSetStencilCompareMask)) vkGetDeviceProcAddr(device, "vkCmdSetStencilCompareMask"); 761 vkCmdSetStencilWriteMask = cast(typeof(vkCmdSetStencilWriteMask)) vkGetDeviceProcAddr(device, "vkCmdSetStencilWriteMask"); 762 vkCmdSetStencilReference = cast(typeof(vkCmdSetStencilReference)) vkGetDeviceProcAddr(device, "vkCmdSetStencilReference"); 763 vkCmdBindDescriptorSets = cast(typeof(vkCmdBindDescriptorSets)) vkGetDeviceProcAddr(device, "vkCmdBindDescriptorSets"); 764 vkCmdBindIndexBuffer = cast(typeof(vkCmdBindIndexBuffer)) vkGetDeviceProcAddr(device, "vkCmdBindIndexBuffer"); 765 vkCmdBindVertexBuffers = cast(typeof(vkCmdBindVertexBuffers)) vkGetDeviceProcAddr(device, "vkCmdBindVertexBuffers"); 766 vkCmdDraw = cast(typeof(vkCmdDraw)) vkGetDeviceProcAddr(device, "vkCmdDraw"); 767 vkCmdDrawIndexed = cast(typeof(vkCmdDrawIndexed)) vkGetDeviceProcAddr(device, "vkCmdDrawIndexed"); 768 vkCmdDrawIndirect = cast(typeof(vkCmdDrawIndirect)) vkGetDeviceProcAddr(device, "vkCmdDrawIndirect"); 769 vkCmdDrawIndexedIndirect = cast(typeof(vkCmdDrawIndexedIndirect)) vkGetDeviceProcAddr(device, "vkCmdDrawIndexedIndirect"); 770 vkCmdDispatch = cast(typeof(vkCmdDispatch)) vkGetDeviceProcAddr(device, "vkCmdDispatch"); 771 vkCmdDispatchIndirect = cast(typeof(vkCmdDispatchIndirect)) vkGetDeviceProcAddr(device, "vkCmdDispatchIndirect"); 772 vkCmdCopyBuffer = cast(typeof(vkCmdCopyBuffer)) vkGetDeviceProcAddr(device, "vkCmdCopyBuffer"); 773 vkCmdCopyImage = cast(typeof(vkCmdCopyImage)) vkGetDeviceProcAddr(device, "vkCmdCopyImage"); 774 vkCmdBlitImage = cast(typeof(vkCmdBlitImage)) vkGetDeviceProcAddr(device, "vkCmdBlitImage"); 775 vkCmdCopyBufferToImage = cast(typeof(vkCmdCopyBufferToImage)) vkGetDeviceProcAddr(device, "vkCmdCopyBufferToImage"); 776 vkCmdCopyImageToBuffer = cast(typeof(vkCmdCopyImageToBuffer)) vkGetDeviceProcAddr(device, "vkCmdCopyImageToBuffer"); 777 vkCmdUpdateBuffer = cast(typeof(vkCmdUpdateBuffer)) vkGetDeviceProcAddr(device, "vkCmdUpdateBuffer"); 778 vkCmdFillBuffer = cast(typeof(vkCmdFillBuffer)) vkGetDeviceProcAddr(device, "vkCmdFillBuffer"); 779 vkCmdClearColorImage = cast(typeof(vkCmdClearColorImage)) vkGetDeviceProcAddr(device, "vkCmdClearColorImage"); 780 vkCmdClearDepthStencilImage = cast(typeof(vkCmdClearDepthStencilImage)) vkGetDeviceProcAddr(device, "vkCmdClearDepthStencilImage"); 781 vkCmdClearAttachments = cast(typeof(vkCmdClearAttachments)) vkGetDeviceProcAddr(device, "vkCmdClearAttachments"); 782 vkCmdResolveImage = cast(typeof(vkCmdResolveImage)) vkGetDeviceProcAddr(device, "vkCmdResolveImage"); 783 vkCmdSetEvent = cast(typeof(vkCmdSetEvent)) vkGetDeviceProcAddr(device, "vkCmdSetEvent"); 784 vkCmdResetEvent = cast(typeof(vkCmdResetEvent)) vkGetDeviceProcAddr(device, "vkCmdResetEvent"); 785 vkCmdWaitEvents = cast(typeof(vkCmdWaitEvents)) vkGetDeviceProcAddr(device, "vkCmdWaitEvents"); 786 vkCmdPipelineBarrier = cast(typeof(vkCmdPipelineBarrier)) vkGetDeviceProcAddr(device, "vkCmdPipelineBarrier"); 787 vkCmdBeginQuery = cast(typeof(vkCmdBeginQuery)) vkGetDeviceProcAddr(device, "vkCmdBeginQuery"); 788 vkCmdEndQuery = cast(typeof(vkCmdEndQuery)) vkGetDeviceProcAddr(device, "vkCmdEndQuery"); 789 vkCmdResetQueryPool = cast(typeof(vkCmdResetQueryPool)) vkGetDeviceProcAddr(device, "vkCmdResetQueryPool"); 790 vkCmdWriteTimestamp = cast(typeof(vkCmdWriteTimestamp)) vkGetDeviceProcAddr(device, "vkCmdWriteTimestamp"); 791 vkCmdCopyQueryPoolResults = cast(typeof(vkCmdCopyQueryPoolResults)) vkGetDeviceProcAddr(device, "vkCmdCopyQueryPoolResults"); 792 vkCmdPushConstants = cast(typeof(vkCmdPushConstants)) vkGetDeviceProcAddr(device, "vkCmdPushConstants"); 793 vkCmdBeginRenderPass = cast(typeof(vkCmdBeginRenderPass)) vkGetDeviceProcAddr(device, "vkCmdBeginRenderPass"); 794 vkCmdNextSubpass = cast(typeof(vkCmdNextSubpass)) vkGetDeviceProcAddr(device, "vkCmdNextSubpass"); 795 vkCmdEndRenderPass = cast(typeof(vkCmdEndRenderPass)) vkGetDeviceProcAddr(device, "vkCmdEndRenderPass"); 796 vkCmdExecuteCommands = cast(typeof(vkCmdExecuteCommands)) vkGetDeviceProcAddr(device, "vkCmdExecuteCommands"); 797 798 // VK_KHR_swapchain 799 vkCreateSwapchainKHR = cast(typeof(vkCreateSwapchainKHR)) vkGetDeviceProcAddr(device, "vkCreateSwapchainKHR"); 800 vkDestroySwapchainKHR = cast(typeof(vkDestroySwapchainKHR)) vkGetDeviceProcAddr(device, "vkDestroySwapchainKHR"); 801 vkGetSwapchainImagesKHR = cast(typeof(vkGetSwapchainImagesKHR)) vkGetDeviceProcAddr(device, "vkGetSwapchainImagesKHR"); 802 vkAcquireNextImageKHR = cast(typeof(vkAcquireNextImageKHR)) vkGetDeviceProcAddr(device, "vkAcquireNextImageKHR"); 803 vkQueuePresentKHR = cast(typeof(vkQueuePresentKHR)) vkGetDeviceProcAddr(device, "vkQueuePresentKHR"); 804 805 // VK_KHR_display_swapchain 806 vkCreateSharedSwapchainsKHR = cast(typeof(vkCreateSharedSwapchainsKHR)) vkGetDeviceProcAddr(device, "vkCreateSharedSwapchainsKHR"); 807 808 // VK_EXT_debug_marker 809 vkDebugMarkerSetObjectTagEXT = cast(typeof(vkDebugMarkerSetObjectTagEXT)) vkGetDeviceProcAddr(device, "vkDebugMarkerSetObjectTagEXT"); 810 vkDebugMarkerSetObjectNameEXT = cast(typeof(vkDebugMarkerSetObjectNameEXT)) vkGetDeviceProcAddr(device, "vkDebugMarkerSetObjectNameEXT"); 811 vkCmdDebugMarkerBeginEXT = cast(typeof(vkCmdDebugMarkerBeginEXT)) vkGetDeviceProcAddr(device, "vkCmdDebugMarkerBeginEXT"); 812 vkCmdDebugMarkerEndEXT = cast(typeof(vkCmdDebugMarkerEndEXT)) vkGetDeviceProcAddr(device, "vkCmdDebugMarkerEndEXT"); 813 vkCmdDebugMarkerInsertEXT = cast(typeof(vkCmdDebugMarkerInsertEXT)) vkGetDeviceProcAddr(device, "vkCmdDebugMarkerInsertEXT"); 814 } 815 816 /// with a valid VkDevice call this function to retrieve VkDevice, VkQueue and VkCommandBuffer related functions grouped in a DispatchDevice struct 817 /// the functions call directly VkDevice and related resources and can be retrieved for any VkDevice 818 static DispatchDevice createDispatchDeviceLevelFunctions(VkDevice device) { 819 assert(vkGetDeviceProcAddr !is null, "Must call EruptedLoader.loadInstanceLevelFunctions before EruptedLoader.loadDeviceLevelFunctions"); 820 821 DispatchDevice dispatchDevice; 822 with(dispatchDevice) { 823 824 // VK_VERSION_1_0 825 vkDestroyDevice = cast(typeof(vkDestroyDevice)) vkGetDeviceProcAddr(device, "vkDestroyDevice"); 826 vkGetDeviceQueue = cast(typeof(vkGetDeviceQueue)) vkGetDeviceProcAddr(device, "vkGetDeviceQueue"); 827 vkQueueSubmit = cast(typeof(vkQueueSubmit)) vkGetDeviceProcAddr(device, "vkQueueSubmit"); 828 vkQueueWaitIdle = cast(typeof(vkQueueWaitIdle)) vkGetDeviceProcAddr(device, "vkQueueWaitIdle"); 829 vkDeviceWaitIdle = cast(typeof(vkDeviceWaitIdle)) vkGetDeviceProcAddr(device, "vkDeviceWaitIdle"); 830 vkAllocateMemory = cast(typeof(vkAllocateMemory)) vkGetDeviceProcAddr(device, "vkAllocateMemory"); 831 vkFreeMemory = cast(typeof(vkFreeMemory)) vkGetDeviceProcAddr(device, "vkFreeMemory"); 832 vkMapMemory = cast(typeof(vkMapMemory)) vkGetDeviceProcAddr(device, "vkMapMemory"); 833 vkUnmapMemory = cast(typeof(vkUnmapMemory)) vkGetDeviceProcAddr(device, "vkUnmapMemory"); 834 vkFlushMappedMemoryRanges = cast(typeof(vkFlushMappedMemoryRanges)) vkGetDeviceProcAddr(device, "vkFlushMappedMemoryRanges"); 835 vkInvalidateMappedMemoryRanges = cast(typeof(vkInvalidateMappedMemoryRanges)) vkGetDeviceProcAddr(device, "vkInvalidateMappedMemoryRanges"); 836 vkGetDeviceMemoryCommitment = cast(typeof(vkGetDeviceMemoryCommitment)) vkGetDeviceProcAddr(device, "vkGetDeviceMemoryCommitment"); 837 vkBindBufferMemory = cast(typeof(vkBindBufferMemory)) vkGetDeviceProcAddr(device, "vkBindBufferMemory"); 838 vkBindImageMemory = cast(typeof(vkBindImageMemory)) vkGetDeviceProcAddr(device, "vkBindImageMemory"); 839 vkGetBufferMemoryRequirements = cast(typeof(vkGetBufferMemoryRequirements)) vkGetDeviceProcAddr(device, "vkGetBufferMemoryRequirements"); 840 vkGetImageMemoryRequirements = cast(typeof(vkGetImageMemoryRequirements)) vkGetDeviceProcAddr(device, "vkGetImageMemoryRequirements"); 841 vkGetImageSparseMemoryRequirements = cast(typeof(vkGetImageSparseMemoryRequirements)) vkGetDeviceProcAddr(device, "vkGetImageSparseMemoryRequirements"); 842 vkQueueBindSparse = cast(typeof(vkQueueBindSparse)) vkGetDeviceProcAddr(device, "vkQueueBindSparse"); 843 vkCreateFence = cast(typeof(vkCreateFence)) vkGetDeviceProcAddr(device, "vkCreateFence"); 844 vkDestroyFence = cast(typeof(vkDestroyFence)) vkGetDeviceProcAddr(device, "vkDestroyFence"); 845 vkResetFences = cast(typeof(vkResetFences)) vkGetDeviceProcAddr(device, "vkResetFences"); 846 vkGetFenceStatus = cast(typeof(vkGetFenceStatus)) vkGetDeviceProcAddr(device, "vkGetFenceStatus"); 847 vkWaitForFences = cast(typeof(vkWaitForFences)) vkGetDeviceProcAddr(device, "vkWaitForFences"); 848 vkCreateSemaphore = cast(typeof(vkCreateSemaphore)) vkGetDeviceProcAddr(device, "vkCreateSemaphore"); 849 vkDestroySemaphore = cast(typeof(vkDestroySemaphore)) vkGetDeviceProcAddr(device, "vkDestroySemaphore"); 850 vkCreateEvent = cast(typeof(vkCreateEvent)) vkGetDeviceProcAddr(device, "vkCreateEvent"); 851 vkDestroyEvent = cast(typeof(vkDestroyEvent)) vkGetDeviceProcAddr(device, "vkDestroyEvent"); 852 vkGetEventStatus = cast(typeof(vkGetEventStatus)) vkGetDeviceProcAddr(device, "vkGetEventStatus"); 853 vkSetEvent = cast(typeof(vkSetEvent)) vkGetDeviceProcAddr(device, "vkSetEvent"); 854 vkResetEvent = cast(typeof(vkResetEvent)) vkGetDeviceProcAddr(device, "vkResetEvent"); 855 vkCreateQueryPool = cast(typeof(vkCreateQueryPool)) vkGetDeviceProcAddr(device, "vkCreateQueryPool"); 856 vkDestroyQueryPool = cast(typeof(vkDestroyQueryPool)) vkGetDeviceProcAddr(device, "vkDestroyQueryPool"); 857 vkGetQueryPoolResults = cast(typeof(vkGetQueryPoolResults)) vkGetDeviceProcAddr(device, "vkGetQueryPoolResults"); 858 vkCreateBuffer = cast(typeof(vkCreateBuffer)) vkGetDeviceProcAddr(device, "vkCreateBuffer"); 859 vkDestroyBuffer = cast(typeof(vkDestroyBuffer)) vkGetDeviceProcAddr(device, "vkDestroyBuffer"); 860 vkCreateBufferView = cast(typeof(vkCreateBufferView)) vkGetDeviceProcAddr(device, "vkCreateBufferView"); 861 vkDestroyBufferView = cast(typeof(vkDestroyBufferView)) vkGetDeviceProcAddr(device, "vkDestroyBufferView"); 862 vkCreateImage = cast(typeof(vkCreateImage)) vkGetDeviceProcAddr(device, "vkCreateImage"); 863 vkDestroyImage = cast(typeof(vkDestroyImage)) vkGetDeviceProcAddr(device, "vkDestroyImage"); 864 vkGetImageSubresourceLayout = cast(typeof(vkGetImageSubresourceLayout)) vkGetDeviceProcAddr(device, "vkGetImageSubresourceLayout"); 865 vkCreateImageView = cast(typeof(vkCreateImageView)) vkGetDeviceProcAddr(device, "vkCreateImageView"); 866 vkDestroyImageView = cast(typeof(vkDestroyImageView)) vkGetDeviceProcAddr(device, "vkDestroyImageView"); 867 vkCreateShaderModule = cast(typeof(vkCreateShaderModule)) vkGetDeviceProcAddr(device, "vkCreateShaderModule"); 868 vkDestroyShaderModule = cast(typeof(vkDestroyShaderModule)) vkGetDeviceProcAddr(device, "vkDestroyShaderModule"); 869 vkCreatePipelineCache = cast(typeof(vkCreatePipelineCache)) vkGetDeviceProcAddr(device, "vkCreatePipelineCache"); 870 vkDestroyPipelineCache = cast(typeof(vkDestroyPipelineCache)) vkGetDeviceProcAddr(device, "vkDestroyPipelineCache"); 871 vkGetPipelineCacheData = cast(typeof(vkGetPipelineCacheData)) vkGetDeviceProcAddr(device, "vkGetPipelineCacheData"); 872 vkMergePipelineCaches = cast(typeof(vkMergePipelineCaches)) vkGetDeviceProcAddr(device, "vkMergePipelineCaches"); 873 vkCreateGraphicsPipelines = cast(typeof(vkCreateGraphicsPipelines)) vkGetDeviceProcAddr(device, "vkCreateGraphicsPipelines"); 874 vkCreateComputePipelines = cast(typeof(vkCreateComputePipelines)) vkGetDeviceProcAddr(device, "vkCreateComputePipelines"); 875 vkDestroyPipeline = cast(typeof(vkDestroyPipeline)) vkGetDeviceProcAddr(device, "vkDestroyPipeline"); 876 vkCreatePipelineLayout = cast(typeof(vkCreatePipelineLayout)) vkGetDeviceProcAddr(device, "vkCreatePipelineLayout"); 877 vkDestroyPipelineLayout = cast(typeof(vkDestroyPipelineLayout)) vkGetDeviceProcAddr(device, "vkDestroyPipelineLayout"); 878 vkCreateSampler = cast(typeof(vkCreateSampler)) vkGetDeviceProcAddr(device, "vkCreateSampler"); 879 vkDestroySampler = cast(typeof(vkDestroySampler)) vkGetDeviceProcAddr(device, "vkDestroySampler"); 880 vkCreateDescriptorSetLayout = cast(typeof(vkCreateDescriptorSetLayout)) vkGetDeviceProcAddr(device, "vkCreateDescriptorSetLayout"); 881 vkDestroyDescriptorSetLayout = cast(typeof(vkDestroyDescriptorSetLayout)) vkGetDeviceProcAddr(device, "vkDestroyDescriptorSetLayout"); 882 vkCreateDescriptorPool = cast(typeof(vkCreateDescriptorPool)) vkGetDeviceProcAddr(device, "vkCreateDescriptorPool"); 883 vkDestroyDescriptorPool = cast(typeof(vkDestroyDescriptorPool)) vkGetDeviceProcAddr(device, "vkDestroyDescriptorPool"); 884 vkResetDescriptorPool = cast(typeof(vkResetDescriptorPool)) vkGetDeviceProcAddr(device, "vkResetDescriptorPool"); 885 vkAllocateDescriptorSets = cast(typeof(vkAllocateDescriptorSets)) vkGetDeviceProcAddr(device, "vkAllocateDescriptorSets"); 886 vkFreeDescriptorSets = cast(typeof(vkFreeDescriptorSets)) vkGetDeviceProcAddr(device, "vkFreeDescriptorSets"); 887 vkUpdateDescriptorSets = cast(typeof(vkUpdateDescriptorSets)) vkGetDeviceProcAddr(device, "vkUpdateDescriptorSets"); 888 vkCreateFramebuffer = cast(typeof(vkCreateFramebuffer)) vkGetDeviceProcAddr(device, "vkCreateFramebuffer"); 889 vkDestroyFramebuffer = cast(typeof(vkDestroyFramebuffer)) vkGetDeviceProcAddr(device, "vkDestroyFramebuffer"); 890 vkCreateRenderPass = cast(typeof(vkCreateRenderPass)) vkGetDeviceProcAddr(device, "vkCreateRenderPass"); 891 vkDestroyRenderPass = cast(typeof(vkDestroyRenderPass)) vkGetDeviceProcAddr(device, "vkDestroyRenderPass"); 892 vkGetRenderAreaGranularity = cast(typeof(vkGetRenderAreaGranularity)) vkGetDeviceProcAddr(device, "vkGetRenderAreaGranularity"); 893 vkCreateCommandPool = cast(typeof(vkCreateCommandPool)) vkGetDeviceProcAddr(device, "vkCreateCommandPool"); 894 vkDestroyCommandPool = cast(typeof(vkDestroyCommandPool)) vkGetDeviceProcAddr(device, "vkDestroyCommandPool"); 895 vkResetCommandPool = cast(typeof(vkResetCommandPool)) vkGetDeviceProcAddr(device, "vkResetCommandPool"); 896 vkAllocateCommandBuffers = cast(typeof(vkAllocateCommandBuffers)) vkGetDeviceProcAddr(device, "vkAllocateCommandBuffers"); 897 vkFreeCommandBuffers = cast(typeof(vkFreeCommandBuffers)) vkGetDeviceProcAddr(device, "vkFreeCommandBuffers"); 898 vkBeginCommandBuffer = cast(typeof(vkBeginCommandBuffer)) vkGetDeviceProcAddr(device, "vkBeginCommandBuffer"); 899 vkEndCommandBuffer = cast(typeof(vkEndCommandBuffer)) vkGetDeviceProcAddr(device, "vkEndCommandBuffer"); 900 vkResetCommandBuffer = cast(typeof(vkResetCommandBuffer)) vkGetDeviceProcAddr(device, "vkResetCommandBuffer"); 901 vkCmdBindPipeline = cast(typeof(vkCmdBindPipeline)) vkGetDeviceProcAddr(device, "vkCmdBindPipeline"); 902 vkCmdSetViewport = cast(typeof(vkCmdSetViewport)) vkGetDeviceProcAddr(device, "vkCmdSetViewport"); 903 vkCmdSetScissor = cast(typeof(vkCmdSetScissor)) vkGetDeviceProcAddr(device, "vkCmdSetScissor"); 904 vkCmdSetLineWidth = cast(typeof(vkCmdSetLineWidth)) vkGetDeviceProcAddr(device, "vkCmdSetLineWidth"); 905 vkCmdSetDepthBias = cast(typeof(vkCmdSetDepthBias)) vkGetDeviceProcAddr(device, "vkCmdSetDepthBias"); 906 vkCmdSetBlendConstants = cast(typeof(vkCmdSetBlendConstants)) vkGetDeviceProcAddr(device, "vkCmdSetBlendConstants"); 907 vkCmdSetDepthBounds = cast(typeof(vkCmdSetDepthBounds)) vkGetDeviceProcAddr(device, "vkCmdSetDepthBounds"); 908 vkCmdSetStencilCompareMask = cast(typeof(vkCmdSetStencilCompareMask)) vkGetDeviceProcAddr(device, "vkCmdSetStencilCompareMask"); 909 vkCmdSetStencilWriteMask = cast(typeof(vkCmdSetStencilWriteMask)) vkGetDeviceProcAddr(device, "vkCmdSetStencilWriteMask"); 910 vkCmdSetStencilReference = cast(typeof(vkCmdSetStencilReference)) vkGetDeviceProcAddr(device, "vkCmdSetStencilReference"); 911 vkCmdBindDescriptorSets = cast(typeof(vkCmdBindDescriptorSets)) vkGetDeviceProcAddr(device, "vkCmdBindDescriptorSets"); 912 vkCmdBindIndexBuffer = cast(typeof(vkCmdBindIndexBuffer)) vkGetDeviceProcAddr(device, "vkCmdBindIndexBuffer"); 913 vkCmdBindVertexBuffers = cast(typeof(vkCmdBindVertexBuffers)) vkGetDeviceProcAddr(device, "vkCmdBindVertexBuffers"); 914 vkCmdDraw = cast(typeof(vkCmdDraw)) vkGetDeviceProcAddr(device, "vkCmdDraw"); 915 vkCmdDrawIndexed = cast(typeof(vkCmdDrawIndexed)) vkGetDeviceProcAddr(device, "vkCmdDrawIndexed"); 916 vkCmdDrawIndirect = cast(typeof(vkCmdDrawIndirect)) vkGetDeviceProcAddr(device, "vkCmdDrawIndirect"); 917 vkCmdDrawIndexedIndirect = cast(typeof(vkCmdDrawIndexedIndirect)) vkGetDeviceProcAddr(device, "vkCmdDrawIndexedIndirect"); 918 vkCmdDispatch = cast(typeof(vkCmdDispatch)) vkGetDeviceProcAddr(device, "vkCmdDispatch"); 919 vkCmdDispatchIndirect = cast(typeof(vkCmdDispatchIndirect)) vkGetDeviceProcAddr(device, "vkCmdDispatchIndirect"); 920 vkCmdCopyBuffer = cast(typeof(vkCmdCopyBuffer)) vkGetDeviceProcAddr(device, "vkCmdCopyBuffer"); 921 vkCmdCopyImage = cast(typeof(vkCmdCopyImage)) vkGetDeviceProcAddr(device, "vkCmdCopyImage"); 922 vkCmdBlitImage = cast(typeof(vkCmdBlitImage)) vkGetDeviceProcAddr(device, "vkCmdBlitImage"); 923 vkCmdCopyBufferToImage = cast(typeof(vkCmdCopyBufferToImage)) vkGetDeviceProcAddr(device, "vkCmdCopyBufferToImage"); 924 vkCmdCopyImageToBuffer = cast(typeof(vkCmdCopyImageToBuffer)) vkGetDeviceProcAddr(device, "vkCmdCopyImageToBuffer"); 925 vkCmdUpdateBuffer = cast(typeof(vkCmdUpdateBuffer)) vkGetDeviceProcAddr(device, "vkCmdUpdateBuffer"); 926 vkCmdFillBuffer = cast(typeof(vkCmdFillBuffer)) vkGetDeviceProcAddr(device, "vkCmdFillBuffer"); 927 vkCmdClearColorImage = cast(typeof(vkCmdClearColorImage)) vkGetDeviceProcAddr(device, "vkCmdClearColorImage"); 928 vkCmdClearDepthStencilImage = cast(typeof(vkCmdClearDepthStencilImage)) vkGetDeviceProcAddr(device, "vkCmdClearDepthStencilImage"); 929 vkCmdClearAttachments = cast(typeof(vkCmdClearAttachments)) vkGetDeviceProcAddr(device, "vkCmdClearAttachments"); 930 vkCmdResolveImage = cast(typeof(vkCmdResolveImage)) vkGetDeviceProcAddr(device, "vkCmdResolveImage"); 931 vkCmdSetEvent = cast(typeof(vkCmdSetEvent)) vkGetDeviceProcAddr(device, "vkCmdSetEvent"); 932 vkCmdResetEvent = cast(typeof(vkCmdResetEvent)) vkGetDeviceProcAddr(device, "vkCmdResetEvent"); 933 vkCmdWaitEvents = cast(typeof(vkCmdWaitEvents)) vkGetDeviceProcAddr(device, "vkCmdWaitEvents"); 934 vkCmdPipelineBarrier = cast(typeof(vkCmdPipelineBarrier)) vkGetDeviceProcAddr(device, "vkCmdPipelineBarrier"); 935 vkCmdBeginQuery = cast(typeof(vkCmdBeginQuery)) vkGetDeviceProcAddr(device, "vkCmdBeginQuery"); 936 vkCmdEndQuery = cast(typeof(vkCmdEndQuery)) vkGetDeviceProcAddr(device, "vkCmdEndQuery"); 937 vkCmdResetQueryPool = cast(typeof(vkCmdResetQueryPool)) vkGetDeviceProcAddr(device, "vkCmdResetQueryPool"); 938 vkCmdWriteTimestamp = cast(typeof(vkCmdWriteTimestamp)) vkGetDeviceProcAddr(device, "vkCmdWriteTimestamp"); 939 vkCmdCopyQueryPoolResults = cast(typeof(vkCmdCopyQueryPoolResults)) vkGetDeviceProcAddr(device, "vkCmdCopyQueryPoolResults"); 940 vkCmdPushConstants = cast(typeof(vkCmdPushConstants)) vkGetDeviceProcAddr(device, "vkCmdPushConstants"); 941 vkCmdBeginRenderPass = cast(typeof(vkCmdBeginRenderPass)) vkGetDeviceProcAddr(device, "vkCmdBeginRenderPass"); 942 vkCmdNextSubpass = cast(typeof(vkCmdNextSubpass)) vkGetDeviceProcAddr(device, "vkCmdNextSubpass"); 943 vkCmdEndRenderPass = cast(typeof(vkCmdEndRenderPass)) vkGetDeviceProcAddr(device, "vkCmdEndRenderPass"); 944 vkCmdExecuteCommands = cast(typeof(vkCmdExecuteCommands)) vkGetDeviceProcAddr(device, "vkCmdExecuteCommands"); 945 946 // VK_KHR_swapchain 947 vkCreateSwapchainKHR = cast(typeof(vkCreateSwapchainKHR)) vkGetDeviceProcAddr(device, "vkCreateSwapchainKHR"); 948 vkDestroySwapchainKHR = cast(typeof(vkDestroySwapchainKHR)) vkGetDeviceProcAddr(device, "vkDestroySwapchainKHR"); 949 vkGetSwapchainImagesKHR = cast(typeof(vkGetSwapchainImagesKHR)) vkGetDeviceProcAddr(device, "vkGetSwapchainImagesKHR"); 950 vkAcquireNextImageKHR = cast(typeof(vkAcquireNextImageKHR)) vkGetDeviceProcAddr(device, "vkAcquireNextImageKHR"); 951 vkQueuePresentKHR = cast(typeof(vkQueuePresentKHR)) vkGetDeviceProcAddr(device, "vkQueuePresentKHR"); 952 953 // VK_KHR_display_swapchain 954 vkCreateSharedSwapchainsKHR = cast(typeof(vkCreateSharedSwapchainsKHR)) vkGetDeviceProcAddr(device, "vkCreateSharedSwapchainsKHR"); 955 956 // VK_EXT_debug_marker 957 vkDebugMarkerSetObjectTagEXT = cast(typeof(vkDebugMarkerSetObjectTagEXT)) vkGetDeviceProcAddr(device, "vkDebugMarkerSetObjectTagEXT"); 958 vkDebugMarkerSetObjectNameEXT = cast(typeof(vkDebugMarkerSetObjectNameEXT)) vkGetDeviceProcAddr(device, "vkDebugMarkerSetObjectNameEXT"); 959 vkCmdDebugMarkerBeginEXT = cast(typeof(vkCmdDebugMarkerBeginEXT)) vkGetDeviceProcAddr(device, "vkCmdDebugMarkerBeginEXT"); 960 vkCmdDebugMarkerEndEXT = cast(typeof(vkCmdDebugMarkerEndEXT)) vkGetDeviceProcAddr(device, "vkCmdDebugMarkerEndEXT"); 961 vkCmdDebugMarkerInsertEXT = cast(typeof(vkCmdDebugMarkerInsertEXT)) vkGetDeviceProcAddr(device, "vkCmdDebugMarkerInsertEXT"); 962 } 963 964 return dispatchDevice; 965 } 966 } 967 968 // struct to group per device deviceLevelFunctions into a custom namespace 969 private struct DispatchDevice { 970 PFN_vkDestroyDevice vkDestroyDevice; 971 PFN_vkGetDeviceQueue vkGetDeviceQueue; 972 PFN_vkQueueSubmit vkQueueSubmit; 973 PFN_vkQueueWaitIdle vkQueueWaitIdle; 974 PFN_vkDeviceWaitIdle vkDeviceWaitIdle; 975 PFN_vkAllocateMemory vkAllocateMemory; 976 PFN_vkFreeMemory vkFreeMemory; 977 PFN_vkMapMemory vkMapMemory; 978 PFN_vkUnmapMemory vkUnmapMemory; 979 PFN_vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges; 980 PFN_vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges; 981 PFN_vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment; 982 PFN_vkBindBufferMemory vkBindBufferMemory; 983 PFN_vkBindImageMemory vkBindImageMemory; 984 PFN_vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements; 985 PFN_vkGetImageMemoryRequirements vkGetImageMemoryRequirements; 986 PFN_vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements; 987 PFN_vkQueueBindSparse vkQueueBindSparse; 988 PFN_vkCreateFence vkCreateFence; 989 PFN_vkDestroyFence vkDestroyFence; 990 PFN_vkResetFences vkResetFences; 991 PFN_vkGetFenceStatus vkGetFenceStatus; 992 PFN_vkWaitForFences vkWaitForFences; 993 PFN_vkCreateSemaphore vkCreateSemaphore; 994 PFN_vkDestroySemaphore vkDestroySemaphore; 995 PFN_vkCreateEvent vkCreateEvent; 996 PFN_vkDestroyEvent vkDestroyEvent; 997 PFN_vkGetEventStatus vkGetEventStatus; 998 PFN_vkSetEvent vkSetEvent; 999 PFN_vkResetEvent vkResetEvent; 1000 PFN_vkCreateQueryPool vkCreateQueryPool; 1001 PFN_vkDestroyQueryPool vkDestroyQueryPool; 1002 PFN_vkGetQueryPoolResults vkGetQueryPoolResults; 1003 PFN_vkCreateBuffer vkCreateBuffer; 1004 PFN_vkDestroyBuffer vkDestroyBuffer; 1005 PFN_vkCreateBufferView vkCreateBufferView; 1006 PFN_vkDestroyBufferView vkDestroyBufferView; 1007 PFN_vkCreateImage vkCreateImage; 1008 PFN_vkDestroyImage vkDestroyImage; 1009 PFN_vkGetImageSubresourceLayout vkGetImageSubresourceLayout; 1010 PFN_vkCreateImageView vkCreateImageView; 1011 PFN_vkDestroyImageView vkDestroyImageView; 1012 PFN_vkCreateShaderModule vkCreateShaderModule; 1013 PFN_vkDestroyShaderModule vkDestroyShaderModule; 1014 PFN_vkCreatePipelineCache vkCreatePipelineCache; 1015 PFN_vkDestroyPipelineCache vkDestroyPipelineCache; 1016 PFN_vkGetPipelineCacheData vkGetPipelineCacheData; 1017 PFN_vkMergePipelineCaches vkMergePipelineCaches; 1018 PFN_vkCreateGraphicsPipelines vkCreateGraphicsPipelines; 1019 PFN_vkCreateComputePipelines vkCreateComputePipelines; 1020 PFN_vkDestroyPipeline vkDestroyPipeline; 1021 PFN_vkCreatePipelineLayout vkCreatePipelineLayout; 1022 PFN_vkDestroyPipelineLayout vkDestroyPipelineLayout; 1023 PFN_vkCreateSampler vkCreateSampler; 1024 PFN_vkDestroySampler vkDestroySampler; 1025 PFN_vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout; 1026 PFN_vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout; 1027 PFN_vkCreateDescriptorPool vkCreateDescriptorPool; 1028 PFN_vkDestroyDescriptorPool vkDestroyDescriptorPool; 1029 PFN_vkResetDescriptorPool vkResetDescriptorPool; 1030 PFN_vkAllocateDescriptorSets vkAllocateDescriptorSets; 1031 PFN_vkFreeDescriptorSets vkFreeDescriptorSets; 1032 PFN_vkUpdateDescriptorSets vkUpdateDescriptorSets; 1033 PFN_vkCreateFramebuffer vkCreateFramebuffer; 1034 PFN_vkDestroyFramebuffer vkDestroyFramebuffer; 1035 PFN_vkCreateRenderPass vkCreateRenderPass; 1036 PFN_vkDestroyRenderPass vkDestroyRenderPass; 1037 PFN_vkGetRenderAreaGranularity vkGetRenderAreaGranularity; 1038 PFN_vkCreateCommandPool vkCreateCommandPool; 1039 PFN_vkDestroyCommandPool vkDestroyCommandPool; 1040 PFN_vkResetCommandPool vkResetCommandPool; 1041 PFN_vkAllocateCommandBuffers vkAllocateCommandBuffers; 1042 PFN_vkFreeCommandBuffers vkFreeCommandBuffers; 1043 PFN_vkBeginCommandBuffer vkBeginCommandBuffer; 1044 PFN_vkEndCommandBuffer vkEndCommandBuffer; 1045 PFN_vkResetCommandBuffer vkResetCommandBuffer; 1046 PFN_vkCmdBindPipeline vkCmdBindPipeline; 1047 PFN_vkCmdSetViewport vkCmdSetViewport; 1048 PFN_vkCmdSetScissor vkCmdSetScissor; 1049 PFN_vkCmdSetLineWidth vkCmdSetLineWidth; 1050 PFN_vkCmdSetDepthBias vkCmdSetDepthBias; 1051 PFN_vkCmdSetBlendConstants vkCmdSetBlendConstants; 1052 PFN_vkCmdSetDepthBounds vkCmdSetDepthBounds; 1053 PFN_vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask; 1054 PFN_vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask; 1055 PFN_vkCmdSetStencilReference vkCmdSetStencilReference; 1056 PFN_vkCmdBindDescriptorSets vkCmdBindDescriptorSets; 1057 PFN_vkCmdBindIndexBuffer vkCmdBindIndexBuffer; 1058 PFN_vkCmdBindVertexBuffers vkCmdBindVertexBuffers; 1059 PFN_vkCmdDraw vkCmdDraw; 1060 PFN_vkCmdDrawIndexed vkCmdDrawIndexed; 1061 PFN_vkCmdDrawIndirect vkCmdDrawIndirect; 1062 PFN_vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect; 1063 PFN_vkCmdDispatch vkCmdDispatch; 1064 PFN_vkCmdDispatchIndirect vkCmdDispatchIndirect; 1065 PFN_vkCmdCopyBuffer vkCmdCopyBuffer; 1066 PFN_vkCmdCopyImage vkCmdCopyImage; 1067 PFN_vkCmdBlitImage vkCmdBlitImage; 1068 PFN_vkCmdCopyBufferToImage vkCmdCopyBufferToImage; 1069 PFN_vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer; 1070 PFN_vkCmdUpdateBuffer vkCmdUpdateBuffer; 1071 PFN_vkCmdFillBuffer vkCmdFillBuffer; 1072 PFN_vkCmdClearColorImage vkCmdClearColorImage; 1073 PFN_vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage; 1074 PFN_vkCmdClearAttachments vkCmdClearAttachments; 1075 PFN_vkCmdResolveImage vkCmdResolveImage; 1076 PFN_vkCmdSetEvent vkCmdSetEvent; 1077 PFN_vkCmdResetEvent vkCmdResetEvent; 1078 PFN_vkCmdWaitEvents vkCmdWaitEvents; 1079 PFN_vkCmdPipelineBarrier vkCmdPipelineBarrier; 1080 PFN_vkCmdBeginQuery vkCmdBeginQuery; 1081 PFN_vkCmdEndQuery vkCmdEndQuery; 1082 PFN_vkCmdResetQueryPool vkCmdResetQueryPool; 1083 PFN_vkCmdWriteTimestamp vkCmdWriteTimestamp; 1084 PFN_vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults; 1085 PFN_vkCmdPushConstants vkCmdPushConstants; 1086 PFN_vkCmdBeginRenderPass vkCmdBeginRenderPass; 1087 PFN_vkCmdNextSubpass vkCmdNextSubpass; 1088 PFN_vkCmdEndRenderPass vkCmdEndRenderPass; 1089 PFN_vkCmdExecuteCommands vkCmdExecuteCommands; 1090 PFN_vkCreateSwapchainKHR vkCreateSwapchainKHR; 1091 PFN_vkDestroySwapchainKHR vkDestroySwapchainKHR; 1092 PFN_vkGetSwapchainImagesKHR vkGetSwapchainImagesKHR; 1093 PFN_vkAcquireNextImageKHR vkAcquireNextImageKHR; 1094 PFN_vkQueuePresentKHR vkQueuePresentKHR; 1095 PFN_vkCreateSharedSwapchainsKHR vkCreateSharedSwapchainsKHR; 1096 PFN_vkDebugMarkerSetObjectTagEXT vkDebugMarkerSetObjectTagEXT; 1097 PFN_vkDebugMarkerSetObjectNameEXT vkDebugMarkerSetObjectNameEXT; 1098 PFN_vkCmdDebugMarkerBeginEXT vkCmdDebugMarkerBeginEXT; 1099 PFN_vkCmdDebugMarkerEndEXT vkCmdDebugMarkerEndEXT; 1100 PFN_vkCmdDebugMarkerInsertEXT vkCmdDebugMarkerInsertEXT; 1101 } 1102 1103 // Derelict loader to acquire entry point vkGetInstanceProcAddr 1104 version(EruptedFromDerelict) { 1105 import derelict.util.loader; 1106 import derelict.util.system; 1107 1108 private { 1109 version(Windows) 1110 enum libNames = "vulkan-1.dll"; 1111 1112 else version(Posix) 1113 enum libNames = "libvulkan.so"; 1114 1115 else 1116 static assert(0,"Need to implement Vulkan libNames for this operating system."); 1117 } 1118 1119 class DerelictEruptedLoader : SharedLibLoader { 1120 this() { 1121 super(libNames); 1122 } 1123 1124 protected override void loadSymbols() { 1125 typeof(vkGetInstanceProcAddr) getProcAddr; 1126 bindFunc(cast(void**)&getProcAddr, "vkGetInstanceProcAddr"); 1127 EruptedLoader.loadGlobalLevelFunctions(getProcAddr); 1128 } 1129 } 1130 1131 __gshared DerelictEruptedLoader DerelictErupted; 1132 1133 shared static this() { 1134 DerelictErupted = new DerelictEruptedLoader(); 1135 } 1136 } 1137 1138