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 groupCountX, uint32_t groupCountY, uint32_t groupCountZ ); 119 alias PFN_vkCmdDispatchIndirect = void function( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset ); 120 alias PFN_vkCmdCopyBuffer = void function( VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer, uint32_t regionCount, const( VkBufferCopy )* pRegions ); 121 alias PFN_vkCmdCopyImage = void function( VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const( VkImageCopy )* pRegions ); 122 alias PFN_vkCmdBlitImage = void function( VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const( VkImageBlit )* pRegions, VkFilter filter ); 123 alias PFN_vkCmdCopyBufferToImage = void function( VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const( VkBufferImageCopy )* pRegions ); 124 alias PFN_vkCmdCopyImageToBuffer = void function( VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, uint32_t regionCount, const( VkBufferImageCopy )* pRegions ); 125 alias PFN_vkCmdUpdateBuffer = void function( VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const( void )* pData ); 126 alias PFN_vkCmdFillBuffer = void function( VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, uint32_t data ); 127 alias PFN_vkCmdClearColorImage = void function( VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const( VkClearColorValue )* pColor, uint32_t rangeCount, const( VkImageSubresourceRange )* pRanges ); 128 alias PFN_vkCmdClearDepthStencilImage = void function( VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const( VkClearDepthStencilValue )* pDepthStencil, uint32_t rangeCount, const( VkImageSubresourceRange )* pRanges ); 129 alias PFN_vkCmdClearAttachments = void function( VkCommandBuffer commandBuffer, uint32_t attachmentCount, const( VkClearAttachment )* pAttachments, uint32_t rectCount, const( VkClearRect )* pRects ); 130 alias PFN_vkCmdResolveImage = void function( VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const( VkImageResolve )* pRegions ); 131 alias PFN_vkCmdSetEvent = void function( VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask ); 132 alias PFN_vkCmdResetEvent = void function( VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask ); 133 alias PFN_vkCmdWaitEvents = void function( VkCommandBuffer commandBuffer, uint32_t eventCount, const( VkEvent )* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, uint32_t memoryBarrierCount, const( VkMemoryBarrier )* pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const( VkBufferMemoryBarrier )* pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const( VkImageMemoryBarrier )* pImageMemoryBarriers ); 134 alias PFN_vkCmdPipelineBarrier = void function( VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, uint32_t memoryBarrierCount, const( VkMemoryBarrier )* pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const( VkBufferMemoryBarrier )* pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const( VkImageMemoryBarrier )* pImageMemoryBarriers ); 135 alias PFN_vkCmdBeginQuery = void function( VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags ); 136 alias PFN_vkCmdEndQuery = void function( VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query ); 137 alias PFN_vkCmdResetQueryPool = void function( VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount ); 138 alias PFN_vkCmdWriteTimestamp = void function( VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t query ); 139 alias PFN_vkCmdCopyQueryPoolResults = void function( VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags ); 140 alias PFN_vkCmdPushConstants = void function( VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const( void )* pValues ); 141 alias PFN_vkCmdBeginRenderPass = void function( VkCommandBuffer commandBuffer, const( VkRenderPassBeginInfo )* pRenderPassBegin, VkSubpassContents contents ); 142 alias PFN_vkCmdNextSubpass = void function( VkCommandBuffer commandBuffer, VkSubpassContents contents ); 143 alias PFN_vkCmdEndRenderPass = void function( VkCommandBuffer commandBuffer ); 144 alias PFN_vkCmdExecuteCommands = void function( VkCommandBuffer commandBuffer, uint32_t commandBufferCount, const( VkCommandBuffer )* pCommandBuffers ); 145 146 // VK_KHR_surface 147 alias PFN_vkDestroySurfaceKHR = void function( VkInstance instance, VkSurfaceKHR surface, const( VkAllocationCallbacks )* pAllocator ); 148 alias PFN_vkGetPhysicalDeviceSurfaceSupportKHR = VkResult function( VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported ); 149 alias PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = VkResult function( VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities ); 150 alias PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = VkResult function( VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats ); 151 alias PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = VkResult function( VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes ); 152 153 // VK_KHR_swapchain 154 alias PFN_vkCreateSwapchainKHR = VkResult function( VkDevice device, const( VkSwapchainCreateInfoKHR )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkSwapchainKHR* pSwapchain ); 155 alias PFN_vkDestroySwapchainKHR = void function( VkDevice device, VkSwapchainKHR swapchain, const( VkAllocationCallbacks )* pAllocator ); 156 alias PFN_vkGetSwapchainImagesKHR = VkResult function( VkDevice device, VkSwapchainKHR swapchain, uint32_t* pSwapchainImageCount, VkImage* pSwapchainImages ); 157 alias PFN_vkAcquireNextImageKHR = VkResult function( VkDevice device, VkSwapchainKHR swapchain, uint64_t timeout, VkSemaphore semaphore, VkFence fence, uint32_t* pImageIndex ); 158 alias PFN_vkQueuePresentKHR = VkResult function( VkQueue queue, const( VkPresentInfoKHR )* pPresentInfo ); 159 160 // VK_KHR_display 161 alias PFN_vkGetPhysicalDeviceDisplayPropertiesKHR = VkResult function( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPropertiesKHR* pProperties ); 162 alias PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = VkResult function( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties ); 163 alias PFN_vkGetDisplayPlaneSupportedDisplaysKHR = VkResult function( VkPhysicalDevice physicalDevice, uint32_t planeIndex, uint32_t* pDisplayCount, VkDisplayKHR* pDisplays ); 164 alias PFN_vkGetDisplayModePropertiesKHR = VkResult function( VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModePropertiesKHR* pProperties ); 165 alias PFN_vkCreateDisplayModeKHR = VkResult function( VkPhysicalDevice physicalDevice, VkDisplayKHR display, const( VkDisplayModeCreateInfoKHR )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkDisplayModeKHR* pMode ); 166 alias PFN_vkGetDisplayPlaneCapabilitiesKHR = VkResult function( VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, uint32_t planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities ); 167 alias PFN_vkCreateDisplayPlaneSurfaceKHR = VkResult function( VkInstance instance, const( VkDisplaySurfaceCreateInfoKHR )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkSurfaceKHR* pSurface ); 168 169 // VK_KHR_display_swapchain 170 alias PFN_vkCreateSharedSwapchainsKHR = VkResult function( VkDevice device, uint32_t swapchainCount, const( VkSwapchainCreateInfoKHR )* pCreateInfos, const( VkAllocationCallbacks )* pAllocator, VkSwapchainKHR* pSwapchains ); 171 172 // VK_KHR_xlib_surface 173 version( VK_USE_PLATFORM_XLIB_KHR ) { 174 alias PFN_vkCreateXlibSurfaceKHR = VkResult function( VkInstance instance, const( VkXlibSurfaceCreateInfoKHR )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkSurfaceKHR* pSurface ); 175 alias PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR = VkBool32 function( VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, Display* dpy, VisualID visualID ); 176 } 177 178 // VK_KHR_xcb_surface 179 version( VK_USE_PLATFORM_XCB_KHR ) { 180 alias PFN_vkCreateXcbSurfaceKHR = VkResult function( VkInstance instance, const( VkXcbSurfaceCreateInfoKHR )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkSurfaceKHR* pSurface ); 181 alias PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR = VkBool32 function( VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id ); 182 } 183 184 // VK_KHR_wayland_surface 185 version( VK_USE_PLATFORM_WAYLAND_KHR ) { 186 alias PFN_vkCreateWaylandSurfaceKHR = VkResult function( VkInstance instance, const( VkWaylandSurfaceCreateInfoKHR )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkSurfaceKHR* pSurface ); 187 alias PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR = VkBool32 function( VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, wl_display* display ); 188 } 189 190 // VK_KHR_mir_surface 191 version( VK_USE_PLATFORM_MIR_KHR ) { 192 alias PFN_vkCreateMirSurfaceKHR = VkResult function( VkInstance instance, const( VkMirSurfaceCreateInfoKHR )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkSurfaceKHR* pSurface ); 193 alias PFN_vkGetPhysicalDeviceMirPresentationSupportKHR = VkBool32 function( VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, MirConnection* connection ); 194 } 195 196 // VK_KHR_android_surface 197 version( VK_USE_PLATFORM_ANDROID_KHR ) { 198 alias PFN_vkCreateAndroidSurfaceKHR = VkResult function( VkInstance instance, const( VkAndroidSurfaceCreateInfoKHR )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkSurfaceKHR* pSurface ); 199 } 200 201 // VK_KHR_win32_surface 202 version( VK_USE_PLATFORM_WIN32_KHR ) { 203 alias PFN_vkCreateWin32SurfaceKHR = VkResult function( VkInstance instance, const( VkWin32SurfaceCreateInfoKHR )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkSurfaceKHR* pSurface ); 204 alias PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR = VkBool32 function( VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex ); 205 } 206 207 // VK_KHR_get_physical_device_properties2 208 alias PFN_vkGetPhysicalDeviceFeatures2KHR = void function( VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2KHR* pFeatures ); 209 alias PFN_vkGetPhysicalDeviceProperties2KHR = void function( VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2KHR* pProperties ); 210 alias PFN_vkGetPhysicalDeviceFormatProperties2KHR = void function( VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2KHR* pFormatProperties ); 211 alias PFN_vkGetPhysicalDeviceImageFormatProperties2KHR = VkResult function( VkPhysicalDevice physicalDevice, const( VkPhysicalDeviceImageFormatInfo2KHR )* pImageFormatInfo, VkImageFormatProperties2KHR* pImageFormatProperties ); 212 alias PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR = void function( VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties2KHR* pQueueFamilyProperties ); 213 alias PFN_vkGetPhysicalDeviceMemoryProperties2KHR = void function( VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2KHR* pMemoryProperties ); 214 alias PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = void function( VkPhysicalDevice physicalDevice, const( VkPhysicalDeviceSparseImageFormatInfo2KHR )* pFormatInfo, uint32_t* pPropertyCount, VkSparseImageFormatProperties2KHR* pProperties ); 215 216 // VK_KHR_maintenance1 217 alias PFN_vkTrimCommandPoolKHR = void function( VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlagsKHR flags ); 218 219 // VK_KHR_external_memory_capabilities 220 alias PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR = void function( VkPhysicalDevice physicalDevice, const( VkPhysicalDeviceExternalBufferInfoKHR )* pExternalBufferInfo, VkExternalBufferPropertiesKHR* pExternalBufferProperties ); 221 222 // VK_KHR_external_memory_win32 223 version( VK_USE_PLATFORM_WIN32_KHR ) { 224 alias PFN_vkGetMemoryWin32HandleKHR = VkResult function( VkDevice device, const( VkMemoryGetWin32HandleInfoKHR )* pGetWin32HandleInfo, HANDLE* pHandle ); 225 alias PFN_vkGetMemoryWin32HandlePropertiesKHR = VkResult function( VkDevice device, VkExternalMemoryHandleTypeFlagBitsKHR handleType, HANDLE handle, VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties ); 226 } 227 228 // VK_KHR_external_memory_fd 229 alias PFN_vkGetMemoryFdKHR = VkResult function( VkDevice device, const( VkMemoryGetFdInfoKHR )* pGetFdInfo, int* pFd ); 230 alias PFN_vkGetMemoryFdPropertiesKHR = VkResult function( VkDevice device, VkExternalMemoryHandleTypeFlagBitsKHR handleType, int fd, VkMemoryFdPropertiesKHR* pMemoryFdProperties ); 231 232 // VK_KHR_external_semaphore_capabilities 233 alias PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = void function( VkPhysicalDevice physicalDevice, const( VkPhysicalDeviceExternalSemaphoreInfoKHR )* pExternalSemaphoreInfo, VkExternalSemaphorePropertiesKHR* pExternalSemaphoreProperties ); 234 235 // VK_KHR_external_semaphore_win32 236 version( VK_USE_PLATFORM_WIN32_KHR ) { 237 alias PFN_vkImportSemaphoreWin32HandleKHR = VkResult function( VkDevice device, const( VkImportSemaphoreWin32HandleInfoKHR )* pImportSemaphoreWin32HandleInfo ); 238 alias PFN_vkGetSemaphoreWin32HandleKHR = VkResult function( VkDevice device, const( VkSemaphoreGetWin32HandleInfoKHR )* pGetWin32HandleInfo, HANDLE* pHandle ); 239 } 240 241 // VK_KHR_external_semaphore_fd 242 alias PFN_vkImportSemaphoreFdKHR = VkResult function( VkDevice device, const( VkImportSemaphoreFdInfoKHR )* pImportSemaphoreFdInfo ); 243 alias PFN_vkGetSemaphoreFdKHR = VkResult function( VkDevice device, const( VkSemaphoreGetFdInfoKHR )* pGetFdInfo, int* pFd ); 244 245 // VK_KHR_push_descriptor 246 alias PFN_vkCmdPushDescriptorSetKHR = void function( VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const( VkWriteDescriptorSet )* pDescriptorWrites ); 247 248 // VK_KHR_descriptor_update_template 249 alias PFN_vkCreateDescriptorUpdateTemplateKHR = VkResult function( VkDevice device, const( VkDescriptorUpdateTemplateCreateInfoKHR )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkDescriptorUpdateTemplateKHR* pDescriptorUpdateTemplate ); 250 alias PFN_vkDestroyDescriptorUpdateTemplateKHR = void function( VkDevice device, VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate, const( VkAllocationCallbacks )* pAllocator ); 251 alias PFN_vkUpdateDescriptorSetWithTemplateKHR = void function( VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate, const( void )* pData ); 252 alias PFN_vkCmdPushDescriptorSetWithTemplateKHR = void function( VkCommandBuffer commandBuffer, VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate, VkPipelineLayout layout, uint32_t set, const( void )* pData ); 253 254 // VK_KHR_shared_presentable_image 255 alias PFN_vkGetSwapchainStatusKHR = VkResult function( VkDevice device, VkSwapchainKHR swapchain ); 256 257 // VK_KHR_external_fence_capabilities 258 alias PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR = void function( VkPhysicalDevice physicalDevice, const( VkPhysicalDeviceExternalFenceInfoKHR )* pExternalFenceInfo, VkExternalFencePropertiesKHR* pExternalFenceProperties ); 259 260 // VK_KHR_external_fence_win32 261 version( VK_USE_PLATFORM_WIN32_KHR ) { 262 alias PFN_vkImportFenceWin32HandleKHR = VkResult function( VkDevice device, const( VkImportFenceWin32HandleInfoKHR )* pImportFenceWin32HandleInfo ); 263 alias PFN_vkGetFenceWin32HandleKHR = VkResult function( VkDevice device, const( VkFenceGetWin32HandleInfoKHR )* pGetWin32HandleInfo, HANDLE* pHandle ); 264 } 265 266 // VK_KHR_external_fence_fd 267 alias PFN_vkImportFenceFdKHR = VkResult function( VkDevice device, const( VkImportFenceFdInfoKHR )* pImportFenceFdInfo ); 268 alias PFN_vkGetFenceFdKHR = VkResult function( VkDevice device, const( VkFenceGetFdInfoKHR )* pGetFdInfo, int* pFd ); 269 270 // VK_KHR_get_surface_capabilities2 271 alias PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR = VkResult function( VkPhysicalDevice physicalDevice, const( VkPhysicalDeviceSurfaceInfo2KHR )* pSurfaceInfo, VkSurfaceCapabilities2KHR* pSurfaceCapabilities ); 272 alias PFN_vkGetPhysicalDeviceSurfaceFormats2KHR = VkResult function( VkPhysicalDevice physicalDevice, const( VkPhysicalDeviceSurfaceInfo2KHR )* pSurfaceInfo, uint32_t* pSurfaceFormatCount, VkSurfaceFormat2KHR* pSurfaceFormats ); 273 274 // VK_KHR_get_memory_requirements2 275 alias PFN_vkGetImageMemoryRequirements2KHR = void function( VkDevice device, const( VkImageMemoryRequirementsInfo2KHR )* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements ); 276 alias PFN_vkGetBufferMemoryRequirements2KHR = void function( VkDevice device, const( VkBufferMemoryRequirementsInfo2KHR )* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements ); 277 alias PFN_vkGetImageSparseMemoryRequirements2KHR = void function( VkDevice device, const( VkImageSparseMemoryRequirementsInfo2KHR )* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2KHR* pSparseMemoryRequirements ); 278 279 // VK_EXT_debug_report 280 alias PFN_vkCreateDebugReportCallbackEXT = VkResult function( VkInstance instance, const( VkDebugReportCallbackCreateInfoEXT )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkDebugReportCallbackEXT* pCallback ); 281 alias PFN_vkDestroyDebugReportCallbackEXT = void function( VkInstance instance, VkDebugReportCallbackEXT callback, const( VkAllocationCallbacks )* pAllocator ); 282 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 ); 283 284 // VK_EXT_debug_marker 285 alias PFN_vkDebugMarkerSetObjectTagEXT = VkResult function( VkDevice device, const( VkDebugMarkerObjectTagInfoEXT )* pTagInfo ); 286 alias PFN_vkDebugMarkerSetObjectNameEXT = VkResult function( VkDevice device, const( VkDebugMarkerObjectNameInfoEXT )* pNameInfo ); 287 alias PFN_vkCmdDebugMarkerBeginEXT = void function( VkCommandBuffer commandBuffer, const( VkDebugMarkerMarkerInfoEXT )* pMarkerInfo ); 288 alias PFN_vkCmdDebugMarkerEndEXT = void function( VkCommandBuffer commandBuffer ); 289 alias PFN_vkCmdDebugMarkerInsertEXT = void function( VkCommandBuffer commandBuffer, const( VkDebugMarkerMarkerInfoEXT )* pMarkerInfo ); 290 291 // VK_AMD_draw_indirect_count 292 alias PFN_vkCmdDrawIndirectCountAMD = void function( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ); 293 alias PFN_vkCmdDrawIndexedIndirectCountAMD = void function( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ); 294 295 // VK_NV_external_memory_capabilities 296 alias PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = VkResult function( VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkExternalMemoryHandleTypeFlagsNV externalHandleType, VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties ); 297 298 // VK_NV_external_memory_win32 299 version( VK_USE_PLATFORM_WIN32_KHR ) { 300 alias PFN_vkGetMemoryWin32HandleNV = VkResult function( VkDevice device, VkDeviceMemory memory, VkExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle ); 301 } 302 303 // VK_KHX_device_group 304 alias PFN_vkGetDeviceGroupPeerMemoryFeaturesKHX = void function( VkDevice device, uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, VkPeerMemoryFeatureFlagsKHX* pPeerMemoryFeatures ); 305 alias PFN_vkBindBufferMemory2KHX = VkResult function( VkDevice device, uint32_t bindInfoCount, const( VkBindBufferMemoryInfoKHX )* pBindInfos ); 306 alias PFN_vkBindImageMemory2KHX = VkResult function( VkDevice device, uint32_t bindInfoCount, const( VkBindImageMemoryInfoKHX )* pBindInfos ); 307 alias PFN_vkCmdSetDeviceMaskKHX = void function( VkCommandBuffer commandBuffer, uint32_t deviceMask ); 308 alias PFN_vkGetDeviceGroupPresentCapabilitiesKHX = VkResult function( VkDevice device, VkDeviceGroupPresentCapabilitiesKHX* pDeviceGroupPresentCapabilities ); 309 alias PFN_vkGetDeviceGroupSurfacePresentModesKHX = VkResult function( VkDevice device, VkSurfaceKHR surface, VkDeviceGroupPresentModeFlagsKHX* pModes ); 310 alias PFN_vkAcquireNextImage2KHX = VkResult function( VkDevice device, const( VkAcquireNextImageInfoKHX )* pAcquireInfo, uint32_t* pImageIndex ); 311 alias PFN_vkCmdDispatchBaseKHX = void function( VkCommandBuffer commandBuffer, uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ); 312 alias PFN_vkGetPhysicalDevicePresentRectanglesKHX = VkResult function( VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pRectCount, VkRect2D* pRects ); 313 314 // VK_NN_vi_surface 315 alias PFN_vkCreateViSurfaceNN = VkResult function( VkInstance instance, const( VkViSurfaceCreateInfoNN )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkSurfaceKHR* pSurface ); 316 317 // VK_KHX_device_group_creation 318 alias PFN_vkEnumeratePhysicalDeviceGroupsKHX = VkResult function( VkInstance instance, uint32_t* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupPropertiesKHX* pPhysicalDeviceGroupProperties ); 319 320 // VK_NVX_device_generated_commands 321 alias PFN_vkCmdProcessCommandsNVX = void function( VkCommandBuffer commandBuffer, const( VkCmdProcessCommandsInfoNVX )* pProcessCommandsInfo ); 322 alias PFN_vkCmdReserveSpaceForCommandsNVX = void function( VkCommandBuffer commandBuffer, const( VkCmdReserveSpaceForCommandsInfoNVX )* pReserveSpaceInfo ); 323 alias PFN_vkCreateIndirectCommandsLayoutNVX = VkResult function( VkDevice device, const( VkIndirectCommandsLayoutCreateInfoNVX )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout ); 324 alias PFN_vkDestroyIndirectCommandsLayoutNVX = void function( VkDevice device, VkIndirectCommandsLayoutNVX indirectCommandsLayout, const( VkAllocationCallbacks )* pAllocator ); 325 alias PFN_vkCreateObjectTableNVX = VkResult function( VkDevice device, const( VkObjectTableCreateInfoNVX )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkObjectTableNVX* pObjectTable ); 326 alias PFN_vkDestroyObjectTableNVX = void function( VkDevice device, VkObjectTableNVX objectTable, const( VkAllocationCallbacks )* pAllocator ); 327 alias PFN_vkRegisterObjectsNVX = VkResult function( VkDevice device, VkObjectTableNVX objectTable, uint32_t objectCount, const( VkObjectTableEntryNVX* )* ppObjectTableEntries, const( uint32_t )* pObjectIndices ); 328 alias PFN_vkUnregisterObjectsNVX = VkResult function( VkDevice device, VkObjectTableNVX objectTable, uint32_t objectCount, const( VkObjectEntryTypeNVX )* pObjectEntryTypes, const( uint32_t )* pObjectIndices ); 329 alias PFN_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX = void function( VkPhysicalDevice physicalDevice, VkDeviceGeneratedCommandsFeaturesNVX* pFeatures, VkDeviceGeneratedCommandsLimitsNVX* pLimits ); 330 331 // VK_NV_clip_space_w_scaling 332 alias PFN_vkCmdSetViewportWScalingNV = void function( VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const( VkViewportWScalingNV )* pViewportWScalings ); 333 334 // VK_EXT_direct_mode_display 335 alias PFN_vkReleaseDisplayEXT = VkResult function( VkPhysicalDevice physicalDevice, VkDisplayKHR display ); 336 337 // VK_EXT_acquire_xlib_display 338 version( VK_USE_PLATFORM_XLIB_KHR ) { 339 alias PFN_vkAcquireXlibDisplayEXT = VkResult function( VkPhysicalDevice physicalDevice, Display* dpy, VkDisplayKHR display ); 340 alias PFN_vkGetRandROutputDisplayEXT = VkResult function( VkPhysicalDevice physicalDevice, Display* dpy, RROutput rrOutput, VkDisplayKHR* pDisplay ); 341 } 342 343 // VK_EXT_display_surface_counter 344 alias PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT = VkResult function( VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilities2EXT* pSurfaceCapabilities ); 345 346 // VK_EXT_display_control 347 alias PFN_vkDisplayPowerControlEXT = VkResult function( VkDevice device, VkDisplayKHR display, const( VkDisplayPowerInfoEXT )* pDisplayPowerInfo ); 348 alias PFN_vkRegisterDeviceEventEXT = VkResult function( VkDevice device, const( VkDeviceEventInfoEXT )* pDeviceEventInfo, const( VkAllocationCallbacks )* pAllocator, VkFence* pFence ); 349 alias PFN_vkRegisterDisplayEventEXT = VkResult function( VkDevice device, VkDisplayKHR display, const( VkDisplayEventInfoEXT )* pDisplayEventInfo, const( VkAllocationCallbacks )* pAllocator, VkFence* pFence ); 350 alias PFN_vkGetSwapchainCounterEXT = VkResult function( VkDevice device, VkSwapchainKHR swapchain, VkSurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue ); 351 352 // VK_GOOGLE_display_timing 353 alias PFN_vkGetRefreshCycleDurationGOOGLE = VkResult function( VkDevice device, VkSwapchainKHR swapchain, VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties ); 354 alias PFN_vkGetPastPresentationTimingGOOGLE = VkResult function( VkDevice device, VkSwapchainKHR swapchain, uint32_t* pPresentationTimingCount, VkPastPresentationTimingGOOGLE* pPresentationTimings ); 355 356 // VK_EXT_discard_rectangles 357 alias PFN_vkCmdSetDiscardRectangleEXT = void function( VkCommandBuffer commandBuffer, uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const( VkRect2D )* pDiscardRectangles ); 358 359 // VK_EXT_hdr_metadata 360 alias PFN_vkSetHdrMetadataEXT = void function( VkDevice device, uint32_t swapchainCount, const( VkSwapchainKHR )* pSwapchains, const( VkHdrMetadataEXT )* pMetadata ); 361 362 // VK_MVK_ios_surface 363 alias PFN_vkCreateIOSSurfaceMVK = VkResult function( VkInstance instance, const( VkIOSSurfaceCreateInfoMVK )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkSurfaceKHR* pSurface ); 364 365 // VK_MVK_macos_surface 366 alias PFN_vkCreateMacOSSurfaceMVK = VkResult function( VkInstance instance, const( VkMacOSSurfaceCreateInfoMVK )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkSurfaceKHR* pSurface ); 367 } 368 369 __gshared { 370 371 // VK_VERSION_1_0 372 PFN_vkCreateInstance vkCreateInstance; 373 PFN_vkDestroyInstance vkDestroyInstance; 374 PFN_vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices; 375 PFN_vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures; 376 PFN_vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties; 377 PFN_vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties; 378 PFN_vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties; 379 PFN_vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties; 380 PFN_vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties; 381 PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr; 382 PFN_vkGetDeviceProcAddr vkGetDeviceProcAddr; 383 PFN_vkCreateDevice vkCreateDevice; 384 PFN_vkDestroyDevice vkDestroyDevice; 385 PFN_vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties; 386 PFN_vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties; 387 PFN_vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties; 388 PFN_vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties; 389 PFN_vkGetDeviceQueue vkGetDeviceQueue; 390 PFN_vkQueueSubmit vkQueueSubmit; 391 PFN_vkQueueWaitIdle vkQueueWaitIdle; 392 PFN_vkDeviceWaitIdle vkDeviceWaitIdle; 393 PFN_vkAllocateMemory vkAllocateMemory; 394 PFN_vkFreeMemory vkFreeMemory; 395 PFN_vkMapMemory vkMapMemory; 396 PFN_vkUnmapMemory vkUnmapMemory; 397 PFN_vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges; 398 PFN_vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges; 399 PFN_vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment; 400 PFN_vkBindBufferMemory vkBindBufferMemory; 401 PFN_vkBindImageMemory vkBindImageMemory; 402 PFN_vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements; 403 PFN_vkGetImageMemoryRequirements vkGetImageMemoryRequirements; 404 PFN_vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements; 405 PFN_vkGetPhysicalDeviceSparseImageFormatProperties vkGetPhysicalDeviceSparseImageFormatProperties; 406 PFN_vkQueueBindSparse vkQueueBindSparse; 407 PFN_vkCreateFence vkCreateFence; 408 PFN_vkDestroyFence vkDestroyFence; 409 PFN_vkResetFences vkResetFences; 410 PFN_vkGetFenceStatus vkGetFenceStatus; 411 PFN_vkWaitForFences vkWaitForFences; 412 PFN_vkCreateSemaphore vkCreateSemaphore; 413 PFN_vkDestroySemaphore vkDestroySemaphore; 414 PFN_vkCreateEvent vkCreateEvent; 415 PFN_vkDestroyEvent vkDestroyEvent; 416 PFN_vkGetEventStatus vkGetEventStatus; 417 PFN_vkSetEvent vkSetEvent; 418 PFN_vkResetEvent vkResetEvent; 419 PFN_vkCreateQueryPool vkCreateQueryPool; 420 PFN_vkDestroyQueryPool vkDestroyQueryPool; 421 PFN_vkGetQueryPoolResults vkGetQueryPoolResults; 422 PFN_vkCreateBuffer vkCreateBuffer; 423 PFN_vkDestroyBuffer vkDestroyBuffer; 424 PFN_vkCreateBufferView vkCreateBufferView; 425 PFN_vkDestroyBufferView vkDestroyBufferView; 426 PFN_vkCreateImage vkCreateImage; 427 PFN_vkDestroyImage vkDestroyImage; 428 PFN_vkGetImageSubresourceLayout vkGetImageSubresourceLayout; 429 PFN_vkCreateImageView vkCreateImageView; 430 PFN_vkDestroyImageView vkDestroyImageView; 431 PFN_vkCreateShaderModule vkCreateShaderModule; 432 PFN_vkDestroyShaderModule vkDestroyShaderModule; 433 PFN_vkCreatePipelineCache vkCreatePipelineCache; 434 PFN_vkDestroyPipelineCache vkDestroyPipelineCache; 435 PFN_vkGetPipelineCacheData vkGetPipelineCacheData; 436 PFN_vkMergePipelineCaches vkMergePipelineCaches; 437 PFN_vkCreateGraphicsPipelines vkCreateGraphicsPipelines; 438 PFN_vkCreateComputePipelines vkCreateComputePipelines; 439 PFN_vkDestroyPipeline vkDestroyPipeline; 440 PFN_vkCreatePipelineLayout vkCreatePipelineLayout; 441 PFN_vkDestroyPipelineLayout vkDestroyPipelineLayout; 442 PFN_vkCreateSampler vkCreateSampler; 443 PFN_vkDestroySampler vkDestroySampler; 444 PFN_vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout; 445 PFN_vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout; 446 PFN_vkCreateDescriptorPool vkCreateDescriptorPool; 447 PFN_vkDestroyDescriptorPool vkDestroyDescriptorPool; 448 PFN_vkResetDescriptorPool vkResetDescriptorPool; 449 PFN_vkAllocateDescriptorSets vkAllocateDescriptorSets; 450 PFN_vkFreeDescriptorSets vkFreeDescriptorSets; 451 PFN_vkUpdateDescriptorSets vkUpdateDescriptorSets; 452 PFN_vkCreateFramebuffer vkCreateFramebuffer; 453 PFN_vkDestroyFramebuffer vkDestroyFramebuffer; 454 PFN_vkCreateRenderPass vkCreateRenderPass; 455 PFN_vkDestroyRenderPass vkDestroyRenderPass; 456 PFN_vkGetRenderAreaGranularity vkGetRenderAreaGranularity; 457 PFN_vkCreateCommandPool vkCreateCommandPool; 458 PFN_vkDestroyCommandPool vkDestroyCommandPool; 459 PFN_vkResetCommandPool vkResetCommandPool; 460 PFN_vkAllocateCommandBuffers vkAllocateCommandBuffers; 461 PFN_vkFreeCommandBuffers vkFreeCommandBuffers; 462 PFN_vkBeginCommandBuffer vkBeginCommandBuffer; 463 PFN_vkEndCommandBuffer vkEndCommandBuffer; 464 PFN_vkResetCommandBuffer vkResetCommandBuffer; 465 PFN_vkCmdBindPipeline vkCmdBindPipeline; 466 PFN_vkCmdSetViewport vkCmdSetViewport; 467 PFN_vkCmdSetScissor vkCmdSetScissor; 468 PFN_vkCmdSetLineWidth vkCmdSetLineWidth; 469 PFN_vkCmdSetDepthBias vkCmdSetDepthBias; 470 PFN_vkCmdSetBlendConstants vkCmdSetBlendConstants; 471 PFN_vkCmdSetDepthBounds vkCmdSetDepthBounds; 472 PFN_vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask; 473 PFN_vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask; 474 PFN_vkCmdSetStencilReference vkCmdSetStencilReference; 475 PFN_vkCmdBindDescriptorSets vkCmdBindDescriptorSets; 476 PFN_vkCmdBindIndexBuffer vkCmdBindIndexBuffer; 477 PFN_vkCmdBindVertexBuffers vkCmdBindVertexBuffers; 478 PFN_vkCmdDraw vkCmdDraw; 479 PFN_vkCmdDrawIndexed vkCmdDrawIndexed; 480 PFN_vkCmdDrawIndirect vkCmdDrawIndirect; 481 PFN_vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect; 482 PFN_vkCmdDispatch vkCmdDispatch; 483 PFN_vkCmdDispatchIndirect vkCmdDispatchIndirect; 484 PFN_vkCmdCopyBuffer vkCmdCopyBuffer; 485 PFN_vkCmdCopyImage vkCmdCopyImage; 486 PFN_vkCmdBlitImage vkCmdBlitImage; 487 PFN_vkCmdCopyBufferToImage vkCmdCopyBufferToImage; 488 PFN_vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer; 489 PFN_vkCmdUpdateBuffer vkCmdUpdateBuffer; 490 PFN_vkCmdFillBuffer vkCmdFillBuffer; 491 PFN_vkCmdClearColorImage vkCmdClearColorImage; 492 PFN_vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage; 493 PFN_vkCmdClearAttachments vkCmdClearAttachments; 494 PFN_vkCmdResolveImage vkCmdResolveImage; 495 PFN_vkCmdSetEvent vkCmdSetEvent; 496 PFN_vkCmdResetEvent vkCmdResetEvent; 497 PFN_vkCmdWaitEvents vkCmdWaitEvents; 498 PFN_vkCmdPipelineBarrier vkCmdPipelineBarrier; 499 PFN_vkCmdBeginQuery vkCmdBeginQuery; 500 PFN_vkCmdEndQuery vkCmdEndQuery; 501 PFN_vkCmdResetQueryPool vkCmdResetQueryPool; 502 PFN_vkCmdWriteTimestamp vkCmdWriteTimestamp; 503 PFN_vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults; 504 PFN_vkCmdPushConstants vkCmdPushConstants; 505 PFN_vkCmdBeginRenderPass vkCmdBeginRenderPass; 506 PFN_vkCmdNextSubpass vkCmdNextSubpass; 507 PFN_vkCmdEndRenderPass vkCmdEndRenderPass; 508 PFN_vkCmdExecuteCommands vkCmdExecuteCommands; 509 510 // VK_KHR_surface 511 PFN_vkDestroySurfaceKHR vkDestroySurfaceKHR; 512 PFN_vkGetPhysicalDeviceSurfaceSupportKHR vkGetPhysicalDeviceSurfaceSupportKHR; 513 PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR vkGetPhysicalDeviceSurfaceCapabilitiesKHR; 514 PFN_vkGetPhysicalDeviceSurfaceFormatsKHR vkGetPhysicalDeviceSurfaceFormatsKHR; 515 PFN_vkGetPhysicalDeviceSurfacePresentModesKHR vkGetPhysicalDeviceSurfacePresentModesKHR; 516 517 // VK_KHR_swapchain 518 PFN_vkCreateSwapchainKHR vkCreateSwapchainKHR; 519 PFN_vkDestroySwapchainKHR vkDestroySwapchainKHR; 520 PFN_vkGetSwapchainImagesKHR vkGetSwapchainImagesKHR; 521 PFN_vkAcquireNextImageKHR vkAcquireNextImageKHR; 522 PFN_vkQueuePresentKHR vkQueuePresentKHR; 523 524 // VK_KHR_display 525 PFN_vkGetPhysicalDeviceDisplayPropertiesKHR vkGetPhysicalDeviceDisplayPropertiesKHR; 526 PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR vkGetPhysicalDeviceDisplayPlanePropertiesKHR; 527 PFN_vkGetDisplayPlaneSupportedDisplaysKHR vkGetDisplayPlaneSupportedDisplaysKHR; 528 PFN_vkGetDisplayModePropertiesKHR vkGetDisplayModePropertiesKHR; 529 PFN_vkCreateDisplayModeKHR vkCreateDisplayModeKHR; 530 PFN_vkGetDisplayPlaneCapabilitiesKHR vkGetDisplayPlaneCapabilitiesKHR; 531 PFN_vkCreateDisplayPlaneSurfaceKHR vkCreateDisplayPlaneSurfaceKHR; 532 533 // VK_KHR_display_swapchain 534 PFN_vkCreateSharedSwapchainsKHR vkCreateSharedSwapchainsKHR; 535 536 // VK_KHR_xlib_surface 537 version( VK_USE_PLATFORM_XLIB_KHR ) { 538 PFN_vkCreateXlibSurfaceKHR vkCreateXlibSurfaceKHR; 539 PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR vkGetPhysicalDeviceXlibPresentationSupportKHR; 540 } 541 542 // VK_KHR_xcb_surface 543 version( VK_USE_PLATFORM_XCB_KHR ) { 544 PFN_vkCreateXcbSurfaceKHR vkCreateXcbSurfaceKHR; 545 PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR vkGetPhysicalDeviceXcbPresentationSupportKHR; 546 } 547 548 // VK_KHR_wayland_surface 549 version( VK_USE_PLATFORM_WAYLAND_KHR ) { 550 PFN_vkCreateWaylandSurfaceKHR vkCreateWaylandSurfaceKHR; 551 PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR vkGetPhysicalDeviceWaylandPresentationSupportKHR; 552 } 553 554 // VK_KHR_mir_surface 555 version( VK_USE_PLATFORM_MIR_KHR ) { 556 PFN_vkCreateMirSurfaceKHR vkCreateMirSurfaceKHR; 557 PFN_vkGetPhysicalDeviceMirPresentationSupportKHR vkGetPhysicalDeviceMirPresentationSupportKHR; 558 } 559 560 // VK_KHR_android_surface 561 version( VK_USE_PLATFORM_ANDROID_KHR ) { 562 PFN_vkCreateAndroidSurfaceKHR vkCreateAndroidSurfaceKHR; 563 } 564 565 // VK_KHR_win32_surface 566 version( VK_USE_PLATFORM_WIN32_KHR ) { 567 PFN_vkCreateWin32SurfaceKHR vkCreateWin32SurfaceKHR; 568 PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR vkGetPhysicalDeviceWin32PresentationSupportKHR; 569 } 570 571 // VK_KHR_get_physical_device_properties2 572 PFN_vkGetPhysicalDeviceFeatures2KHR vkGetPhysicalDeviceFeatures2KHR; 573 PFN_vkGetPhysicalDeviceProperties2KHR vkGetPhysicalDeviceProperties2KHR; 574 PFN_vkGetPhysicalDeviceFormatProperties2KHR vkGetPhysicalDeviceFormatProperties2KHR; 575 PFN_vkGetPhysicalDeviceImageFormatProperties2KHR vkGetPhysicalDeviceImageFormatProperties2KHR; 576 PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR vkGetPhysicalDeviceQueueFamilyProperties2KHR; 577 PFN_vkGetPhysicalDeviceMemoryProperties2KHR vkGetPhysicalDeviceMemoryProperties2KHR; 578 PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR vkGetPhysicalDeviceSparseImageFormatProperties2KHR; 579 580 // VK_KHR_maintenance1 581 PFN_vkTrimCommandPoolKHR vkTrimCommandPoolKHR; 582 583 // VK_KHR_external_memory_capabilities 584 PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR vkGetPhysicalDeviceExternalBufferPropertiesKHR; 585 586 // VK_KHR_external_memory_win32 587 version( VK_USE_PLATFORM_WIN32_KHR ) { 588 PFN_vkGetMemoryWin32HandleKHR vkGetMemoryWin32HandleKHR; 589 PFN_vkGetMemoryWin32HandlePropertiesKHR vkGetMemoryWin32HandlePropertiesKHR; 590 } 591 592 // VK_KHR_external_memory_fd 593 PFN_vkGetMemoryFdKHR vkGetMemoryFdKHR; 594 PFN_vkGetMemoryFdPropertiesKHR vkGetMemoryFdPropertiesKHR; 595 596 // VK_KHR_external_semaphore_capabilities 597 PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR vkGetPhysicalDeviceExternalSemaphorePropertiesKHR; 598 599 // VK_KHR_external_semaphore_win32 600 version( VK_USE_PLATFORM_WIN32_KHR ) { 601 PFN_vkImportSemaphoreWin32HandleKHR vkImportSemaphoreWin32HandleKHR; 602 PFN_vkGetSemaphoreWin32HandleKHR vkGetSemaphoreWin32HandleKHR; 603 } 604 605 // VK_KHR_external_semaphore_fd 606 PFN_vkImportSemaphoreFdKHR vkImportSemaphoreFdKHR; 607 PFN_vkGetSemaphoreFdKHR vkGetSemaphoreFdKHR; 608 609 // VK_KHR_push_descriptor 610 PFN_vkCmdPushDescriptorSetKHR vkCmdPushDescriptorSetKHR; 611 612 // VK_KHR_descriptor_update_template 613 PFN_vkCreateDescriptorUpdateTemplateKHR vkCreateDescriptorUpdateTemplateKHR; 614 PFN_vkDestroyDescriptorUpdateTemplateKHR vkDestroyDescriptorUpdateTemplateKHR; 615 PFN_vkUpdateDescriptorSetWithTemplateKHR vkUpdateDescriptorSetWithTemplateKHR; 616 PFN_vkCmdPushDescriptorSetWithTemplateKHR vkCmdPushDescriptorSetWithTemplateKHR; 617 618 // VK_KHR_shared_presentable_image 619 PFN_vkGetSwapchainStatusKHR vkGetSwapchainStatusKHR; 620 621 // VK_KHR_external_fence_capabilities 622 PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR vkGetPhysicalDeviceExternalFencePropertiesKHR; 623 624 // VK_KHR_external_fence_win32 625 version( VK_USE_PLATFORM_WIN32_KHR ) { 626 PFN_vkImportFenceWin32HandleKHR vkImportFenceWin32HandleKHR; 627 PFN_vkGetFenceWin32HandleKHR vkGetFenceWin32HandleKHR; 628 } 629 630 // VK_KHR_external_fence_fd 631 PFN_vkImportFenceFdKHR vkImportFenceFdKHR; 632 PFN_vkGetFenceFdKHR vkGetFenceFdKHR; 633 634 // VK_KHR_get_surface_capabilities2 635 PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR vkGetPhysicalDeviceSurfaceCapabilities2KHR; 636 PFN_vkGetPhysicalDeviceSurfaceFormats2KHR vkGetPhysicalDeviceSurfaceFormats2KHR; 637 638 // VK_KHR_get_memory_requirements2 639 PFN_vkGetImageMemoryRequirements2KHR vkGetImageMemoryRequirements2KHR; 640 PFN_vkGetBufferMemoryRequirements2KHR vkGetBufferMemoryRequirements2KHR; 641 PFN_vkGetImageSparseMemoryRequirements2KHR vkGetImageSparseMemoryRequirements2KHR; 642 643 // VK_EXT_debug_report 644 PFN_vkCreateDebugReportCallbackEXT vkCreateDebugReportCallbackEXT; 645 PFN_vkDestroyDebugReportCallbackEXT vkDestroyDebugReportCallbackEXT; 646 PFN_vkDebugReportMessageEXT vkDebugReportMessageEXT; 647 648 // VK_EXT_debug_marker 649 PFN_vkDebugMarkerSetObjectTagEXT vkDebugMarkerSetObjectTagEXT; 650 PFN_vkDebugMarkerSetObjectNameEXT vkDebugMarkerSetObjectNameEXT; 651 PFN_vkCmdDebugMarkerBeginEXT vkCmdDebugMarkerBeginEXT; 652 PFN_vkCmdDebugMarkerEndEXT vkCmdDebugMarkerEndEXT; 653 PFN_vkCmdDebugMarkerInsertEXT vkCmdDebugMarkerInsertEXT; 654 655 // VK_AMD_draw_indirect_count 656 PFN_vkCmdDrawIndirectCountAMD vkCmdDrawIndirectCountAMD; 657 PFN_vkCmdDrawIndexedIndirectCountAMD vkCmdDrawIndexedIndirectCountAMD; 658 659 // VK_NV_external_memory_capabilities 660 PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV vkGetPhysicalDeviceExternalImageFormatPropertiesNV; 661 662 // VK_NV_external_memory_win32 663 version( VK_USE_PLATFORM_WIN32_KHR ) { 664 PFN_vkGetMemoryWin32HandleNV vkGetMemoryWin32HandleNV; 665 } 666 667 // VK_KHX_device_group 668 PFN_vkGetDeviceGroupPeerMemoryFeaturesKHX vkGetDeviceGroupPeerMemoryFeaturesKHX; 669 PFN_vkBindBufferMemory2KHX vkBindBufferMemory2KHX; 670 PFN_vkBindImageMemory2KHX vkBindImageMemory2KHX; 671 PFN_vkCmdSetDeviceMaskKHX vkCmdSetDeviceMaskKHX; 672 PFN_vkGetDeviceGroupPresentCapabilitiesKHX vkGetDeviceGroupPresentCapabilitiesKHX; 673 PFN_vkGetDeviceGroupSurfacePresentModesKHX vkGetDeviceGroupSurfacePresentModesKHX; 674 PFN_vkAcquireNextImage2KHX vkAcquireNextImage2KHX; 675 PFN_vkCmdDispatchBaseKHX vkCmdDispatchBaseKHX; 676 PFN_vkGetPhysicalDevicePresentRectanglesKHX vkGetPhysicalDevicePresentRectanglesKHX; 677 678 // VK_NN_vi_surface 679 PFN_vkCreateViSurfaceNN vkCreateViSurfaceNN; 680 681 // VK_KHX_device_group_creation 682 PFN_vkEnumeratePhysicalDeviceGroupsKHX vkEnumeratePhysicalDeviceGroupsKHX; 683 684 // VK_NVX_device_generated_commands 685 PFN_vkCmdProcessCommandsNVX vkCmdProcessCommandsNVX; 686 PFN_vkCmdReserveSpaceForCommandsNVX vkCmdReserveSpaceForCommandsNVX; 687 PFN_vkCreateIndirectCommandsLayoutNVX vkCreateIndirectCommandsLayoutNVX; 688 PFN_vkDestroyIndirectCommandsLayoutNVX vkDestroyIndirectCommandsLayoutNVX; 689 PFN_vkCreateObjectTableNVX vkCreateObjectTableNVX; 690 PFN_vkDestroyObjectTableNVX vkDestroyObjectTableNVX; 691 PFN_vkRegisterObjectsNVX vkRegisterObjectsNVX; 692 PFN_vkUnregisterObjectsNVX vkUnregisterObjectsNVX; 693 PFN_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX; 694 695 // VK_NV_clip_space_w_scaling 696 PFN_vkCmdSetViewportWScalingNV vkCmdSetViewportWScalingNV; 697 698 // VK_EXT_direct_mode_display 699 PFN_vkReleaseDisplayEXT vkReleaseDisplayEXT; 700 701 // VK_EXT_acquire_xlib_display 702 version( VK_USE_PLATFORM_XLIB_KHR ) { 703 PFN_vkAcquireXlibDisplayEXT vkAcquireXlibDisplayEXT; 704 PFN_vkGetRandROutputDisplayEXT vkGetRandROutputDisplayEXT; 705 } 706 707 // VK_EXT_display_surface_counter 708 PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT vkGetPhysicalDeviceSurfaceCapabilities2EXT; 709 710 // VK_EXT_display_control 711 PFN_vkDisplayPowerControlEXT vkDisplayPowerControlEXT; 712 PFN_vkRegisterDeviceEventEXT vkRegisterDeviceEventEXT; 713 PFN_vkRegisterDisplayEventEXT vkRegisterDisplayEventEXT; 714 PFN_vkGetSwapchainCounterEXT vkGetSwapchainCounterEXT; 715 716 // VK_GOOGLE_display_timing 717 PFN_vkGetRefreshCycleDurationGOOGLE vkGetRefreshCycleDurationGOOGLE; 718 PFN_vkGetPastPresentationTimingGOOGLE vkGetPastPresentationTimingGOOGLE; 719 720 // VK_EXT_discard_rectangles 721 PFN_vkCmdSetDiscardRectangleEXT vkCmdSetDiscardRectangleEXT; 722 723 // VK_EXT_hdr_metadata 724 PFN_vkSetHdrMetadataEXT vkSetHdrMetadataEXT; 725 726 // VK_MVK_ios_surface 727 PFN_vkCreateIOSSurfaceMVK vkCreateIOSSurfaceMVK; 728 729 // VK_MVK_macos_surface 730 PFN_vkCreateMacOSSurfaceMVK vkCreateMacOSSurfaceMVK; 731 } 732 733 /// if not using version "with-derelict-loader" this function must be called first 734 /// sets vkCreateInstance function pointer and acquires basic functions to retrieve information about the implementation 735 void loadGlobalLevelFunctions( typeof( vkGetInstanceProcAddr ) getProcAddr ) { 736 vkGetInstanceProcAddr = getProcAddr; 737 vkEnumerateInstanceExtensionProperties = cast( typeof( vkEnumerateInstanceExtensionProperties )) vkGetInstanceProcAddr( null, "vkEnumerateInstanceExtensionProperties" ); 738 vkEnumerateInstanceLayerProperties = cast( typeof( vkEnumerateInstanceLayerProperties )) vkGetInstanceProcAddr( null, "vkEnumerateInstanceLayerProperties" ); 739 vkCreateInstance = cast( typeof( vkCreateInstance )) vkGetInstanceProcAddr( null, "vkCreateInstance" ); 740 } 741 742 /// with a valid VkInstance call this function to retrieve additional VkInstance, VkPhysicalDevice, ... related functions 743 void loadInstanceLevelFunctions( VkInstance instance ) { 744 assert( vkGetInstanceProcAddr !is null, "Must call loadGlobalLevelFunctions before loadInstanceLevelFunctions" ); 745 746 // VK_VERSION_1_0 747 vkDestroyInstance = cast( typeof( vkDestroyInstance )) vkGetInstanceProcAddr( instance, "vkDestroyInstance" ); 748 vkEnumeratePhysicalDevices = cast( typeof( vkEnumeratePhysicalDevices )) vkGetInstanceProcAddr( instance, "vkEnumeratePhysicalDevices" ); 749 vkGetPhysicalDeviceFeatures = cast( typeof( vkGetPhysicalDeviceFeatures )) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFeatures" ); 750 vkGetPhysicalDeviceFormatProperties = cast( typeof( vkGetPhysicalDeviceFormatProperties )) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFormatProperties" ); 751 vkGetPhysicalDeviceImageFormatProperties = cast( typeof( vkGetPhysicalDeviceImageFormatProperties )) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceImageFormatProperties" ); 752 vkGetPhysicalDeviceProperties = cast( typeof( vkGetPhysicalDeviceProperties )) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceProperties" ); 753 vkGetPhysicalDeviceQueueFamilyProperties = cast( typeof( vkGetPhysicalDeviceQueueFamilyProperties )) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceQueueFamilyProperties" ); 754 vkGetPhysicalDeviceMemoryProperties = cast( typeof( vkGetPhysicalDeviceMemoryProperties )) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceMemoryProperties" ); 755 vkGetDeviceProcAddr = cast( typeof( vkGetDeviceProcAddr )) vkGetInstanceProcAddr( instance, "vkGetDeviceProcAddr" ); 756 vkCreateDevice = cast( typeof( vkCreateDevice )) vkGetInstanceProcAddr( instance, "vkCreateDevice" ); 757 vkEnumerateDeviceExtensionProperties = cast( typeof( vkEnumerateDeviceExtensionProperties )) vkGetInstanceProcAddr( instance, "vkEnumerateDeviceExtensionProperties" ); 758 vkEnumerateDeviceLayerProperties = cast( typeof( vkEnumerateDeviceLayerProperties )) vkGetInstanceProcAddr( instance, "vkEnumerateDeviceLayerProperties" ); 759 vkGetPhysicalDeviceSparseImageFormatProperties = cast( typeof( vkGetPhysicalDeviceSparseImageFormatProperties )) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSparseImageFormatProperties" ); 760 761 // VK_KHR_surface 762 vkDestroySurfaceKHR = cast( typeof( vkDestroySurfaceKHR )) vkGetInstanceProcAddr( instance, "vkDestroySurfaceKHR" ); 763 vkGetPhysicalDeviceSurfaceSupportKHR = cast( typeof( vkGetPhysicalDeviceSurfaceSupportKHR )) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceSupportKHR" ); 764 vkGetPhysicalDeviceSurfaceCapabilitiesKHR = cast( typeof( vkGetPhysicalDeviceSurfaceCapabilitiesKHR )) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR" ); 765 vkGetPhysicalDeviceSurfaceFormatsKHR = cast( typeof( vkGetPhysicalDeviceSurfaceFormatsKHR )) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceFormatsKHR" ); 766 vkGetPhysicalDeviceSurfacePresentModesKHR = cast( typeof( vkGetPhysicalDeviceSurfacePresentModesKHR )) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfacePresentModesKHR" ); 767 768 // VK_KHR_display 769 vkGetPhysicalDeviceDisplayPropertiesKHR = cast( typeof( vkGetPhysicalDeviceDisplayPropertiesKHR )) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDisplayPropertiesKHR" ); 770 vkGetPhysicalDeviceDisplayPlanePropertiesKHR = cast( typeof( vkGetPhysicalDeviceDisplayPlanePropertiesKHR )) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR" ); 771 vkGetDisplayPlaneSupportedDisplaysKHR = cast( typeof( vkGetDisplayPlaneSupportedDisplaysKHR )) vkGetInstanceProcAddr( instance, "vkGetDisplayPlaneSupportedDisplaysKHR" ); 772 vkGetDisplayModePropertiesKHR = cast( typeof( vkGetDisplayModePropertiesKHR )) vkGetInstanceProcAddr( instance, "vkGetDisplayModePropertiesKHR" ); 773 vkCreateDisplayModeKHR = cast( typeof( vkCreateDisplayModeKHR )) vkGetInstanceProcAddr( instance, "vkCreateDisplayModeKHR" ); 774 vkGetDisplayPlaneCapabilitiesKHR = cast( typeof( vkGetDisplayPlaneCapabilitiesKHR )) vkGetInstanceProcAddr( instance, "vkGetDisplayPlaneCapabilitiesKHR" ); 775 vkCreateDisplayPlaneSurfaceKHR = cast( typeof( vkCreateDisplayPlaneSurfaceKHR )) vkGetInstanceProcAddr( instance, "vkCreateDisplayPlaneSurfaceKHR" ); 776 777 // VK_KHR_xlib_surface 778 version( VK_USE_PLATFORM_XLIB_KHR ) { 779 vkCreateXlibSurfaceKHR = cast( typeof( vkCreateXlibSurfaceKHR )) vkGetInstanceProcAddr( instance, "vkCreateXlibSurfaceKHR" ); 780 vkGetPhysicalDeviceXlibPresentationSupportKHR = cast( typeof( vkGetPhysicalDeviceXlibPresentationSupportKHR )) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceXlibPresentationSupportKHR" ); 781 } 782 783 // VK_KHR_xcb_surface 784 version( VK_USE_PLATFORM_XCB_KHR ) { 785 vkCreateXcbSurfaceKHR = cast( typeof( vkCreateXcbSurfaceKHR )) vkGetInstanceProcAddr( instance, "vkCreateXcbSurfaceKHR" ); 786 vkGetPhysicalDeviceXcbPresentationSupportKHR = cast( typeof( vkGetPhysicalDeviceXcbPresentationSupportKHR )) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceXcbPresentationSupportKHR" ); 787 } 788 789 // VK_KHR_wayland_surface 790 version( VK_USE_PLATFORM_WAYLAND_KHR ) { 791 vkCreateWaylandSurfaceKHR = cast( typeof( vkCreateWaylandSurfaceKHR )) vkGetInstanceProcAddr( instance, "vkCreateWaylandSurfaceKHR" ); 792 vkGetPhysicalDeviceWaylandPresentationSupportKHR = cast( typeof( vkGetPhysicalDeviceWaylandPresentationSupportKHR )) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceWaylandPresentationSupportKHR" ); 793 } 794 795 // VK_KHR_mir_surface 796 version( VK_USE_PLATFORM_MIR_KHR ) { 797 vkCreateMirSurfaceKHR = cast( typeof( vkCreateMirSurfaceKHR )) vkGetInstanceProcAddr( instance, "vkCreateMirSurfaceKHR" ); 798 vkGetPhysicalDeviceMirPresentationSupportKHR = cast( typeof( vkGetPhysicalDeviceMirPresentationSupportKHR )) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceMirPresentationSupportKHR" ); 799 } 800 801 // VK_KHR_android_surface 802 version( VK_USE_PLATFORM_ANDROID_KHR ) { 803 vkCreateAndroidSurfaceKHR = cast( typeof( vkCreateAndroidSurfaceKHR )) vkGetInstanceProcAddr( instance, "vkCreateAndroidSurfaceKHR" ); 804 } 805 806 // VK_KHR_win32_surface 807 version( VK_USE_PLATFORM_WIN32_KHR ) { 808 vkCreateWin32SurfaceKHR = cast( typeof( vkCreateWin32SurfaceKHR )) vkGetInstanceProcAddr( instance, "vkCreateWin32SurfaceKHR" ); 809 vkGetPhysicalDeviceWin32PresentationSupportKHR = cast( typeof( vkGetPhysicalDeviceWin32PresentationSupportKHR )) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceWin32PresentationSupportKHR" ); 810 } 811 812 // VK_KHR_get_physical_device_properties2 813 vkGetPhysicalDeviceFeatures2KHR = cast( typeof( vkGetPhysicalDeviceFeatures2KHR )) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFeatures2KHR" ); 814 vkGetPhysicalDeviceProperties2KHR = cast( typeof( vkGetPhysicalDeviceProperties2KHR )) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceProperties2KHR" ); 815 vkGetPhysicalDeviceFormatProperties2KHR = cast( typeof( vkGetPhysicalDeviceFormatProperties2KHR )) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFormatProperties2KHR" ); 816 vkGetPhysicalDeviceImageFormatProperties2KHR = cast( typeof( vkGetPhysicalDeviceImageFormatProperties2KHR )) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceImageFormatProperties2KHR" ); 817 vkGetPhysicalDeviceQueueFamilyProperties2KHR = cast( typeof( vkGetPhysicalDeviceQueueFamilyProperties2KHR )) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceQueueFamilyProperties2KHR" ); 818 vkGetPhysicalDeviceMemoryProperties2KHR = cast( typeof( vkGetPhysicalDeviceMemoryProperties2KHR )) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceMemoryProperties2KHR" ); 819 vkGetPhysicalDeviceSparseImageFormatProperties2KHR = cast( typeof( vkGetPhysicalDeviceSparseImageFormatProperties2KHR )) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR" ); 820 821 // VK_KHR_external_memory_capabilities 822 vkGetPhysicalDeviceExternalBufferPropertiesKHR = cast( typeof( vkGetPhysicalDeviceExternalBufferPropertiesKHR )) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalBufferPropertiesKHR" ); 823 824 // VK_KHR_external_semaphore_capabilities 825 vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = cast( typeof( vkGetPhysicalDeviceExternalSemaphorePropertiesKHR )) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR" ); 826 827 // VK_KHR_external_fence_capabilities 828 vkGetPhysicalDeviceExternalFencePropertiesKHR = cast( typeof( vkGetPhysicalDeviceExternalFencePropertiesKHR )) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalFencePropertiesKHR" ); 829 830 // VK_KHR_get_surface_capabilities2 831 vkGetPhysicalDeviceSurfaceCapabilities2KHR = cast( typeof( vkGetPhysicalDeviceSurfaceCapabilities2KHR )) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceCapabilities2KHR" ); 832 vkGetPhysicalDeviceSurfaceFormats2KHR = cast( typeof( vkGetPhysicalDeviceSurfaceFormats2KHR )) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceFormats2KHR" ); 833 834 // VK_EXT_debug_report 835 vkCreateDebugReportCallbackEXT = cast( typeof( vkCreateDebugReportCallbackEXT )) vkGetInstanceProcAddr( instance, "vkCreateDebugReportCallbackEXT" ); 836 vkDestroyDebugReportCallbackEXT = cast( typeof( vkDestroyDebugReportCallbackEXT )) vkGetInstanceProcAddr( instance, "vkDestroyDebugReportCallbackEXT" ); 837 vkDebugReportMessageEXT = cast( typeof( vkDebugReportMessageEXT )) vkGetInstanceProcAddr( instance, "vkDebugReportMessageEXT" ); 838 839 // VK_NV_external_memory_capabilities 840 vkGetPhysicalDeviceExternalImageFormatPropertiesNV = cast( typeof( vkGetPhysicalDeviceExternalImageFormatPropertiesNV )) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV" ); 841 842 // VK_KHX_device_group 843 vkGetPhysicalDevicePresentRectanglesKHX = cast( typeof( vkGetPhysicalDevicePresentRectanglesKHX )) vkGetInstanceProcAddr( instance, "vkGetPhysicalDevicePresentRectanglesKHX" ); 844 845 // VK_NN_vi_surface 846 vkCreateViSurfaceNN = cast( typeof( vkCreateViSurfaceNN )) vkGetInstanceProcAddr( instance, "vkCreateViSurfaceNN" ); 847 848 // VK_KHX_device_group_creation 849 vkEnumeratePhysicalDeviceGroupsKHX = cast( typeof( vkEnumeratePhysicalDeviceGroupsKHX )) vkGetInstanceProcAddr( instance, "vkEnumeratePhysicalDeviceGroupsKHX" ); 850 851 // VK_NVX_device_generated_commands 852 vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX = cast( typeof( vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX )) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX" ); 853 854 // VK_EXT_direct_mode_display 855 vkReleaseDisplayEXT = cast( typeof( vkReleaseDisplayEXT )) vkGetInstanceProcAddr( instance, "vkReleaseDisplayEXT" ); 856 857 // VK_EXT_acquire_xlib_display 858 version( VK_USE_PLATFORM_XLIB_KHR ) { 859 vkAcquireXlibDisplayEXT = cast( typeof( vkAcquireXlibDisplayEXT )) vkGetInstanceProcAddr( instance, "vkAcquireXlibDisplayEXT" ); 860 vkGetRandROutputDisplayEXT = cast( typeof( vkGetRandROutputDisplayEXT )) vkGetInstanceProcAddr( instance, "vkGetRandROutputDisplayEXT" ); 861 } 862 863 // VK_EXT_display_surface_counter 864 vkGetPhysicalDeviceSurfaceCapabilities2EXT = cast( typeof( vkGetPhysicalDeviceSurfaceCapabilities2EXT )) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceCapabilities2EXT" ); 865 866 // VK_MVK_ios_surface 867 vkCreateIOSSurfaceMVK = cast( typeof( vkCreateIOSSurfaceMVK )) vkGetInstanceProcAddr( instance, "vkCreateIOSSurfaceMVK" ); 868 869 // VK_MVK_macos_surface 870 vkCreateMacOSSurfaceMVK = cast( typeof( vkCreateMacOSSurfaceMVK )) vkGetInstanceProcAddr( instance, "vkCreateMacOSSurfaceMVK" ); 871 } 872 873 /// with a valid VkInstance call this function to retrieve VkDevice, VkQueue and VkCommandBuffer related functions 874 /// the functions call indirectly through the VkInstance and will be internally dispatched by the implementation 875 /// use loadDeviceLevelFunctions( VkDevice device ) bellow to avoid this indirection and get the pointers directly form a VkDevice 876 void loadDeviceLevelFunctions( VkInstance instance ) { 877 assert( vkGetInstanceProcAddr !is null, "Must call loadInstanceLevelFunctions before loadDeviceLevelFunctions" ); 878 879 // VK_VERSION_1_0 880 vkDestroyDevice = cast( typeof( vkDestroyDevice )) vkGetInstanceProcAddr( instance, "vkDestroyDevice" ); 881 vkGetDeviceQueue = cast( typeof( vkGetDeviceQueue )) vkGetInstanceProcAddr( instance, "vkGetDeviceQueue" ); 882 vkQueueSubmit = cast( typeof( vkQueueSubmit )) vkGetInstanceProcAddr( instance, "vkQueueSubmit" ); 883 vkQueueWaitIdle = cast( typeof( vkQueueWaitIdle )) vkGetInstanceProcAddr( instance, "vkQueueWaitIdle" ); 884 vkDeviceWaitIdle = cast( typeof( vkDeviceWaitIdle )) vkGetInstanceProcAddr( instance, "vkDeviceWaitIdle" ); 885 vkAllocateMemory = cast( typeof( vkAllocateMemory )) vkGetInstanceProcAddr( instance, "vkAllocateMemory" ); 886 vkFreeMemory = cast( typeof( vkFreeMemory )) vkGetInstanceProcAddr( instance, "vkFreeMemory" ); 887 vkMapMemory = cast( typeof( vkMapMemory )) vkGetInstanceProcAddr( instance, "vkMapMemory" ); 888 vkUnmapMemory = cast( typeof( vkUnmapMemory )) vkGetInstanceProcAddr( instance, "vkUnmapMemory" ); 889 vkFlushMappedMemoryRanges = cast( typeof( vkFlushMappedMemoryRanges )) vkGetInstanceProcAddr( instance, "vkFlushMappedMemoryRanges" ); 890 vkInvalidateMappedMemoryRanges = cast( typeof( vkInvalidateMappedMemoryRanges )) vkGetInstanceProcAddr( instance, "vkInvalidateMappedMemoryRanges" ); 891 vkGetDeviceMemoryCommitment = cast( typeof( vkGetDeviceMemoryCommitment )) vkGetInstanceProcAddr( instance, "vkGetDeviceMemoryCommitment" ); 892 vkBindBufferMemory = cast( typeof( vkBindBufferMemory )) vkGetInstanceProcAddr( instance, "vkBindBufferMemory" ); 893 vkBindImageMemory = cast( typeof( vkBindImageMemory )) vkGetInstanceProcAddr( instance, "vkBindImageMemory" ); 894 vkGetBufferMemoryRequirements = cast( typeof( vkGetBufferMemoryRequirements )) vkGetInstanceProcAddr( instance, "vkGetBufferMemoryRequirements" ); 895 vkGetImageMemoryRequirements = cast( typeof( vkGetImageMemoryRequirements )) vkGetInstanceProcAddr( instance, "vkGetImageMemoryRequirements" ); 896 vkGetImageSparseMemoryRequirements = cast( typeof( vkGetImageSparseMemoryRequirements )) vkGetInstanceProcAddr( instance, "vkGetImageSparseMemoryRequirements" ); 897 vkQueueBindSparse = cast( typeof( vkQueueBindSparse )) vkGetInstanceProcAddr( instance, "vkQueueBindSparse" ); 898 vkCreateFence = cast( typeof( vkCreateFence )) vkGetInstanceProcAddr( instance, "vkCreateFence" ); 899 vkDestroyFence = cast( typeof( vkDestroyFence )) vkGetInstanceProcAddr( instance, "vkDestroyFence" ); 900 vkResetFences = cast( typeof( vkResetFences )) vkGetInstanceProcAddr( instance, "vkResetFences" ); 901 vkGetFenceStatus = cast( typeof( vkGetFenceStatus )) vkGetInstanceProcAddr( instance, "vkGetFenceStatus" ); 902 vkWaitForFences = cast( typeof( vkWaitForFences )) vkGetInstanceProcAddr( instance, "vkWaitForFences" ); 903 vkCreateSemaphore = cast( typeof( vkCreateSemaphore )) vkGetInstanceProcAddr( instance, "vkCreateSemaphore" ); 904 vkDestroySemaphore = cast( typeof( vkDestroySemaphore )) vkGetInstanceProcAddr( instance, "vkDestroySemaphore" ); 905 vkCreateEvent = cast( typeof( vkCreateEvent )) vkGetInstanceProcAddr( instance, "vkCreateEvent" ); 906 vkDestroyEvent = cast( typeof( vkDestroyEvent )) vkGetInstanceProcAddr( instance, "vkDestroyEvent" ); 907 vkGetEventStatus = cast( typeof( vkGetEventStatus )) vkGetInstanceProcAddr( instance, "vkGetEventStatus" ); 908 vkSetEvent = cast( typeof( vkSetEvent )) vkGetInstanceProcAddr( instance, "vkSetEvent" ); 909 vkResetEvent = cast( typeof( vkResetEvent )) vkGetInstanceProcAddr( instance, "vkResetEvent" ); 910 vkCreateQueryPool = cast( typeof( vkCreateQueryPool )) vkGetInstanceProcAddr( instance, "vkCreateQueryPool" ); 911 vkDestroyQueryPool = cast( typeof( vkDestroyQueryPool )) vkGetInstanceProcAddr( instance, "vkDestroyQueryPool" ); 912 vkGetQueryPoolResults = cast( typeof( vkGetQueryPoolResults )) vkGetInstanceProcAddr( instance, "vkGetQueryPoolResults" ); 913 vkCreateBuffer = cast( typeof( vkCreateBuffer )) vkGetInstanceProcAddr( instance, "vkCreateBuffer" ); 914 vkDestroyBuffer = cast( typeof( vkDestroyBuffer )) vkGetInstanceProcAddr( instance, "vkDestroyBuffer" ); 915 vkCreateBufferView = cast( typeof( vkCreateBufferView )) vkGetInstanceProcAddr( instance, "vkCreateBufferView" ); 916 vkDestroyBufferView = cast( typeof( vkDestroyBufferView )) vkGetInstanceProcAddr( instance, "vkDestroyBufferView" ); 917 vkCreateImage = cast( typeof( vkCreateImage )) vkGetInstanceProcAddr( instance, "vkCreateImage" ); 918 vkDestroyImage = cast( typeof( vkDestroyImage )) vkGetInstanceProcAddr( instance, "vkDestroyImage" ); 919 vkGetImageSubresourceLayout = cast( typeof( vkGetImageSubresourceLayout )) vkGetInstanceProcAddr( instance, "vkGetImageSubresourceLayout" ); 920 vkCreateImageView = cast( typeof( vkCreateImageView )) vkGetInstanceProcAddr( instance, "vkCreateImageView" ); 921 vkDestroyImageView = cast( typeof( vkDestroyImageView )) vkGetInstanceProcAddr( instance, "vkDestroyImageView" ); 922 vkCreateShaderModule = cast( typeof( vkCreateShaderModule )) vkGetInstanceProcAddr( instance, "vkCreateShaderModule" ); 923 vkDestroyShaderModule = cast( typeof( vkDestroyShaderModule )) vkGetInstanceProcAddr( instance, "vkDestroyShaderModule" ); 924 vkCreatePipelineCache = cast( typeof( vkCreatePipelineCache )) vkGetInstanceProcAddr( instance, "vkCreatePipelineCache" ); 925 vkDestroyPipelineCache = cast( typeof( vkDestroyPipelineCache )) vkGetInstanceProcAddr( instance, "vkDestroyPipelineCache" ); 926 vkGetPipelineCacheData = cast( typeof( vkGetPipelineCacheData )) vkGetInstanceProcAddr( instance, "vkGetPipelineCacheData" ); 927 vkMergePipelineCaches = cast( typeof( vkMergePipelineCaches )) vkGetInstanceProcAddr( instance, "vkMergePipelineCaches" ); 928 vkCreateGraphicsPipelines = cast( typeof( vkCreateGraphicsPipelines )) vkGetInstanceProcAddr( instance, "vkCreateGraphicsPipelines" ); 929 vkCreateComputePipelines = cast( typeof( vkCreateComputePipelines )) vkGetInstanceProcAddr( instance, "vkCreateComputePipelines" ); 930 vkDestroyPipeline = cast( typeof( vkDestroyPipeline )) vkGetInstanceProcAddr( instance, "vkDestroyPipeline" ); 931 vkCreatePipelineLayout = cast( typeof( vkCreatePipelineLayout )) vkGetInstanceProcAddr( instance, "vkCreatePipelineLayout" ); 932 vkDestroyPipelineLayout = cast( typeof( vkDestroyPipelineLayout )) vkGetInstanceProcAddr( instance, "vkDestroyPipelineLayout" ); 933 vkCreateSampler = cast( typeof( vkCreateSampler )) vkGetInstanceProcAddr( instance, "vkCreateSampler" ); 934 vkDestroySampler = cast( typeof( vkDestroySampler )) vkGetInstanceProcAddr( instance, "vkDestroySampler" ); 935 vkCreateDescriptorSetLayout = cast( typeof( vkCreateDescriptorSetLayout )) vkGetInstanceProcAddr( instance, "vkCreateDescriptorSetLayout" ); 936 vkDestroyDescriptorSetLayout = cast( typeof( vkDestroyDescriptorSetLayout )) vkGetInstanceProcAddr( instance, "vkDestroyDescriptorSetLayout" ); 937 vkCreateDescriptorPool = cast( typeof( vkCreateDescriptorPool )) vkGetInstanceProcAddr( instance, "vkCreateDescriptorPool" ); 938 vkDestroyDescriptorPool = cast( typeof( vkDestroyDescriptorPool )) vkGetInstanceProcAddr( instance, "vkDestroyDescriptorPool" ); 939 vkResetDescriptorPool = cast( typeof( vkResetDescriptorPool )) vkGetInstanceProcAddr( instance, "vkResetDescriptorPool" ); 940 vkAllocateDescriptorSets = cast( typeof( vkAllocateDescriptorSets )) vkGetInstanceProcAddr( instance, "vkAllocateDescriptorSets" ); 941 vkFreeDescriptorSets = cast( typeof( vkFreeDescriptorSets )) vkGetInstanceProcAddr( instance, "vkFreeDescriptorSets" ); 942 vkUpdateDescriptorSets = cast( typeof( vkUpdateDescriptorSets )) vkGetInstanceProcAddr( instance, "vkUpdateDescriptorSets" ); 943 vkCreateFramebuffer = cast( typeof( vkCreateFramebuffer )) vkGetInstanceProcAddr( instance, "vkCreateFramebuffer" ); 944 vkDestroyFramebuffer = cast( typeof( vkDestroyFramebuffer )) vkGetInstanceProcAddr( instance, "vkDestroyFramebuffer" ); 945 vkCreateRenderPass = cast( typeof( vkCreateRenderPass )) vkGetInstanceProcAddr( instance, "vkCreateRenderPass" ); 946 vkDestroyRenderPass = cast( typeof( vkDestroyRenderPass )) vkGetInstanceProcAddr( instance, "vkDestroyRenderPass" ); 947 vkGetRenderAreaGranularity = cast( typeof( vkGetRenderAreaGranularity )) vkGetInstanceProcAddr( instance, "vkGetRenderAreaGranularity" ); 948 vkCreateCommandPool = cast( typeof( vkCreateCommandPool )) vkGetInstanceProcAddr( instance, "vkCreateCommandPool" ); 949 vkDestroyCommandPool = cast( typeof( vkDestroyCommandPool )) vkGetInstanceProcAddr( instance, "vkDestroyCommandPool" ); 950 vkResetCommandPool = cast( typeof( vkResetCommandPool )) vkGetInstanceProcAddr( instance, "vkResetCommandPool" ); 951 vkAllocateCommandBuffers = cast( typeof( vkAllocateCommandBuffers )) vkGetInstanceProcAddr( instance, "vkAllocateCommandBuffers" ); 952 vkFreeCommandBuffers = cast( typeof( vkFreeCommandBuffers )) vkGetInstanceProcAddr( instance, "vkFreeCommandBuffers" ); 953 vkBeginCommandBuffer = cast( typeof( vkBeginCommandBuffer )) vkGetInstanceProcAddr( instance, "vkBeginCommandBuffer" ); 954 vkEndCommandBuffer = cast( typeof( vkEndCommandBuffer )) vkGetInstanceProcAddr( instance, "vkEndCommandBuffer" ); 955 vkResetCommandBuffer = cast( typeof( vkResetCommandBuffer )) vkGetInstanceProcAddr( instance, "vkResetCommandBuffer" ); 956 vkCmdBindPipeline = cast( typeof( vkCmdBindPipeline )) vkGetInstanceProcAddr( instance, "vkCmdBindPipeline" ); 957 vkCmdSetViewport = cast( typeof( vkCmdSetViewport )) vkGetInstanceProcAddr( instance, "vkCmdSetViewport" ); 958 vkCmdSetScissor = cast( typeof( vkCmdSetScissor )) vkGetInstanceProcAddr( instance, "vkCmdSetScissor" ); 959 vkCmdSetLineWidth = cast( typeof( vkCmdSetLineWidth )) vkGetInstanceProcAddr( instance, "vkCmdSetLineWidth" ); 960 vkCmdSetDepthBias = cast( typeof( vkCmdSetDepthBias )) vkGetInstanceProcAddr( instance, "vkCmdSetDepthBias" ); 961 vkCmdSetBlendConstants = cast( typeof( vkCmdSetBlendConstants )) vkGetInstanceProcAddr( instance, "vkCmdSetBlendConstants" ); 962 vkCmdSetDepthBounds = cast( typeof( vkCmdSetDepthBounds )) vkGetInstanceProcAddr( instance, "vkCmdSetDepthBounds" ); 963 vkCmdSetStencilCompareMask = cast( typeof( vkCmdSetStencilCompareMask )) vkGetInstanceProcAddr( instance, "vkCmdSetStencilCompareMask" ); 964 vkCmdSetStencilWriteMask = cast( typeof( vkCmdSetStencilWriteMask )) vkGetInstanceProcAddr( instance, "vkCmdSetStencilWriteMask" ); 965 vkCmdSetStencilReference = cast( typeof( vkCmdSetStencilReference )) vkGetInstanceProcAddr( instance, "vkCmdSetStencilReference" ); 966 vkCmdBindDescriptorSets = cast( typeof( vkCmdBindDescriptorSets )) vkGetInstanceProcAddr( instance, "vkCmdBindDescriptorSets" ); 967 vkCmdBindIndexBuffer = cast( typeof( vkCmdBindIndexBuffer )) vkGetInstanceProcAddr( instance, "vkCmdBindIndexBuffer" ); 968 vkCmdBindVertexBuffers = cast( typeof( vkCmdBindVertexBuffers )) vkGetInstanceProcAddr( instance, "vkCmdBindVertexBuffers" ); 969 vkCmdDraw = cast( typeof( vkCmdDraw )) vkGetInstanceProcAddr( instance, "vkCmdDraw" ); 970 vkCmdDrawIndexed = cast( typeof( vkCmdDrawIndexed )) vkGetInstanceProcAddr( instance, "vkCmdDrawIndexed" ); 971 vkCmdDrawIndirect = cast( typeof( vkCmdDrawIndirect )) vkGetInstanceProcAddr( instance, "vkCmdDrawIndirect" ); 972 vkCmdDrawIndexedIndirect = cast( typeof( vkCmdDrawIndexedIndirect )) vkGetInstanceProcAddr( instance, "vkCmdDrawIndexedIndirect" ); 973 vkCmdDispatch = cast( typeof( vkCmdDispatch )) vkGetInstanceProcAddr( instance, "vkCmdDispatch" ); 974 vkCmdDispatchIndirect = cast( typeof( vkCmdDispatchIndirect )) vkGetInstanceProcAddr( instance, "vkCmdDispatchIndirect" ); 975 vkCmdCopyBuffer = cast( typeof( vkCmdCopyBuffer )) vkGetInstanceProcAddr( instance, "vkCmdCopyBuffer" ); 976 vkCmdCopyImage = cast( typeof( vkCmdCopyImage )) vkGetInstanceProcAddr( instance, "vkCmdCopyImage" ); 977 vkCmdBlitImage = cast( typeof( vkCmdBlitImage )) vkGetInstanceProcAddr( instance, "vkCmdBlitImage" ); 978 vkCmdCopyBufferToImage = cast( typeof( vkCmdCopyBufferToImage )) vkGetInstanceProcAddr( instance, "vkCmdCopyBufferToImage" ); 979 vkCmdCopyImageToBuffer = cast( typeof( vkCmdCopyImageToBuffer )) vkGetInstanceProcAddr( instance, "vkCmdCopyImageToBuffer" ); 980 vkCmdUpdateBuffer = cast( typeof( vkCmdUpdateBuffer )) vkGetInstanceProcAddr( instance, "vkCmdUpdateBuffer" ); 981 vkCmdFillBuffer = cast( typeof( vkCmdFillBuffer )) vkGetInstanceProcAddr( instance, "vkCmdFillBuffer" ); 982 vkCmdClearColorImage = cast( typeof( vkCmdClearColorImage )) vkGetInstanceProcAddr( instance, "vkCmdClearColorImage" ); 983 vkCmdClearDepthStencilImage = cast( typeof( vkCmdClearDepthStencilImage )) vkGetInstanceProcAddr( instance, "vkCmdClearDepthStencilImage" ); 984 vkCmdClearAttachments = cast( typeof( vkCmdClearAttachments )) vkGetInstanceProcAddr( instance, "vkCmdClearAttachments" ); 985 vkCmdResolveImage = cast( typeof( vkCmdResolveImage )) vkGetInstanceProcAddr( instance, "vkCmdResolveImage" ); 986 vkCmdSetEvent = cast( typeof( vkCmdSetEvent )) vkGetInstanceProcAddr( instance, "vkCmdSetEvent" ); 987 vkCmdResetEvent = cast( typeof( vkCmdResetEvent )) vkGetInstanceProcAddr( instance, "vkCmdResetEvent" ); 988 vkCmdWaitEvents = cast( typeof( vkCmdWaitEvents )) vkGetInstanceProcAddr( instance, "vkCmdWaitEvents" ); 989 vkCmdPipelineBarrier = cast( typeof( vkCmdPipelineBarrier )) vkGetInstanceProcAddr( instance, "vkCmdPipelineBarrier" ); 990 vkCmdBeginQuery = cast( typeof( vkCmdBeginQuery )) vkGetInstanceProcAddr( instance, "vkCmdBeginQuery" ); 991 vkCmdEndQuery = cast( typeof( vkCmdEndQuery )) vkGetInstanceProcAddr( instance, "vkCmdEndQuery" ); 992 vkCmdResetQueryPool = cast( typeof( vkCmdResetQueryPool )) vkGetInstanceProcAddr( instance, "vkCmdResetQueryPool" ); 993 vkCmdWriteTimestamp = cast( typeof( vkCmdWriteTimestamp )) vkGetInstanceProcAddr( instance, "vkCmdWriteTimestamp" ); 994 vkCmdCopyQueryPoolResults = cast( typeof( vkCmdCopyQueryPoolResults )) vkGetInstanceProcAddr( instance, "vkCmdCopyQueryPoolResults" ); 995 vkCmdPushConstants = cast( typeof( vkCmdPushConstants )) vkGetInstanceProcAddr( instance, "vkCmdPushConstants" ); 996 vkCmdBeginRenderPass = cast( typeof( vkCmdBeginRenderPass )) vkGetInstanceProcAddr( instance, "vkCmdBeginRenderPass" ); 997 vkCmdNextSubpass = cast( typeof( vkCmdNextSubpass )) vkGetInstanceProcAddr( instance, "vkCmdNextSubpass" ); 998 vkCmdEndRenderPass = cast( typeof( vkCmdEndRenderPass )) vkGetInstanceProcAddr( instance, "vkCmdEndRenderPass" ); 999 vkCmdExecuteCommands = cast( typeof( vkCmdExecuteCommands )) vkGetInstanceProcAddr( instance, "vkCmdExecuteCommands" ); 1000 1001 // VK_KHR_swapchain 1002 vkCreateSwapchainKHR = cast( typeof( vkCreateSwapchainKHR )) vkGetInstanceProcAddr( instance, "vkCreateSwapchainKHR" ); 1003 vkDestroySwapchainKHR = cast( typeof( vkDestroySwapchainKHR )) vkGetInstanceProcAddr( instance, "vkDestroySwapchainKHR" ); 1004 vkGetSwapchainImagesKHR = cast( typeof( vkGetSwapchainImagesKHR )) vkGetInstanceProcAddr( instance, "vkGetSwapchainImagesKHR" ); 1005 vkAcquireNextImageKHR = cast( typeof( vkAcquireNextImageKHR )) vkGetInstanceProcAddr( instance, "vkAcquireNextImageKHR" ); 1006 vkQueuePresentKHR = cast( typeof( vkQueuePresentKHR )) vkGetInstanceProcAddr( instance, "vkQueuePresentKHR" ); 1007 1008 // VK_KHR_display_swapchain 1009 vkCreateSharedSwapchainsKHR = cast( typeof( vkCreateSharedSwapchainsKHR )) vkGetInstanceProcAddr( instance, "vkCreateSharedSwapchainsKHR" ); 1010 1011 // VK_KHR_maintenance1 1012 vkTrimCommandPoolKHR = cast( typeof( vkTrimCommandPoolKHR )) vkGetInstanceProcAddr( instance, "vkTrimCommandPoolKHR" ); 1013 1014 // VK_KHR_external_memory_win32 1015 version( VK_USE_PLATFORM_WIN32_KHR ) { 1016 vkGetMemoryWin32HandleKHR = cast( typeof( vkGetMemoryWin32HandleKHR )) vkGetInstanceProcAddr( instance, "vkGetMemoryWin32HandleKHR" ); 1017 vkGetMemoryWin32HandlePropertiesKHR = cast( typeof( vkGetMemoryWin32HandlePropertiesKHR )) vkGetInstanceProcAddr( instance, "vkGetMemoryWin32HandlePropertiesKHR" ); 1018 } 1019 1020 // VK_KHR_external_memory_fd 1021 vkGetMemoryFdKHR = cast( typeof( vkGetMemoryFdKHR )) vkGetInstanceProcAddr( instance, "vkGetMemoryFdKHR" ); 1022 vkGetMemoryFdPropertiesKHR = cast( typeof( vkGetMemoryFdPropertiesKHR )) vkGetInstanceProcAddr( instance, "vkGetMemoryFdPropertiesKHR" ); 1023 1024 // VK_KHR_external_semaphore_win32 1025 version( VK_USE_PLATFORM_WIN32_KHR ) { 1026 vkImportSemaphoreWin32HandleKHR = cast( typeof( vkImportSemaphoreWin32HandleKHR )) vkGetInstanceProcAddr( instance, "vkImportSemaphoreWin32HandleKHR" ); 1027 vkGetSemaphoreWin32HandleKHR = cast( typeof( vkGetSemaphoreWin32HandleKHR )) vkGetInstanceProcAddr( instance, "vkGetSemaphoreWin32HandleKHR" ); 1028 } 1029 1030 // VK_KHR_external_semaphore_fd 1031 vkImportSemaphoreFdKHR = cast( typeof( vkImportSemaphoreFdKHR )) vkGetInstanceProcAddr( instance, "vkImportSemaphoreFdKHR" ); 1032 vkGetSemaphoreFdKHR = cast( typeof( vkGetSemaphoreFdKHR )) vkGetInstanceProcAddr( instance, "vkGetSemaphoreFdKHR" ); 1033 1034 // VK_KHR_push_descriptor 1035 vkCmdPushDescriptorSetKHR = cast( typeof( vkCmdPushDescriptorSetKHR )) vkGetInstanceProcAddr( instance, "vkCmdPushDescriptorSetKHR" ); 1036 1037 // VK_KHR_descriptor_update_template 1038 vkCreateDescriptorUpdateTemplateKHR = cast( typeof( vkCreateDescriptorUpdateTemplateKHR )) vkGetInstanceProcAddr( instance, "vkCreateDescriptorUpdateTemplateKHR" ); 1039 vkDestroyDescriptorUpdateTemplateKHR = cast( typeof( vkDestroyDescriptorUpdateTemplateKHR )) vkGetInstanceProcAddr( instance, "vkDestroyDescriptorUpdateTemplateKHR" ); 1040 vkUpdateDescriptorSetWithTemplateKHR = cast( typeof( vkUpdateDescriptorSetWithTemplateKHR )) vkGetInstanceProcAddr( instance, "vkUpdateDescriptorSetWithTemplateKHR" ); 1041 vkCmdPushDescriptorSetWithTemplateKHR = cast( typeof( vkCmdPushDescriptorSetWithTemplateKHR )) vkGetInstanceProcAddr( instance, "vkCmdPushDescriptorSetWithTemplateKHR" ); 1042 1043 // VK_KHR_shared_presentable_image 1044 vkGetSwapchainStatusKHR = cast( typeof( vkGetSwapchainStatusKHR )) vkGetInstanceProcAddr( instance, "vkGetSwapchainStatusKHR" ); 1045 1046 // VK_KHR_external_fence_win32 1047 version( VK_USE_PLATFORM_WIN32_KHR ) { 1048 vkImportFenceWin32HandleKHR = cast( typeof( vkImportFenceWin32HandleKHR )) vkGetInstanceProcAddr( instance, "vkImportFenceWin32HandleKHR" ); 1049 vkGetFenceWin32HandleKHR = cast( typeof( vkGetFenceWin32HandleKHR )) vkGetInstanceProcAddr( instance, "vkGetFenceWin32HandleKHR" ); 1050 } 1051 1052 // VK_KHR_external_fence_fd 1053 vkImportFenceFdKHR = cast( typeof( vkImportFenceFdKHR )) vkGetInstanceProcAddr( instance, "vkImportFenceFdKHR" ); 1054 vkGetFenceFdKHR = cast( typeof( vkGetFenceFdKHR )) vkGetInstanceProcAddr( instance, "vkGetFenceFdKHR" ); 1055 1056 // VK_KHR_get_memory_requirements2 1057 vkGetImageMemoryRequirements2KHR = cast( typeof( vkGetImageMemoryRequirements2KHR )) vkGetInstanceProcAddr( instance, "vkGetImageMemoryRequirements2KHR" ); 1058 vkGetBufferMemoryRequirements2KHR = cast( typeof( vkGetBufferMemoryRequirements2KHR )) vkGetInstanceProcAddr( instance, "vkGetBufferMemoryRequirements2KHR" ); 1059 vkGetImageSparseMemoryRequirements2KHR = cast( typeof( vkGetImageSparseMemoryRequirements2KHR )) vkGetInstanceProcAddr( instance, "vkGetImageSparseMemoryRequirements2KHR" ); 1060 1061 // VK_EXT_debug_marker 1062 vkDebugMarkerSetObjectTagEXT = cast( typeof( vkDebugMarkerSetObjectTagEXT )) vkGetInstanceProcAddr( instance, "vkDebugMarkerSetObjectTagEXT" ); 1063 vkDebugMarkerSetObjectNameEXT = cast( typeof( vkDebugMarkerSetObjectNameEXT )) vkGetInstanceProcAddr( instance, "vkDebugMarkerSetObjectNameEXT" ); 1064 vkCmdDebugMarkerBeginEXT = cast( typeof( vkCmdDebugMarkerBeginEXT )) vkGetInstanceProcAddr( instance, "vkCmdDebugMarkerBeginEXT" ); 1065 vkCmdDebugMarkerEndEXT = cast( typeof( vkCmdDebugMarkerEndEXT )) vkGetInstanceProcAddr( instance, "vkCmdDebugMarkerEndEXT" ); 1066 vkCmdDebugMarkerInsertEXT = cast( typeof( vkCmdDebugMarkerInsertEXT )) vkGetInstanceProcAddr( instance, "vkCmdDebugMarkerInsertEXT" ); 1067 1068 // VK_AMD_draw_indirect_count 1069 vkCmdDrawIndirectCountAMD = cast( typeof( vkCmdDrawIndirectCountAMD )) vkGetInstanceProcAddr( instance, "vkCmdDrawIndirectCountAMD" ); 1070 vkCmdDrawIndexedIndirectCountAMD = cast( typeof( vkCmdDrawIndexedIndirectCountAMD )) vkGetInstanceProcAddr( instance, "vkCmdDrawIndexedIndirectCountAMD" ); 1071 1072 // VK_NV_external_memory_win32 1073 version( VK_USE_PLATFORM_WIN32_KHR ) { 1074 vkGetMemoryWin32HandleNV = cast( typeof( vkGetMemoryWin32HandleNV )) vkGetInstanceProcAddr( instance, "vkGetMemoryWin32HandleNV" ); 1075 } 1076 1077 // VK_KHX_device_group 1078 vkGetDeviceGroupPeerMemoryFeaturesKHX = cast( typeof( vkGetDeviceGroupPeerMemoryFeaturesKHX )) vkGetInstanceProcAddr( instance, "vkGetDeviceGroupPeerMemoryFeaturesKHX" ); 1079 vkBindBufferMemory2KHX = cast( typeof( vkBindBufferMemory2KHX )) vkGetInstanceProcAddr( instance, "vkBindBufferMemory2KHX" ); 1080 vkBindImageMemory2KHX = cast( typeof( vkBindImageMemory2KHX )) vkGetInstanceProcAddr( instance, "vkBindImageMemory2KHX" ); 1081 vkCmdSetDeviceMaskKHX = cast( typeof( vkCmdSetDeviceMaskKHX )) vkGetInstanceProcAddr( instance, "vkCmdSetDeviceMaskKHX" ); 1082 vkGetDeviceGroupPresentCapabilitiesKHX = cast( typeof( vkGetDeviceGroupPresentCapabilitiesKHX )) vkGetInstanceProcAddr( instance, "vkGetDeviceGroupPresentCapabilitiesKHX" ); 1083 vkGetDeviceGroupSurfacePresentModesKHX = cast( typeof( vkGetDeviceGroupSurfacePresentModesKHX )) vkGetInstanceProcAddr( instance, "vkGetDeviceGroupSurfacePresentModesKHX" ); 1084 vkAcquireNextImage2KHX = cast( typeof( vkAcquireNextImage2KHX )) vkGetInstanceProcAddr( instance, "vkAcquireNextImage2KHX" ); 1085 vkCmdDispatchBaseKHX = cast( typeof( vkCmdDispatchBaseKHX )) vkGetInstanceProcAddr( instance, "vkCmdDispatchBaseKHX" ); 1086 1087 // VK_NVX_device_generated_commands 1088 vkCmdProcessCommandsNVX = cast( typeof( vkCmdProcessCommandsNVX )) vkGetInstanceProcAddr( instance, "vkCmdProcessCommandsNVX" ); 1089 vkCmdReserveSpaceForCommandsNVX = cast( typeof( vkCmdReserveSpaceForCommandsNVX )) vkGetInstanceProcAddr( instance, "vkCmdReserveSpaceForCommandsNVX" ); 1090 vkCreateIndirectCommandsLayoutNVX = cast( typeof( vkCreateIndirectCommandsLayoutNVX )) vkGetInstanceProcAddr( instance, "vkCreateIndirectCommandsLayoutNVX" ); 1091 vkDestroyIndirectCommandsLayoutNVX = cast( typeof( vkDestroyIndirectCommandsLayoutNVX )) vkGetInstanceProcAddr( instance, "vkDestroyIndirectCommandsLayoutNVX" ); 1092 vkCreateObjectTableNVX = cast( typeof( vkCreateObjectTableNVX )) vkGetInstanceProcAddr( instance, "vkCreateObjectTableNVX" ); 1093 vkDestroyObjectTableNVX = cast( typeof( vkDestroyObjectTableNVX )) vkGetInstanceProcAddr( instance, "vkDestroyObjectTableNVX" ); 1094 vkRegisterObjectsNVX = cast( typeof( vkRegisterObjectsNVX )) vkGetInstanceProcAddr( instance, "vkRegisterObjectsNVX" ); 1095 vkUnregisterObjectsNVX = cast( typeof( vkUnregisterObjectsNVX )) vkGetInstanceProcAddr( instance, "vkUnregisterObjectsNVX" ); 1096 1097 // VK_NV_clip_space_w_scaling 1098 vkCmdSetViewportWScalingNV = cast( typeof( vkCmdSetViewportWScalingNV )) vkGetInstanceProcAddr( instance, "vkCmdSetViewportWScalingNV" ); 1099 1100 // VK_EXT_display_control 1101 vkDisplayPowerControlEXT = cast( typeof( vkDisplayPowerControlEXT )) vkGetInstanceProcAddr( instance, "vkDisplayPowerControlEXT" ); 1102 vkRegisterDeviceEventEXT = cast( typeof( vkRegisterDeviceEventEXT )) vkGetInstanceProcAddr( instance, "vkRegisterDeviceEventEXT" ); 1103 vkRegisterDisplayEventEXT = cast( typeof( vkRegisterDisplayEventEXT )) vkGetInstanceProcAddr( instance, "vkRegisterDisplayEventEXT" ); 1104 vkGetSwapchainCounterEXT = cast( typeof( vkGetSwapchainCounterEXT )) vkGetInstanceProcAddr( instance, "vkGetSwapchainCounterEXT" ); 1105 1106 // VK_GOOGLE_display_timing 1107 vkGetRefreshCycleDurationGOOGLE = cast( typeof( vkGetRefreshCycleDurationGOOGLE )) vkGetInstanceProcAddr( instance, "vkGetRefreshCycleDurationGOOGLE" ); 1108 vkGetPastPresentationTimingGOOGLE = cast( typeof( vkGetPastPresentationTimingGOOGLE )) vkGetInstanceProcAddr( instance, "vkGetPastPresentationTimingGOOGLE" ); 1109 1110 // VK_EXT_discard_rectangles 1111 vkCmdSetDiscardRectangleEXT = cast( typeof( vkCmdSetDiscardRectangleEXT )) vkGetInstanceProcAddr( instance, "vkCmdSetDiscardRectangleEXT" ); 1112 1113 // VK_EXT_hdr_metadata 1114 vkSetHdrMetadataEXT = cast( typeof( vkSetHdrMetadataEXT )) vkGetInstanceProcAddr( instance, "vkSetHdrMetadataEXT" ); 1115 } 1116 1117 /// with a valid VkDevice call this function to retrieve VkDevice, VkQueue and VkCommandBuffer related functions 1118 /// the functions call directly VkDevice and related resources and can be retrieved for one and only one VkDevice 1119 /// calling this function again with another VkDevices will overwrite the __gshared functions retrieved previously 1120 /// use createGroupedDeviceLevelFunctions bellow if usage of multiple VkDevices is required 1121 void loadDeviceLevelFunctions( VkDevice device ) { 1122 assert( vkGetDeviceProcAddr !is null, "Must call loadInstanceLevelFunctions before loadDeviceLevelFunctions" ); 1123 1124 // VK_VERSION_1_0 1125 vkDestroyDevice = cast( typeof( vkDestroyDevice )) vkGetDeviceProcAddr( device, "vkDestroyDevice" ); 1126 vkGetDeviceQueue = cast( typeof( vkGetDeviceQueue )) vkGetDeviceProcAddr( device, "vkGetDeviceQueue" ); 1127 vkQueueSubmit = cast( typeof( vkQueueSubmit )) vkGetDeviceProcAddr( device, "vkQueueSubmit" ); 1128 vkQueueWaitIdle = cast( typeof( vkQueueWaitIdle )) vkGetDeviceProcAddr( device, "vkQueueWaitIdle" ); 1129 vkDeviceWaitIdle = cast( typeof( vkDeviceWaitIdle )) vkGetDeviceProcAddr( device, "vkDeviceWaitIdle" ); 1130 vkAllocateMemory = cast( typeof( vkAllocateMemory )) vkGetDeviceProcAddr( device, "vkAllocateMemory" ); 1131 vkFreeMemory = cast( typeof( vkFreeMemory )) vkGetDeviceProcAddr( device, "vkFreeMemory" ); 1132 vkMapMemory = cast( typeof( vkMapMemory )) vkGetDeviceProcAddr( device, "vkMapMemory" ); 1133 vkUnmapMemory = cast( typeof( vkUnmapMemory )) vkGetDeviceProcAddr( device, "vkUnmapMemory" ); 1134 vkFlushMappedMemoryRanges = cast( typeof( vkFlushMappedMemoryRanges )) vkGetDeviceProcAddr( device, "vkFlushMappedMemoryRanges" ); 1135 vkInvalidateMappedMemoryRanges = cast( typeof( vkInvalidateMappedMemoryRanges )) vkGetDeviceProcAddr( device, "vkInvalidateMappedMemoryRanges" ); 1136 vkGetDeviceMemoryCommitment = cast( typeof( vkGetDeviceMemoryCommitment )) vkGetDeviceProcAddr( device, "vkGetDeviceMemoryCommitment" ); 1137 vkBindBufferMemory = cast( typeof( vkBindBufferMemory )) vkGetDeviceProcAddr( device, "vkBindBufferMemory" ); 1138 vkBindImageMemory = cast( typeof( vkBindImageMemory )) vkGetDeviceProcAddr( device, "vkBindImageMemory" ); 1139 vkGetBufferMemoryRequirements = cast( typeof( vkGetBufferMemoryRequirements )) vkGetDeviceProcAddr( device, "vkGetBufferMemoryRequirements" ); 1140 vkGetImageMemoryRequirements = cast( typeof( vkGetImageMemoryRequirements )) vkGetDeviceProcAddr( device, "vkGetImageMemoryRequirements" ); 1141 vkGetImageSparseMemoryRequirements = cast( typeof( vkGetImageSparseMemoryRequirements )) vkGetDeviceProcAddr( device, "vkGetImageSparseMemoryRequirements" ); 1142 vkQueueBindSparse = cast( typeof( vkQueueBindSparse )) vkGetDeviceProcAddr( device, "vkQueueBindSparse" ); 1143 vkCreateFence = cast( typeof( vkCreateFence )) vkGetDeviceProcAddr( device, "vkCreateFence" ); 1144 vkDestroyFence = cast( typeof( vkDestroyFence )) vkGetDeviceProcAddr( device, "vkDestroyFence" ); 1145 vkResetFences = cast( typeof( vkResetFences )) vkGetDeviceProcAddr( device, "vkResetFences" ); 1146 vkGetFenceStatus = cast( typeof( vkGetFenceStatus )) vkGetDeviceProcAddr( device, "vkGetFenceStatus" ); 1147 vkWaitForFences = cast( typeof( vkWaitForFences )) vkGetDeviceProcAddr( device, "vkWaitForFences" ); 1148 vkCreateSemaphore = cast( typeof( vkCreateSemaphore )) vkGetDeviceProcAddr( device, "vkCreateSemaphore" ); 1149 vkDestroySemaphore = cast( typeof( vkDestroySemaphore )) vkGetDeviceProcAddr( device, "vkDestroySemaphore" ); 1150 vkCreateEvent = cast( typeof( vkCreateEvent )) vkGetDeviceProcAddr( device, "vkCreateEvent" ); 1151 vkDestroyEvent = cast( typeof( vkDestroyEvent )) vkGetDeviceProcAddr( device, "vkDestroyEvent" ); 1152 vkGetEventStatus = cast( typeof( vkGetEventStatus )) vkGetDeviceProcAddr( device, "vkGetEventStatus" ); 1153 vkSetEvent = cast( typeof( vkSetEvent )) vkGetDeviceProcAddr( device, "vkSetEvent" ); 1154 vkResetEvent = cast( typeof( vkResetEvent )) vkGetDeviceProcAddr( device, "vkResetEvent" ); 1155 vkCreateQueryPool = cast( typeof( vkCreateQueryPool )) vkGetDeviceProcAddr( device, "vkCreateQueryPool" ); 1156 vkDestroyQueryPool = cast( typeof( vkDestroyQueryPool )) vkGetDeviceProcAddr( device, "vkDestroyQueryPool" ); 1157 vkGetQueryPoolResults = cast( typeof( vkGetQueryPoolResults )) vkGetDeviceProcAddr( device, "vkGetQueryPoolResults" ); 1158 vkCreateBuffer = cast( typeof( vkCreateBuffer )) vkGetDeviceProcAddr( device, "vkCreateBuffer" ); 1159 vkDestroyBuffer = cast( typeof( vkDestroyBuffer )) vkGetDeviceProcAddr( device, "vkDestroyBuffer" ); 1160 vkCreateBufferView = cast( typeof( vkCreateBufferView )) vkGetDeviceProcAddr( device, "vkCreateBufferView" ); 1161 vkDestroyBufferView = cast( typeof( vkDestroyBufferView )) vkGetDeviceProcAddr( device, "vkDestroyBufferView" ); 1162 vkCreateImage = cast( typeof( vkCreateImage )) vkGetDeviceProcAddr( device, "vkCreateImage" ); 1163 vkDestroyImage = cast( typeof( vkDestroyImage )) vkGetDeviceProcAddr( device, "vkDestroyImage" ); 1164 vkGetImageSubresourceLayout = cast( typeof( vkGetImageSubresourceLayout )) vkGetDeviceProcAddr( device, "vkGetImageSubresourceLayout" ); 1165 vkCreateImageView = cast( typeof( vkCreateImageView )) vkGetDeviceProcAddr( device, "vkCreateImageView" ); 1166 vkDestroyImageView = cast( typeof( vkDestroyImageView )) vkGetDeviceProcAddr( device, "vkDestroyImageView" ); 1167 vkCreateShaderModule = cast( typeof( vkCreateShaderModule )) vkGetDeviceProcAddr( device, "vkCreateShaderModule" ); 1168 vkDestroyShaderModule = cast( typeof( vkDestroyShaderModule )) vkGetDeviceProcAddr( device, "vkDestroyShaderModule" ); 1169 vkCreatePipelineCache = cast( typeof( vkCreatePipelineCache )) vkGetDeviceProcAddr( device, "vkCreatePipelineCache" ); 1170 vkDestroyPipelineCache = cast( typeof( vkDestroyPipelineCache )) vkGetDeviceProcAddr( device, "vkDestroyPipelineCache" ); 1171 vkGetPipelineCacheData = cast( typeof( vkGetPipelineCacheData )) vkGetDeviceProcAddr( device, "vkGetPipelineCacheData" ); 1172 vkMergePipelineCaches = cast( typeof( vkMergePipelineCaches )) vkGetDeviceProcAddr( device, "vkMergePipelineCaches" ); 1173 vkCreateGraphicsPipelines = cast( typeof( vkCreateGraphicsPipelines )) vkGetDeviceProcAddr( device, "vkCreateGraphicsPipelines" ); 1174 vkCreateComputePipelines = cast( typeof( vkCreateComputePipelines )) vkGetDeviceProcAddr( device, "vkCreateComputePipelines" ); 1175 vkDestroyPipeline = cast( typeof( vkDestroyPipeline )) vkGetDeviceProcAddr( device, "vkDestroyPipeline" ); 1176 vkCreatePipelineLayout = cast( typeof( vkCreatePipelineLayout )) vkGetDeviceProcAddr( device, "vkCreatePipelineLayout" ); 1177 vkDestroyPipelineLayout = cast( typeof( vkDestroyPipelineLayout )) vkGetDeviceProcAddr( device, "vkDestroyPipelineLayout" ); 1178 vkCreateSampler = cast( typeof( vkCreateSampler )) vkGetDeviceProcAddr( device, "vkCreateSampler" ); 1179 vkDestroySampler = cast( typeof( vkDestroySampler )) vkGetDeviceProcAddr( device, "vkDestroySampler" ); 1180 vkCreateDescriptorSetLayout = cast( typeof( vkCreateDescriptorSetLayout )) vkGetDeviceProcAddr( device, "vkCreateDescriptorSetLayout" ); 1181 vkDestroyDescriptorSetLayout = cast( typeof( vkDestroyDescriptorSetLayout )) vkGetDeviceProcAddr( device, "vkDestroyDescriptorSetLayout" ); 1182 vkCreateDescriptorPool = cast( typeof( vkCreateDescriptorPool )) vkGetDeviceProcAddr( device, "vkCreateDescriptorPool" ); 1183 vkDestroyDescriptorPool = cast( typeof( vkDestroyDescriptorPool )) vkGetDeviceProcAddr( device, "vkDestroyDescriptorPool" ); 1184 vkResetDescriptorPool = cast( typeof( vkResetDescriptorPool )) vkGetDeviceProcAddr( device, "vkResetDescriptorPool" ); 1185 vkAllocateDescriptorSets = cast( typeof( vkAllocateDescriptorSets )) vkGetDeviceProcAddr( device, "vkAllocateDescriptorSets" ); 1186 vkFreeDescriptorSets = cast( typeof( vkFreeDescriptorSets )) vkGetDeviceProcAddr( device, "vkFreeDescriptorSets" ); 1187 vkUpdateDescriptorSets = cast( typeof( vkUpdateDescriptorSets )) vkGetDeviceProcAddr( device, "vkUpdateDescriptorSets" ); 1188 vkCreateFramebuffer = cast( typeof( vkCreateFramebuffer )) vkGetDeviceProcAddr( device, "vkCreateFramebuffer" ); 1189 vkDestroyFramebuffer = cast( typeof( vkDestroyFramebuffer )) vkGetDeviceProcAddr( device, "vkDestroyFramebuffer" ); 1190 vkCreateRenderPass = cast( typeof( vkCreateRenderPass )) vkGetDeviceProcAddr( device, "vkCreateRenderPass" ); 1191 vkDestroyRenderPass = cast( typeof( vkDestroyRenderPass )) vkGetDeviceProcAddr( device, "vkDestroyRenderPass" ); 1192 vkGetRenderAreaGranularity = cast( typeof( vkGetRenderAreaGranularity )) vkGetDeviceProcAddr( device, "vkGetRenderAreaGranularity" ); 1193 vkCreateCommandPool = cast( typeof( vkCreateCommandPool )) vkGetDeviceProcAddr( device, "vkCreateCommandPool" ); 1194 vkDestroyCommandPool = cast( typeof( vkDestroyCommandPool )) vkGetDeviceProcAddr( device, "vkDestroyCommandPool" ); 1195 vkResetCommandPool = cast( typeof( vkResetCommandPool )) vkGetDeviceProcAddr( device, "vkResetCommandPool" ); 1196 vkAllocateCommandBuffers = cast( typeof( vkAllocateCommandBuffers )) vkGetDeviceProcAddr( device, "vkAllocateCommandBuffers" ); 1197 vkFreeCommandBuffers = cast( typeof( vkFreeCommandBuffers )) vkGetDeviceProcAddr( device, "vkFreeCommandBuffers" ); 1198 vkBeginCommandBuffer = cast( typeof( vkBeginCommandBuffer )) vkGetDeviceProcAddr( device, "vkBeginCommandBuffer" ); 1199 vkEndCommandBuffer = cast( typeof( vkEndCommandBuffer )) vkGetDeviceProcAddr( device, "vkEndCommandBuffer" ); 1200 vkResetCommandBuffer = cast( typeof( vkResetCommandBuffer )) vkGetDeviceProcAddr( device, "vkResetCommandBuffer" ); 1201 vkCmdBindPipeline = cast( typeof( vkCmdBindPipeline )) vkGetDeviceProcAddr( device, "vkCmdBindPipeline" ); 1202 vkCmdSetViewport = cast( typeof( vkCmdSetViewport )) vkGetDeviceProcAddr( device, "vkCmdSetViewport" ); 1203 vkCmdSetScissor = cast( typeof( vkCmdSetScissor )) vkGetDeviceProcAddr( device, "vkCmdSetScissor" ); 1204 vkCmdSetLineWidth = cast( typeof( vkCmdSetLineWidth )) vkGetDeviceProcAddr( device, "vkCmdSetLineWidth" ); 1205 vkCmdSetDepthBias = cast( typeof( vkCmdSetDepthBias )) vkGetDeviceProcAddr( device, "vkCmdSetDepthBias" ); 1206 vkCmdSetBlendConstants = cast( typeof( vkCmdSetBlendConstants )) vkGetDeviceProcAddr( device, "vkCmdSetBlendConstants" ); 1207 vkCmdSetDepthBounds = cast( typeof( vkCmdSetDepthBounds )) vkGetDeviceProcAddr( device, "vkCmdSetDepthBounds" ); 1208 vkCmdSetStencilCompareMask = cast( typeof( vkCmdSetStencilCompareMask )) vkGetDeviceProcAddr( device, "vkCmdSetStencilCompareMask" ); 1209 vkCmdSetStencilWriteMask = cast( typeof( vkCmdSetStencilWriteMask )) vkGetDeviceProcAddr( device, "vkCmdSetStencilWriteMask" ); 1210 vkCmdSetStencilReference = cast( typeof( vkCmdSetStencilReference )) vkGetDeviceProcAddr( device, "vkCmdSetStencilReference" ); 1211 vkCmdBindDescriptorSets = cast( typeof( vkCmdBindDescriptorSets )) vkGetDeviceProcAddr( device, "vkCmdBindDescriptorSets" ); 1212 vkCmdBindIndexBuffer = cast( typeof( vkCmdBindIndexBuffer )) vkGetDeviceProcAddr( device, "vkCmdBindIndexBuffer" ); 1213 vkCmdBindVertexBuffers = cast( typeof( vkCmdBindVertexBuffers )) vkGetDeviceProcAddr( device, "vkCmdBindVertexBuffers" ); 1214 vkCmdDraw = cast( typeof( vkCmdDraw )) vkGetDeviceProcAddr( device, "vkCmdDraw" ); 1215 vkCmdDrawIndexed = cast( typeof( vkCmdDrawIndexed )) vkGetDeviceProcAddr( device, "vkCmdDrawIndexed" ); 1216 vkCmdDrawIndirect = cast( typeof( vkCmdDrawIndirect )) vkGetDeviceProcAddr( device, "vkCmdDrawIndirect" ); 1217 vkCmdDrawIndexedIndirect = cast( typeof( vkCmdDrawIndexedIndirect )) vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirect" ); 1218 vkCmdDispatch = cast( typeof( vkCmdDispatch )) vkGetDeviceProcAddr( device, "vkCmdDispatch" ); 1219 vkCmdDispatchIndirect = cast( typeof( vkCmdDispatchIndirect )) vkGetDeviceProcAddr( device, "vkCmdDispatchIndirect" ); 1220 vkCmdCopyBuffer = cast( typeof( vkCmdCopyBuffer )) vkGetDeviceProcAddr( device, "vkCmdCopyBuffer" ); 1221 vkCmdCopyImage = cast( typeof( vkCmdCopyImage )) vkGetDeviceProcAddr( device, "vkCmdCopyImage" ); 1222 vkCmdBlitImage = cast( typeof( vkCmdBlitImage )) vkGetDeviceProcAddr( device, "vkCmdBlitImage" ); 1223 vkCmdCopyBufferToImage = cast( typeof( vkCmdCopyBufferToImage )) vkGetDeviceProcAddr( device, "vkCmdCopyBufferToImage" ); 1224 vkCmdCopyImageToBuffer = cast( typeof( vkCmdCopyImageToBuffer )) vkGetDeviceProcAddr( device, "vkCmdCopyImageToBuffer" ); 1225 vkCmdUpdateBuffer = cast( typeof( vkCmdUpdateBuffer )) vkGetDeviceProcAddr( device, "vkCmdUpdateBuffer" ); 1226 vkCmdFillBuffer = cast( typeof( vkCmdFillBuffer )) vkGetDeviceProcAddr( device, "vkCmdFillBuffer" ); 1227 vkCmdClearColorImage = cast( typeof( vkCmdClearColorImage )) vkGetDeviceProcAddr( device, "vkCmdClearColorImage" ); 1228 vkCmdClearDepthStencilImage = cast( typeof( vkCmdClearDepthStencilImage )) vkGetDeviceProcAddr( device, "vkCmdClearDepthStencilImage" ); 1229 vkCmdClearAttachments = cast( typeof( vkCmdClearAttachments )) vkGetDeviceProcAddr( device, "vkCmdClearAttachments" ); 1230 vkCmdResolveImage = cast( typeof( vkCmdResolveImage )) vkGetDeviceProcAddr( device, "vkCmdResolveImage" ); 1231 vkCmdSetEvent = cast( typeof( vkCmdSetEvent )) vkGetDeviceProcAddr( device, "vkCmdSetEvent" ); 1232 vkCmdResetEvent = cast( typeof( vkCmdResetEvent )) vkGetDeviceProcAddr( device, "vkCmdResetEvent" ); 1233 vkCmdWaitEvents = cast( typeof( vkCmdWaitEvents )) vkGetDeviceProcAddr( device, "vkCmdWaitEvents" ); 1234 vkCmdPipelineBarrier = cast( typeof( vkCmdPipelineBarrier )) vkGetDeviceProcAddr( device, "vkCmdPipelineBarrier" ); 1235 vkCmdBeginQuery = cast( typeof( vkCmdBeginQuery )) vkGetDeviceProcAddr( device, "vkCmdBeginQuery" ); 1236 vkCmdEndQuery = cast( typeof( vkCmdEndQuery )) vkGetDeviceProcAddr( device, "vkCmdEndQuery" ); 1237 vkCmdResetQueryPool = cast( typeof( vkCmdResetQueryPool )) vkGetDeviceProcAddr( device, "vkCmdResetQueryPool" ); 1238 vkCmdWriteTimestamp = cast( typeof( vkCmdWriteTimestamp )) vkGetDeviceProcAddr( device, "vkCmdWriteTimestamp" ); 1239 vkCmdCopyQueryPoolResults = cast( typeof( vkCmdCopyQueryPoolResults )) vkGetDeviceProcAddr( device, "vkCmdCopyQueryPoolResults" ); 1240 vkCmdPushConstants = cast( typeof( vkCmdPushConstants )) vkGetDeviceProcAddr( device, "vkCmdPushConstants" ); 1241 vkCmdBeginRenderPass = cast( typeof( vkCmdBeginRenderPass )) vkGetDeviceProcAddr( device, "vkCmdBeginRenderPass" ); 1242 vkCmdNextSubpass = cast( typeof( vkCmdNextSubpass )) vkGetDeviceProcAddr( device, "vkCmdNextSubpass" ); 1243 vkCmdEndRenderPass = cast( typeof( vkCmdEndRenderPass )) vkGetDeviceProcAddr( device, "vkCmdEndRenderPass" ); 1244 vkCmdExecuteCommands = cast( typeof( vkCmdExecuteCommands )) vkGetDeviceProcAddr( device, "vkCmdExecuteCommands" ); 1245 1246 // VK_KHR_swapchain 1247 vkCreateSwapchainKHR = cast( typeof( vkCreateSwapchainKHR )) vkGetDeviceProcAddr( device, "vkCreateSwapchainKHR" ); 1248 vkDestroySwapchainKHR = cast( typeof( vkDestroySwapchainKHR )) vkGetDeviceProcAddr( device, "vkDestroySwapchainKHR" ); 1249 vkGetSwapchainImagesKHR = cast( typeof( vkGetSwapchainImagesKHR )) vkGetDeviceProcAddr( device, "vkGetSwapchainImagesKHR" ); 1250 vkAcquireNextImageKHR = cast( typeof( vkAcquireNextImageKHR )) vkGetDeviceProcAddr( device, "vkAcquireNextImageKHR" ); 1251 vkQueuePresentKHR = cast( typeof( vkQueuePresentKHR )) vkGetDeviceProcAddr( device, "vkQueuePresentKHR" ); 1252 1253 // VK_KHR_display_swapchain 1254 vkCreateSharedSwapchainsKHR = cast( typeof( vkCreateSharedSwapchainsKHR )) vkGetDeviceProcAddr( device, "vkCreateSharedSwapchainsKHR" ); 1255 1256 // VK_KHR_maintenance1 1257 vkTrimCommandPoolKHR = cast( typeof( vkTrimCommandPoolKHR )) vkGetDeviceProcAddr( device, "vkTrimCommandPoolKHR" ); 1258 1259 // VK_KHR_external_memory_win32 1260 version( VK_USE_PLATFORM_WIN32_KHR ) { 1261 vkGetMemoryWin32HandleKHR = cast( typeof( vkGetMemoryWin32HandleKHR )) vkGetDeviceProcAddr( device, "vkGetMemoryWin32HandleKHR" ); 1262 vkGetMemoryWin32HandlePropertiesKHR = cast( typeof( vkGetMemoryWin32HandlePropertiesKHR )) vkGetDeviceProcAddr( device, "vkGetMemoryWin32HandlePropertiesKHR" ); 1263 } 1264 1265 // VK_KHR_external_memory_fd 1266 vkGetMemoryFdKHR = cast( typeof( vkGetMemoryFdKHR )) vkGetDeviceProcAddr( device, "vkGetMemoryFdKHR" ); 1267 vkGetMemoryFdPropertiesKHR = cast( typeof( vkGetMemoryFdPropertiesKHR )) vkGetDeviceProcAddr( device, "vkGetMemoryFdPropertiesKHR" ); 1268 1269 // VK_KHR_external_semaphore_win32 1270 version( VK_USE_PLATFORM_WIN32_KHR ) { 1271 vkImportSemaphoreWin32HandleKHR = cast( typeof( vkImportSemaphoreWin32HandleKHR )) vkGetDeviceProcAddr( device, "vkImportSemaphoreWin32HandleKHR" ); 1272 vkGetSemaphoreWin32HandleKHR = cast( typeof( vkGetSemaphoreWin32HandleKHR )) vkGetDeviceProcAddr( device, "vkGetSemaphoreWin32HandleKHR" ); 1273 } 1274 1275 // VK_KHR_external_semaphore_fd 1276 vkImportSemaphoreFdKHR = cast( typeof( vkImportSemaphoreFdKHR )) vkGetDeviceProcAddr( device, "vkImportSemaphoreFdKHR" ); 1277 vkGetSemaphoreFdKHR = cast( typeof( vkGetSemaphoreFdKHR )) vkGetDeviceProcAddr( device, "vkGetSemaphoreFdKHR" ); 1278 1279 // VK_KHR_push_descriptor 1280 vkCmdPushDescriptorSetKHR = cast( typeof( vkCmdPushDescriptorSetKHR )) vkGetDeviceProcAddr( device, "vkCmdPushDescriptorSetKHR" ); 1281 1282 // VK_KHR_descriptor_update_template 1283 vkCreateDescriptorUpdateTemplateKHR = cast( typeof( vkCreateDescriptorUpdateTemplateKHR )) vkGetDeviceProcAddr( device, "vkCreateDescriptorUpdateTemplateKHR" ); 1284 vkDestroyDescriptorUpdateTemplateKHR = cast( typeof( vkDestroyDescriptorUpdateTemplateKHR )) vkGetDeviceProcAddr( device, "vkDestroyDescriptorUpdateTemplateKHR" ); 1285 vkUpdateDescriptorSetWithTemplateKHR = cast( typeof( vkUpdateDescriptorSetWithTemplateKHR )) vkGetDeviceProcAddr( device, "vkUpdateDescriptorSetWithTemplateKHR" ); 1286 vkCmdPushDescriptorSetWithTemplateKHR = cast( typeof( vkCmdPushDescriptorSetWithTemplateKHR )) vkGetDeviceProcAddr( device, "vkCmdPushDescriptorSetWithTemplateKHR" ); 1287 1288 // VK_KHR_shared_presentable_image 1289 vkGetSwapchainStatusKHR = cast( typeof( vkGetSwapchainStatusKHR )) vkGetDeviceProcAddr( device, "vkGetSwapchainStatusKHR" ); 1290 1291 // VK_KHR_external_fence_win32 1292 version( VK_USE_PLATFORM_WIN32_KHR ) { 1293 vkImportFenceWin32HandleKHR = cast( typeof( vkImportFenceWin32HandleKHR )) vkGetDeviceProcAddr( device, "vkImportFenceWin32HandleKHR" ); 1294 vkGetFenceWin32HandleKHR = cast( typeof( vkGetFenceWin32HandleKHR )) vkGetDeviceProcAddr( device, "vkGetFenceWin32HandleKHR" ); 1295 } 1296 1297 // VK_KHR_external_fence_fd 1298 vkImportFenceFdKHR = cast( typeof( vkImportFenceFdKHR )) vkGetDeviceProcAddr( device, "vkImportFenceFdKHR" ); 1299 vkGetFenceFdKHR = cast( typeof( vkGetFenceFdKHR )) vkGetDeviceProcAddr( device, "vkGetFenceFdKHR" ); 1300 1301 // VK_KHR_get_memory_requirements2 1302 vkGetImageMemoryRequirements2KHR = cast( typeof( vkGetImageMemoryRequirements2KHR )) vkGetDeviceProcAddr( device, "vkGetImageMemoryRequirements2KHR" ); 1303 vkGetBufferMemoryRequirements2KHR = cast( typeof( vkGetBufferMemoryRequirements2KHR )) vkGetDeviceProcAddr( device, "vkGetBufferMemoryRequirements2KHR" ); 1304 vkGetImageSparseMemoryRequirements2KHR = cast( typeof( vkGetImageSparseMemoryRequirements2KHR )) vkGetDeviceProcAddr( device, "vkGetImageSparseMemoryRequirements2KHR" ); 1305 1306 // VK_EXT_debug_marker 1307 vkDebugMarkerSetObjectTagEXT = cast( typeof( vkDebugMarkerSetObjectTagEXT )) vkGetDeviceProcAddr( device, "vkDebugMarkerSetObjectTagEXT" ); 1308 vkDebugMarkerSetObjectNameEXT = cast( typeof( vkDebugMarkerSetObjectNameEXT )) vkGetDeviceProcAddr( device, "vkDebugMarkerSetObjectNameEXT" ); 1309 vkCmdDebugMarkerBeginEXT = cast( typeof( vkCmdDebugMarkerBeginEXT )) vkGetDeviceProcAddr( device, "vkCmdDebugMarkerBeginEXT" ); 1310 vkCmdDebugMarkerEndEXT = cast( typeof( vkCmdDebugMarkerEndEXT )) vkGetDeviceProcAddr( device, "vkCmdDebugMarkerEndEXT" ); 1311 vkCmdDebugMarkerInsertEXT = cast( typeof( vkCmdDebugMarkerInsertEXT )) vkGetDeviceProcAddr( device, "vkCmdDebugMarkerInsertEXT" ); 1312 1313 // VK_AMD_draw_indirect_count 1314 vkCmdDrawIndirectCountAMD = cast( typeof( vkCmdDrawIndirectCountAMD )) vkGetDeviceProcAddr( device, "vkCmdDrawIndirectCountAMD" ); 1315 vkCmdDrawIndexedIndirectCountAMD = cast( typeof( vkCmdDrawIndexedIndirectCountAMD )) vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirectCountAMD" ); 1316 1317 // VK_NV_external_memory_win32 1318 version( VK_USE_PLATFORM_WIN32_KHR ) { 1319 vkGetMemoryWin32HandleNV = cast( typeof( vkGetMemoryWin32HandleNV )) vkGetDeviceProcAddr( device, "vkGetMemoryWin32HandleNV" ); 1320 } 1321 1322 // VK_KHX_device_group 1323 vkGetDeviceGroupPeerMemoryFeaturesKHX = cast( typeof( vkGetDeviceGroupPeerMemoryFeaturesKHX )) vkGetDeviceProcAddr( device, "vkGetDeviceGroupPeerMemoryFeaturesKHX" ); 1324 vkBindBufferMemory2KHX = cast( typeof( vkBindBufferMemory2KHX )) vkGetDeviceProcAddr( device, "vkBindBufferMemory2KHX" ); 1325 vkBindImageMemory2KHX = cast( typeof( vkBindImageMemory2KHX )) vkGetDeviceProcAddr( device, "vkBindImageMemory2KHX" ); 1326 vkCmdSetDeviceMaskKHX = cast( typeof( vkCmdSetDeviceMaskKHX )) vkGetDeviceProcAddr( device, "vkCmdSetDeviceMaskKHX" ); 1327 vkGetDeviceGroupPresentCapabilitiesKHX = cast( typeof( vkGetDeviceGroupPresentCapabilitiesKHX )) vkGetDeviceProcAddr( device, "vkGetDeviceGroupPresentCapabilitiesKHX" ); 1328 vkGetDeviceGroupSurfacePresentModesKHX = cast( typeof( vkGetDeviceGroupSurfacePresentModesKHX )) vkGetDeviceProcAddr( device, "vkGetDeviceGroupSurfacePresentModesKHX" ); 1329 vkAcquireNextImage2KHX = cast( typeof( vkAcquireNextImage2KHX )) vkGetDeviceProcAddr( device, "vkAcquireNextImage2KHX" ); 1330 vkCmdDispatchBaseKHX = cast( typeof( vkCmdDispatchBaseKHX )) vkGetDeviceProcAddr( device, "vkCmdDispatchBaseKHX" ); 1331 1332 // VK_NVX_device_generated_commands 1333 vkCmdProcessCommandsNVX = cast( typeof( vkCmdProcessCommandsNVX )) vkGetDeviceProcAddr( device, "vkCmdProcessCommandsNVX" ); 1334 vkCmdReserveSpaceForCommandsNVX = cast( typeof( vkCmdReserveSpaceForCommandsNVX )) vkGetDeviceProcAddr( device, "vkCmdReserveSpaceForCommandsNVX" ); 1335 vkCreateIndirectCommandsLayoutNVX = cast( typeof( vkCreateIndirectCommandsLayoutNVX )) vkGetDeviceProcAddr( device, "vkCreateIndirectCommandsLayoutNVX" ); 1336 vkDestroyIndirectCommandsLayoutNVX = cast( typeof( vkDestroyIndirectCommandsLayoutNVX )) vkGetDeviceProcAddr( device, "vkDestroyIndirectCommandsLayoutNVX" ); 1337 vkCreateObjectTableNVX = cast( typeof( vkCreateObjectTableNVX )) vkGetDeviceProcAddr( device, "vkCreateObjectTableNVX" ); 1338 vkDestroyObjectTableNVX = cast( typeof( vkDestroyObjectTableNVX )) vkGetDeviceProcAddr( device, "vkDestroyObjectTableNVX" ); 1339 vkRegisterObjectsNVX = cast( typeof( vkRegisterObjectsNVX )) vkGetDeviceProcAddr( device, "vkRegisterObjectsNVX" ); 1340 vkUnregisterObjectsNVX = cast( typeof( vkUnregisterObjectsNVX )) vkGetDeviceProcAddr( device, "vkUnregisterObjectsNVX" ); 1341 1342 // VK_NV_clip_space_w_scaling 1343 vkCmdSetViewportWScalingNV = cast( typeof( vkCmdSetViewportWScalingNV )) vkGetDeviceProcAddr( device, "vkCmdSetViewportWScalingNV" ); 1344 1345 // VK_EXT_display_control 1346 vkDisplayPowerControlEXT = cast( typeof( vkDisplayPowerControlEXT )) vkGetDeviceProcAddr( device, "vkDisplayPowerControlEXT" ); 1347 vkRegisterDeviceEventEXT = cast( typeof( vkRegisterDeviceEventEXT )) vkGetDeviceProcAddr( device, "vkRegisterDeviceEventEXT" ); 1348 vkRegisterDisplayEventEXT = cast( typeof( vkRegisterDisplayEventEXT )) vkGetDeviceProcAddr( device, "vkRegisterDisplayEventEXT" ); 1349 vkGetSwapchainCounterEXT = cast( typeof( vkGetSwapchainCounterEXT )) vkGetDeviceProcAddr( device, "vkGetSwapchainCounterEXT" ); 1350 1351 // VK_GOOGLE_display_timing 1352 vkGetRefreshCycleDurationGOOGLE = cast( typeof( vkGetRefreshCycleDurationGOOGLE )) vkGetDeviceProcAddr( device, "vkGetRefreshCycleDurationGOOGLE" ); 1353 vkGetPastPresentationTimingGOOGLE = cast( typeof( vkGetPastPresentationTimingGOOGLE )) vkGetDeviceProcAddr( device, "vkGetPastPresentationTimingGOOGLE" ); 1354 1355 // VK_EXT_discard_rectangles 1356 vkCmdSetDiscardRectangleEXT = cast( typeof( vkCmdSetDiscardRectangleEXT )) vkGetDeviceProcAddr( device, "vkCmdSetDiscardRectangleEXT" ); 1357 1358 // VK_EXT_hdr_metadata 1359 vkSetHdrMetadataEXT = cast( typeof( vkSetHdrMetadataEXT )) vkGetDeviceProcAddr( device, "vkSetHdrMetadataEXT" ); 1360 } 1361 1362 /// with a valid VkDevice call this function to retrieve VkDevice, VkQueue and VkCommandBuffer related functions grouped in a DispatchDevice struct 1363 /// the functions call directly VkDevice and related resources and can be retrieved for any VkDevice 1364 deprecated( "Use DispatchDevice( VkDevice ) or DispatchDevice.loadDeviceLevelFunctions( VkDevice ) instead" ) 1365 DispatchDevice createDispatchDeviceLevelFunctions( VkDevice device ) { 1366 return DispatchDevice( device ); 1367 } 1368 1369 1370 // struct to group per device deviceLevelFunctions into a custom namespace 1371 // keeps track of the device to which the functions are bound 1372 struct DispatchDevice { 1373 private VkDevice device = VK_NULL_HANDLE; 1374 VkCommandBuffer commandBuffer; 1375 1376 // return copy of the internal VkDevice 1377 VkDevice vkDevice() { 1378 return device; 1379 } 1380 1381 // Constructor forwards parameter 'device' to 'this.loadDeviceLevelFunctions' 1382 this( VkDevice device ) { 1383 this.loadDeviceLevelFunctions( device ); 1384 } 1385 1386 // load the device level member functions 1387 // this also sets the private member 'device' to the passed in VkDevice 1388 // now the DispatchDevice can be used e.g.: 1389 // auto dd = DispatchDevice( device ); 1390 // dd.vkDestroyDevice( dd.vkDevice, pAllocator ); 1391 // convenience functions to omit the first arg do exist, see bellow 1392 void loadDeviceLevelFunctions( VkDevice device ) { 1393 assert( vkGetDeviceProcAddr !is null, "Must call loadInstanceLevelFunctions before loadDeviceLevelFunctions" ); 1394 this.device = device; 1395 1396 // VK_VERSION_1_0 1397 vkDestroyDevice = cast( typeof( vkDestroyDevice )) vkGetDeviceProcAddr( device, "vkDestroyDevice" ); 1398 vkGetDeviceQueue = cast( typeof( vkGetDeviceQueue )) vkGetDeviceProcAddr( device, "vkGetDeviceQueue" ); 1399 vkQueueSubmit = cast( typeof( vkQueueSubmit )) vkGetDeviceProcAddr( device, "vkQueueSubmit" ); 1400 vkQueueWaitIdle = cast( typeof( vkQueueWaitIdle )) vkGetDeviceProcAddr( device, "vkQueueWaitIdle" ); 1401 vkDeviceWaitIdle = cast( typeof( vkDeviceWaitIdle )) vkGetDeviceProcAddr( device, "vkDeviceWaitIdle" ); 1402 vkAllocateMemory = cast( typeof( vkAllocateMemory )) vkGetDeviceProcAddr( device, "vkAllocateMemory" ); 1403 vkFreeMemory = cast( typeof( vkFreeMemory )) vkGetDeviceProcAddr( device, "vkFreeMemory" ); 1404 vkMapMemory = cast( typeof( vkMapMemory )) vkGetDeviceProcAddr( device, "vkMapMemory" ); 1405 vkUnmapMemory = cast( typeof( vkUnmapMemory )) vkGetDeviceProcAddr( device, "vkUnmapMemory" ); 1406 vkFlushMappedMemoryRanges = cast( typeof( vkFlushMappedMemoryRanges )) vkGetDeviceProcAddr( device, "vkFlushMappedMemoryRanges" ); 1407 vkInvalidateMappedMemoryRanges = cast( typeof( vkInvalidateMappedMemoryRanges )) vkGetDeviceProcAddr( device, "vkInvalidateMappedMemoryRanges" ); 1408 vkGetDeviceMemoryCommitment = cast( typeof( vkGetDeviceMemoryCommitment )) vkGetDeviceProcAddr( device, "vkGetDeviceMemoryCommitment" ); 1409 vkBindBufferMemory = cast( typeof( vkBindBufferMemory )) vkGetDeviceProcAddr( device, "vkBindBufferMemory" ); 1410 vkBindImageMemory = cast( typeof( vkBindImageMemory )) vkGetDeviceProcAddr( device, "vkBindImageMemory" ); 1411 vkGetBufferMemoryRequirements = cast( typeof( vkGetBufferMemoryRequirements )) vkGetDeviceProcAddr( device, "vkGetBufferMemoryRequirements" ); 1412 vkGetImageMemoryRequirements = cast( typeof( vkGetImageMemoryRequirements )) vkGetDeviceProcAddr( device, "vkGetImageMemoryRequirements" ); 1413 vkGetImageSparseMemoryRequirements = cast( typeof( vkGetImageSparseMemoryRequirements )) vkGetDeviceProcAddr( device, "vkGetImageSparseMemoryRequirements" ); 1414 vkQueueBindSparse = cast( typeof( vkQueueBindSparse )) vkGetDeviceProcAddr( device, "vkQueueBindSparse" ); 1415 vkCreateFence = cast( typeof( vkCreateFence )) vkGetDeviceProcAddr( device, "vkCreateFence" ); 1416 vkDestroyFence = cast( typeof( vkDestroyFence )) vkGetDeviceProcAddr( device, "vkDestroyFence" ); 1417 vkResetFences = cast( typeof( vkResetFences )) vkGetDeviceProcAddr( device, "vkResetFences" ); 1418 vkGetFenceStatus = cast( typeof( vkGetFenceStatus )) vkGetDeviceProcAddr( device, "vkGetFenceStatus" ); 1419 vkWaitForFences = cast( typeof( vkWaitForFences )) vkGetDeviceProcAddr( device, "vkWaitForFences" ); 1420 vkCreateSemaphore = cast( typeof( vkCreateSemaphore )) vkGetDeviceProcAddr( device, "vkCreateSemaphore" ); 1421 vkDestroySemaphore = cast( typeof( vkDestroySemaphore )) vkGetDeviceProcAddr( device, "vkDestroySemaphore" ); 1422 vkCreateEvent = cast( typeof( vkCreateEvent )) vkGetDeviceProcAddr( device, "vkCreateEvent" ); 1423 vkDestroyEvent = cast( typeof( vkDestroyEvent )) vkGetDeviceProcAddr( device, "vkDestroyEvent" ); 1424 vkGetEventStatus = cast( typeof( vkGetEventStatus )) vkGetDeviceProcAddr( device, "vkGetEventStatus" ); 1425 vkSetEvent = cast( typeof( vkSetEvent )) vkGetDeviceProcAddr( device, "vkSetEvent" ); 1426 vkResetEvent = cast( typeof( vkResetEvent )) vkGetDeviceProcAddr( device, "vkResetEvent" ); 1427 vkCreateQueryPool = cast( typeof( vkCreateQueryPool )) vkGetDeviceProcAddr( device, "vkCreateQueryPool" ); 1428 vkDestroyQueryPool = cast( typeof( vkDestroyQueryPool )) vkGetDeviceProcAddr( device, "vkDestroyQueryPool" ); 1429 vkGetQueryPoolResults = cast( typeof( vkGetQueryPoolResults )) vkGetDeviceProcAddr( device, "vkGetQueryPoolResults" ); 1430 vkCreateBuffer = cast( typeof( vkCreateBuffer )) vkGetDeviceProcAddr( device, "vkCreateBuffer" ); 1431 vkDestroyBuffer = cast( typeof( vkDestroyBuffer )) vkGetDeviceProcAddr( device, "vkDestroyBuffer" ); 1432 vkCreateBufferView = cast( typeof( vkCreateBufferView )) vkGetDeviceProcAddr( device, "vkCreateBufferView" ); 1433 vkDestroyBufferView = cast( typeof( vkDestroyBufferView )) vkGetDeviceProcAddr( device, "vkDestroyBufferView" ); 1434 vkCreateImage = cast( typeof( vkCreateImage )) vkGetDeviceProcAddr( device, "vkCreateImage" ); 1435 vkDestroyImage = cast( typeof( vkDestroyImage )) vkGetDeviceProcAddr( device, "vkDestroyImage" ); 1436 vkGetImageSubresourceLayout = cast( typeof( vkGetImageSubresourceLayout )) vkGetDeviceProcAddr( device, "vkGetImageSubresourceLayout" ); 1437 vkCreateImageView = cast( typeof( vkCreateImageView )) vkGetDeviceProcAddr( device, "vkCreateImageView" ); 1438 vkDestroyImageView = cast( typeof( vkDestroyImageView )) vkGetDeviceProcAddr( device, "vkDestroyImageView" ); 1439 vkCreateShaderModule = cast( typeof( vkCreateShaderModule )) vkGetDeviceProcAddr( device, "vkCreateShaderModule" ); 1440 vkDestroyShaderModule = cast( typeof( vkDestroyShaderModule )) vkGetDeviceProcAddr( device, "vkDestroyShaderModule" ); 1441 vkCreatePipelineCache = cast( typeof( vkCreatePipelineCache )) vkGetDeviceProcAddr( device, "vkCreatePipelineCache" ); 1442 vkDestroyPipelineCache = cast( typeof( vkDestroyPipelineCache )) vkGetDeviceProcAddr( device, "vkDestroyPipelineCache" ); 1443 vkGetPipelineCacheData = cast( typeof( vkGetPipelineCacheData )) vkGetDeviceProcAddr( device, "vkGetPipelineCacheData" ); 1444 vkMergePipelineCaches = cast( typeof( vkMergePipelineCaches )) vkGetDeviceProcAddr( device, "vkMergePipelineCaches" ); 1445 vkCreateGraphicsPipelines = cast( typeof( vkCreateGraphicsPipelines )) vkGetDeviceProcAddr( device, "vkCreateGraphicsPipelines" ); 1446 vkCreateComputePipelines = cast( typeof( vkCreateComputePipelines )) vkGetDeviceProcAddr( device, "vkCreateComputePipelines" ); 1447 vkDestroyPipeline = cast( typeof( vkDestroyPipeline )) vkGetDeviceProcAddr( device, "vkDestroyPipeline" ); 1448 vkCreatePipelineLayout = cast( typeof( vkCreatePipelineLayout )) vkGetDeviceProcAddr( device, "vkCreatePipelineLayout" ); 1449 vkDestroyPipelineLayout = cast( typeof( vkDestroyPipelineLayout )) vkGetDeviceProcAddr( device, "vkDestroyPipelineLayout" ); 1450 vkCreateSampler = cast( typeof( vkCreateSampler )) vkGetDeviceProcAddr( device, "vkCreateSampler" ); 1451 vkDestroySampler = cast( typeof( vkDestroySampler )) vkGetDeviceProcAddr( device, "vkDestroySampler" ); 1452 vkCreateDescriptorSetLayout = cast( typeof( vkCreateDescriptorSetLayout )) vkGetDeviceProcAddr( device, "vkCreateDescriptorSetLayout" ); 1453 vkDestroyDescriptorSetLayout = cast( typeof( vkDestroyDescriptorSetLayout )) vkGetDeviceProcAddr( device, "vkDestroyDescriptorSetLayout" ); 1454 vkCreateDescriptorPool = cast( typeof( vkCreateDescriptorPool )) vkGetDeviceProcAddr( device, "vkCreateDescriptorPool" ); 1455 vkDestroyDescriptorPool = cast( typeof( vkDestroyDescriptorPool )) vkGetDeviceProcAddr( device, "vkDestroyDescriptorPool" ); 1456 vkResetDescriptorPool = cast( typeof( vkResetDescriptorPool )) vkGetDeviceProcAddr( device, "vkResetDescriptorPool" ); 1457 vkAllocateDescriptorSets = cast( typeof( vkAllocateDescriptorSets )) vkGetDeviceProcAddr( device, "vkAllocateDescriptorSets" ); 1458 vkFreeDescriptorSets = cast( typeof( vkFreeDescriptorSets )) vkGetDeviceProcAddr( device, "vkFreeDescriptorSets" ); 1459 vkUpdateDescriptorSets = cast( typeof( vkUpdateDescriptorSets )) vkGetDeviceProcAddr( device, "vkUpdateDescriptorSets" ); 1460 vkCreateFramebuffer = cast( typeof( vkCreateFramebuffer )) vkGetDeviceProcAddr( device, "vkCreateFramebuffer" ); 1461 vkDestroyFramebuffer = cast( typeof( vkDestroyFramebuffer )) vkGetDeviceProcAddr( device, "vkDestroyFramebuffer" ); 1462 vkCreateRenderPass = cast( typeof( vkCreateRenderPass )) vkGetDeviceProcAddr( device, "vkCreateRenderPass" ); 1463 vkDestroyRenderPass = cast( typeof( vkDestroyRenderPass )) vkGetDeviceProcAddr( device, "vkDestroyRenderPass" ); 1464 vkGetRenderAreaGranularity = cast( typeof( vkGetRenderAreaGranularity )) vkGetDeviceProcAddr( device, "vkGetRenderAreaGranularity" ); 1465 vkCreateCommandPool = cast( typeof( vkCreateCommandPool )) vkGetDeviceProcAddr( device, "vkCreateCommandPool" ); 1466 vkDestroyCommandPool = cast( typeof( vkDestroyCommandPool )) vkGetDeviceProcAddr( device, "vkDestroyCommandPool" ); 1467 vkResetCommandPool = cast( typeof( vkResetCommandPool )) vkGetDeviceProcAddr( device, "vkResetCommandPool" ); 1468 vkAllocateCommandBuffers = cast( typeof( vkAllocateCommandBuffers )) vkGetDeviceProcAddr( device, "vkAllocateCommandBuffers" ); 1469 vkFreeCommandBuffers = cast( typeof( vkFreeCommandBuffers )) vkGetDeviceProcAddr( device, "vkFreeCommandBuffers" ); 1470 vkBeginCommandBuffer = cast( typeof( vkBeginCommandBuffer )) vkGetDeviceProcAddr( device, "vkBeginCommandBuffer" ); 1471 vkEndCommandBuffer = cast( typeof( vkEndCommandBuffer )) vkGetDeviceProcAddr( device, "vkEndCommandBuffer" ); 1472 vkResetCommandBuffer = cast( typeof( vkResetCommandBuffer )) vkGetDeviceProcAddr( device, "vkResetCommandBuffer" ); 1473 vkCmdBindPipeline = cast( typeof( vkCmdBindPipeline )) vkGetDeviceProcAddr( device, "vkCmdBindPipeline" ); 1474 vkCmdSetViewport = cast( typeof( vkCmdSetViewport )) vkGetDeviceProcAddr( device, "vkCmdSetViewport" ); 1475 vkCmdSetScissor = cast( typeof( vkCmdSetScissor )) vkGetDeviceProcAddr( device, "vkCmdSetScissor" ); 1476 vkCmdSetLineWidth = cast( typeof( vkCmdSetLineWidth )) vkGetDeviceProcAddr( device, "vkCmdSetLineWidth" ); 1477 vkCmdSetDepthBias = cast( typeof( vkCmdSetDepthBias )) vkGetDeviceProcAddr( device, "vkCmdSetDepthBias" ); 1478 vkCmdSetBlendConstants = cast( typeof( vkCmdSetBlendConstants )) vkGetDeviceProcAddr( device, "vkCmdSetBlendConstants" ); 1479 vkCmdSetDepthBounds = cast( typeof( vkCmdSetDepthBounds )) vkGetDeviceProcAddr( device, "vkCmdSetDepthBounds" ); 1480 vkCmdSetStencilCompareMask = cast( typeof( vkCmdSetStencilCompareMask )) vkGetDeviceProcAddr( device, "vkCmdSetStencilCompareMask" ); 1481 vkCmdSetStencilWriteMask = cast( typeof( vkCmdSetStencilWriteMask )) vkGetDeviceProcAddr( device, "vkCmdSetStencilWriteMask" ); 1482 vkCmdSetStencilReference = cast( typeof( vkCmdSetStencilReference )) vkGetDeviceProcAddr( device, "vkCmdSetStencilReference" ); 1483 vkCmdBindDescriptorSets = cast( typeof( vkCmdBindDescriptorSets )) vkGetDeviceProcAddr( device, "vkCmdBindDescriptorSets" ); 1484 vkCmdBindIndexBuffer = cast( typeof( vkCmdBindIndexBuffer )) vkGetDeviceProcAddr( device, "vkCmdBindIndexBuffer" ); 1485 vkCmdBindVertexBuffers = cast( typeof( vkCmdBindVertexBuffers )) vkGetDeviceProcAddr( device, "vkCmdBindVertexBuffers" ); 1486 vkCmdDraw = cast( typeof( vkCmdDraw )) vkGetDeviceProcAddr( device, "vkCmdDraw" ); 1487 vkCmdDrawIndexed = cast( typeof( vkCmdDrawIndexed )) vkGetDeviceProcAddr( device, "vkCmdDrawIndexed" ); 1488 vkCmdDrawIndirect = cast( typeof( vkCmdDrawIndirect )) vkGetDeviceProcAddr( device, "vkCmdDrawIndirect" ); 1489 vkCmdDrawIndexedIndirect = cast( typeof( vkCmdDrawIndexedIndirect )) vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirect" ); 1490 vkCmdDispatch = cast( typeof( vkCmdDispatch )) vkGetDeviceProcAddr( device, "vkCmdDispatch" ); 1491 vkCmdDispatchIndirect = cast( typeof( vkCmdDispatchIndirect )) vkGetDeviceProcAddr( device, "vkCmdDispatchIndirect" ); 1492 vkCmdCopyBuffer = cast( typeof( vkCmdCopyBuffer )) vkGetDeviceProcAddr( device, "vkCmdCopyBuffer" ); 1493 vkCmdCopyImage = cast( typeof( vkCmdCopyImage )) vkGetDeviceProcAddr( device, "vkCmdCopyImage" ); 1494 vkCmdBlitImage = cast( typeof( vkCmdBlitImage )) vkGetDeviceProcAddr( device, "vkCmdBlitImage" ); 1495 vkCmdCopyBufferToImage = cast( typeof( vkCmdCopyBufferToImage )) vkGetDeviceProcAddr( device, "vkCmdCopyBufferToImage" ); 1496 vkCmdCopyImageToBuffer = cast( typeof( vkCmdCopyImageToBuffer )) vkGetDeviceProcAddr( device, "vkCmdCopyImageToBuffer" ); 1497 vkCmdUpdateBuffer = cast( typeof( vkCmdUpdateBuffer )) vkGetDeviceProcAddr( device, "vkCmdUpdateBuffer" ); 1498 vkCmdFillBuffer = cast( typeof( vkCmdFillBuffer )) vkGetDeviceProcAddr( device, "vkCmdFillBuffer" ); 1499 vkCmdClearColorImage = cast( typeof( vkCmdClearColorImage )) vkGetDeviceProcAddr( device, "vkCmdClearColorImage" ); 1500 vkCmdClearDepthStencilImage = cast( typeof( vkCmdClearDepthStencilImage )) vkGetDeviceProcAddr( device, "vkCmdClearDepthStencilImage" ); 1501 vkCmdClearAttachments = cast( typeof( vkCmdClearAttachments )) vkGetDeviceProcAddr( device, "vkCmdClearAttachments" ); 1502 vkCmdResolveImage = cast( typeof( vkCmdResolveImage )) vkGetDeviceProcAddr( device, "vkCmdResolveImage" ); 1503 vkCmdSetEvent = cast( typeof( vkCmdSetEvent )) vkGetDeviceProcAddr( device, "vkCmdSetEvent" ); 1504 vkCmdResetEvent = cast( typeof( vkCmdResetEvent )) vkGetDeviceProcAddr( device, "vkCmdResetEvent" ); 1505 vkCmdWaitEvents = cast( typeof( vkCmdWaitEvents )) vkGetDeviceProcAddr( device, "vkCmdWaitEvents" ); 1506 vkCmdPipelineBarrier = cast( typeof( vkCmdPipelineBarrier )) vkGetDeviceProcAddr( device, "vkCmdPipelineBarrier" ); 1507 vkCmdBeginQuery = cast( typeof( vkCmdBeginQuery )) vkGetDeviceProcAddr( device, "vkCmdBeginQuery" ); 1508 vkCmdEndQuery = cast( typeof( vkCmdEndQuery )) vkGetDeviceProcAddr( device, "vkCmdEndQuery" ); 1509 vkCmdResetQueryPool = cast( typeof( vkCmdResetQueryPool )) vkGetDeviceProcAddr( device, "vkCmdResetQueryPool" ); 1510 vkCmdWriteTimestamp = cast( typeof( vkCmdWriteTimestamp )) vkGetDeviceProcAddr( device, "vkCmdWriteTimestamp" ); 1511 vkCmdCopyQueryPoolResults = cast( typeof( vkCmdCopyQueryPoolResults )) vkGetDeviceProcAddr( device, "vkCmdCopyQueryPoolResults" ); 1512 vkCmdPushConstants = cast( typeof( vkCmdPushConstants )) vkGetDeviceProcAddr( device, "vkCmdPushConstants" ); 1513 vkCmdBeginRenderPass = cast( typeof( vkCmdBeginRenderPass )) vkGetDeviceProcAddr( device, "vkCmdBeginRenderPass" ); 1514 vkCmdNextSubpass = cast( typeof( vkCmdNextSubpass )) vkGetDeviceProcAddr( device, "vkCmdNextSubpass" ); 1515 vkCmdEndRenderPass = cast( typeof( vkCmdEndRenderPass )) vkGetDeviceProcAddr( device, "vkCmdEndRenderPass" ); 1516 vkCmdExecuteCommands = cast( typeof( vkCmdExecuteCommands )) vkGetDeviceProcAddr( device, "vkCmdExecuteCommands" ); 1517 1518 // VK_KHR_swapchain 1519 vkCreateSwapchainKHR = cast( typeof( vkCreateSwapchainKHR )) vkGetDeviceProcAddr( device, "vkCreateSwapchainKHR" ); 1520 vkDestroySwapchainKHR = cast( typeof( vkDestroySwapchainKHR )) vkGetDeviceProcAddr( device, "vkDestroySwapchainKHR" ); 1521 vkGetSwapchainImagesKHR = cast( typeof( vkGetSwapchainImagesKHR )) vkGetDeviceProcAddr( device, "vkGetSwapchainImagesKHR" ); 1522 vkAcquireNextImageKHR = cast( typeof( vkAcquireNextImageKHR )) vkGetDeviceProcAddr( device, "vkAcquireNextImageKHR" ); 1523 vkQueuePresentKHR = cast( typeof( vkQueuePresentKHR )) vkGetDeviceProcAddr( device, "vkQueuePresentKHR" ); 1524 1525 // VK_KHR_display_swapchain 1526 vkCreateSharedSwapchainsKHR = cast( typeof( vkCreateSharedSwapchainsKHR )) vkGetDeviceProcAddr( device, "vkCreateSharedSwapchainsKHR" ); 1527 1528 // VK_KHR_maintenance1 1529 vkTrimCommandPoolKHR = cast( typeof( vkTrimCommandPoolKHR )) vkGetDeviceProcAddr( device, "vkTrimCommandPoolKHR" ); 1530 1531 // VK_KHR_external_memory_win32 1532 version( VK_USE_PLATFORM_WIN32_KHR ) { 1533 vkGetMemoryWin32HandleKHR = cast( typeof( vkGetMemoryWin32HandleKHR )) vkGetDeviceProcAddr( device, "vkGetMemoryWin32HandleKHR" ); 1534 vkGetMemoryWin32HandlePropertiesKHR = cast( typeof( vkGetMemoryWin32HandlePropertiesKHR )) vkGetDeviceProcAddr( device, "vkGetMemoryWin32HandlePropertiesKHR" ); 1535 } 1536 1537 // VK_KHR_external_memory_fd 1538 vkGetMemoryFdKHR = cast( typeof( vkGetMemoryFdKHR )) vkGetDeviceProcAddr( device, "vkGetMemoryFdKHR" ); 1539 vkGetMemoryFdPropertiesKHR = cast( typeof( vkGetMemoryFdPropertiesKHR )) vkGetDeviceProcAddr( device, "vkGetMemoryFdPropertiesKHR" ); 1540 1541 // VK_KHR_external_semaphore_win32 1542 version( VK_USE_PLATFORM_WIN32_KHR ) { 1543 vkImportSemaphoreWin32HandleKHR = cast( typeof( vkImportSemaphoreWin32HandleKHR )) vkGetDeviceProcAddr( device, "vkImportSemaphoreWin32HandleKHR" ); 1544 vkGetSemaphoreWin32HandleKHR = cast( typeof( vkGetSemaphoreWin32HandleKHR )) vkGetDeviceProcAddr( device, "vkGetSemaphoreWin32HandleKHR" ); 1545 } 1546 1547 // VK_KHR_external_semaphore_fd 1548 vkImportSemaphoreFdKHR = cast( typeof( vkImportSemaphoreFdKHR )) vkGetDeviceProcAddr( device, "vkImportSemaphoreFdKHR" ); 1549 vkGetSemaphoreFdKHR = cast( typeof( vkGetSemaphoreFdKHR )) vkGetDeviceProcAddr( device, "vkGetSemaphoreFdKHR" ); 1550 1551 // VK_KHR_push_descriptor 1552 vkCmdPushDescriptorSetKHR = cast( typeof( vkCmdPushDescriptorSetKHR )) vkGetDeviceProcAddr( device, "vkCmdPushDescriptorSetKHR" ); 1553 1554 // VK_KHR_descriptor_update_template 1555 vkCreateDescriptorUpdateTemplateKHR = cast( typeof( vkCreateDescriptorUpdateTemplateKHR )) vkGetDeviceProcAddr( device, "vkCreateDescriptorUpdateTemplateKHR" ); 1556 vkDestroyDescriptorUpdateTemplateKHR = cast( typeof( vkDestroyDescriptorUpdateTemplateKHR )) vkGetDeviceProcAddr( device, "vkDestroyDescriptorUpdateTemplateKHR" ); 1557 vkUpdateDescriptorSetWithTemplateKHR = cast( typeof( vkUpdateDescriptorSetWithTemplateKHR )) vkGetDeviceProcAddr( device, "vkUpdateDescriptorSetWithTemplateKHR" ); 1558 vkCmdPushDescriptorSetWithTemplateKHR = cast( typeof( vkCmdPushDescriptorSetWithTemplateKHR )) vkGetDeviceProcAddr( device, "vkCmdPushDescriptorSetWithTemplateKHR" ); 1559 1560 // VK_KHR_shared_presentable_image 1561 vkGetSwapchainStatusKHR = cast( typeof( vkGetSwapchainStatusKHR )) vkGetDeviceProcAddr( device, "vkGetSwapchainStatusKHR" ); 1562 1563 // VK_KHR_external_fence_win32 1564 version( VK_USE_PLATFORM_WIN32_KHR ) { 1565 vkImportFenceWin32HandleKHR = cast( typeof( vkImportFenceWin32HandleKHR )) vkGetDeviceProcAddr( device, "vkImportFenceWin32HandleKHR" ); 1566 vkGetFenceWin32HandleKHR = cast( typeof( vkGetFenceWin32HandleKHR )) vkGetDeviceProcAddr( device, "vkGetFenceWin32HandleKHR" ); 1567 } 1568 1569 // VK_KHR_external_fence_fd 1570 vkImportFenceFdKHR = cast( typeof( vkImportFenceFdKHR )) vkGetDeviceProcAddr( device, "vkImportFenceFdKHR" ); 1571 vkGetFenceFdKHR = cast( typeof( vkGetFenceFdKHR )) vkGetDeviceProcAddr( device, "vkGetFenceFdKHR" ); 1572 1573 // VK_KHR_get_memory_requirements2 1574 vkGetImageMemoryRequirements2KHR = cast( typeof( vkGetImageMemoryRequirements2KHR )) vkGetDeviceProcAddr( device, "vkGetImageMemoryRequirements2KHR" ); 1575 vkGetBufferMemoryRequirements2KHR = cast( typeof( vkGetBufferMemoryRequirements2KHR )) vkGetDeviceProcAddr( device, "vkGetBufferMemoryRequirements2KHR" ); 1576 vkGetImageSparseMemoryRequirements2KHR = cast( typeof( vkGetImageSparseMemoryRequirements2KHR )) vkGetDeviceProcAddr( device, "vkGetImageSparseMemoryRequirements2KHR" ); 1577 1578 // VK_EXT_debug_marker 1579 vkDebugMarkerSetObjectTagEXT = cast( typeof( vkDebugMarkerSetObjectTagEXT )) vkGetDeviceProcAddr( device, "vkDebugMarkerSetObjectTagEXT" ); 1580 vkDebugMarkerSetObjectNameEXT = cast( typeof( vkDebugMarkerSetObjectNameEXT )) vkGetDeviceProcAddr( device, "vkDebugMarkerSetObjectNameEXT" ); 1581 vkCmdDebugMarkerBeginEXT = cast( typeof( vkCmdDebugMarkerBeginEXT )) vkGetDeviceProcAddr( device, "vkCmdDebugMarkerBeginEXT" ); 1582 vkCmdDebugMarkerEndEXT = cast( typeof( vkCmdDebugMarkerEndEXT )) vkGetDeviceProcAddr( device, "vkCmdDebugMarkerEndEXT" ); 1583 vkCmdDebugMarkerInsertEXT = cast( typeof( vkCmdDebugMarkerInsertEXT )) vkGetDeviceProcAddr( device, "vkCmdDebugMarkerInsertEXT" ); 1584 1585 // VK_AMD_draw_indirect_count 1586 vkCmdDrawIndirectCountAMD = cast( typeof( vkCmdDrawIndirectCountAMD )) vkGetDeviceProcAddr( device, "vkCmdDrawIndirectCountAMD" ); 1587 vkCmdDrawIndexedIndirectCountAMD = cast( typeof( vkCmdDrawIndexedIndirectCountAMD )) vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirectCountAMD" ); 1588 1589 // VK_NV_external_memory_win32 1590 version( VK_USE_PLATFORM_WIN32_KHR ) { 1591 vkGetMemoryWin32HandleNV = cast( typeof( vkGetMemoryWin32HandleNV )) vkGetDeviceProcAddr( device, "vkGetMemoryWin32HandleNV" ); 1592 } 1593 1594 // VK_KHX_device_group 1595 vkGetDeviceGroupPeerMemoryFeaturesKHX = cast( typeof( vkGetDeviceGroupPeerMemoryFeaturesKHX )) vkGetDeviceProcAddr( device, "vkGetDeviceGroupPeerMemoryFeaturesKHX" ); 1596 vkBindBufferMemory2KHX = cast( typeof( vkBindBufferMemory2KHX )) vkGetDeviceProcAddr( device, "vkBindBufferMemory2KHX" ); 1597 vkBindImageMemory2KHX = cast( typeof( vkBindImageMemory2KHX )) vkGetDeviceProcAddr( device, "vkBindImageMemory2KHX" ); 1598 vkCmdSetDeviceMaskKHX = cast( typeof( vkCmdSetDeviceMaskKHX )) vkGetDeviceProcAddr( device, "vkCmdSetDeviceMaskKHX" ); 1599 vkGetDeviceGroupPresentCapabilitiesKHX = cast( typeof( vkGetDeviceGroupPresentCapabilitiesKHX )) vkGetDeviceProcAddr( device, "vkGetDeviceGroupPresentCapabilitiesKHX" ); 1600 vkGetDeviceGroupSurfacePresentModesKHX = cast( typeof( vkGetDeviceGroupSurfacePresentModesKHX )) vkGetDeviceProcAddr( device, "vkGetDeviceGroupSurfacePresentModesKHX" ); 1601 vkAcquireNextImage2KHX = cast( typeof( vkAcquireNextImage2KHX )) vkGetDeviceProcAddr( device, "vkAcquireNextImage2KHX" ); 1602 vkCmdDispatchBaseKHX = cast( typeof( vkCmdDispatchBaseKHX )) vkGetDeviceProcAddr( device, "vkCmdDispatchBaseKHX" ); 1603 1604 // VK_NVX_device_generated_commands 1605 vkCmdProcessCommandsNVX = cast( typeof( vkCmdProcessCommandsNVX )) vkGetDeviceProcAddr( device, "vkCmdProcessCommandsNVX" ); 1606 vkCmdReserveSpaceForCommandsNVX = cast( typeof( vkCmdReserveSpaceForCommandsNVX )) vkGetDeviceProcAddr( device, "vkCmdReserveSpaceForCommandsNVX" ); 1607 vkCreateIndirectCommandsLayoutNVX = cast( typeof( vkCreateIndirectCommandsLayoutNVX )) vkGetDeviceProcAddr( device, "vkCreateIndirectCommandsLayoutNVX" ); 1608 vkDestroyIndirectCommandsLayoutNVX = cast( typeof( vkDestroyIndirectCommandsLayoutNVX )) vkGetDeviceProcAddr( device, "vkDestroyIndirectCommandsLayoutNVX" ); 1609 vkCreateObjectTableNVX = cast( typeof( vkCreateObjectTableNVX )) vkGetDeviceProcAddr( device, "vkCreateObjectTableNVX" ); 1610 vkDestroyObjectTableNVX = cast( typeof( vkDestroyObjectTableNVX )) vkGetDeviceProcAddr( device, "vkDestroyObjectTableNVX" ); 1611 vkRegisterObjectsNVX = cast( typeof( vkRegisterObjectsNVX )) vkGetDeviceProcAddr( device, "vkRegisterObjectsNVX" ); 1612 vkUnregisterObjectsNVX = cast( typeof( vkUnregisterObjectsNVX )) vkGetDeviceProcAddr( device, "vkUnregisterObjectsNVX" ); 1613 1614 // VK_NV_clip_space_w_scaling 1615 vkCmdSetViewportWScalingNV = cast( typeof( vkCmdSetViewportWScalingNV )) vkGetDeviceProcAddr( device, "vkCmdSetViewportWScalingNV" ); 1616 1617 // VK_EXT_display_control 1618 vkDisplayPowerControlEXT = cast( typeof( vkDisplayPowerControlEXT )) vkGetDeviceProcAddr( device, "vkDisplayPowerControlEXT" ); 1619 vkRegisterDeviceEventEXT = cast( typeof( vkRegisterDeviceEventEXT )) vkGetDeviceProcAddr( device, "vkRegisterDeviceEventEXT" ); 1620 vkRegisterDisplayEventEXT = cast( typeof( vkRegisterDisplayEventEXT )) vkGetDeviceProcAddr( device, "vkRegisterDisplayEventEXT" ); 1621 vkGetSwapchainCounterEXT = cast( typeof( vkGetSwapchainCounterEXT )) vkGetDeviceProcAddr( device, "vkGetSwapchainCounterEXT" ); 1622 1623 // VK_GOOGLE_display_timing 1624 vkGetRefreshCycleDurationGOOGLE = cast( typeof( vkGetRefreshCycleDurationGOOGLE )) vkGetDeviceProcAddr( device, "vkGetRefreshCycleDurationGOOGLE" ); 1625 vkGetPastPresentationTimingGOOGLE = cast( typeof( vkGetPastPresentationTimingGOOGLE )) vkGetDeviceProcAddr( device, "vkGetPastPresentationTimingGOOGLE" ); 1626 1627 // VK_EXT_discard_rectangles 1628 vkCmdSetDiscardRectangleEXT = cast( typeof( vkCmdSetDiscardRectangleEXT )) vkGetDeviceProcAddr( device, "vkCmdSetDiscardRectangleEXT" ); 1629 1630 // VK_EXT_hdr_metadata 1631 vkSetHdrMetadataEXT = cast( typeof( vkSetHdrMetadataEXT )) vkGetDeviceProcAddr( device, "vkSetHdrMetadataEXT" ); 1632 } 1633 1634 // Convenience member functions, forwarded to corresponding vulkan functions 1635 // If the first arg of the vulkan function is VkDevice it can be omitted 1636 // private 'DipatchDevice' member 'device' will be passed to the forwarded vulkan functions 1637 // the crux is that function pointers can't be overloaded with regular functions 1638 // hence the vk prefix is ditched for the convenience variants 1639 // e.g.: 1640 // auto dd = DispatchDevice( device ); 1641 // dd.DestroyDevice( pAllocator ); // instead of: dd.vkDestroyDevice( dd.vkDevice, pAllocator ); 1642 // 1643 // Same mechanism works with functions which require a VkCommandBuffer as first arg 1644 // In this case the public member 'commandBuffer' must be set beforehand 1645 // e.g.: 1646 // dd.commandBuffer = some_command_buffer; 1647 // dd.BeginCommandBuffer( &beginInfo ); 1648 // dd.CmdBindPipeline( VK_PIPELINE_BIND_POINT_GRAPHICS, some_pipeline ); 1649 // 1650 // Does not work with queues, there are just too few queue related functions 1651 1652 // VK_VERSION_1_0 1653 void DestroyDevice( const( VkAllocationCallbacks )* pAllocator ) { 1654 vkDestroyDevice( this.device, pAllocator ); 1655 } 1656 void GetDeviceQueue( uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue* pQueue ) { 1657 vkGetDeviceQueue( this.device, queueFamilyIndex, queueIndex, pQueue ); 1658 } 1659 VkResult DeviceWaitIdle() { 1660 return vkDeviceWaitIdle( this.device ); 1661 } 1662 VkResult AllocateMemory( const( VkMemoryAllocateInfo )* pAllocateInfo, const( VkAllocationCallbacks )* pAllocator, VkDeviceMemory* pMemory ) { 1663 return vkAllocateMemory( this.device, pAllocateInfo, pAllocator, pMemory ); 1664 } 1665 void FreeMemory( VkDeviceMemory memory, const( VkAllocationCallbacks )* pAllocator ) { 1666 vkFreeMemory( this.device, memory, pAllocator ); 1667 } 1668 VkResult MapMemory( VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData ) { 1669 return vkMapMemory( this.device, memory, offset, size, flags, ppData ); 1670 } 1671 void UnmapMemory( VkDeviceMemory memory ) { 1672 vkUnmapMemory( this.device, memory ); 1673 } 1674 VkResult FlushMappedMemoryRanges( uint32_t memoryRangeCount, const( VkMappedMemoryRange )* pMemoryRanges ) { 1675 return vkFlushMappedMemoryRanges( this.device, memoryRangeCount, pMemoryRanges ); 1676 } 1677 VkResult InvalidateMappedMemoryRanges( uint32_t memoryRangeCount, const( VkMappedMemoryRange )* pMemoryRanges ) { 1678 return vkInvalidateMappedMemoryRanges( this.device, memoryRangeCount, pMemoryRanges ); 1679 } 1680 void GetDeviceMemoryCommitment( VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes ) { 1681 vkGetDeviceMemoryCommitment( this.device, memory, pCommittedMemoryInBytes ); 1682 } 1683 VkResult BindBufferMemory( VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset ) { 1684 return vkBindBufferMemory( this.device, buffer, memory, memoryOffset ); 1685 } 1686 VkResult BindImageMemory( VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset ) { 1687 return vkBindImageMemory( this.device, image, memory, memoryOffset ); 1688 } 1689 void GetBufferMemoryRequirements( VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements ) { 1690 vkGetBufferMemoryRequirements( this.device, buffer, pMemoryRequirements ); 1691 } 1692 void GetImageMemoryRequirements( VkImage image, VkMemoryRequirements* pMemoryRequirements ) { 1693 vkGetImageMemoryRequirements( this.device, image, pMemoryRequirements ); 1694 } 1695 void GetImageSparseMemoryRequirements( VkImage image, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements* pSparseMemoryRequirements ) { 1696 vkGetImageSparseMemoryRequirements( this.device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements ); 1697 } 1698 VkResult CreateFence( const( VkFenceCreateInfo )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkFence* pFence ) { 1699 return vkCreateFence( this.device, pCreateInfo, pAllocator, pFence ); 1700 } 1701 void DestroyFence( VkFence fence, const( VkAllocationCallbacks )* pAllocator ) { 1702 vkDestroyFence( this.device, fence, pAllocator ); 1703 } 1704 VkResult ResetFences( uint32_t fenceCount, const( VkFence )* pFences ) { 1705 return vkResetFences( this.device, fenceCount, pFences ); 1706 } 1707 VkResult GetFenceStatus( VkFence fence ) { 1708 return vkGetFenceStatus( this.device, fence ); 1709 } 1710 VkResult WaitForFences( uint32_t fenceCount, const( VkFence )* pFences, VkBool32 waitAll, uint64_t timeout ) { 1711 return vkWaitForFences( this.device, fenceCount, pFences, waitAll, timeout ); 1712 } 1713 VkResult CreateSemaphore( const( VkSemaphoreCreateInfo )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkSemaphore* pSemaphore ) { 1714 return vkCreateSemaphore( this.device, pCreateInfo, pAllocator, pSemaphore ); 1715 } 1716 void DestroySemaphore( VkSemaphore semaphore, const( VkAllocationCallbacks )* pAllocator ) { 1717 vkDestroySemaphore( this.device, semaphore, pAllocator ); 1718 } 1719 VkResult CreateEvent( const( VkEventCreateInfo )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkEvent* pEvent ) { 1720 return vkCreateEvent( this.device, pCreateInfo, pAllocator, pEvent ); 1721 } 1722 void DestroyEvent( VkEvent event, const( VkAllocationCallbacks )* pAllocator ) { 1723 vkDestroyEvent( this.device, event, pAllocator ); 1724 } 1725 VkResult GetEventStatus( VkEvent event ) { 1726 return vkGetEventStatus( this.device, event ); 1727 } 1728 VkResult SetEvent( VkEvent event ) { 1729 return vkSetEvent( this.device, event ); 1730 } 1731 VkResult ResetEvent( VkEvent event ) { 1732 return vkResetEvent( this.device, event ); 1733 } 1734 VkResult CreateQueryPool( const( VkQueryPoolCreateInfo )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkQueryPool* pQueryPool ) { 1735 return vkCreateQueryPool( this.device, pCreateInfo, pAllocator, pQueryPool ); 1736 } 1737 void DestroyQueryPool( VkQueryPool queryPool, const( VkAllocationCallbacks )* pAllocator ) { 1738 vkDestroyQueryPool( this.device, queryPool, pAllocator ); 1739 } 1740 VkResult GetQueryPoolResults( VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, size_t dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags ) { 1741 return vkGetQueryPoolResults( this.device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags ); 1742 } 1743 VkResult CreateBuffer( const( VkBufferCreateInfo )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkBuffer* pBuffer ) { 1744 return vkCreateBuffer( this.device, pCreateInfo, pAllocator, pBuffer ); 1745 } 1746 void DestroyBuffer( VkBuffer buffer, const( VkAllocationCallbacks )* pAllocator ) { 1747 vkDestroyBuffer( this.device, buffer, pAllocator ); 1748 } 1749 VkResult CreateBufferView( const( VkBufferViewCreateInfo )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkBufferView* pView ) { 1750 return vkCreateBufferView( this.device, pCreateInfo, pAllocator, pView ); 1751 } 1752 void DestroyBufferView( VkBufferView bufferView, const( VkAllocationCallbacks )* pAllocator ) { 1753 vkDestroyBufferView( this.device, bufferView, pAllocator ); 1754 } 1755 VkResult CreateImage( const( VkImageCreateInfo )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkImage* pImage ) { 1756 return vkCreateImage( this.device, pCreateInfo, pAllocator, pImage ); 1757 } 1758 void DestroyImage( VkImage image, const( VkAllocationCallbacks )* pAllocator ) { 1759 vkDestroyImage( this.device, image, pAllocator ); 1760 } 1761 void GetImageSubresourceLayout( VkImage image, const( VkImageSubresource )* pSubresource, VkSubresourceLayout* pLayout ) { 1762 vkGetImageSubresourceLayout( this.device, image, pSubresource, pLayout ); 1763 } 1764 VkResult CreateImageView( const( VkImageViewCreateInfo )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkImageView* pView ) { 1765 return vkCreateImageView( this.device, pCreateInfo, pAllocator, pView ); 1766 } 1767 void DestroyImageView( VkImageView imageView, const( VkAllocationCallbacks )* pAllocator ) { 1768 vkDestroyImageView( this.device, imageView, pAllocator ); 1769 } 1770 VkResult CreateShaderModule( const( VkShaderModuleCreateInfo )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkShaderModule* pShaderModule ) { 1771 return vkCreateShaderModule( this.device, pCreateInfo, pAllocator, pShaderModule ); 1772 } 1773 void DestroyShaderModule( VkShaderModule shaderModule, const( VkAllocationCallbacks )* pAllocator ) { 1774 vkDestroyShaderModule( this.device, shaderModule, pAllocator ); 1775 } 1776 VkResult CreatePipelineCache( const( VkPipelineCacheCreateInfo )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkPipelineCache* pPipelineCache ) { 1777 return vkCreatePipelineCache( this.device, pCreateInfo, pAllocator, pPipelineCache ); 1778 } 1779 void DestroyPipelineCache( VkPipelineCache pipelineCache, const( VkAllocationCallbacks )* pAllocator ) { 1780 vkDestroyPipelineCache( this.device, pipelineCache, pAllocator ); 1781 } 1782 VkResult GetPipelineCacheData( VkPipelineCache pipelineCache, size_t* pDataSize, void* pData ) { 1783 return vkGetPipelineCacheData( this.device, pipelineCache, pDataSize, pData ); 1784 } 1785 VkResult MergePipelineCaches( VkPipelineCache dstCache, uint32_t srcCacheCount, const( VkPipelineCache )* pSrcCaches ) { 1786 return vkMergePipelineCaches( this.device, dstCache, srcCacheCount, pSrcCaches ); 1787 } 1788 VkResult CreateGraphicsPipelines( VkPipelineCache pipelineCache, uint32_t createInfoCount, const( VkGraphicsPipelineCreateInfo )* pCreateInfos, const( VkAllocationCallbacks )* pAllocator, VkPipeline* pPipelines ) { 1789 return vkCreateGraphicsPipelines( this.device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines ); 1790 } 1791 VkResult CreateComputePipelines( VkPipelineCache pipelineCache, uint32_t createInfoCount, const( VkComputePipelineCreateInfo )* pCreateInfos, const( VkAllocationCallbacks )* pAllocator, VkPipeline* pPipelines ) { 1792 return vkCreateComputePipelines( this.device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines ); 1793 } 1794 void DestroyPipeline( VkPipeline pipeline, const( VkAllocationCallbacks )* pAllocator ) { 1795 vkDestroyPipeline( this.device, pipeline, pAllocator ); 1796 } 1797 VkResult CreatePipelineLayout( const( VkPipelineLayoutCreateInfo )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkPipelineLayout* pPipelineLayout ) { 1798 return vkCreatePipelineLayout( this.device, pCreateInfo, pAllocator, pPipelineLayout ); 1799 } 1800 void DestroyPipelineLayout( VkPipelineLayout pipelineLayout, const( VkAllocationCallbacks )* pAllocator ) { 1801 vkDestroyPipelineLayout( this.device, pipelineLayout, pAllocator ); 1802 } 1803 VkResult CreateSampler( const( VkSamplerCreateInfo )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkSampler* pSampler ) { 1804 return vkCreateSampler( this.device, pCreateInfo, pAllocator, pSampler ); 1805 } 1806 void DestroySampler( VkSampler sampler, const( VkAllocationCallbacks )* pAllocator ) { 1807 vkDestroySampler( this.device, sampler, pAllocator ); 1808 } 1809 VkResult CreateDescriptorSetLayout( const( VkDescriptorSetLayoutCreateInfo )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkDescriptorSetLayout* pSetLayout ) { 1810 return vkCreateDescriptorSetLayout( this.device, pCreateInfo, pAllocator, pSetLayout ); 1811 } 1812 void DestroyDescriptorSetLayout( VkDescriptorSetLayout descriptorSetLayout, const( VkAllocationCallbacks )* pAllocator ) { 1813 vkDestroyDescriptorSetLayout( this.device, descriptorSetLayout, pAllocator ); 1814 } 1815 VkResult CreateDescriptorPool( const( VkDescriptorPoolCreateInfo )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkDescriptorPool* pDescriptorPool ) { 1816 return vkCreateDescriptorPool( this.device, pCreateInfo, pAllocator, pDescriptorPool ); 1817 } 1818 void DestroyDescriptorPool( VkDescriptorPool descriptorPool, const( VkAllocationCallbacks )* pAllocator ) { 1819 vkDestroyDescriptorPool( this.device, descriptorPool, pAllocator ); 1820 } 1821 VkResult ResetDescriptorPool( VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags ) { 1822 return vkResetDescriptorPool( this.device, descriptorPool, flags ); 1823 } 1824 VkResult AllocateDescriptorSets( const( VkDescriptorSetAllocateInfo )* pAllocateInfo, VkDescriptorSet* pDescriptorSets ) { 1825 return vkAllocateDescriptorSets( this.device, pAllocateInfo, pDescriptorSets ); 1826 } 1827 VkResult FreeDescriptorSets( VkDescriptorPool descriptorPool, uint32_t descriptorSetCount, const( VkDescriptorSet )* pDescriptorSets ) { 1828 return vkFreeDescriptorSets( this.device, descriptorPool, descriptorSetCount, pDescriptorSets ); 1829 } 1830 void UpdateDescriptorSets( uint32_t descriptorWriteCount, const( VkWriteDescriptorSet )* pDescriptorWrites, uint32_t descriptorCopyCount, const( VkCopyDescriptorSet )* pDescriptorCopies ) { 1831 vkUpdateDescriptorSets( this.device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies ); 1832 } 1833 VkResult CreateFramebuffer( const( VkFramebufferCreateInfo )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkFramebuffer* pFramebuffer ) { 1834 return vkCreateFramebuffer( this.device, pCreateInfo, pAllocator, pFramebuffer ); 1835 } 1836 void DestroyFramebuffer( VkFramebuffer framebuffer, const( VkAllocationCallbacks )* pAllocator ) { 1837 vkDestroyFramebuffer( this.device, framebuffer, pAllocator ); 1838 } 1839 VkResult CreateRenderPass( const( VkRenderPassCreateInfo )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkRenderPass* pRenderPass ) { 1840 return vkCreateRenderPass( this.device, pCreateInfo, pAllocator, pRenderPass ); 1841 } 1842 void DestroyRenderPass( VkRenderPass renderPass, const( VkAllocationCallbacks )* pAllocator ) { 1843 vkDestroyRenderPass( this.device, renderPass, pAllocator ); 1844 } 1845 void GetRenderAreaGranularity( VkRenderPass renderPass, VkExtent2D* pGranularity ) { 1846 vkGetRenderAreaGranularity( this.device, renderPass, pGranularity ); 1847 } 1848 VkResult CreateCommandPool( const( VkCommandPoolCreateInfo )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkCommandPool* pCommandPool ) { 1849 return vkCreateCommandPool( this.device, pCreateInfo, pAllocator, pCommandPool ); 1850 } 1851 void DestroyCommandPool( VkCommandPool commandPool, const( VkAllocationCallbacks )* pAllocator ) { 1852 vkDestroyCommandPool( this.device, commandPool, pAllocator ); 1853 } 1854 VkResult ResetCommandPool( VkCommandPool commandPool, VkCommandPoolResetFlags flags ) { 1855 return vkResetCommandPool( this.device, commandPool, flags ); 1856 } 1857 VkResult AllocateCommandBuffers( const( VkCommandBufferAllocateInfo )* pAllocateInfo, VkCommandBuffer* pCommandBuffers ) { 1858 return vkAllocateCommandBuffers( this.device, pAllocateInfo, pCommandBuffers ); 1859 } 1860 void FreeCommandBuffers( VkCommandPool commandPool, uint32_t commandBufferCount, const( VkCommandBuffer )* pCommandBuffers ) { 1861 vkFreeCommandBuffers( this.device, commandPool, commandBufferCount, pCommandBuffers ); 1862 } 1863 VkResult BeginCommandBuffer( const( VkCommandBufferBeginInfo )* pBeginInfo ) { 1864 return vkBeginCommandBuffer( this.commandBuffer, pBeginInfo ); 1865 } 1866 VkResult EndCommandBuffer() { 1867 return vkEndCommandBuffer( this.commandBuffer ); 1868 } 1869 VkResult ResetCommandBuffer( VkCommandBufferResetFlags flags ) { 1870 return vkResetCommandBuffer( this.commandBuffer, flags ); 1871 } 1872 void CmdBindPipeline( VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline ) { 1873 vkCmdBindPipeline( this.commandBuffer, pipelineBindPoint, pipeline ); 1874 } 1875 void CmdSetViewport( uint32_t firstViewport, uint32_t viewportCount, const( VkViewport )* pViewports ) { 1876 vkCmdSetViewport( this.commandBuffer, firstViewport, viewportCount, pViewports ); 1877 } 1878 void CmdSetScissor( uint32_t firstScissor, uint32_t scissorCount, const( VkRect2D )* pScissors ) { 1879 vkCmdSetScissor( this.commandBuffer, firstScissor, scissorCount, pScissors ); 1880 } 1881 void CmdSetLineWidth( float lineWidth ) { 1882 vkCmdSetLineWidth( this.commandBuffer, lineWidth ); 1883 } 1884 void CmdSetDepthBias( float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor ) { 1885 vkCmdSetDepthBias( this.commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor ); 1886 } 1887 void CmdSetBlendConstants( const float[4] blendConstants ) { 1888 vkCmdSetBlendConstants( this.commandBuffer, blendConstants ); 1889 } 1890 void CmdSetDepthBounds( float minDepthBounds, float maxDepthBounds ) { 1891 vkCmdSetDepthBounds( this.commandBuffer, minDepthBounds, maxDepthBounds ); 1892 } 1893 void CmdSetStencilCompareMask( VkStencilFaceFlags faceMask, uint32_t compareMask ) { 1894 vkCmdSetStencilCompareMask( this.commandBuffer, faceMask, compareMask ); 1895 } 1896 void CmdSetStencilWriteMask( VkStencilFaceFlags faceMask, uint32_t writeMask ) { 1897 vkCmdSetStencilWriteMask( this.commandBuffer, faceMask, writeMask ); 1898 } 1899 void CmdSetStencilReference( VkStencilFaceFlags faceMask, uint32_t reference ) { 1900 vkCmdSetStencilReference( this.commandBuffer, faceMask, reference ); 1901 } 1902 void CmdBindDescriptorSets( VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t firstSet, uint32_t descriptorSetCount, const( VkDescriptorSet )* pDescriptorSets, uint32_t dynamicOffsetCount, const( uint32_t )* pDynamicOffsets ) { 1903 vkCmdBindDescriptorSets( this.commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets ); 1904 } 1905 void CmdBindIndexBuffer( VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType ) { 1906 vkCmdBindIndexBuffer( this.commandBuffer, buffer, offset, indexType ); 1907 } 1908 void CmdBindVertexBuffers( uint32_t firstBinding, uint32_t bindingCount, const( VkBuffer )* pBuffers, const( VkDeviceSize )* pOffsets ) { 1909 vkCmdBindVertexBuffers( this.commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets ); 1910 } 1911 void CmdDraw( uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance ) { 1912 vkCmdDraw( this.commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance ); 1913 } 1914 void CmdDrawIndexed( uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance ) { 1915 vkCmdDrawIndexed( this.commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance ); 1916 } 1917 void CmdDrawIndirect( VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride ) { 1918 vkCmdDrawIndirect( this.commandBuffer, buffer, offset, drawCount, stride ); 1919 } 1920 void CmdDrawIndexedIndirect( VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride ) { 1921 vkCmdDrawIndexedIndirect( this.commandBuffer, buffer, offset, drawCount, stride ); 1922 } 1923 void CmdDispatch( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) { 1924 vkCmdDispatch( this.commandBuffer, groupCountX, groupCountY, groupCountZ ); 1925 } 1926 void CmdDispatchIndirect( VkBuffer buffer, VkDeviceSize offset ) { 1927 vkCmdDispatchIndirect( this.commandBuffer, buffer, offset ); 1928 } 1929 void CmdCopyBuffer( VkBuffer srcBuffer, VkBuffer dstBuffer, uint32_t regionCount, const( VkBufferCopy )* pRegions ) { 1930 vkCmdCopyBuffer( this.commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions ); 1931 } 1932 void CmdCopyImage( VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const( VkImageCopy )* pRegions ) { 1933 vkCmdCopyImage( this.commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions ); 1934 } 1935 void CmdBlitImage( VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const( VkImageBlit )* pRegions, VkFilter filter ) { 1936 vkCmdBlitImage( this.commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter ); 1937 } 1938 void CmdCopyBufferToImage( VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const( VkBufferImageCopy )* pRegions ) { 1939 vkCmdCopyBufferToImage( this.commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions ); 1940 } 1941 void CmdCopyImageToBuffer( VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, uint32_t regionCount, const( VkBufferImageCopy )* pRegions ) { 1942 vkCmdCopyImageToBuffer( this.commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions ); 1943 } 1944 void CmdUpdateBuffer( VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const( void )* pData ) { 1945 vkCmdUpdateBuffer( this.commandBuffer, dstBuffer, dstOffset, dataSize, pData ); 1946 } 1947 void CmdFillBuffer( VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, uint32_t data ) { 1948 vkCmdFillBuffer( this.commandBuffer, dstBuffer, dstOffset, size, data ); 1949 } 1950 void CmdClearColorImage( VkImage image, VkImageLayout imageLayout, const( VkClearColorValue )* pColor, uint32_t rangeCount, const( VkImageSubresourceRange )* pRanges ) { 1951 vkCmdClearColorImage( this.commandBuffer, image, imageLayout, pColor, rangeCount, pRanges ); 1952 } 1953 void CmdClearDepthStencilImage( VkImage image, VkImageLayout imageLayout, const( VkClearDepthStencilValue )* pDepthStencil, uint32_t rangeCount, const( VkImageSubresourceRange )* pRanges ) { 1954 vkCmdClearDepthStencilImage( this.commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges ); 1955 } 1956 void CmdClearAttachments( uint32_t attachmentCount, const( VkClearAttachment )* pAttachments, uint32_t rectCount, const( VkClearRect )* pRects ) { 1957 vkCmdClearAttachments( this.commandBuffer, attachmentCount, pAttachments, rectCount, pRects ); 1958 } 1959 void CmdResolveImage( VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const( VkImageResolve )* pRegions ) { 1960 vkCmdResolveImage( this.commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions ); 1961 } 1962 void CmdSetEvent( VkEvent event, VkPipelineStageFlags stageMask ) { 1963 vkCmdSetEvent( this.commandBuffer, event, stageMask ); 1964 } 1965 void CmdResetEvent( VkEvent event, VkPipelineStageFlags stageMask ) { 1966 vkCmdResetEvent( this.commandBuffer, event, stageMask ); 1967 } 1968 void CmdWaitEvents( 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 ) { 1969 vkCmdWaitEvents( this.commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers ); 1970 } 1971 void CmdPipelineBarrier( VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, uint32_t memoryBarrierCount, const( VkMemoryBarrier )* pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const( VkBufferMemoryBarrier )* pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const( VkImageMemoryBarrier )* pImageMemoryBarriers ) { 1972 vkCmdPipelineBarrier( this.commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers ); 1973 } 1974 void CmdBeginQuery( VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags ) { 1975 vkCmdBeginQuery( this.commandBuffer, queryPool, query, flags ); 1976 } 1977 void CmdEndQuery( VkQueryPool queryPool, uint32_t query ) { 1978 vkCmdEndQuery( this.commandBuffer, queryPool, query ); 1979 } 1980 void CmdResetQueryPool( VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount ) { 1981 vkCmdResetQueryPool( this.commandBuffer, queryPool, firstQuery, queryCount ); 1982 } 1983 void CmdWriteTimestamp( VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t query ) { 1984 vkCmdWriteTimestamp( this.commandBuffer, pipelineStage, queryPool, query ); 1985 } 1986 void CmdCopyQueryPoolResults( VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags ) { 1987 vkCmdCopyQueryPoolResults( this.commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags ); 1988 } 1989 void CmdPushConstants( VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const( void )* pValues ) { 1990 vkCmdPushConstants( this.commandBuffer, layout, stageFlags, offset, size, pValues ); 1991 } 1992 void CmdBeginRenderPass( const( VkRenderPassBeginInfo )* pRenderPassBegin, VkSubpassContents contents ) { 1993 vkCmdBeginRenderPass( this.commandBuffer, pRenderPassBegin, contents ); 1994 } 1995 void CmdNextSubpass( VkSubpassContents contents ) { 1996 vkCmdNextSubpass( this.commandBuffer, contents ); 1997 } 1998 void CmdEndRenderPass() { 1999 vkCmdEndRenderPass( this.commandBuffer ); 2000 } 2001 void CmdExecuteCommands( uint32_t commandBufferCount, const( VkCommandBuffer )* pCommandBuffers ) { 2002 vkCmdExecuteCommands( this.commandBuffer, commandBufferCount, pCommandBuffers ); 2003 } 2004 2005 // VK_KHR_display_swapchain 2006 VkResult CreateSharedSwapchainsKHR( uint32_t swapchainCount, const( VkSwapchainCreateInfoKHR )* pCreateInfos, const( VkAllocationCallbacks )* pAllocator, VkSwapchainKHR* pSwapchains ) { 2007 return vkCreateSharedSwapchainsKHR( this.device, swapchainCount, pCreateInfos, pAllocator, pSwapchains ); 2008 } 2009 2010 // VK_KHR_maintenance1 2011 void TrimCommandPoolKHR( VkCommandPool commandPool, VkCommandPoolTrimFlagsKHR flags ) { 2012 vkTrimCommandPoolKHR( this.device, commandPool, flags ); 2013 } 2014 2015 // VK_KHR_external_memory_win32 2016 version( VK_USE_PLATFORM_WIN32_KHR ) { 2017 VkResult GetMemoryWin32HandleKHR( const( VkMemoryGetWin32HandleInfoKHR )* pGetWin32HandleInfo, HANDLE* pHandle ) { 2018 return vkGetMemoryWin32HandleKHR( this.device, pGetWin32HandleInfo, pHandle ); 2019 } 2020 VkResult GetMemoryWin32HandlePropertiesKHR( VkExternalMemoryHandleTypeFlagBitsKHR handleType, HANDLE handle, VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties ) { 2021 return vkGetMemoryWin32HandlePropertiesKHR( this.device, handleType, handle, pMemoryWin32HandleProperties ); 2022 } 2023 } 2024 2025 // VK_KHR_external_memory_fd 2026 VkResult GetMemoryFdKHR( const( VkMemoryGetFdInfoKHR )* pGetFdInfo, int* pFd ) { 2027 return vkGetMemoryFdKHR( this.device, pGetFdInfo, pFd ); 2028 } 2029 VkResult GetMemoryFdPropertiesKHR( VkExternalMemoryHandleTypeFlagBitsKHR handleType, int fd, VkMemoryFdPropertiesKHR* pMemoryFdProperties ) { 2030 return vkGetMemoryFdPropertiesKHR( this.device, handleType, fd, pMemoryFdProperties ); 2031 } 2032 2033 // VK_KHR_external_semaphore_win32 2034 version( VK_USE_PLATFORM_WIN32_KHR ) { 2035 VkResult ImportSemaphoreWin32HandleKHR( const( VkImportSemaphoreWin32HandleInfoKHR )* pImportSemaphoreWin32HandleInfo ) { 2036 return vkImportSemaphoreWin32HandleKHR( this.device, pImportSemaphoreWin32HandleInfo ); 2037 } 2038 VkResult GetSemaphoreWin32HandleKHR( const( VkSemaphoreGetWin32HandleInfoKHR )* pGetWin32HandleInfo, HANDLE* pHandle ) { 2039 return vkGetSemaphoreWin32HandleKHR( this.device, pGetWin32HandleInfo, pHandle ); 2040 } 2041 } 2042 2043 // VK_KHR_external_semaphore_fd 2044 VkResult ImportSemaphoreFdKHR( const( VkImportSemaphoreFdInfoKHR )* pImportSemaphoreFdInfo ) { 2045 return vkImportSemaphoreFdKHR( this.device, pImportSemaphoreFdInfo ); 2046 } 2047 VkResult GetSemaphoreFdKHR( const( VkSemaphoreGetFdInfoKHR )* pGetFdInfo, int* pFd ) { 2048 return vkGetSemaphoreFdKHR( this.device, pGetFdInfo, pFd ); 2049 } 2050 2051 // VK_KHR_push_descriptor 2052 void CmdPushDescriptorSetKHR( VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const( VkWriteDescriptorSet )* pDescriptorWrites ) { 2053 vkCmdPushDescriptorSetKHR( this.commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites ); 2054 } 2055 2056 // VK_KHR_descriptor_update_template 2057 VkResult CreateDescriptorUpdateTemplateKHR( const( VkDescriptorUpdateTemplateCreateInfoKHR )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkDescriptorUpdateTemplateKHR* pDescriptorUpdateTemplate ) { 2058 return vkCreateDescriptorUpdateTemplateKHR( this.device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate ); 2059 } 2060 void DestroyDescriptorUpdateTemplateKHR( VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate, const( VkAllocationCallbacks )* pAllocator ) { 2061 vkDestroyDescriptorUpdateTemplateKHR( this.device, descriptorUpdateTemplate, pAllocator ); 2062 } 2063 void UpdateDescriptorSetWithTemplateKHR( VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate, const( void )* pData ) { 2064 vkUpdateDescriptorSetWithTemplateKHR( this.device, descriptorSet, descriptorUpdateTemplate, pData ); 2065 } 2066 void CmdPushDescriptorSetWithTemplateKHR( VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate, VkPipelineLayout layout, uint32_t set, const( void )* pData ) { 2067 vkCmdPushDescriptorSetWithTemplateKHR( this.commandBuffer, descriptorUpdateTemplate, layout, set, pData ); 2068 } 2069 2070 // VK_KHR_shared_presentable_image 2071 VkResult GetSwapchainStatusKHR( VkSwapchainKHR swapchain ) { 2072 return vkGetSwapchainStatusKHR( this.device, swapchain ); 2073 } 2074 2075 // VK_KHR_external_fence_win32 2076 version( VK_USE_PLATFORM_WIN32_KHR ) { 2077 VkResult ImportFenceWin32HandleKHR( const( VkImportFenceWin32HandleInfoKHR )* pImportFenceWin32HandleInfo ) { 2078 return vkImportFenceWin32HandleKHR( this.device, pImportFenceWin32HandleInfo ); 2079 } 2080 VkResult GetFenceWin32HandleKHR( const( VkFenceGetWin32HandleInfoKHR )* pGetWin32HandleInfo, HANDLE* pHandle ) { 2081 return vkGetFenceWin32HandleKHR( this.device, pGetWin32HandleInfo, pHandle ); 2082 } 2083 } 2084 2085 // VK_KHR_external_fence_fd 2086 VkResult ImportFenceFdKHR( const( VkImportFenceFdInfoKHR )* pImportFenceFdInfo ) { 2087 return vkImportFenceFdKHR( this.device, pImportFenceFdInfo ); 2088 } 2089 VkResult GetFenceFdKHR( const( VkFenceGetFdInfoKHR )* pGetFdInfo, int* pFd ) { 2090 return vkGetFenceFdKHR( this.device, pGetFdInfo, pFd ); 2091 } 2092 2093 // VK_KHR_get_memory_requirements2 2094 void GetImageMemoryRequirements2KHR( const( VkImageMemoryRequirementsInfo2KHR )* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements ) { 2095 vkGetImageMemoryRequirements2KHR( this.device, pInfo, pMemoryRequirements ); 2096 } 2097 void GetBufferMemoryRequirements2KHR( const( VkBufferMemoryRequirementsInfo2KHR )* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements ) { 2098 vkGetBufferMemoryRequirements2KHR( this.device, pInfo, pMemoryRequirements ); 2099 } 2100 void GetImageSparseMemoryRequirements2KHR( const( VkImageSparseMemoryRequirementsInfo2KHR )* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2KHR* pSparseMemoryRequirements ) { 2101 vkGetImageSparseMemoryRequirements2KHR( this.device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements ); 2102 } 2103 2104 // VK_EXT_debug_marker 2105 VkResult DebugMarkerSetObjectTagEXT( const( VkDebugMarkerObjectTagInfoEXT )* pTagInfo ) { 2106 return vkDebugMarkerSetObjectTagEXT( this.device, pTagInfo ); 2107 } 2108 VkResult DebugMarkerSetObjectNameEXT( const( VkDebugMarkerObjectNameInfoEXT )* pNameInfo ) { 2109 return vkDebugMarkerSetObjectNameEXT( this.device, pNameInfo ); 2110 } 2111 void CmdDebugMarkerBeginEXT( const( VkDebugMarkerMarkerInfoEXT )* pMarkerInfo ) { 2112 vkCmdDebugMarkerBeginEXT( this.commandBuffer, pMarkerInfo ); 2113 } 2114 void CmdDebugMarkerEndEXT() { 2115 vkCmdDebugMarkerEndEXT( this.commandBuffer ); 2116 } 2117 void CmdDebugMarkerInsertEXT( const( VkDebugMarkerMarkerInfoEXT )* pMarkerInfo ) { 2118 vkCmdDebugMarkerInsertEXT( this.commandBuffer, pMarkerInfo ); 2119 } 2120 2121 // VK_AMD_draw_indirect_count 2122 void CmdDrawIndirectCountAMD( VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) { 2123 vkCmdDrawIndirectCountAMD( this.commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride ); 2124 } 2125 void CmdDrawIndexedIndirectCountAMD( VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) { 2126 vkCmdDrawIndexedIndirectCountAMD( this.commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride ); 2127 } 2128 2129 // VK_NV_external_memory_win32 2130 version( VK_USE_PLATFORM_WIN32_KHR ) { 2131 VkResult GetMemoryWin32HandleNV( VkDeviceMemory memory, VkExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle ) { 2132 return vkGetMemoryWin32HandleNV( this.device, memory, handleType, pHandle ); 2133 } 2134 } 2135 2136 // VK_NV_clip_space_w_scaling 2137 void CmdSetViewportWScalingNV( uint32_t firstViewport, uint32_t viewportCount, const( VkViewportWScalingNV )* pViewportWScalings ) { 2138 vkCmdSetViewportWScalingNV( this.commandBuffer, firstViewport, viewportCount, pViewportWScalings ); 2139 } 2140 2141 // VK_EXT_display_control 2142 VkResult DisplayPowerControlEXT( VkDisplayKHR display, const( VkDisplayPowerInfoEXT )* pDisplayPowerInfo ) { 2143 return vkDisplayPowerControlEXT( this.device, display, pDisplayPowerInfo ); 2144 } 2145 VkResult RegisterDeviceEventEXT( const( VkDeviceEventInfoEXT )* pDeviceEventInfo, const( VkAllocationCallbacks )* pAllocator, VkFence* pFence ) { 2146 return vkRegisterDeviceEventEXT( this.device, pDeviceEventInfo, pAllocator, pFence ); 2147 } 2148 VkResult RegisterDisplayEventEXT( VkDisplayKHR display, const( VkDisplayEventInfoEXT )* pDisplayEventInfo, const( VkAllocationCallbacks )* pAllocator, VkFence* pFence ) { 2149 return vkRegisterDisplayEventEXT( this.device, display, pDisplayEventInfo, pAllocator, pFence ); 2150 } 2151 VkResult GetSwapchainCounterEXT( VkSwapchainKHR swapchain, VkSurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue ) { 2152 return vkGetSwapchainCounterEXT( this.device, swapchain, counter, pCounterValue ); 2153 } 2154 2155 // VK_GOOGLE_display_timing 2156 VkResult GetRefreshCycleDurationGOOGLE( VkSwapchainKHR swapchain, VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties ) { 2157 return vkGetRefreshCycleDurationGOOGLE( this.device, swapchain, pDisplayTimingProperties ); 2158 } 2159 VkResult GetPastPresentationTimingGOOGLE( VkSwapchainKHR swapchain, uint32_t* pPresentationTimingCount, VkPastPresentationTimingGOOGLE* pPresentationTimings ) { 2160 return vkGetPastPresentationTimingGOOGLE( this.device, swapchain, pPresentationTimingCount, pPresentationTimings ); 2161 } 2162 2163 // VK_EXT_discard_rectangles 2164 void CmdSetDiscardRectangleEXT( uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const( VkRect2D )* pDiscardRectangles ) { 2165 vkCmdSetDiscardRectangleEXT( this.commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles ); 2166 } 2167 2168 // VK_EXT_hdr_metadata 2169 void SetHdrMetadataEXT( uint32_t swapchainCount, const( VkSwapchainKHR )* pSwapchains, const( VkHdrMetadataEXT )* pMetadata ) { 2170 vkSetHdrMetadataEXT( this.device, swapchainCount, pSwapchains, pMetadata ); 2171 } 2172 2173 // Member vulkan function decelerations 2174 PFN_vkDestroyDevice vkDestroyDevice; 2175 PFN_vkGetDeviceQueue vkGetDeviceQueue; 2176 PFN_vkQueueSubmit vkQueueSubmit; 2177 PFN_vkQueueWaitIdle vkQueueWaitIdle; 2178 PFN_vkDeviceWaitIdle vkDeviceWaitIdle; 2179 PFN_vkAllocateMemory vkAllocateMemory; 2180 PFN_vkFreeMemory vkFreeMemory; 2181 PFN_vkMapMemory vkMapMemory; 2182 PFN_vkUnmapMemory vkUnmapMemory; 2183 PFN_vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges; 2184 PFN_vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges; 2185 PFN_vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment; 2186 PFN_vkBindBufferMemory vkBindBufferMemory; 2187 PFN_vkBindImageMemory vkBindImageMemory; 2188 PFN_vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements; 2189 PFN_vkGetImageMemoryRequirements vkGetImageMemoryRequirements; 2190 PFN_vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements; 2191 PFN_vkQueueBindSparse vkQueueBindSparse; 2192 PFN_vkCreateFence vkCreateFence; 2193 PFN_vkDestroyFence vkDestroyFence; 2194 PFN_vkResetFences vkResetFences; 2195 PFN_vkGetFenceStatus vkGetFenceStatus; 2196 PFN_vkWaitForFences vkWaitForFences; 2197 PFN_vkCreateSemaphore vkCreateSemaphore; 2198 PFN_vkDestroySemaphore vkDestroySemaphore; 2199 PFN_vkCreateEvent vkCreateEvent; 2200 PFN_vkDestroyEvent vkDestroyEvent; 2201 PFN_vkGetEventStatus vkGetEventStatus; 2202 PFN_vkSetEvent vkSetEvent; 2203 PFN_vkResetEvent vkResetEvent; 2204 PFN_vkCreateQueryPool vkCreateQueryPool; 2205 PFN_vkDestroyQueryPool vkDestroyQueryPool; 2206 PFN_vkGetQueryPoolResults vkGetQueryPoolResults; 2207 PFN_vkCreateBuffer vkCreateBuffer; 2208 PFN_vkDestroyBuffer vkDestroyBuffer; 2209 PFN_vkCreateBufferView vkCreateBufferView; 2210 PFN_vkDestroyBufferView vkDestroyBufferView; 2211 PFN_vkCreateImage vkCreateImage; 2212 PFN_vkDestroyImage vkDestroyImage; 2213 PFN_vkGetImageSubresourceLayout vkGetImageSubresourceLayout; 2214 PFN_vkCreateImageView vkCreateImageView; 2215 PFN_vkDestroyImageView vkDestroyImageView; 2216 PFN_vkCreateShaderModule vkCreateShaderModule; 2217 PFN_vkDestroyShaderModule vkDestroyShaderModule; 2218 PFN_vkCreatePipelineCache vkCreatePipelineCache; 2219 PFN_vkDestroyPipelineCache vkDestroyPipelineCache; 2220 PFN_vkGetPipelineCacheData vkGetPipelineCacheData; 2221 PFN_vkMergePipelineCaches vkMergePipelineCaches; 2222 PFN_vkCreateGraphicsPipelines vkCreateGraphicsPipelines; 2223 PFN_vkCreateComputePipelines vkCreateComputePipelines; 2224 PFN_vkDestroyPipeline vkDestroyPipeline; 2225 PFN_vkCreatePipelineLayout vkCreatePipelineLayout; 2226 PFN_vkDestroyPipelineLayout vkDestroyPipelineLayout; 2227 PFN_vkCreateSampler vkCreateSampler; 2228 PFN_vkDestroySampler vkDestroySampler; 2229 PFN_vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout; 2230 PFN_vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout; 2231 PFN_vkCreateDescriptorPool vkCreateDescriptorPool; 2232 PFN_vkDestroyDescriptorPool vkDestroyDescriptorPool; 2233 PFN_vkResetDescriptorPool vkResetDescriptorPool; 2234 PFN_vkAllocateDescriptorSets vkAllocateDescriptorSets; 2235 PFN_vkFreeDescriptorSets vkFreeDescriptorSets; 2236 PFN_vkUpdateDescriptorSets vkUpdateDescriptorSets; 2237 PFN_vkCreateFramebuffer vkCreateFramebuffer; 2238 PFN_vkDestroyFramebuffer vkDestroyFramebuffer; 2239 PFN_vkCreateRenderPass vkCreateRenderPass; 2240 PFN_vkDestroyRenderPass vkDestroyRenderPass; 2241 PFN_vkGetRenderAreaGranularity vkGetRenderAreaGranularity; 2242 PFN_vkCreateCommandPool vkCreateCommandPool; 2243 PFN_vkDestroyCommandPool vkDestroyCommandPool; 2244 PFN_vkResetCommandPool vkResetCommandPool; 2245 PFN_vkAllocateCommandBuffers vkAllocateCommandBuffers; 2246 PFN_vkFreeCommandBuffers vkFreeCommandBuffers; 2247 PFN_vkBeginCommandBuffer vkBeginCommandBuffer; 2248 PFN_vkEndCommandBuffer vkEndCommandBuffer; 2249 PFN_vkResetCommandBuffer vkResetCommandBuffer; 2250 PFN_vkCmdBindPipeline vkCmdBindPipeline; 2251 PFN_vkCmdSetViewport vkCmdSetViewport; 2252 PFN_vkCmdSetScissor vkCmdSetScissor; 2253 PFN_vkCmdSetLineWidth vkCmdSetLineWidth; 2254 PFN_vkCmdSetDepthBias vkCmdSetDepthBias; 2255 PFN_vkCmdSetBlendConstants vkCmdSetBlendConstants; 2256 PFN_vkCmdSetDepthBounds vkCmdSetDepthBounds; 2257 PFN_vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask; 2258 PFN_vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask; 2259 PFN_vkCmdSetStencilReference vkCmdSetStencilReference; 2260 PFN_vkCmdBindDescriptorSets vkCmdBindDescriptorSets; 2261 PFN_vkCmdBindIndexBuffer vkCmdBindIndexBuffer; 2262 PFN_vkCmdBindVertexBuffers vkCmdBindVertexBuffers; 2263 PFN_vkCmdDraw vkCmdDraw; 2264 PFN_vkCmdDrawIndexed vkCmdDrawIndexed; 2265 PFN_vkCmdDrawIndirect vkCmdDrawIndirect; 2266 PFN_vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect; 2267 PFN_vkCmdDispatch vkCmdDispatch; 2268 PFN_vkCmdDispatchIndirect vkCmdDispatchIndirect; 2269 PFN_vkCmdCopyBuffer vkCmdCopyBuffer; 2270 PFN_vkCmdCopyImage vkCmdCopyImage; 2271 PFN_vkCmdBlitImage vkCmdBlitImage; 2272 PFN_vkCmdCopyBufferToImage vkCmdCopyBufferToImage; 2273 PFN_vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer; 2274 PFN_vkCmdUpdateBuffer vkCmdUpdateBuffer; 2275 PFN_vkCmdFillBuffer vkCmdFillBuffer; 2276 PFN_vkCmdClearColorImage vkCmdClearColorImage; 2277 PFN_vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage; 2278 PFN_vkCmdClearAttachments vkCmdClearAttachments; 2279 PFN_vkCmdResolveImage vkCmdResolveImage; 2280 PFN_vkCmdSetEvent vkCmdSetEvent; 2281 PFN_vkCmdResetEvent vkCmdResetEvent; 2282 PFN_vkCmdWaitEvents vkCmdWaitEvents; 2283 PFN_vkCmdPipelineBarrier vkCmdPipelineBarrier; 2284 PFN_vkCmdBeginQuery vkCmdBeginQuery; 2285 PFN_vkCmdEndQuery vkCmdEndQuery; 2286 PFN_vkCmdResetQueryPool vkCmdResetQueryPool; 2287 PFN_vkCmdWriteTimestamp vkCmdWriteTimestamp; 2288 PFN_vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults; 2289 PFN_vkCmdPushConstants vkCmdPushConstants; 2290 PFN_vkCmdBeginRenderPass vkCmdBeginRenderPass; 2291 PFN_vkCmdNextSubpass vkCmdNextSubpass; 2292 PFN_vkCmdEndRenderPass vkCmdEndRenderPass; 2293 PFN_vkCmdExecuteCommands vkCmdExecuteCommands; 2294 PFN_vkCreateSwapchainKHR vkCreateSwapchainKHR; 2295 PFN_vkDestroySwapchainKHR vkDestroySwapchainKHR; 2296 PFN_vkGetSwapchainImagesKHR vkGetSwapchainImagesKHR; 2297 PFN_vkAcquireNextImageKHR vkAcquireNextImageKHR; 2298 PFN_vkQueuePresentKHR vkQueuePresentKHR; 2299 PFN_vkCreateSharedSwapchainsKHR vkCreateSharedSwapchainsKHR; 2300 PFN_vkTrimCommandPoolKHR vkTrimCommandPoolKHR; 2301 version( VK_USE_PLATFORM_WIN32_KHR ) { 2302 PFN_vkGetMemoryWin32HandleKHR vkGetMemoryWin32HandleKHR; 2303 PFN_vkGetMemoryWin32HandlePropertiesKHR vkGetMemoryWin32HandlePropertiesKHR; 2304 } 2305 PFN_vkGetMemoryFdKHR vkGetMemoryFdKHR; 2306 PFN_vkGetMemoryFdPropertiesKHR vkGetMemoryFdPropertiesKHR; 2307 version( VK_USE_PLATFORM_WIN32_KHR ) { 2308 PFN_vkImportSemaphoreWin32HandleKHR vkImportSemaphoreWin32HandleKHR; 2309 PFN_vkGetSemaphoreWin32HandleKHR vkGetSemaphoreWin32HandleKHR; 2310 } 2311 PFN_vkImportSemaphoreFdKHR vkImportSemaphoreFdKHR; 2312 PFN_vkGetSemaphoreFdKHR vkGetSemaphoreFdKHR; 2313 PFN_vkCmdPushDescriptorSetKHR vkCmdPushDescriptorSetKHR; 2314 PFN_vkCreateDescriptorUpdateTemplateKHR vkCreateDescriptorUpdateTemplateKHR; 2315 PFN_vkDestroyDescriptorUpdateTemplateKHR vkDestroyDescriptorUpdateTemplateKHR; 2316 PFN_vkUpdateDescriptorSetWithTemplateKHR vkUpdateDescriptorSetWithTemplateKHR; 2317 PFN_vkCmdPushDescriptorSetWithTemplateKHR vkCmdPushDescriptorSetWithTemplateKHR; 2318 PFN_vkGetSwapchainStatusKHR vkGetSwapchainStatusKHR; 2319 version( VK_USE_PLATFORM_WIN32_KHR ) { 2320 PFN_vkImportFenceWin32HandleKHR vkImportFenceWin32HandleKHR; 2321 PFN_vkGetFenceWin32HandleKHR vkGetFenceWin32HandleKHR; 2322 } 2323 PFN_vkImportFenceFdKHR vkImportFenceFdKHR; 2324 PFN_vkGetFenceFdKHR vkGetFenceFdKHR; 2325 PFN_vkGetImageMemoryRequirements2KHR vkGetImageMemoryRequirements2KHR; 2326 PFN_vkGetBufferMemoryRequirements2KHR vkGetBufferMemoryRequirements2KHR; 2327 PFN_vkGetImageSparseMemoryRequirements2KHR vkGetImageSparseMemoryRequirements2KHR; 2328 PFN_vkDebugMarkerSetObjectTagEXT vkDebugMarkerSetObjectTagEXT; 2329 PFN_vkDebugMarkerSetObjectNameEXT vkDebugMarkerSetObjectNameEXT; 2330 PFN_vkCmdDebugMarkerBeginEXT vkCmdDebugMarkerBeginEXT; 2331 PFN_vkCmdDebugMarkerEndEXT vkCmdDebugMarkerEndEXT; 2332 PFN_vkCmdDebugMarkerInsertEXT vkCmdDebugMarkerInsertEXT; 2333 PFN_vkCmdDrawIndirectCountAMD vkCmdDrawIndirectCountAMD; 2334 PFN_vkCmdDrawIndexedIndirectCountAMD vkCmdDrawIndexedIndirectCountAMD; 2335 version( VK_USE_PLATFORM_WIN32_KHR ) { 2336 PFN_vkGetMemoryWin32HandleNV vkGetMemoryWin32HandleNV; 2337 } 2338 PFN_vkGetDeviceGroupPeerMemoryFeaturesKHX vkGetDeviceGroupPeerMemoryFeaturesKHX; 2339 PFN_vkBindBufferMemory2KHX vkBindBufferMemory2KHX; 2340 PFN_vkBindImageMemory2KHX vkBindImageMemory2KHX; 2341 PFN_vkCmdSetDeviceMaskKHX vkCmdSetDeviceMaskKHX; 2342 PFN_vkGetDeviceGroupPresentCapabilitiesKHX vkGetDeviceGroupPresentCapabilitiesKHX; 2343 PFN_vkGetDeviceGroupSurfacePresentModesKHX vkGetDeviceGroupSurfacePresentModesKHX; 2344 PFN_vkAcquireNextImage2KHX vkAcquireNextImage2KHX; 2345 PFN_vkCmdDispatchBaseKHX vkCmdDispatchBaseKHX; 2346 PFN_vkCmdProcessCommandsNVX vkCmdProcessCommandsNVX; 2347 PFN_vkCmdReserveSpaceForCommandsNVX vkCmdReserveSpaceForCommandsNVX; 2348 PFN_vkCreateIndirectCommandsLayoutNVX vkCreateIndirectCommandsLayoutNVX; 2349 PFN_vkDestroyIndirectCommandsLayoutNVX vkDestroyIndirectCommandsLayoutNVX; 2350 PFN_vkCreateObjectTableNVX vkCreateObjectTableNVX; 2351 PFN_vkDestroyObjectTableNVX vkDestroyObjectTableNVX; 2352 PFN_vkRegisterObjectsNVX vkRegisterObjectsNVX; 2353 PFN_vkUnregisterObjectsNVX vkUnregisterObjectsNVX; 2354 PFN_vkCmdSetViewportWScalingNV vkCmdSetViewportWScalingNV; 2355 PFN_vkDisplayPowerControlEXT vkDisplayPowerControlEXT; 2356 PFN_vkRegisterDeviceEventEXT vkRegisterDeviceEventEXT; 2357 PFN_vkRegisterDisplayEventEXT vkRegisterDisplayEventEXT; 2358 PFN_vkGetSwapchainCounterEXT vkGetSwapchainCounterEXT; 2359 PFN_vkGetRefreshCycleDurationGOOGLE vkGetRefreshCycleDurationGOOGLE; 2360 PFN_vkGetPastPresentationTimingGOOGLE vkGetPastPresentationTimingGOOGLE; 2361 PFN_vkCmdSetDiscardRectangleEXT vkCmdSetDiscardRectangleEXT; 2362 PFN_vkSetHdrMetadataEXT vkSetHdrMetadataEXT; 2363 } 2364 2365 // Derelict loader to acquire entry point vkGetInstanceProcAddr 2366 version( ERUPTED_FROM_DERELICT ) { 2367 import derelict.util.loader; 2368 import derelict.util.system; 2369 2370 private { 2371 version( Windows ) 2372 enum libNames = "vulkan-1.dll"; 2373 2374 else version( Posix ) 2375 enum libNames = "libvulkan.so.1"; 2376 2377 else 2378 static assert( 0,"Need to implement Vulkan libNames for this operating system." ); 2379 } 2380 2381 class DerelictEruptedLoader : SharedLibLoader { 2382 this() { 2383 super( libNames ); 2384 } 2385 2386 protected override void loadSymbols() { 2387 typeof( vkGetInstanceProcAddr ) getProcAddr; 2388 bindFunc( cast( void** )&getProcAddr, "vkGetInstanceProcAddr" ); 2389 loadGlobalLevelFunctions( getProcAddr ); 2390 } 2391 } 2392 2393 __gshared DerelictEruptedLoader DerelictErupted; 2394 2395 shared static this() { 2396 DerelictErupted = new DerelictEruptedLoader(); 2397 } 2398 } 2399 2400