glad_vulkan.c 47 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <glad/vulkan.h>
  5. #ifndef GLAD_IMPL_UTIL_C_
  6. #define GLAD_IMPL_UTIL_C_
  7. #ifdef _MSC_VER
  8. #define GLAD_IMPL_UTIL_SSCANF sscanf_s
  9. #else
  10. #define GLAD_IMPL_UTIL_SSCANF sscanf
  11. #endif
  12. #endif /* GLAD_IMPL_UTIL_C_ */
  13. #ifdef __cplusplus
  14. extern "C" {
  15. #endif
  16. int GLAD_VK_VERSION_1_0 = 0;
  17. int GLAD_VK_VERSION_1_1 = 0;
  18. int GLAD_VK_VERSION_1_2 = 0;
  19. int GLAD_VK_VERSION_1_3 = 0;
  20. int GLAD_VK_EXT_debug_report = 0;
  21. int GLAD_VK_KHR_portability_enumeration = 0;
  22. int GLAD_VK_KHR_surface = 0;
  23. int GLAD_VK_KHR_swapchain = 0;
  24. PFN_vkAcquireNextImage2KHR glad_vkAcquireNextImage2KHR = NULL;
  25. PFN_vkAcquireNextImageKHR glad_vkAcquireNextImageKHR = NULL;
  26. PFN_vkAllocateCommandBuffers glad_vkAllocateCommandBuffers = NULL;
  27. PFN_vkAllocateDescriptorSets glad_vkAllocateDescriptorSets = NULL;
  28. PFN_vkAllocateMemory glad_vkAllocateMemory = NULL;
  29. PFN_vkBeginCommandBuffer glad_vkBeginCommandBuffer = NULL;
  30. PFN_vkBindBufferMemory glad_vkBindBufferMemory = NULL;
  31. PFN_vkBindBufferMemory2 glad_vkBindBufferMemory2 = NULL;
  32. PFN_vkBindImageMemory glad_vkBindImageMemory = NULL;
  33. PFN_vkBindImageMemory2 glad_vkBindImageMemory2 = NULL;
  34. PFN_vkCmdBeginQuery glad_vkCmdBeginQuery = NULL;
  35. PFN_vkCmdBeginRenderPass glad_vkCmdBeginRenderPass = NULL;
  36. PFN_vkCmdBeginRenderPass2 glad_vkCmdBeginRenderPass2 = NULL;
  37. PFN_vkCmdBeginRendering glad_vkCmdBeginRendering = NULL;
  38. PFN_vkCmdBindDescriptorSets glad_vkCmdBindDescriptorSets = NULL;
  39. PFN_vkCmdBindIndexBuffer glad_vkCmdBindIndexBuffer = NULL;
  40. PFN_vkCmdBindPipeline glad_vkCmdBindPipeline = NULL;
  41. PFN_vkCmdBindVertexBuffers glad_vkCmdBindVertexBuffers = NULL;
  42. PFN_vkCmdBindVertexBuffers2 glad_vkCmdBindVertexBuffers2 = NULL;
  43. PFN_vkCmdBlitImage glad_vkCmdBlitImage = NULL;
  44. PFN_vkCmdBlitImage2 glad_vkCmdBlitImage2 = NULL;
  45. PFN_vkCmdClearAttachments glad_vkCmdClearAttachments = NULL;
  46. PFN_vkCmdClearColorImage glad_vkCmdClearColorImage = NULL;
  47. PFN_vkCmdClearDepthStencilImage glad_vkCmdClearDepthStencilImage = NULL;
  48. PFN_vkCmdCopyBuffer glad_vkCmdCopyBuffer = NULL;
  49. PFN_vkCmdCopyBuffer2 glad_vkCmdCopyBuffer2 = NULL;
  50. PFN_vkCmdCopyBufferToImage glad_vkCmdCopyBufferToImage = NULL;
  51. PFN_vkCmdCopyBufferToImage2 glad_vkCmdCopyBufferToImage2 = NULL;
  52. PFN_vkCmdCopyImage glad_vkCmdCopyImage = NULL;
  53. PFN_vkCmdCopyImage2 glad_vkCmdCopyImage2 = NULL;
  54. PFN_vkCmdCopyImageToBuffer glad_vkCmdCopyImageToBuffer = NULL;
  55. PFN_vkCmdCopyImageToBuffer2 glad_vkCmdCopyImageToBuffer2 = NULL;
  56. PFN_vkCmdCopyQueryPoolResults glad_vkCmdCopyQueryPoolResults = NULL;
  57. PFN_vkCmdDispatch glad_vkCmdDispatch = NULL;
  58. PFN_vkCmdDispatchBase glad_vkCmdDispatchBase = NULL;
  59. PFN_vkCmdDispatchIndirect glad_vkCmdDispatchIndirect = NULL;
  60. PFN_vkCmdDraw glad_vkCmdDraw = NULL;
  61. PFN_vkCmdDrawIndexed glad_vkCmdDrawIndexed = NULL;
  62. PFN_vkCmdDrawIndexedIndirect glad_vkCmdDrawIndexedIndirect = NULL;
  63. PFN_vkCmdDrawIndexedIndirectCount glad_vkCmdDrawIndexedIndirectCount = NULL;
  64. PFN_vkCmdDrawIndirect glad_vkCmdDrawIndirect = NULL;
  65. PFN_vkCmdDrawIndirectCount glad_vkCmdDrawIndirectCount = NULL;
  66. PFN_vkCmdEndQuery glad_vkCmdEndQuery = NULL;
  67. PFN_vkCmdEndRenderPass glad_vkCmdEndRenderPass = NULL;
  68. PFN_vkCmdEndRenderPass2 glad_vkCmdEndRenderPass2 = NULL;
  69. PFN_vkCmdEndRendering glad_vkCmdEndRendering = NULL;
  70. PFN_vkCmdExecuteCommands glad_vkCmdExecuteCommands = NULL;
  71. PFN_vkCmdFillBuffer glad_vkCmdFillBuffer = NULL;
  72. PFN_vkCmdNextSubpass glad_vkCmdNextSubpass = NULL;
  73. PFN_vkCmdNextSubpass2 glad_vkCmdNextSubpass2 = NULL;
  74. PFN_vkCmdPipelineBarrier glad_vkCmdPipelineBarrier = NULL;
  75. PFN_vkCmdPipelineBarrier2 glad_vkCmdPipelineBarrier2 = NULL;
  76. PFN_vkCmdPushConstants glad_vkCmdPushConstants = NULL;
  77. PFN_vkCmdResetEvent glad_vkCmdResetEvent = NULL;
  78. PFN_vkCmdResetEvent2 glad_vkCmdResetEvent2 = NULL;
  79. PFN_vkCmdResetQueryPool glad_vkCmdResetQueryPool = NULL;
  80. PFN_vkCmdResolveImage glad_vkCmdResolveImage = NULL;
  81. PFN_vkCmdResolveImage2 glad_vkCmdResolveImage2 = NULL;
  82. PFN_vkCmdSetBlendConstants glad_vkCmdSetBlendConstants = NULL;
  83. PFN_vkCmdSetCullMode glad_vkCmdSetCullMode = NULL;
  84. PFN_vkCmdSetDepthBias glad_vkCmdSetDepthBias = NULL;
  85. PFN_vkCmdSetDepthBiasEnable glad_vkCmdSetDepthBiasEnable = NULL;
  86. PFN_vkCmdSetDepthBounds glad_vkCmdSetDepthBounds = NULL;
  87. PFN_vkCmdSetDepthBoundsTestEnable glad_vkCmdSetDepthBoundsTestEnable = NULL;
  88. PFN_vkCmdSetDepthCompareOp glad_vkCmdSetDepthCompareOp = NULL;
  89. PFN_vkCmdSetDepthTestEnable glad_vkCmdSetDepthTestEnable = NULL;
  90. PFN_vkCmdSetDepthWriteEnable glad_vkCmdSetDepthWriteEnable = NULL;
  91. PFN_vkCmdSetDeviceMask glad_vkCmdSetDeviceMask = NULL;
  92. PFN_vkCmdSetEvent glad_vkCmdSetEvent = NULL;
  93. PFN_vkCmdSetEvent2 glad_vkCmdSetEvent2 = NULL;
  94. PFN_vkCmdSetFrontFace glad_vkCmdSetFrontFace = NULL;
  95. PFN_vkCmdSetLineWidth glad_vkCmdSetLineWidth = NULL;
  96. PFN_vkCmdSetPrimitiveRestartEnable glad_vkCmdSetPrimitiveRestartEnable = NULL;
  97. PFN_vkCmdSetPrimitiveTopology glad_vkCmdSetPrimitiveTopology = NULL;
  98. PFN_vkCmdSetRasterizerDiscardEnable glad_vkCmdSetRasterizerDiscardEnable = NULL;
  99. PFN_vkCmdSetScissor glad_vkCmdSetScissor = NULL;
  100. PFN_vkCmdSetScissorWithCount glad_vkCmdSetScissorWithCount = NULL;
  101. PFN_vkCmdSetStencilCompareMask glad_vkCmdSetStencilCompareMask = NULL;
  102. PFN_vkCmdSetStencilOp glad_vkCmdSetStencilOp = NULL;
  103. PFN_vkCmdSetStencilReference glad_vkCmdSetStencilReference = NULL;
  104. PFN_vkCmdSetStencilTestEnable glad_vkCmdSetStencilTestEnable = NULL;
  105. PFN_vkCmdSetStencilWriteMask glad_vkCmdSetStencilWriteMask = NULL;
  106. PFN_vkCmdSetViewport glad_vkCmdSetViewport = NULL;
  107. PFN_vkCmdSetViewportWithCount glad_vkCmdSetViewportWithCount = NULL;
  108. PFN_vkCmdUpdateBuffer glad_vkCmdUpdateBuffer = NULL;
  109. PFN_vkCmdWaitEvents glad_vkCmdWaitEvents = NULL;
  110. PFN_vkCmdWaitEvents2 glad_vkCmdWaitEvents2 = NULL;
  111. PFN_vkCmdWriteTimestamp glad_vkCmdWriteTimestamp = NULL;
  112. PFN_vkCmdWriteTimestamp2 glad_vkCmdWriteTimestamp2 = NULL;
  113. PFN_vkCreateBuffer glad_vkCreateBuffer = NULL;
  114. PFN_vkCreateBufferView glad_vkCreateBufferView = NULL;
  115. PFN_vkCreateCommandPool glad_vkCreateCommandPool = NULL;
  116. PFN_vkCreateComputePipelines glad_vkCreateComputePipelines = NULL;
  117. PFN_vkCreateDebugReportCallbackEXT glad_vkCreateDebugReportCallbackEXT = NULL;
  118. PFN_vkCreateDescriptorPool glad_vkCreateDescriptorPool = NULL;
  119. PFN_vkCreateDescriptorSetLayout glad_vkCreateDescriptorSetLayout = NULL;
  120. PFN_vkCreateDescriptorUpdateTemplate glad_vkCreateDescriptorUpdateTemplate = NULL;
  121. PFN_vkCreateDevice glad_vkCreateDevice = NULL;
  122. PFN_vkCreateEvent glad_vkCreateEvent = NULL;
  123. PFN_vkCreateFence glad_vkCreateFence = NULL;
  124. PFN_vkCreateFramebuffer glad_vkCreateFramebuffer = NULL;
  125. PFN_vkCreateGraphicsPipelines glad_vkCreateGraphicsPipelines = NULL;
  126. PFN_vkCreateImage glad_vkCreateImage = NULL;
  127. PFN_vkCreateImageView glad_vkCreateImageView = NULL;
  128. PFN_vkCreateInstance glad_vkCreateInstance = NULL;
  129. PFN_vkCreatePipelineCache glad_vkCreatePipelineCache = NULL;
  130. PFN_vkCreatePipelineLayout glad_vkCreatePipelineLayout = NULL;
  131. PFN_vkCreatePrivateDataSlot glad_vkCreatePrivateDataSlot = NULL;
  132. PFN_vkCreateQueryPool glad_vkCreateQueryPool = NULL;
  133. PFN_vkCreateRenderPass glad_vkCreateRenderPass = NULL;
  134. PFN_vkCreateRenderPass2 glad_vkCreateRenderPass2 = NULL;
  135. PFN_vkCreateSampler glad_vkCreateSampler = NULL;
  136. PFN_vkCreateSamplerYcbcrConversion glad_vkCreateSamplerYcbcrConversion = NULL;
  137. PFN_vkCreateSemaphore glad_vkCreateSemaphore = NULL;
  138. PFN_vkCreateShaderModule glad_vkCreateShaderModule = NULL;
  139. PFN_vkCreateSwapchainKHR glad_vkCreateSwapchainKHR = NULL;
  140. PFN_vkDebugReportMessageEXT glad_vkDebugReportMessageEXT = NULL;
  141. PFN_vkDestroyBuffer glad_vkDestroyBuffer = NULL;
  142. PFN_vkDestroyBufferView glad_vkDestroyBufferView = NULL;
  143. PFN_vkDestroyCommandPool glad_vkDestroyCommandPool = NULL;
  144. PFN_vkDestroyDebugReportCallbackEXT glad_vkDestroyDebugReportCallbackEXT = NULL;
  145. PFN_vkDestroyDescriptorPool glad_vkDestroyDescriptorPool = NULL;
  146. PFN_vkDestroyDescriptorSetLayout glad_vkDestroyDescriptorSetLayout = NULL;
  147. PFN_vkDestroyDescriptorUpdateTemplate glad_vkDestroyDescriptorUpdateTemplate = NULL;
  148. PFN_vkDestroyDevice glad_vkDestroyDevice = NULL;
  149. PFN_vkDestroyEvent glad_vkDestroyEvent = NULL;
  150. PFN_vkDestroyFence glad_vkDestroyFence = NULL;
  151. PFN_vkDestroyFramebuffer glad_vkDestroyFramebuffer = NULL;
  152. PFN_vkDestroyImage glad_vkDestroyImage = NULL;
  153. PFN_vkDestroyImageView glad_vkDestroyImageView = NULL;
  154. PFN_vkDestroyInstance glad_vkDestroyInstance = NULL;
  155. PFN_vkDestroyPipeline glad_vkDestroyPipeline = NULL;
  156. PFN_vkDestroyPipelineCache glad_vkDestroyPipelineCache = NULL;
  157. PFN_vkDestroyPipelineLayout glad_vkDestroyPipelineLayout = NULL;
  158. PFN_vkDestroyPrivateDataSlot glad_vkDestroyPrivateDataSlot = NULL;
  159. PFN_vkDestroyQueryPool glad_vkDestroyQueryPool = NULL;
  160. PFN_vkDestroyRenderPass glad_vkDestroyRenderPass = NULL;
  161. PFN_vkDestroySampler glad_vkDestroySampler = NULL;
  162. PFN_vkDestroySamplerYcbcrConversion glad_vkDestroySamplerYcbcrConversion = NULL;
  163. PFN_vkDestroySemaphore glad_vkDestroySemaphore = NULL;
  164. PFN_vkDestroyShaderModule glad_vkDestroyShaderModule = NULL;
  165. PFN_vkDestroySurfaceKHR glad_vkDestroySurfaceKHR = NULL;
  166. PFN_vkDestroySwapchainKHR glad_vkDestroySwapchainKHR = NULL;
  167. PFN_vkDeviceWaitIdle glad_vkDeviceWaitIdle = NULL;
  168. PFN_vkEndCommandBuffer glad_vkEndCommandBuffer = NULL;
  169. PFN_vkEnumerateDeviceExtensionProperties glad_vkEnumerateDeviceExtensionProperties = NULL;
  170. PFN_vkEnumerateDeviceLayerProperties glad_vkEnumerateDeviceLayerProperties = NULL;
  171. PFN_vkEnumerateInstanceExtensionProperties glad_vkEnumerateInstanceExtensionProperties = NULL;
  172. PFN_vkEnumerateInstanceLayerProperties glad_vkEnumerateInstanceLayerProperties = NULL;
  173. PFN_vkEnumerateInstanceVersion glad_vkEnumerateInstanceVersion = NULL;
  174. PFN_vkEnumeratePhysicalDeviceGroups glad_vkEnumeratePhysicalDeviceGroups = NULL;
  175. PFN_vkEnumeratePhysicalDevices glad_vkEnumeratePhysicalDevices = NULL;
  176. PFN_vkFlushMappedMemoryRanges glad_vkFlushMappedMemoryRanges = NULL;
  177. PFN_vkFreeCommandBuffers glad_vkFreeCommandBuffers = NULL;
  178. PFN_vkFreeDescriptorSets glad_vkFreeDescriptorSets = NULL;
  179. PFN_vkFreeMemory glad_vkFreeMemory = NULL;
  180. PFN_vkGetBufferDeviceAddress glad_vkGetBufferDeviceAddress = NULL;
  181. PFN_vkGetBufferMemoryRequirements glad_vkGetBufferMemoryRequirements = NULL;
  182. PFN_vkGetBufferMemoryRequirements2 glad_vkGetBufferMemoryRequirements2 = NULL;
  183. PFN_vkGetBufferOpaqueCaptureAddress glad_vkGetBufferOpaqueCaptureAddress = NULL;
  184. PFN_vkGetDescriptorSetLayoutSupport glad_vkGetDescriptorSetLayoutSupport = NULL;
  185. PFN_vkGetDeviceBufferMemoryRequirements glad_vkGetDeviceBufferMemoryRequirements = NULL;
  186. PFN_vkGetDeviceGroupPeerMemoryFeatures glad_vkGetDeviceGroupPeerMemoryFeatures = NULL;
  187. PFN_vkGetDeviceGroupPresentCapabilitiesKHR glad_vkGetDeviceGroupPresentCapabilitiesKHR = NULL;
  188. PFN_vkGetDeviceGroupSurfacePresentModesKHR glad_vkGetDeviceGroupSurfacePresentModesKHR = NULL;
  189. PFN_vkGetDeviceImageMemoryRequirements glad_vkGetDeviceImageMemoryRequirements = NULL;
  190. PFN_vkGetDeviceImageSparseMemoryRequirements glad_vkGetDeviceImageSparseMemoryRequirements = NULL;
  191. PFN_vkGetDeviceMemoryCommitment glad_vkGetDeviceMemoryCommitment = NULL;
  192. PFN_vkGetDeviceMemoryOpaqueCaptureAddress glad_vkGetDeviceMemoryOpaqueCaptureAddress = NULL;
  193. PFN_vkGetDeviceProcAddr glad_vkGetDeviceProcAddr = NULL;
  194. PFN_vkGetDeviceQueue glad_vkGetDeviceQueue = NULL;
  195. PFN_vkGetDeviceQueue2 glad_vkGetDeviceQueue2 = NULL;
  196. PFN_vkGetEventStatus glad_vkGetEventStatus = NULL;
  197. PFN_vkGetFenceStatus glad_vkGetFenceStatus = NULL;
  198. PFN_vkGetImageMemoryRequirements glad_vkGetImageMemoryRequirements = NULL;
  199. PFN_vkGetImageMemoryRequirements2 glad_vkGetImageMemoryRequirements2 = NULL;
  200. PFN_vkGetImageSparseMemoryRequirements glad_vkGetImageSparseMemoryRequirements = NULL;
  201. PFN_vkGetImageSparseMemoryRequirements2 glad_vkGetImageSparseMemoryRequirements2 = NULL;
  202. PFN_vkGetImageSubresourceLayout glad_vkGetImageSubresourceLayout = NULL;
  203. PFN_vkGetInstanceProcAddr glad_vkGetInstanceProcAddr = NULL;
  204. PFN_vkGetPhysicalDeviceExternalBufferProperties glad_vkGetPhysicalDeviceExternalBufferProperties = NULL;
  205. PFN_vkGetPhysicalDeviceExternalFenceProperties glad_vkGetPhysicalDeviceExternalFenceProperties = NULL;
  206. PFN_vkGetPhysicalDeviceExternalSemaphoreProperties glad_vkGetPhysicalDeviceExternalSemaphoreProperties = NULL;
  207. PFN_vkGetPhysicalDeviceFeatures glad_vkGetPhysicalDeviceFeatures = NULL;
  208. PFN_vkGetPhysicalDeviceFeatures2 glad_vkGetPhysicalDeviceFeatures2 = NULL;
  209. PFN_vkGetPhysicalDeviceFormatProperties glad_vkGetPhysicalDeviceFormatProperties = NULL;
  210. PFN_vkGetPhysicalDeviceFormatProperties2 glad_vkGetPhysicalDeviceFormatProperties2 = NULL;
  211. PFN_vkGetPhysicalDeviceImageFormatProperties glad_vkGetPhysicalDeviceImageFormatProperties = NULL;
  212. PFN_vkGetPhysicalDeviceImageFormatProperties2 glad_vkGetPhysicalDeviceImageFormatProperties2 = NULL;
  213. PFN_vkGetPhysicalDeviceMemoryProperties glad_vkGetPhysicalDeviceMemoryProperties = NULL;
  214. PFN_vkGetPhysicalDeviceMemoryProperties2 glad_vkGetPhysicalDeviceMemoryProperties2 = NULL;
  215. PFN_vkGetPhysicalDevicePresentRectanglesKHR glad_vkGetPhysicalDevicePresentRectanglesKHR = NULL;
  216. PFN_vkGetPhysicalDeviceProperties glad_vkGetPhysicalDeviceProperties = NULL;
  217. PFN_vkGetPhysicalDeviceProperties2 glad_vkGetPhysicalDeviceProperties2 = NULL;
  218. PFN_vkGetPhysicalDeviceQueueFamilyProperties glad_vkGetPhysicalDeviceQueueFamilyProperties = NULL;
  219. PFN_vkGetPhysicalDeviceQueueFamilyProperties2 glad_vkGetPhysicalDeviceQueueFamilyProperties2 = NULL;
  220. PFN_vkGetPhysicalDeviceSparseImageFormatProperties glad_vkGetPhysicalDeviceSparseImageFormatProperties = NULL;
  221. PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 glad_vkGetPhysicalDeviceSparseImageFormatProperties2 = NULL;
  222. PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR glad_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = NULL;
  223. PFN_vkGetPhysicalDeviceSurfaceFormatsKHR glad_vkGetPhysicalDeviceSurfaceFormatsKHR = NULL;
  224. PFN_vkGetPhysicalDeviceSurfacePresentModesKHR glad_vkGetPhysicalDeviceSurfacePresentModesKHR = NULL;
  225. PFN_vkGetPhysicalDeviceSurfaceSupportKHR glad_vkGetPhysicalDeviceSurfaceSupportKHR = NULL;
  226. PFN_vkGetPhysicalDeviceToolProperties glad_vkGetPhysicalDeviceToolProperties = NULL;
  227. PFN_vkGetPipelineCacheData glad_vkGetPipelineCacheData = NULL;
  228. PFN_vkGetPrivateData glad_vkGetPrivateData = NULL;
  229. PFN_vkGetQueryPoolResults glad_vkGetQueryPoolResults = NULL;
  230. PFN_vkGetRenderAreaGranularity glad_vkGetRenderAreaGranularity = NULL;
  231. PFN_vkGetSemaphoreCounterValue glad_vkGetSemaphoreCounterValue = NULL;
  232. PFN_vkGetSwapchainImagesKHR glad_vkGetSwapchainImagesKHR = NULL;
  233. PFN_vkInvalidateMappedMemoryRanges glad_vkInvalidateMappedMemoryRanges = NULL;
  234. PFN_vkMapMemory glad_vkMapMemory = NULL;
  235. PFN_vkMergePipelineCaches glad_vkMergePipelineCaches = NULL;
  236. PFN_vkQueueBindSparse glad_vkQueueBindSparse = NULL;
  237. PFN_vkQueuePresentKHR glad_vkQueuePresentKHR = NULL;
  238. PFN_vkQueueSubmit glad_vkQueueSubmit = NULL;
  239. PFN_vkQueueSubmit2 glad_vkQueueSubmit2 = NULL;
  240. PFN_vkQueueWaitIdle glad_vkQueueWaitIdle = NULL;
  241. PFN_vkResetCommandBuffer glad_vkResetCommandBuffer = NULL;
  242. PFN_vkResetCommandPool glad_vkResetCommandPool = NULL;
  243. PFN_vkResetDescriptorPool glad_vkResetDescriptorPool = NULL;
  244. PFN_vkResetEvent glad_vkResetEvent = NULL;
  245. PFN_vkResetFences glad_vkResetFences = NULL;
  246. PFN_vkResetQueryPool glad_vkResetQueryPool = NULL;
  247. PFN_vkSetEvent glad_vkSetEvent = NULL;
  248. PFN_vkSetPrivateData glad_vkSetPrivateData = NULL;
  249. PFN_vkSignalSemaphore glad_vkSignalSemaphore = NULL;
  250. PFN_vkTrimCommandPool glad_vkTrimCommandPool = NULL;
  251. PFN_vkUnmapMemory glad_vkUnmapMemory = NULL;
  252. PFN_vkUpdateDescriptorSetWithTemplate glad_vkUpdateDescriptorSetWithTemplate = NULL;
  253. PFN_vkUpdateDescriptorSets glad_vkUpdateDescriptorSets = NULL;
  254. PFN_vkWaitForFences glad_vkWaitForFences = NULL;
  255. PFN_vkWaitSemaphores glad_vkWaitSemaphores = NULL;
  256. static void glad_vk_load_VK_VERSION_1_0( GLADuserptrloadfunc load, void* userptr) {
  257. if(!GLAD_VK_VERSION_1_0) return;
  258. glad_vkAllocateCommandBuffers = (PFN_vkAllocateCommandBuffers) load(userptr, "vkAllocateCommandBuffers");
  259. glad_vkAllocateDescriptorSets = (PFN_vkAllocateDescriptorSets) load(userptr, "vkAllocateDescriptorSets");
  260. glad_vkAllocateMemory = (PFN_vkAllocateMemory) load(userptr, "vkAllocateMemory");
  261. glad_vkBeginCommandBuffer = (PFN_vkBeginCommandBuffer) load(userptr, "vkBeginCommandBuffer");
  262. glad_vkBindBufferMemory = (PFN_vkBindBufferMemory) load(userptr, "vkBindBufferMemory");
  263. glad_vkBindImageMemory = (PFN_vkBindImageMemory) load(userptr, "vkBindImageMemory");
  264. glad_vkCmdBeginQuery = (PFN_vkCmdBeginQuery) load(userptr, "vkCmdBeginQuery");
  265. glad_vkCmdBeginRenderPass = (PFN_vkCmdBeginRenderPass) load(userptr, "vkCmdBeginRenderPass");
  266. glad_vkCmdBindDescriptorSets = (PFN_vkCmdBindDescriptorSets) load(userptr, "vkCmdBindDescriptorSets");
  267. glad_vkCmdBindIndexBuffer = (PFN_vkCmdBindIndexBuffer) load(userptr, "vkCmdBindIndexBuffer");
  268. glad_vkCmdBindPipeline = (PFN_vkCmdBindPipeline) load(userptr, "vkCmdBindPipeline");
  269. glad_vkCmdBindVertexBuffers = (PFN_vkCmdBindVertexBuffers) load(userptr, "vkCmdBindVertexBuffers");
  270. glad_vkCmdBlitImage = (PFN_vkCmdBlitImage) load(userptr, "vkCmdBlitImage");
  271. glad_vkCmdClearAttachments = (PFN_vkCmdClearAttachments) load(userptr, "vkCmdClearAttachments");
  272. glad_vkCmdClearColorImage = (PFN_vkCmdClearColorImage) load(userptr, "vkCmdClearColorImage");
  273. glad_vkCmdClearDepthStencilImage = (PFN_vkCmdClearDepthStencilImage) load(userptr, "vkCmdClearDepthStencilImage");
  274. glad_vkCmdCopyBuffer = (PFN_vkCmdCopyBuffer) load(userptr, "vkCmdCopyBuffer");
  275. glad_vkCmdCopyBufferToImage = (PFN_vkCmdCopyBufferToImage) load(userptr, "vkCmdCopyBufferToImage");
  276. glad_vkCmdCopyImage = (PFN_vkCmdCopyImage) load(userptr, "vkCmdCopyImage");
  277. glad_vkCmdCopyImageToBuffer = (PFN_vkCmdCopyImageToBuffer) load(userptr, "vkCmdCopyImageToBuffer");
  278. glad_vkCmdCopyQueryPoolResults = (PFN_vkCmdCopyQueryPoolResults) load(userptr, "vkCmdCopyQueryPoolResults");
  279. glad_vkCmdDispatch = (PFN_vkCmdDispatch) load(userptr, "vkCmdDispatch");
  280. glad_vkCmdDispatchIndirect = (PFN_vkCmdDispatchIndirect) load(userptr, "vkCmdDispatchIndirect");
  281. glad_vkCmdDraw = (PFN_vkCmdDraw) load(userptr, "vkCmdDraw");
  282. glad_vkCmdDrawIndexed = (PFN_vkCmdDrawIndexed) load(userptr, "vkCmdDrawIndexed");
  283. glad_vkCmdDrawIndexedIndirect = (PFN_vkCmdDrawIndexedIndirect) load(userptr, "vkCmdDrawIndexedIndirect");
  284. glad_vkCmdDrawIndirect = (PFN_vkCmdDrawIndirect) load(userptr, "vkCmdDrawIndirect");
  285. glad_vkCmdEndQuery = (PFN_vkCmdEndQuery) load(userptr, "vkCmdEndQuery");
  286. glad_vkCmdEndRenderPass = (PFN_vkCmdEndRenderPass) load(userptr, "vkCmdEndRenderPass");
  287. glad_vkCmdExecuteCommands = (PFN_vkCmdExecuteCommands) load(userptr, "vkCmdExecuteCommands");
  288. glad_vkCmdFillBuffer = (PFN_vkCmdFillBuffer) load(userptr, "vkCmdFillBuffer");
  289. glad_vkCmdNextSubpass = (PFN_vkCmdNextSubpass) load(userptr, "vkCmdNextSubpass");
  290. glad_vkCmdPipelineBarrier = (PFN_vkCmdPipelineBarrier) load(userptr, "vkCmdPipelineBarrier");
  291. glad_vkCmdPushConstants = (PFN_vkCmdPushConstants) load(userptr, "vkCmdPushConstants");
  292. glad_vkCmdResetEvent = (PFN_vkCmdResetEvent) load(userptr, "vkCmdResetEvent");
  293. glad_vkCmdResetQueryPool = (PFN_vkCmdResetQueryPool) load(userptr, "vkCmdResetQueryPool");
  294. glad_vkCmdResolveImage = (PFN_vkCmdResolveImage) load(userptr, "vkCmdResolveImage");
  295. glad_vkCmdSetBlendConstants = (PFN_vkCmdSetBlendConstants) load(userptr, "vkCmdSetBlendConstants");
  296. glad_vkCmdSetDepthBias = (PFN_vkCmdSetDepthBias) load(userptr, "vkCmdSetDepthBias");
  297. glad_vkCmdSetDepthBounds = (PFN_vkCmdSetDepthBounds) load(userptr, "vkCmdSetDepthBounds");
  298. glad_vkCmdSetEvent = (PFN_vkCmdSetEvent) load(userptr, "vkCmdSetEvent");
  299. glad_vkCmdSetLineWidth = (PFN_vkCmdSetLineWidth) load(userptr, "vkCmdSetLineWidth");
  300. glad_vkCmdSetScissor = (PFN_vkCmdSetScissor) load(userptr, "vkCmdSetScissor");
  301. glad_vkCmdSetStencilCompareMask = (PFN_vkCmdSetStencilCompareMask) load(userptr, "vkCmdSetStencilCompareMask");
  302. glad_vkCmdSetStencilReference = (PFN_vkCmdSetStencilReference) load(userptr, "vkCmdSetStencilReference");
  303. glad_vkCmdSetStencilWriteMask = (PFN_vkCmdSetStencilWriteMask) load(userptr, "vkCmdSetStencilWriteMask");
  304. glad_vkCmdSetViewport = (PFN_vkCmdSetViewport) load(userptr, "vkCmdSetViewport");
  305. glad_vkCmdUpdateBuffer = (PFN_vkCmdUpdateBuffer) load(userptr, "vkCmdUpdateBuffer");
  306. glad_vkCmdWaitEvents = (PFN_vkCmdWaitEvents) load(userptr, "vkCmdWaitEvents");
  307. glad_vkCmdWriteTimestamp = (PFN_vkCmdWriteTimestamp) load(userptr, "vkCmdWriteTimestamp");
  308. glad_vkCreateBuffer = (PFN_vkCreateBuffer) load(userptr, "vkCreateBuffer");
  309. glad_vkCreateBufferView = (PFN_vkCreateBufferView) load(userptr, "vkCreateBufferView");
  310. glad_vkCreateCommandPool = (PFN_vkCreateCommandPool) load(userptr, "vkCreateCommandPool");
  311. glad_vkCreateComputePipelines = (PFN_vkCreateComputePipelines) load(userptr, "vkCreateComputePipelines");
  312. glad_vkCreateDescriptorPool = (PFN_vkCreateDescriptorPool) load(userptr, "vkCreateDescriptorPool");
  313. glad_vkCreateDescriptorSetLayout = (PFN_vkCreateDescriptorSetLayout) load(userptr, "vkCreateDescriptorSetLayout");
  314. glad_vkCreateDevice = (PFN_vkCreateDevice) load(userptr, "vkCreateDevice");
  315. glad_vkCreateEvent = (PFN_vkCreateEvent) load(userptr, "vkCreateEvent");
  316. glad_vkCreateFence = (PFN_vkCreateFence) load(userptr, "vkCreateFence");
  317. glad_vkCreateFramebuffer = (PFN_vkCreateFramebuffer) load(userptr, "vkCreateFramebuffer");
  318. glad_vkCreateGraphicsPipelines = (PFN_vkCreateGraphicsPipelines) load(userptr, "vkCreateGraphicsPipelines");
  319. glad_vkCreateImage = (PFN_vkCreateImage) load(userptr, "vkCreateImage");
  320. glad_vkCreateImageView = (PFN_vkCreateImageView) load(userptr, "vkCreateImageView");
  321. glad_vkCreateInstance = (PFN_vkCreateInstance) load(userptr, "vkCreateInstance");
  322. glad_vkCreatePipelineCache = (PFN_vkCreatePipelineCache) load(userptr, "vkCreatePipelineCache");
  323. glad_vkCreatePipelineLayout = (PFN_vkCreatePipelineLayout) load(userptr, "vkCreatePipelineLayout");
  324. glad_vkCreateQueryPool = (PFN_vkCreateQueryPool) load(userptr, "vkCreateQueryPool");
  325. glad_vkCreateRenderPass = (PFN_vkCreateRenderPass) load(userptr, "vkCreateRenderPass");
  326. glad_vkCreateSampler = (PFN_vkCreateSampler) load(userptr, "vkCreateSampler");
  327. glad_vkCreateSemaphore = (PFN_vkCreateSemaphore) load(userptr, "vkCreateSemaphore");
  328. glad_vkCreateShaderModule = (PFN_vkCreateShaderModule) load(userptr, "vkCreateShaderModule");
  329. glad_vkDestroyBuffer = (PFN_vkDestroyBuffer) load(userptr, "vkDestroyBuffer");
  330. glad_vkDestroyBufferView = (PFN_vkDestroyBufferView) load(userptr, "vkDestroyBufferView");
  331. glad_vkDestroyCommandPool = (PFN_vkDestroyCommandPool) load(userptr, "vkDestroyCommandPool");
  332. glad_vkDestroyDescriptorPool = (PFN_vkDestroyDescriptorPool) load(userptr, "vkDestroyDescriptorPool");
  333. glad_vkDestroyDescriptorSetLayout = (PFN_vkDestroyDescriptorSetLayout) load(userptr, "vkDestroyDescriptorSetLayout");
  334. glad_vkDestroyDevice = (PFN_vkDestroyDevice) load(userptr, "vkDestroyDevice");
  335. glad_vkDestroyEvent = (PFN_vkDestroyEvent) load(userptr, "vkDestroyEvent");
  336. glad_vkDestroyFence = (PFN_vkDestroyFence) load(userptr, "vkDestroyFence");
  337. glad_vkDestroyFramebuffer = (PFN_vkDestroyFramebuffer) load(userptr, "vkDestroyFramebuffer");
  338. glad_vkDestroyImage = (PFN_vkDestroyImage) load(userptr, "vkDestroyImage");
  339. glad_vkDestroyImageView = (PFN_vkDestroyImageView) load(userptr, "vkDestroyImageView");
  340. glad_vkDestroyInstance = (PFN_vkDestroyInstance) load(userptr, "vkDestroyInstance");
  341. glad_vkDestroyPipeline = (PFN_vkDestroyPipeline) load(userptr, "vkDestroyPipeline");
  342. glad_vkDestroyPipelineCache = (PFN_vkDestroyPipelineCache) load(userptr, "vkDestroyPipelineCache");
  343. glad_vkDestroyPipelineLayout = (PFN_vkDestroyPipelineLayout) load(userptr, "vkDestroyPipelineLayout");
  344. glad_vkDestroyQueryPool = (PFN_vkDestroyQueryPool) load(userptr, "vkDestroyQueryPool");
  345. glad_vkDestroyRenderPass = (PFN_vkDestroyRenderPass) load(userptr, "vkDestroyRenderPass");
  346. glad_vkDestroySampler = (PFN_vkDestroySampler) load(userptr, "vkDestroySampler");
  347. glad_vkDestroySemaphore = (PFN_vkDestroySemaphore) load(userptr, "vkDestroySemaphore");
  348. glad_vkDestroyShaderModule = (PFN_vkDestroyShaderModule) load(userptr, "vkDestroyShaderModule");
  349. glad_vkDeviceWaitIdle = (PFN_vkDeviceWaitIdle) load(userptr, "vkDeviceWaitIdle");
  350. glad_vkEndCommandBuffer = (PFN_vkEndCommandBuffer) load(userptr, "vkEndCommandBuffer");
  351. glad_vkEnumerateDeviceExtensionProperties = (PFN_vkEnumerateDeviceExtensionProperties) load(userptr, "vkEnumerateDeviceExtensionProperties");
  352. glad_vkEnumerateDeviceLayerProperties = (PFN_vkEnumerateDeviceLayerProperties) load(userptr, "vkEnumerateDeviceLayerProperties");
  353. glad_vkEnumerateInstanceExtensionProperties = (PFN_vkEnumerateInstanceExtensionProperties) load(userptr, "vkEnumerateInstanceExtensionProperties");
  354. glad_vkEnumerateInstanceLayerProperties = (PFN_vkEnumerateInstanceLayerProperties) load(userptr, "vkEnumerateInstanceLayerProperties");
  355. glad_vkEnumeratePhysicalDevices = (PFN_vkEnumeratePhysicalDevices) load(userptr, "vkEnumeratePhysicalDevices");
  356. glad_vkFlushMappedMemoryRanges = (PFN_vkFlushMappedMemoryRanges) load(userptr, "vkFlushMappedMemoryRanges");
  357. glad_vkFreeCommandBuffers = (PFN_vkFreeCommandBuffers) load(userptr, "vkFreeCommandBuffers");
  358. glad_vkFreeDescriptorSets = (PFN_vkFreeDescriptorSets) load(userptr, "vkFreeDescriptorSets");
  359. glad_vkFreeMemory = (PFN_vkFreeMemory) load(userptr, "vkFreeMemory");
  360. glad_vkGetBufferMemoryRequirements = (PFN_vkGetBufferMemoryRequirements) load(userptr, "vkGetBufferMemoryRequirements");
  361. glad_vkGetDeviceMemoryCommitment = (PFN_vkGetDeviceMemoryCommitment) load(userptr, "vkGetDeviceMemoryCommitment");
  362. glad_vkGetDeviceProcAddr = (PFN_vkGetDeviceProcAddr) load(userptr, "vkGetDeviceProcAddr");
  363. glad_vkGetDeviceQueue = (PFN_vkGetDeviceQueue) load(userptr, "vkGetDeviceQueue");
  364. glad_vkGetEventStatus = (PFN_vkGetEventStatus) load(userptr, "vkGetEventStatus");
  365. glad_vkGetFenceStatus = (PFN_vkGetFenceStatus) load(userptr, "vkGetFenceStatus");
  366. glad_vkGetImageMemoryRequirements = (PFN_vkGetImageMemoryRequirements) load(userptr, "vkGetImageMemoryRequirements");
  367. glad_vkGetImageSparseMemoryRequirements = (PFN_vkGetImageSparseMemoryRequirements) load(userptr, "vkGetImageSparseMemoryRequirements");
  368. glad_vkGetImageSubresourceLayout = (PFN_vkGetImageSubresourceLayout) load(userptr, "vkGetImageSubresourceLayout");
  369. glad_vkGetInstanceProcAddr = (PFN_vkGetInstanceProcAddr) load(userptr, "vkGetInstanceProcAddr");
  370. glad_vkGetPhysicalDeviceFeatures = (PFN_vkGetPhysicalDeviceFeatures) load(userptr, "vkGetPhysicalDeviceFeatures");
  371. glad_vkGetPhysicalDeviceFormatProperties = (PFN_vkGetPhysicalDeviceFormatProperties) load(userptr, "vkGetPhysicalDeviceFormatProperties");
  372. glad_vkGetPhysicalDeviceImageFormatProperties = (PFN_vkGetPhysicalDeviceImageFormatProperties) load(userptr, "vkGetPhysicalDeviceImageFormatProperties");
  373. glad_vkGetPhysicalDeviceMemoryProperties = (PFN_vkGetPhysicalDeviceMemoryProperties) load(userptr, "vkGetPhysicalDeviceMemoryProperties");
  374. glad_vkGetPhysicalDeviceProperties = (PFN_vkGetPhysicalDeviceProperties) load(userptr, "vkGetPhysicalDeviceProperties");
  375. glad_vkGetPhysicalDeviceQueueFamilyProperties = (PFN_vkGetPhysicalDeviceQueueFamilyProperties) load(userptr, "vkGetPhysicalDeviceQueueFamilyProperties");
  376. glad_vkGetPhysicalDeviceSparseImageFormatProperties = (PFN_vkGetPhysicalDeviceSparseImageFormatProperties) load(userptr, "vkGetPhysicalDeviceSparseImageFormatProperties");
  377. glad_vkGetPipelineCacheData = (PFN_vkGetPipelineCacheData) load(userptr, "vkGetPipelineCacheData");
  378. glad_vkGetQueryPoolResults = (PFN_vkGetQueryPoolResults) load(userptr, "vkGetQueryPoolResults");
  379. glad_vkGetRenderAreaGranularity = (PFN_vkGetRenderAreaGranularity) load(userptr, "vkGetRenderAreaGranularity");
  380. glad_vkInvalidateMappedMemoryRanges = (PFN_vkInvalidateMappedMemoryRanges) load(userptr, "vkInvalidateMappedMemoryRanges");
  381. glad_vkMapMemory = (PFN_vkMapMemory) load(userptr, "vkMapMemory");
  382. glad_vkMergePipelineCaches = (PFN_vkMergePipelineCaches) load(userptr, "vkMergePipelineCaches");
  383. glad_vkQueueBindSparse = (PFN_vkQueueBindSparse) load(userptr, "vkQueueBindSparse");
  384. glad_vkQueueSubmit = (PFN_vkQueueSubmit) load(userptr, "vkQueueSubmit");
  385. glad_vkQueueWaitIdle = (PFN_vkQueueWaitIdle) load(userptr, "vkQueueWaitIdle");
  386. glad_vkResetCommandBuffer = (PFN_vkResetCommandBuffer) load(userptr, "vkResetCommandBuffer");
  387. glad_vkResetCommandPool = (PFN_vkResetCommandPool) load(userptr, "vkResetCommandPool");
  388. glad_vkResetDescriptorPool = (PFN_vkResetDescriptorPool) load(userptr, "vkResetDescriptorPool");
  389. glad_vkResetEvent = (PFN_vkResetEvent) load(userptr, "vkResetEvent");
  390. glad_vkResetFences = (PFN_vkResetFences) load(userptr, "vkResetFences");
  391. glad_vkSetEvent = (PFN_vkSetEvent) load(userptr, "vkSetEvent");
  392. glad_vkUnmapMemory = (PFN_vkUnmapMemory) load(userptr, "vkUnmapMemory");
  393. glad_vkUpdateDescriptorSets = (PFN_vkUpdateDescriptorSets) load(userptr, "vkUpdateDescriptorSets");
  394. glad_vkWaitForFences = (PFN_vkWaitForFences) load(userptr, "vkWaitForFences");
  395. }
  396. static void glad_vk_load_VK_VERSION_1_1( GLADuserptrloadfunc load, void* userptr) {
  397. if(!GLAD_VK_VERSION_1_1) return;
  398. glad_vkBindBufferMemory2 = (PFN_vkBindBufferMemory2) load(userptr, "vkBindBufferMemory2");
  399. glad_vkBindImageMemory2 = (PFN_vkBindImageMemory2) load(userptr, "vkBindImageMemory2");
  400. glad_vkCmdDispatchBase = (PFN_vkCmdDispatchBase) load(userptr, "vkCmdDispatchBase");
  401. glad_vkCmdSetDeviceMask = (PFN_vkCmdSetDeviceMask) load(userptr, "vkCmdSetDeviceMask");
  402. glad_vkCreateDescriptorUpdateTemplate = (PFN_vkCreateDescriptorUpdateTemplate) load(userptr, "vkCreateDescriptorUpdateTemplate");
  403. glad_vkCreateSamplerYcbcrConversion = (PFN_vkCreateSamplerYcbcrConversion) load(userptr, "vkCreateSamplerYcbcrConversion");
  404. glad_vkDestroyDescriptorUpdateTemplate = (PFN_vkDestroyDescriptorUpdateTemplate) load(userptr, "vkDestroyDescriptorUpdateTemplate");
  405. glad_vkDestroySamplerYcbcrConversion = (PFN_vkDestroySamplerYcbcrConversion) load(userptr, "vkDestroySamplerYcbcrConversion");
  406. glad_vkEnumerateInstanceVersion = (PFN_vkEnumerateInstanceVersion) load(userptr, "vkEnumerateInstanceVersion");
  407. glad_vkEnumeratePhysicalDeviceGroups = (PFN_vkEnumeratePhysicalDeviceGroups) load(userptr, "vkEnumeratePhysicalDeviceGroups");
  408. glad_vkGetBufferMemoryRequirements2 = (PFN_vkGetBufferMemoryRequirements2) load(userptr, "vkGetBufferMemoryRequirements2");
  409. glad_vkGetDescriptorSetLayoutSupport = (PFN_vkGetDescriptorSetLayoutSupport) load(userptr, "vkGetDescriptorSetLayoutSupport");
  410. glad_vkGetDeviceGroupPeerMemoryFeatures = (PFN_vkGetDeviceGroupPeerMemoryFeatures) load(userptr, "vkGetDeviceGroupPeerMemoryFeatures");
  411. glad_vkGetDeviceQueue2 = (PFN_vkGetDeviceQueue2) load(userptr, "vkGetDeviceQueue2");
  412. glad_vkGetImageMemoryRequirements2 = (PFN_vkGetImageMemoryRequirements2) load(userptr, "vkGetImageMemoryRequirements2");
  413. glad_vkGetImageSparseMemoryRequirements2 = (PFN_vkGetImageSparseMemoryRequirements2) load(userptr, "vkGetImageSparseMemoryRequirements2");
  414. glad_vkGetPhysicalDeviceExternalBufferProperties = (PFN_vkGetPhysicalDeviceExternalBufferProperties) load(userptr, "vkGetPhysicalDeviceExternalBufferProperties");
  415. glad_vkGetPhysicalDeviceExternalFenceProperties = (PFN_vkGetPhysicalDeviceExternalFenceProperties) load(userptr, "vkGetPhysicalDeviceExternalFenceProperties");
  416. glad_vkGetPhysicalDeviceExternalSemaphoreProperties = (PFN_vkGetPhysicalDeviceExternalSemaphoreProperties) load(userptr, "vkGetPhysicalDeviceExternalSemaphoreProperties");
  417. glad_vkGetPhysicalDeviceFeatures2 = (PFN_vkGetPhysicalDeviceFeatures2) load(userptr, "vkGetPhysicalDeviceFeatures2");
  418. glad_vkGetPhysicalDeviceFormatProperties2 = (PFN_vkGetPhysicalDeviceFormatProperties2) load(userptr, "vkGetPhysicalDeviceFormatProperties2");
  419. glad_vkGetPhysicalDeviceImageFormatProperties2 = (PFN_vkGetPhysicalDeviceImageFormatProperties2) load(userptr, "vkGetPhysicalDeviceImageFormatProperties2");
  420. glad_vkGetPhysicalDeviceMemoryProperties2 = (PFN_vkGetPhysicalDeviceMemoryProperties2) load(userptr, "vkGetPhysicalDeviceMemoryProperties2");
  421. glad_vkGetPhysicalDeviceProperties2 = (PFN_vkGetPhysicalDeviceProperties2) load(userptr, "vkGetPhysicalDeviceProperties2");
  422. glad_vkGetPhysicalDeviceQueueFamilyProperties2 = (PFN_vkGetPhysicalDeviceQueueFamilyProperties2) load(userptr, "vkGetPhysicalDeviceQueueFamilyProperties2");
  423. glad_vkGetPhysicalDeviceSparseImageFormatProperties2 = (PFN_vkGetPhysicalDeviceSparseImageFormatProperties2) load(userptr, "vkGetPhysicalDeviceSparseImageFormatProperties2");
  424. glad_vkTrimCommandPool = (PFN_vkTrimCommandPool) load(userptr, "vkTrimCommandPool");
  425. glad_vkUpdateDescriptorSetWithTemplate = (PFN_vkUpdateDescriptorSetWithTemplate) load(userptr, "vkUpdateDescriptorSetWithTemplate");
  426. }
  427. static void glad_vk_load_VK_VERSION_1_2( GLADuserptrloadfunc load, void* userptr) {
  428. if(!GLAD_VK_VERSION_1_2) return;
  429. glad_vkCmdBeginRenderPass2 = (PFN_vkCmdBeginRenderPass2) load(userptr, "vkCmdBeginRenderPass2");
  430. glad_vkCmdDrawIndexedIndirectCount = (PFN_vkCmdDrawIndexedIndirectCount) load(userptr, "vkCmdDrawIndexedIndirectCount");
  431. glad_vkCmdDrawIndirectCount = (PFN_vkCmdDrawIndirectCount) load(userptr, "vkCmdDrawIndirectCount");
  432. glad_vkCmdEndRenderPass2 = (PFN_vkCmdEndRenderPass2) load(userptr, "vkCmdEndRenderPass2");
  433. glad_vkCmdNextSubpass2 = (PFN_vkCmdNextSubpass2) load(userptr, "vkCmdNextSubpass2");
  434. glad_vkCreateRenderPass2 = (PFN_vkCreateRenderPass2) load(userptr, "vkCreateRenderPass2");
  435. glad_vkGetBufferDeviceAddress = (PFN_vkGetBufferDeviceAddress) load(userptr, "vkGetBufferDeviceAddress");
  436. glad_vkGetBufferOpaqueCaptureAddress = (PFN_vkGetBufferOpaqueCaptureAddress) load(userptr, "vkGetBufferOpaqueCaptureAddress");
  437. glad_vkGetDeviceMemoryOpaqueCaptureAddress = (PFN_vkGetDeviceMemoryOpaqueCaptureAddress) load(userptr, "vkGetDeviceMemoryOpaqueCaptureAddress");
  438. glad_vkGetSemaphoreCounterValue = (PFN_vkGetSemaphoreCounterValue) load(userptr, "vkGetSemaphoreCounterValue");
  439. glad_vkResetQueryPool = (PFN_vkResetQueryPool) load(userptr, "vkResetQueryPool");
  440. glad_vkSignalSemaphore = (PFN_vkSignalSemaphore) load(userptr, "vkSignalSemaphore");
  441. glad_vkWaitSemaphores = (PFN_vkWaitSemaphores) load(userptr, "vkWaitSemaphores");
  442. }
  443. static void glad_vk_load_VK_VERSION_1_3( GLADuserptrloadfunc load, void* userptr) {
  444. if(!GLAD_VK_VERSION_1_3) return;
  445. glad_vkCmdBeginRendering = (PFN_vkCmdBeginRendering) load(userptr, "vkCmdBeginRendering");
  446. glad_vkCmdBindVertexBuffers2 = (PFN_vkCmdBindVertexBuffers2) load(userptr, "vkCmdBindVertexBuffers2");
  447. glad_vkCmdBlitImage2 = (PFN_vkCmdBlitImage2) load(userptr, "vkCmdBlitImage2");
  448. glad_vkCmdCopyBuffer2 = (PFN_vkCmdCopyBuffer2) load(userptr, "vkCmdCopyBuffer2");
  449. glad_vkCmdCopyBufferToImage2 = (PFN_vkCmdCopyBufferToImage2) load(userptr, "vkCmdCopyBufferToImage2");
  450. glad_vkCmdCopyImage2 = (PFN_vkCmdCopyImage2) load(userptr, "vkCmdCopyImage2");
  451. glad_vkCmdCopyImageToBuffer2 = (PFN_vkCmdCopyImageToBuffer2) load(userptr, "vkCmdCopyImageToBuffer2");
  452. glad_vkCmdEndRendering = (PFN_vkCmdEndRendering) load(userptr, "vkCmdEndRendering");
  453. glad_vkCmdPipelineBarrier2 = (PFN_vkCmdPipelineBarrier2) load(userptr, "vkCmdPipelineBarrier2");
  454. glad_vkCmdResetEvent2 = (PFN_vkCmdResetEvent2) load(userptr, "vkCmdResetEvent2");
  455. glad_vkCmdResolveImage2 = (PFN_vkCmdResolveImage2) load(userptr, "vkCmdResolveImage2");
  456. glad_vkCmdSetCullMode = (PFN_vkCmdSetCullMode) load(userptr, "vkCmdSetCullMode");
  457. glad_vkCmdSetDepthBiasEnable = (PFN_vkCmdSetDepthBiasEnable) load(userptr, "vkCmdSetDepthBiasEnable");
  458. glad_vkCmdSetDepthBoundsTestEnable = (PFN_vkCmdSetDepthBoundsTestEnable) load(userptr, "vkCmdSetDepthBoundsTestEnable");
  459. glad_vkCmdSetDepthCompareOp = (PFN_vkCmdSetDepthCompareOp) load(userptr, "vkCmdSetDepthCompareOp");
  460. glad_vkCmdSetDepthTestEnable = (PFN_vkCmdSetDepthTestEnable) load(userptr, "vkCmdSetDepthTestEnable");
  461. glad_vkCmdSetDepthWriteEnable = (PFN_vkCmdSetDepthWriteEnable) load(userptr, "vkCmdSetDepthWriteEnable");
  462. glad_vkCmdSetEvent2 = (PFN_vkCmdSetEvent2) load(userptr, "vkCmdSetEvent2");
  463. glad_vkCmdSetFrontFace = (PFN_vkCmdSetFrontFace) load(userptr, "vkCmdSetFrontFace");
  464. glad_vkCmdSetPrimitiveRestartEnable = (PFN_vkCmdSetPrimitiveRestartEnable) load(userptr, "vkCmdSetPrimitiveRestartEnable");
  465. glad_vkCmdSetPrimitiveTopology = (PFN_vkCmdSetPrimitiveTopology) load(userptr, "vkCmdSetPrimitiveTopology");
  466. glad_vkCmdSetRasterizerDiscardEnable = (PFN_vkCmdSetRasterizerDiscardEnable) load(userptr, "vkCmdSetRasterizerDiscardEnable");
  467. glad_vkCmdSetScissorWithCount = (PFN_vkCmdSetScissorWithCount) load(userptr, "vkCmdSetScissorWithCount");
  468. glad_vkCmdSetStencilOp = (PFN_vkCmdSetStencilOp) load(userptr, "vkCmdSetStencilOp");
  469. glad_vkCmdSetStencilTestEnable = (PFN_vkCmdSetStencilTestEnable) load(userptr, "vkCmdSetStencilTestEnable");
  470. glad_vkCmdSetViewportWithCount = (PFN_vkCmdSetViewportWithCount) load(userptr, "vkCmdSetViewportWithCount");
  471. glad_vkCmdWaitEvents2 = (PFN_vkCmdWaitEvents2) load(userptr, "vkCmdWaitEvents2");
  472. glad_vkCmdWriteTimestamp2 = (PFN_vkCmdWriteTimestamp2) load(userptr, "vkCmdWriteTimestamp2");
  473. glad_vkCreatePrivateDataSlot = (PFN_vkCreatePrivateDataSlot) load(userptr, "vkCreatePrivateDataSlot");
  474. glad_vkDestroyPrivateDataSlot = (PFN_vkDestroyPrivateDataSlot) load(userptr, "vkDestroyPrivateDataSlot");
  475. glad_vkGetDeviceBufferMemoryRequirements = (PFN_vkGetDeviceBufferMemoryRequirements) load(userptr, "vkGetDeviceBufferMemoryRequirements");
  476. glad_vkGetDeviceImageMemoryRequirements = (PFN_vkGetDeviceImageMemoryRequirements) load(userptr, "vkGetDeviceImageMemoryRequirements");
  477. glad_vkGetDeviceImageSparseMemoryRequirements = (PFN_vkGetDeviceImageSparseMemoryRequirements) load(userptr, "vkGetDeviceImageSparseMemoryRequirements");
  478. glad_vkGetPhysicalDeviceToolProperties = (PFN_vkGetPhysicalDeviceToolProperties) load(userptr, "vkGetPhysicalDeviceToolProperties");
  479. glad_vkGetPrivateData = (PFN_vkGetPrivateData) load(userptr, "vkGetPrivateData");
  480. glad_vkQueueSubmit2 = (PFN_vkQueueSubmit2) load(userptr, "vkQueueSubmit2");
  481. glad_vkSetPrivateData = (PFN_vkSetPrivateData) load(userptr, "vkSetPrivateData");
  482. }
  483. static void glad_vk_load_VK_EXT_debug_report( GLADuserptrloadfunc load, void* userptr) {
  484. if(!GLAD_VK_EXT_debug_report) return;
  485. glad_vkCreateDebugReportCallbackEXT = (PFN_vkCreateDebugReportCallbackEXT) load(userptr, "vkCreateDebugReportCallbackEXT");
  486. glad_vkDebugReportMessageEXT = (PFN_vkDebugReportMessageEXT) load(userptr, "vkDebugReportMessageEXT");
  487. glad_vkDestroyDebugReportCallbackEXT = (PFN_vkDestroyDebugReportCallbackEXT) load(userptr, "vkDestroyDebugReportCallbackEXT");
  488. }
  489. static void glad_vk_load_VK_KHR_surface( GLADuserptrloadfunc load, void* userptr) {
  490. if(!GLAD_VK_KHR_surface) return;
  491. glad_vkDestroySurfaceKHR = (PFN_vkDestroySurfaceKHR) load(userptr, "vkDestroySurfaceKHR");
  492. glad_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = (PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR) load(userptr, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR");
  493. glad_vkGetPhysicalDeviceSurfaceFormatsKHR = (PFN_vkGetPhysicalDeviceSurfaceFormatsKHR) load(userptr, "vkGetPhysicalDeviceSurfaceFormatsKHR");
  494. glad_vkGetPhysicalDeviceSurfacePresentModesKHR = (PFN_vkGetPhysicalDeviceSurfacePresentModesKHR) load(userptr, "vkGetPhysicalDeviceSurfacePresentModesKHR");
  495. glad_vkGetPhysicalDeviceSurfaceSupportKHR = (PFN_vkGetPhysicalDeviceSurfaceSupportKHR) load(userptr, "vkGetPhysicalDeviceSurfaceSupportKHR");
  496. }
  497. static void glad_vk_load_VK_KHR_swapchain( GLADuserptrloadfunc load, void* userptr) {
  498. if(!GLAD_VK_KHR_swapchain) return;
  499. glad_vkAcquireNextImage2KHR = (PFN_vkAcquireNextImage2KHR) load(userptr, "vkAcquireNextImage2KHR");
  500. glad_vkAcquireNextImageKHR = (PFN_vkAcquireNextImageKHR) load(userptr, "vkAcquireNextImageKHR");
  501. glad_vkCreateSwapchainKHR = (PFN_vkCreateSwapchainKHR) load(userptr, "vkCreateSwapchainKHR");
  502. glad_vkDestroySwapchainKHR = (PFN_vkDestroySwapchainKHR) load(userptr, "vkDestroySwapchainKHR");
  503. glad_vkGetDeviceGroupPresentCapabilitiesKHR = (PFN_vkGetDeviceGroupPresentCapabilitiesKHR) load(userptr, "vkGetDeviceGroupPresentCapabilitiesKHR");
  504. glad_vkGetDeviceGroupSurfacePresentModesKHR = (PFN_vkGetDeviceGroupSurfacePresentModesKHR) load(userptr, "vkGetDeviceGroupSurfacePresentModesKHR");
  505. glad_vkGetPhysicalDevicePresentRectanglesKHR = (PFN_vkGetPhysicalDevicePresentRectanglesKHR) load(userptr, "vkGetPhysicalDevicePresentRectanglesKHR");
  506. glad_vkGetSwapchainImagesKHR = (PFN_vkGetSwapchainImagesKHR) load(userptr, "vkGetSwapchainImagesKHR");
  507. glad_vkQueuePresentKHR = (PFN_vkQueuePresentKHR) load(userptr, "vkQueuePresentKHR");
  508. }
  509. static int glad_vk_get_extensions( VkPhysicalDevice physical_device, uint32_t *out_extension_count, char ***out_extensions) {
  510. uint32_t i;
  511. uint32_t instance_extension_count = 0;
  512. uint32_t device_extension_count = 0;
  513. uint32_t max_extension_count = 0;
  514. uint32_t total_extension_count = 0;
  515. char **extensions = NULL;
  516. VkExtensionProperties *ext_properties = NULL;
  517. VkResult result;
  518. if (glad_vkEnumerateInstanceExtensionProperties == NULL || (physical_device != NULL && glad_vkEnumerateDeviceExtensionProperties == NULL)) {
  519. return 0;
  520. }
  521. result = glad_vkEnumerateInstanceExtensionProperties(NULL, &instance_extension_count, NULL);
  522. if (result != VK_SUCCESS) {
  523. return 0;
  524. }
  525. if (physical_device != NULL) {
  526. result = glad_vkEnumerateDeviceExtensionProperties(physical_device, NULL, &device_extension_count, NULL);
  527. if (result != VK_SUCCESS) {
  528. return 0;
  529. }
  530. }
  531. total_extension_count = instance_extension_count + device_extension_count;
  532. if (total_extension_count <= 0) {
  533. return 0;
  534. }
  535. max_extension_count = instance_extension_count > device_extension_count
  536. ? instance_extension_count : device_extension_count;
  537. ext_properties = (VkExtensionProperties*) malloc(max_extension_count * sizeof(VkExtensionProperties));
  538. if (ext_properties == NULL) {
  539. goto glad_vk_get_extensions_error;
  540. }
  541. result = glad_vkEnumerateInstanceExtensionProperties(NULL, &instance_extension_count, ext_properties);
  542. if (result != VK_SUCCESS) {
  543. goto glad_vk_get_extensions_error;
  544. }
  545. extensions = (char**) calloc(total_extension_count, sizeof(char*));
  546. if (extensions == NULL) {
  547. goto glad_vk_get_extensions_error;
  548. }
  549. for (i = 0; i < instance_extension_count; ++i) {
  550. VkExtensionProperties ext = ext_properties[i];
  551. size_t extension_name_length = strlen(ext.extensionName) + 1;
  552. extensions[i] = (char*) malloc(extension_name_length * sizeof(char));
  553. if (extensions[i] == NULL) {
  554. goto glad_vk_get_extensions_error;
  555. }
  556. memcpy(extensions[i], ext.extensionName, extension_name_length * sizeof(char));
  557. }
  558. if (physical_device != NULL) {
  559. result = glad_vkEnumerateDeviceExtensionProperties(physical_device, NULL, &device_extension_count, ext_properties);
  560. if (result != VK_SUCCESS) {
  561. goto glad_vk_get_extensions_error;
  562. }
  563. for (i = 0; i < device_extension_count; ++i) {
  564. VkExtensionProperties ext = ext_properties[i];
  565. size_t extension_name_length = strlen(ext.extensionName) + 1;
  566. extensions[instance_extension_count + i] = (char*) malloc(extension_name_length * sizeof(char));
  567. if (extensions[instance_extension_count + i] == NULL) {
  568. goto glad_vk_get_extensions_error;
  569. }
  570. memcpy(extensions[instance_extension_count + i], ext.extensionName, extension_name_length * sizeof(char));
  571. }
  572. }
  573. free((void*) ext_properties);
  574. *out_extension_count = total_extension_count;
  575. *out_extensions = extensions;
  576. return 1;
  577. glad_vk_get_extensions_error:
  578. free((void*) ext_properties);
  579. if (extensions != NULL) {
  580. for (i = 0; i < total_extension_count; ++i) {
  581. free((void*) extensions[i]);
  582. }
  583. free(extensions);
  584. }
  585. return 0;
  586. }
  587. static void glad_vk_free_extensions(uint32_t extension_count, char **extensions) {
  588. uint32_t i;
  589. for(i = 0; i < extension_count ; ++i) {
  590. free((void*) (extensions[i]));
  591. }
  592. free((void*) extensions);
  593. }
  594. static int glad_vk_has_extension(const char *name, uint32_t extension_count, char **extensions) {
  595. uint32_t i;
  596. for (i = 0; i < extension_count; ++i) {
  597. if(extensions[i] != NULL && strcmp(name, extensions[i]) == 0) {
  598. return 1;
  599. }
  600. }
  601. return 0;
  602. }
  603. static GLADapiproc glad_vk_get_proc_from_userptr(void *userptr, const char* name) {
  604. return (GLAD_GNUC_EXTENSION (GLADapiproc (*)(const char *name)) userptr)(name);
  605. }
  606. static int glad_vk_find_extensions_vulkan( VkPhysicalDevice physical_device) {
  607. uint32_t extension_count = 0;
  608. char **extensions = NULL;
  609. if (!glad_vk_get_extensions(physical_device, &extension_count, &extensions)) return 0;
  610. GLAD_VK_EXT_debug_report = glad_vk_has_extension("VK_EXT_debug_report", extension_count, extensions);
  611. GLAD_VK_KHR_portability_enumeration = glad_vk_has_extension("VK_KHR_portability_enumeration", extension_count, extensions);
  612. GLAD_VK_KHR_surface = glad_vk_has_extension("VK_KHR_surface", extension_count, extensions);
  613. GLAD_VK_KHR_swapchain = glad_vk_has_extension("VK_KHR_swapchain", extension_count, extensions);
  614. (void) glad_vk_has_extension;
  615. glad_vk_free_extensions(extension_count, extensions);
  616. return 1;
  617. }
  618. static int glad_vk_find_core_vulkan( VkPhysicalDevice physical_device) {
  619. int major = 1;
  620. int minor = 0;
  621. #ifdef VK_VERSION_1_1
  622. if (glad_vkEnumerateInstanceVersion != NULL) {
  623. uint32_t version;
  624. VkResult result;
  625. result = glad_vkEnumerateInstanceVersion(&version);
  626. if (result == VK_SUCCESS) {
  627. major = (int) VK_VERSION_MAJOR(version);
  628. minor = (int) VK_VERSION_MINOR(version);
  629. }
  630. }
  631. #endif
  632. if (physical_device != NULL && glad_vkGetPhysicalDeviceProperties != NULL) {
  633. VkPhysicalDeviceProperties properties;
  634. glad_vkGetPhysicalDeviceProperties(physical_device, &properties);
  635. major = (int) VK_VERSION_MAJOR(properties.apiVersion);
  636. minor = (int) VK_VERSION_MINOR(properties.apiVersion);
  637. }
  638. GLAD_VK_VERSION_1_0 = (major == 1 && minor >= 0) || major > 1;
  639. GLAD_VK_VERSION_1_1 = (major == 1 && minor >= 1) || major > 1;
  640. GLAD_VK_VERSION_1_2 = (major == 1 && minor >= 2) || major > 1;
  641. GLAD_VK_VERSION_1_3 = (major == 1 && minor >= 3) || major > 1;
  642. return GLAD_MAKE_VERSION(major, minor);
  643. }
  644. int gladLoadVulkanUserPtr( VkPhysicalDevice physical_device, GLADuserptrloadfunc load, void *userptr) {
  645. int version;
  646. #ifdef VK_VERSION_1_1
  647. glad_vkEnumerateInstanceVersion = (PFN_vkEnumerateInstanceVersion) load(userptr, "vkEnumerateInstanceVersion");
  648. #endif
  649. version = glad_vk_find_core_vulkan( physical_device);
  650. if (!version) {
  651. return 0;
  652. }
  653. glad_vk_load_VK_VERSION_1_0(load, userptr);
  654. glad_vk_load_VK_VERSION_1_1(load, userptr);
  655. glad_vk_load_VK_VERSION_1_2(load, userptr);
  656. glad_vk_load_VK_VERSION_1_3(load, userptr);
  657. if (!glad_vk_find_extensions_vulkan( physical_device)) return 0;
  658. glad_vk_load_VK_EXT_debug_report(load, userptr);
  659. glad_vk_load_VK_KHR_surface(load, userptr);
  660. glad_vk_load_VK_KHR_swapchain(load, userptr);
  661. return version;
  662. }
  663. int gladLoadVulkan( VkPhysicalDevice physical_device, GLADloadfunc load) {
  664. return gladLoadVulkanUserPtr( physical_device, glad_vk_get_proc_from_userptr, GLAD_GNUC_EXTENSION (void*) load);
  665. }
  666. #ifdef __cplusplus
  667. }
  668. #endif