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