You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

2833 lines
188 KiB

  1. { ============================================================================
  2. Copyright (c) 2015-2016 The Khronos Group Inc.
  3. Permission is hereby granted, free of charge, to any person obtaining a
  4. copy of this software and/or associated documentation files (the
  5. "Materials"), to deal in the Materials without restriction, including
  6. without limitation the rights to use, copy, modify, merge, publish,
  7. distribute, sublicense, and/or sell copies of the Materials, and to
  8. permit persons to whom the Materials are furnished to do so, subject to
  9. the following conditions:
  10. The above copyright notice and this permission notice shall be included
  11. in all copies or substantial portions of the Materials.
  12. THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  13. EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  14. MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
  15. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
  16. CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
  17. TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
  18. MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
  19. ------------------------------------------------------------------------
  20. This file, vk.xml, is the Vulkan API Registry. It is a critically important
  21. and normative part of the Vulkan Specification, including a canonical
  22. machine-readable definition of the API, parameter and member validation
  23. language incorporated into the Specification and reference pages, and other
  24. material which is registered by Khronos, such as tags used by extension and
  25. layer authors. The only authoritative version of vk.xml is the one
  26. maintained in the master branch of the Khronos Vulkan Github project.
  27. ==============================================================================
  28. This file is autogenerated from vk.xml
  29. You may retrieve the latest version of this file at the Delphi OpenGL
  30. Community home page, located at http://www.delphigl.com/
  31. The contents of this file are used with permission, subject to
  32. the Mozilla Public License Version 1.1 (the "License"); you may
  33. not use this file except in compliance with the License. You may
  34. obtain a copy of the License at
  35. http://www.mozilla.org/MPL/MPL-1.1.html
  36. Software distributed under the License is distributed on an
  37. "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
  38. implied. See the License for the specific language governing
  39. rights and limitations under the License.
  40. ============================================================================ }
  41. unit Vulkan;
  42. {$IFDEF FPC}
  43. {$MODE Delphi}
  44. {$IFNDEF WINDOWS}
  45. {$LINKLIB c}
  46. {$ENDIF}
  47. {$MINENUMSIZE 4}
  48. {$ENDIF}
  49. {$IFDEF Win32}
  50. {$DEFINE VK_WIN}
  51. {$ENDIF}
  52. {$IFDEF Win64}
  53. {$DEFINE VK_WIN}
  54. {$ENDIF}
  55. {$IFDEF linux}
  56. {$DEFINE VK_LINUX}
  57. {$DEFINE VK_CDECL}
  58. {$ENDIF}
  59. {$IFDEF DARWIN}
  60. {$DEFINE VK_MAC}
  61. {$DEFINE VK_CDECL}
  62. {$ENDIF}
  63. interface
  64. {********************************* VK_VERSION_1_0 *********************************}
  65. const { constants }
  66. VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = 256;
  67. VK_UUID_SIZE = 16;
  68. VK_MAX_EXTENSION_NAME_SIZE = 256;
  69. VK_MAX_DESCRIPTION_SIZE = 256;
  70. VK_MAX_MEMORY_TYPES = 32;
  71. VK_MAX_MEMORY_HEAPS = 16;
  72. VK_LOD_CLAMP_NONE = 1000;
  73. VK_REMAINING_MIP_LEVELS = $FFFFFFFF;
  74. VK_REMAINING_ARRAY_LAYERS = $FFFFFFFF;
  75. VK_WHOLE_SIZE = $FFFFFFFF;
  76. VK_ATTACHMENT_UNUSED = $FFFFFFFF;
  77. VK_TRUE = 1;
  78. VK_FALSE = 0;
  79. VK_QUEUE_FAMILY_IGNORED = $FFFFFFFF;
  80. VK_SUBPASS_EXTERNAL = $FFFFFFFF;
  81. type { types }
  82. PVkVoid = Pointer;
  83. VkChar = AnsiChar;
  84. VkDouble = Double;
  85. VkFloat = Single;
  86. VkHandle = Pointer;
  87. VkInt16 = SmallInt;
  88. VkInt32 = Integer;
  89. VkInt64 = Int64;
  90. VkSize = SizeUInt;
  91. VkUint16 = Word;
  92. VkUint32 = Cardinal;
  93. VkUint64 = QWord;
  94. VkUint8 = Byte;
  95. VkBool32 = VkUint32;
  96. VkFlags = VkUint32;
  97. VkSampleMask = VkUint32;
  98. VkDeviceSize = VkUint64;
  99. VkAccessFlags = VkFlags;
  100. VkAttachmentDescriptionFlags = VkFlags;
  101. VkBufferCreateFlags = VkFlags;
  102. VkBufferUsageFlags = VkFlags;
  103. VkBufferViewCreateFlags = VkFlags;
  104. VkColorComponentFlags = VkFlags;
  105. VkCommandBufferResetFlags = VkFlags;
  106. VkCommandBufferUsageFlags = VkFlags;
  107. VkCommandPoolCreateFlags = VkFlags;
  108. VkCommandPoolResetFlags = VkFlags;
  109. VkCullModeFlags = VkFlags;
  110. VkDependencyFlags = VkFlags;
  111. VkDescriptorPoolCreateFlags = VkFlags;
  112. VkDescriptorPoolResetFlags = VkFlags;
  113. VkDescriptorSetLayoutCreateFlags = VkFlags;
  114. VkDeviceCreateFlags = VkFlags;
  115. VkDeviceQueueCreateFlags = VkFlags;
  116. VkEventCreateFlags = VkFlags;
  117. VkFenceCreateFlags = VkFlags;
  118. VkFormatFeatureFlags = VkFlags;
  119. VkFramebufferCreateFlags = VkFlags;
  120. VkImageAspectFlags = VkFlags;
  121. VkImageCreateFlags = VkFlags;
  122. VkImageUsageFlags = VkFlags;
  123. VkImageViewCreateFlags = VkFlags;
  124. VkInstanceCreateFlags = VkFlags;
  125. VkMemoryHeapFlags = VkFlags;
  126. VkMemoryMapFlags = VkFlags;
  127. VkMemoryPropertyFlags = VkFlags;
  128. VkPipelineCacheCreateFlags = VkFlags;
  129. VkPipelineColorBlendStateCreateFlags = VkFlags;
  130. VkPipelineCreateFlags = VkFlags;
  131. VkPipelineDepthStencilStateCreateFlags = VkFlags;
  132. VkPipelineDynamicStateCreateFlags = VkFlags;
  133. VkPipelineInputAssemblyStateCreateFlags = VkFlags;
  134. VkPipelineLayoutCreateFlags = VkFlags;
  135. VkPipelineMultisampleStateCreateFlags = VkFlags;
  136. VkPipelineRasterizationStateCreateFlags = VkFlags;
  137. VkPipelineShaderStageCreateFlags = VkFlags;
  138. VkPipelineStageFlags = VkFlags;
  139. VkPipelineTessellationStateCreateFlags = VkFlags;
  140. VkPipelineVertexInputStateCreateFlags = VkFlags;
  141. VkPipelineViewportStateCreateFlags = VkFlags;
  142. VkQueryControlFlags = VkFlags;
  143. VkQueryPipelineStatisticFlags = VkFlags;
  144. VkQueryPoolCreateFlags = VkFlags;
  145. VkQueryResultFlags = VkFlags;
  146. VkQueueFlags = VkFlags;
  147. VkRenderPassCreateFlags = VkFlags;
  148. VkSampleCountFlags = VkFlags;
  149. VkSamplerCreateFlags = VkFlags;
  150. VkSemaphoreCreateFlags = VkFlags;
  151. VkShaderModuleCreateFlags = VkFlags;
  152. VkShaderStageFlags = VkFlags;
  153. VkSparseImageFormatFlags = VkFlags;
  154. VkSparseMemoryBindFlags = VkFlags;
  155. VkStencilFaceFlags = VkFlags;
  156. VkSubpassDescriptionFlags = VkFlags;
  157. type { type pointers }
  158. PPVkVoid = ^PVkVoid;
  159. PPPVkVoid = ^PPVkVoid;
  160. PVkChar = ^VkChar;
  161. PPVkChar = ^PVkChar;
  162. PVkDouble = ^VkDouble;
  163. PPVkDouble = ^PVkDouble;
  164. PVkFloat = ^VkFloat;
  165. PPVkFloat = ^PVkFloat;
  166. PVkHandle = ^VkHandle;
  167. PPVkHandle = ^PVkHandle;
  168. PVkInt16 = ^VkInt16;
  169. PPVkInt16 = ^PVkInt16;
  170. PVkInt32 = ^VkInt32;
  171. PPVkInt32 = ^PVkInt32;
  172. PVkInt64 = ^VkInt64;
  173. PPVkInt64 = ^PVkInt64;
  174. PVkSize = ^VkSize;
  175. PPVkSize = ^PVkSize;
  176. PVkUint16 = ^VkUint16;
  177. PPVkUint16 = ^PVkUint16;
  178. PVkUint32 = ^VkUint32;
  179. PPVkUint32 = ^PVkUint32;
  180. PVkUint64 = ^VkUint64;
  181. PPVkUint64 = ^PVkUint64;
  182. PVkUint8 = ^VkUint8;
  183. PPVkUint8 = ^PVkUint8;
  184. PVkBool32 = ^VkBool32;
  185. PPVkBool32 = ^PVkBool32;
  186. PVkFlags = ^VkFlags;
  187. PPVkFlags = ^PVkFlags;
  188. PVkSampleMask = ^VkSampleMask;
  189. PPVkSampleMask = ^PVkSampleMask;
  190. PVkDeviceSize = ^VkDeviceSize;
  191. PPVkDeviceSize = ^PVkDeviceSize;
  192. PVkAccessFlags = ^VkAccessFlags;
  193. PPVkAccessFlags = ^PVkAccessFlags;
  194. PVkAttachmentDescriptionFlags = ^VkAttachmentDescriptionFlags;
  195. PPVkAttachmentDescriptionFlags = ^PVkAttachmentDescriptionFlags;
  196. PVkBufferCreateFlags = ^VkBufferCreateFlags;
  197. PPVkBufferCreateFlags = ^PVkBufferCreateFlags;
  198. PVkBufferUsageFlags = ^VkBufferUsageFlags;
  199. PPVkBufferUsageFlags = ^PVkBufferUsageFlags;
  200. PVkBufferViewCreateFlags = ^VkBufferViewCreateFlags;
  201. PPVkBufferViewCreateFlags = ^PVkBufferViewCreateFlags;
  202. PVkColorComponentFlags = ^VkColorComponentFlags;
  203. PPVkColorComponentFlags = ^PVkColorComponentFlags;
  204. PVkCommandBufferResetFlags = ^VkCommandBufferResetFlags;
  205. PPVkCommandBufferResetFlags = ^PVkCommandBufferResetFlags;
  206. PVkCommandBufferUsageFlags = ^VkCommandBufferUsageFlags;
  207. PPVkCommandBufferUsageFlags = ^PVkCommandBufferUsageFlags;
  208. PVkCommandPoolCreateFlags = ^VkCommandPoolCreateFlags;
  209. PPVkCommandPoolCreateFlags = ^PVkCommandPoolCreateFlags;
  210. PVkCommandPoolResetFlags = ^VkCommandPoolResetFlags;
  211. PPVkCommandPoolResetFlags = ^PVkCommandPoolResetFlags;
  212. PVkCullModeFlags = ^VkCullModeFlags;
  213. PPVkCullModeFlags = ^PVkCullModeFlags;
  214. PVkDependencyFlags = ^VkDependencyFlags;
  215. PPVkDependencyFlags = ^PVkDependencyFlags;
  216. PVkDescriptorPoolCreateFlags = ^VkDescriptorPoolCreateFlags;
  217. PPVkDescriptorPoolCreateFlags = ^PVkDescriptorPoolCreateFlags;
  218. PVkDescriptorPoolResetFlags = ^VkDescriptorPoolResetFlags;
  219. PPVkDescriptorPoolResetFlags = ^PVkDescriptorPoolResetFlags;
  220. PVkDescriptorSetLayoutCreateFlags = ^VkDescriptorSetLayoutCreateFlags;
  221. PPVkDescriptorSetLayoutCreateFlags = ^PVkDescriptorSetLayoutCreateFlags;
  222. PVkDeviceCreateFlags = ^VkDeviceCreateFlags;
  223. PPVkDeviceCreateFlags = ^PVkDeviceCreateFlags;
  224. PVkDeviceQueueCreateFlags = ^VkDeviceQueueCreateFlags;
  225. PPVkDeviceQueueCreateFlags = ^PVkDeviceQueueCreateFlags;
  226. PVkEventCreateFlags = ^VkEventCreateFlags;
  227. PPVkEventCreateFlags = ^PVkEventCreateFlags;
  228. PVkFenceCreateFlags = ^VkFenceCreateFlags;
  229. PPVkFenceCreateFlags = ^PVkFenceCreateFlags;
  230. PVkFormatFeatureFlags = ^VkFormatFeatureFlags;
  231. PPVkFormatFeatureFlags = ^PVkFormatFeatureFlags;
  232. PVkFramebufferCreateFlags = ^VkFramebufferCreateFlags;
  233. PPVkFramebufferCreateFlags = ^PVkFramebufferCreateFlags;
  234. PVkImageAspectFlags = ^VkImageAspectFlags;
  235. PPVkImageAspectFlags = ^PVkImageAspectFlags;
  236. PVkImageCreateFlags = ^VkImageCreateFlags;
  237. PPVkImageCreateFlags = ^PVkImageCreateFlags;
  238. PVkImageUsageFlags = ^VkImageUsageFlags;
  239. PPVkImageUsageFlags = ^PVkImageUsageFlags;
  240. PVkImageViewCreateFlags = ^VkImageViewCreateFlags;
  241. PPVkImageViewCreateFlags = ^PVkImageViewCreateFlags;
  242. PVkInstanceCreateFlags = ^VkInstanceCreateFlags;
  243. PPVkInstanceCreateFlags = ^PVkInstanceCreateFlags;
  244. PVkMemoryHeapFlags = ^VkMemoryHeapFlags;
  245. PPVkMemoryHeapFlags = ^PVkMemoryHeapFlags;
  246. PVkMemoryMapFlags = ^VkMemoryMapFlags;
  247. PPVkMemoryMapFlags = ^PVkMemoryMapFlags;
  248. PVkMemoryPropertyFlags = ^VkMemoryPropertyFlags;
  249. PPVkMemoryPropertyFlags = ^PVkMemoryPropertyFlags;
  250. PVkPipelineCacheCreateFlags = ^VkPipelineCacheCreateFlags;
  251. PPVkPipelineCacheCreateFlags = ^PVkPipelineCacheCreateFlags;
  252. PVkPipelineColorBlendStateCreateFlags = ^VkPipelineColorBlendStateCreateFlags;
  253. PPVkPipelineColorBlendStateCreateFlags = ^PVkPipelineColorBlendStateCreateFlags;
  254. PVkPipelineCreateFlags = ^VkPipelineCreateFlags;
  255. PPVkPipelineCreateFlags = ^PVkPipelineCreateFlags;
  256. PVkPipelineDepthStencilStateCreateFlags = ^VkPipelineDepthStencilStateCreateFlags;
  257. PPVkPipelineDepthStencilStateCreateFlags = ^PVkPipelineDepthStencilStateCreateFlags;
  258. PVkPipelineDynamicStateCreateFlags = ^VkPipelineDynamicStateCreateFlags;
  259. PPVkPipelineDynamicStateCreateFlags = ^PVkPipelineDynamicStateCreateFlags;
  260. PVkPipelineInputAssemblyStateCreateFlags = ^VkPipelineInputAssemblyStateCreateFlags;
  261. PPVkPipelineInputAssemblyStateCreateFlags = ^PVkPipelineInputAssemblyStateCreateFlags;
  262. PVkPipelineLayoutCreateFlags = ^VkPipelineLayoutCreateFlags;
  263. PPVkPipelineLayoutCreateFlags = ^PVkPipelineLayoutCreateFlags;
  264. PVkPipelineMultisampleStateCreateFlags = ^VkPipelineMultisampleStateCreateFlags;
  265. PPVkPipelineMultisampleStateCreateFlags = ^PVkPipelineMultisampleStateCreateFlags;
  266. PVkPipelineRasterizationStateCreateFlags = ^VkPipelineRasterizationStateCreateFlags;
  267. PPVkPipelineRasterizationStateCreateFlags = ^PVkPipelineRasterizationStateCreateFlags;
  268. PVkPipelineShaderStageCreateFlags = ^VkPipelineShaderStageCreateFlags;
  269. PPVkPipelineShaderStageCreateFlags = ^PVkPipelineShaderStageCreateFlags;
  270. PVkPipelineStageFlags = ^VkPipelineStageFlags;
  271. PPVkPipelineStageFlags = ^PVkPipelineStageFlags;
  272. PVkPipelineTessellationStateCreateFlags = ^VkPipelineTessellationStateCreateFlags;
  273. PPVkPipelineTessellationStateCreateFlags = ^PVkPipelineTessellationStateCreateFlags;
  274. PVkPipelineVertexInputStateCreateFlags = ^VkPipelineVertexInputStateCreateFlags;
  275. PPVkPipelineVertexInputStateCreateFlags = ^PVkPipelineVertexInputStateCreateFlags;
  276. PVkPipelineViewportStateCreateFlags = ^VkPipelineViewportStateCreateFlags;
  277. PPVkPipelineViewportStateCreateFlags = ^PVkPipelineViewportStateCreateFlags;
  278. PVkQueryControlFlags = ^VkQueryControlFlags;
  279. PPVkQueryControlFlags = ^PVkQueryControlFlags;
  280. PVkQueryPipelineStatisticFlags = ^VkQueryPipelineStatisticFlags;
  281. PPVkQueryPipelineStatisticFlags = ^PVkQueryPipelineStatisticFlags;
  282. PVkQueryPoolCreateFlags = ^VkQueryPoolCreateFlags;
  283. PPVkQueryPoolCreateFlags = ^PVkQueryPoolCreateFlags;
  284. PVkQueryResultFlags = ^VkQueryResultFlags;
  285. PPVkQueryResultFlags = ^PVkQueryResultFlags;
  286. PVkQueueFlags = ^VkQueueFlags;
  287. PPVkQueueFlags = ^PVkQueueFlags;
  288. PVkRenderPassCreateFlags = ^VkRenderPassCreateFlags;
  289. PPVkRenderPassCreateFlags = ^PVkRenderPassCreateFlags;
  290. PVkSampleCountFlags = ^VkSampleCountFlags;
  291. PPVkSampleCountFlags = ^PVkSampleCountFlags;
  292. PVkSamplerCreateFlags = ^VkSamplerCreateFlags;
  293. PPVkSamplerCreateFlags = ^PVkSamplerCreateFlags;
  294. PVkSemaphoreCreateFlags = ^VkSemaphoreCreateFlags;
  295. PPVkSemaphoreCreateFlags = ^PVkSemaphoreCreateFlags;
  296. PVkShaderModuleCreateFlags = ^VkShaderModuleCreateFlags;
  297. PPVkShaderModuleCreateFlags = ^PVkShaderModuleCreateFlags;
  298. PVkShaderStageFlags = ^VkShaderStageFlags;
  299. PPVkShaderStageFlags = ^PVkShaderStageFlags;
  300. PVkSparseImageFormatFlags = ^VkSparseImageFormatFlags;
  301. PPVkSparseImageFormatFlags = ^PVkSparseImageFormatFlags;
  302. PVkSparseMemoryBindFlags = ^VkSparseMemoryBindFlags;
  303. PPVkSparseMemoryBindFlags = ^PVkSparseMemoryBindFlags;
  304. PVkStencilFaceFlags = ^VkStencilFaceFlags;
  305. PPVkStencilFaceFlags = ^PVkStencilFaceFlags;
  306. PVkSubpassDescriptionFlags = ^VkSubpassDescriptionFlags;
  307. PPVkSubpassDescriptionFlags = ^PVkSubpassDescriptionFlags;
  308. type { handles }
  309. VkBuffer = VkHandle;
  310. VkBufferView = VkHandle;
  311. VkCommandBuffer = VkHandle;
  312. VkCommandPool = VkHandle;
  313. VkDescriptorPool = VkHandle;
  314. VkDescriptorSet = VkHandle;
  315. VkDescriptorSetLayout = VkHandle;
  316. VkDevice = VkHandle;
  317. VkDeviceMemory = VkHandle;
  318. VkEvent = VkHandle;
  319. VkFence = VkHandle;
  320. VkFramebuffer = VkHandle;
  321. VkImage = VkHandle;
  322. VkImageView = VkHandle;
  323. VkInstance = VkHandle;
  324. VkPhysicalDevice = VkHandle;
  325. VkPipeline = VkHandle;
  326. VkPipelineCache = VkHandle;
  327. VkPipelineLayout = VkHandle;
  328. VkQueryPool = VkHandle;
  329. VkQueue = VkHandle;
  330. VkRenderPass = VkHandle;
  331. VkSampler = VkHandle;
  332. VkSemaphore = VkHandle;
  333. VkShaderModule = VkHandle;
  334. type { handle pointers }
  335. PVkBuffer = ^VkBuffer;
  336. PPVkBuffer = ^PVkBuffer;
  337. PVkBufferView = ^VkBufferView;
  338. PPVkBufferView = ^PVkBufferView;
  339. PVkCommandBuffer = ^VkCommandBuffer;
  340. PPVkCommandBuffer = ^PVkCommandBuffer;
  341. PVkCommandPool = ^VkCommandPool;
  342. PPVkCommandPool = ^PVkCommandPool;
  343. PVkDescriptorPool = ^VkDescriptorPool;
  344. PPVkDescriptorPool = ^PVkDescriptorPool;
  345. PVkDescriptorSet = ^VkDescriptorSet;
  346. PPVkDescriptorSet = ^PVkDescriptorSet;
  347. PVkDescriptorSetLayout = ^VkDescriptorSetLayout;
  348. PPVkDescriptorSetLayout = ^PVkDescriptorSetLayout;
  349. PVkDevice = ^VkDevice;
  350. PPVkDevice = ^PVkDevice;
  351. PVkDeviceMemory = ^VkDeviceMemory;
  352. PPVkDeviceMemory = ^PVkDeviceMemory;
  353. PVkEvent = ^VkEvent;
  354. PPVkEvent = ^PVkEvent;
  355. PVkFence = ^VkFence;
  356. PPVkFence = ^PVkFence;
  357. PVkFramebuffer = ^VkFramebuffer;
  358. PPVkFramebuffer = ^PVkFramebuffer;
  359. PVkImage = ^VkImage;
  360. PPVkImage = ^PVkImage;
  361. PVkImageView = ^VkImageView;
  362. PPVkImageView = ^PVkImageView;
  363. PVkInstance = ^VkInstance;
  364. PPVkInstance = ^PVkInstance;
  365. PVkPhysicalDevice = ^VkPhysicalDevice;
  366. PPVkPhysicalDevice = ^PVkPhysicalDevice;
  367. PVkPipeline = ^VkPipeline;
  368. PPVkPipeline = ^PVkPipeline;
  369. PVkPipelineCache = ^VkPipelineCache;
  370. PPVkPipelineCache = ^PVkPipelineCache;
  371. PVkPipelineLayout = ^VkPipelineLayout;
  372. PPVkPipelineLayout = ^PVkPipelineLayout;
  373. PVkQueryPool = ^VkQueryPool;
  374. PPVkQueryPool = ^PVkQueryPool;
  375. PVkQueue = ^VkQueue;
  376. PPVkQueue = ^PVkQueue;
  377. PVkRenderPass = ^VkRenderPass;
  378. PPVkRenderPass = ^PVkRenderPass;
  379. PVkSampler = ^VkSampler;
  380. PPVkSampler = ^PVkSampler;
  381. PVkSemaphore = ^VkSemaphore;
  382. PPVkSemaphore = ^PVkSemaphore;
  383. PVkShaderModule = ^VkShaderModule;
  384. PPVkShaderModule = ^PVkShaderModule;
  385. type { enums }
  386. TVkAttachmentLoadOp = (
  387. VK_ATTACHMENT_LOAD_OP_LOAD = 0,
  388. VK_ATTACHMENT_LOAD_OP_CLEAR = 1,
  389. VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2
  390. );
  391. PVkAttachmentLoadOp = ^TVkAttachmentLoadOp;
  392. TVkAttachmentStoreOp = (
  393. VK_ATTACHMENT_STORE_OP_STORE = 0,
  394. VK_ATTACHMENT_STORE_OP_DONT_CARE = 1
  395. );
  396. PVkAttachmentStoreOp = ^TVkAttachmentStoreOp;
  397. TVkBlendFactor = (
  398. VK_BLEND_FACTOR_ZERO = 0,
  399. VK_BLEND_FACTOR_ONE = 1,
  400. VK_BLEND_FACTOR_SRC_COLOR = 2,
  401. VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3,
  402. VK_BLEND_FACTOR_DST_COLOR = 4,
  403. VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5,
  404. VK_BLEND_FACTOR_SRC_ALPHA = 6,
  405. VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7,
  406. VK_BLEND_FACTOR_DST_ALPHA = 8,
  407. VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9,
  408. VK_BLEND_FACTOR_CONSTANT_COLOR = 10,
  409. VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11,
  410. VK_BLEND_FACTOR_CONSTANT_ALPHA = 12,
  411. VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13,
  412. VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14,
  413. VK_BLEND_FACTOR_SRC1_COLOR = 15,
  414. VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16,
  415. VK_BLEND_FACTOR_SRC1_ALPHA = 17,
  416. VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18
  417. );
  418. PVkBlendFactor = ^TVkBlendFactor;
  419. TVkBlendOp = (
  420. VK_BLEND_OP_ADD = 0,
  421. VK_BLEND_OP_SUBTRACT = 1,
  422. VK_BLEND_OP_REVERSE_SUBTRACT = 2,
  423. VK_BLEND_OP_MIN = 3,
  424. VK_BLEND_OP_MAX = 4
  425. );
  426. PVkBlendOp = ^TVkBlendOp;
  427. TVkBorderColor = (
  428. VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0,
  429. VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 1,
  430. VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 2,
  431. VK_BORDER_COLOR_INT_OPAQUE_BLACK = 3,
  432. VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 4,
  433. VK_BORDER_COLOR_INT_OPAQUE_WHITE = 5
  434. );
  435. PVkBorderColor = ^TVkBorderColor;
  436. TVkCommandBufferLevel = (
  437. VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0,
  438. VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1
  439. );
  440. PVkCommandBufferLevel = ^TVkCommandBufferLevel;
  441. TVkCompareOp = (
  442. VK_COMPARE_OP_NEVER = 0,
  443. VK_COMPARE_OP_LESS = 1,
  444. VK_COMPARE_OP_EQUAL = 2,
  445. VK_COMPARE_OP_LESS_OR_EQUAL = 3,
  446. VK_COMPARE_OP_GREATER = 4,
  447. VK_COMPARE_OP_NOT_EQUAL = 5,
  448. VK_COMPARE_OP_GREATER_OR_EQUAL = 6,
  449. VK_COMPARE_OP_ALWAYS = 7
  450. );
  451. PVkCompareOp = ^TVkCompareOp;
  452. TVkComponentSwizzle = (
  453. VK_COMPONENT_SWIZZLE_IDENTITY = 0,
  454. VK_COMPONENT_SWIZZLE_ZERO = 1,
  455. VK_COMPONENT_SWIZZLE_ONE = 2,
  456. VK_COMPONENT_SWIZZLE_R = 3,
  457. VK_COMPONENT_SWIZZLE_G = 4,
  458. VK_COMPONENT_SWIZZLE_B = 5,
  459. VK_COMPONENT_SWIZZLE_A = 6
  460. );
  461. PVkComponentSwizzle = ^TVkComponentSwizzle;
  462. TVkDescriptorType = (
  463. VK_DESCRIPTOR_TYPE_SAMPLER = 0,
  464. VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1,
  465. VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2,
  466. VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3,
  467. VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4,
  468. VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5,
  469. VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6,
  470. VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7,
  471. VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8,
  472. VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9,
  473. VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10
  474. );
  475. PVkDescriptorType = ^TVkDescriptorType;
  476. TVkDynamicState = (
  477. VK_DYNAMIC_STATE_VIEWPORT = 0,
  478. VK_DYNAMIC_STATE_SCISSOR = 1,
  479. VK_DYNAMIC_STATE_LINE_WIDTH = 2,
  480. VK_DYNAMIC_STATE_DEPTH_BIAS = 3,
  481. VK_DYNAMIC_STATE_BLEND_CONSTANTS = 4,
  482. VK_DYNAMIC_STATE_DEPTH_BOUNDS = 5,
  483. VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 6,
  484. VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 7,
  485. VK_DYNAMIC_STATE_STENCIL_REFERENCE = 8
  486. );
  487. PVkDynamicState = ^TVkDynamicState;
  488. TVkFilter = (
  489. VK_FILTER_NEAREST = 0,
  490. VK_FILTER_LINEAR = 1
  491. );
  492. PVkFilter = ^TVkFilter;
  493. TVkFormat = (
  494. VK_FORMAT_UNDEFINED = 0,
  495. VK_FORMAT_R4G4_UNORM_PACK8 = 1,
  496. VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2,
  497. VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3,
  498. VK_FORMAT_R5G6B5_UNORM_PACK16 = 4,
  499. VK_FORMAT_B5G6R5_UNORM_PACK16 = 5,
  500. VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6,
  501. VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7,
  502. VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 8,
  503. VK_FORMAT_R8_UNORM = 9,
  504. VK_FORMAT_R8_SNORM = 10,
  505. VK_FORMAT_R8_USCALED = 11,
  506. VK_FORMAT_R8_SSCALED = 12,
  507. VK_FORMAT_R8_UINT = 13,
  508. VK_FORMAT_R8_SINT = 14,
  509. VK_FORMAT_R8_SRGB = 15,
  510. VK_FORMAT_R8G8_UNORM = 16,
  511. VK_FORMAT_R8G8_SNORM = 17,
  512. VK_FORMAT_R8G8_USCALED = 18,
  513. VK_FORMAT_R8G8_SSCALED = 19,
  514. VK_FORMAT_R8G8_UINT = 20,
  515. VK_FORMAT_R8G8_SINT = 21,
  516. VK_FORMAT_R8G8_SRGB = 22,
  517. VK_FORMAT_R8G8B8_UNORM = 23,
  518. VK_FORMAT_R8G8B8_SNORM = 24,
  519. VK_FORMAT_R8G8B8_USCALED = 25,
  520. VK_FORMAT_R8G8B8_SSCALED = 26,
  521. VK_FORMAT_R8G8B8_UINT = 27,
  522. VK_FORMAT_R8G8B8_SINT = 28,
  523. VK_FORMAT_R8G8B8_SRGB = 29,
  524. VK_FORMAT_B8G8R8_UNORM = 30,
  525. VK_FORMAT_B8G8R8_SNORM = 31,
  526. VK_FORMAT_B8G8R8_USCALED = 32,
  527. VK_FORMAT_B8G8R8_SSCALED = 33,
  528. VK_FORMAT_B8G8R8_UINT = 34,
  529. VK_FORMAT_B8G8R8_SINT = 35,
  530. VK_FORMAT_B8G8R8_SRGB = 36,
  531. VK_FORMAT_R8G8B8A8_UNORM = 37,
  532. VK_FORMAT_R8G8B8A8_SNORM = 38,
  533. VK_FORMAT_R8G8B8A8_USCALED = 39,
  534. VK_FORMAT_R8G8B8A8_SSCALED = 40,
  535. VK_FORMAT_R8G8B8A8_UINT = 41,
  536. VK_FORMAT_R8G8B8A8_SINT = 42,
  537. VK_FORMAT_R8G8B8A8_SRGB = 43,
  538. VK_FORMAT_B8G8R8A8_UNORM = 44,
  539. VK_FORMAT_B8G8R8A8_SNORM = 45,
  540. VK_FORMAT_B8G8R8A8_USCALED = 46,
  541. VK_FORMAT_B8G8R8A8_SSCALED = 47,
  542. VK_FORMAT_B8G8R8A8_UINT = 48,
  543. VK_FORMAT_B8G8R8A8_SINT = 49,
  544. VK_FORMAT_B8G8R8A8_SRGB = 50,
  545. VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51,
  546. VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52,
  547. VK_FORMAT_A8B8G8R8_USCALED_PACK32 = 53,
  548. VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = 54,
  549. VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55,
  550. VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56,
  551. VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57,
  552. VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58,
  553. VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59,
  554. VK_FORMAT_A2R10G10B10_USCALED_PACK32 = 60,
  555. VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = 61,
  556. VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62,
  557. VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63,
  558. VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64,
  559. VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65,
  560. VK_FORMAT_A2B10G10R10_USCALED_PACK32 = 66,
  561. VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = 67,
  562. VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68,
  563. VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69,
  564. VK_FORMAT_R16_UNORM = 70,
  565. VK_FORMAT_R16_SNORM = 71,
  566. VK_FORMAT_R16_USCALED = 72,
  567. VK_FORMAT_R16_SSCALED = 73,
  568. VK_FORMAT_R16_UINT = 74,
  569. VK_FORMAT_R16_SINT = 75,
  570. VK_FORMAT_R16_SFLOAT = 76,
  571. VK_FORMAT_R16G16_UNORM = 77,
  572. VK_FORMAT_R16G16_SNORM = 78,
  573. VK_FORMAT_R16G16_USCALED = 79,
  574. VK_FORMAT_R16G16_SSCALED = 80,
  575. VK_FORMAT_R16G16_UINT = 81,
  576. VK_FORMAT_R16G16_SINT = 82,
  577. VK_FORMAT_R16G16_SFLOAT = 83,
  578. VK_FORMAT_R16G16B16_UNORM = 84,
  579. VK_FORMAT_R16G16B16_SNORM = 85,
  580. VK_FORMAT_R16G16B16_USCALED = 86,
  581. VK_FORMAT_R16G16B16_SSCALED = 87,
  582. VK_FORMAT_R16G16B16_UINT = 88,
  583. VK_FORMAT_R16G16B16_SINT = 89,
  584. VK_FORMAT_R16G16B16_SFLOAT = 90,
  585. VK_FORMAT_R16G16B16A16_UNORM = 91,
  586. VK_FORMAT_R16G16B16A16_SNORM = 92,
  587. VK_FORMAT_R16G16B16A16_USCALED = 93,
  588. VK_FORMAT_R16G16B16A16_SSCALED = 94,
  589. VK_FORMAT_R16G16B16A16_UINT = 95,
  590. VK_FORMAT_R16G16B16A16_SINT = 96,
  591. VK_FORMAT_R16G16B16A16_SFLOAT = 97,
  592. VK_FORMAT_R32_UINT = 98,
  593. VK_FORMAT_R32_SINT = 99,
  594. VK_FORMAT_R32_SFLOAT = 100,
  595. VK_FORMAT_R32G32_UINT = 101,
  596. VK_FORMAT_R32G32_SINT = 102,
  597. VK_FORMAT_R32G32_SFLOAT = 103,
  598. VK_FORMAT_R32G32B32_UINT = 104,
  599. VK_FORMAT_R32G32B32_SINT = 105,
  600. VK_FORMAT_R32G32B32_SFLOAT = 106,
  601. VK_FORMAT_R32G32B32A32_UINT = 107,
  602. VK_FORMAT_R32G32B32A32_SINT = 108,
  603. VK_FORMAT_R32G32B32A32_SFLOAT = 109,
  604. VK_FORMAT_R64_UINT = 110,
  605. VK_FORMAT_R64_SINT = 111,
  606. VK_FORMAT_R64_SFLOAT = 112,
  607. VK_FORMAT_R64G64_UINT = 113,
  608. VK_FORMAT_R64G64_SINT = 114,
  609. VK_FORMAT_R64G64_SFLOAT = 115,
  610. VK_FORMAT_R64G64B64_UINT = 116,
  611. VK_FORMAT_R64G64B64_SINT = 117,
  612. VK_FORMAT_R64G64B64_SFLOAT = 118,
  613. VK_FORMAT_R64G64B64A64_UINT = 119,
  614. VK_FORMAT_R64G64B64A64_SINT = 120,
  615. VK_FORMAT_R64G64B64A64_SFLOAT = 121,
  616. VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122,
  617. VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123,
  618. VK_FORMAT_D16_UNORM = 124,
  619. VK_FORMAT_X8_D24_UNORM_PACK32 = 125,
  620. VK_FORMAT_D32_SFLOAT = 126,
  621. VK_FORMAT_S8_UINT = 127,
  622. VK_FORMAT_D16_UNORM_S8_UINT = 128,
  623. VK_FORMAT_D24_UNORM_S8_UINT = 129,
  624. VK_FORMAT_D32_SFLOAT_S8_UINT = 130,
  625. VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131,
  626. VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132,
  627. VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133,
  628. VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134,
  629. VK_FORMAT_BC2_UNORM_BLOCK = 135,
  630. VK_FORMAT_BC2_SRGB_BLOCK = 136,
  631. VK_FORMAT_BC3_UNORM_BLOCK = 137,
  632. VK_FORMAT_BC3_SRGB_BLOCK = 138,
  633. VK_FORMAT_BC4_UNORM_BLOCK = 139,
  634. VK_FORMAT_BC4_SNORM_BLOCK = 140,
  635. VK_FORMAT_BC5_UNORM_BLOCK = 141,
  636. VK_FORMAT_BC5_SNORM_BLOCK = 142,
  637. VK_FORMAT_BC6H_UFLOAT_BLOCK = 143,
  638. VK_FORMAT_BC6H_SFLOAT_BLOCK = 144,
  639. VK_FORMAT_BC7_UNORM_BLOCK = 145,
  640. VK_FORMAT_BC7_SRGB_BLOCK = 146,
  641. VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147,
  642. VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148,
  643. VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149,
  644. VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150,
  645. VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151,
  646. VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152,
  647. VK_FORMAT_EAC_R11_UNORM_BLOCK = 153,
  648. VK_FORMAT_EAC_R11_SNORM_BLOCK = 154,
  649. VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155,
  650. VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156,
  651. VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157,
  652. VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158,
  653. VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159,
  654. VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160,
  655. VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161,
  656. VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162,
  657. VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163,
  658. VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164,
  659. VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165,
  660. VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166,
  661. VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167,
  662. VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168,
  663. VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169,
  664. VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170,
  665. VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171,
  666. VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172,
  667. VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173,
  668. VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174,
  669. VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175,
  670. VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176,
  671. VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177,
  672. VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178,
  673. VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179,
  674. VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180,
  675. VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181,
  676. VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182,
  677. VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183,
  678. VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184
  679. );
  680. PVkFormat = ^TVkFormat;
  681. TVkFrontFace = (
  682. VK_FRONT_FACE_COUNTER_CLOCKWISE = 0,
  683. VK_FRONT_FACE_CLOCKWISE = 1
  684. );
  685. PVkFrontFace = ^TVkFrontFace;
  686. TVkImageLayout = (
  687. VK_IMAGE_LAYOUT_UNDEFINED = 0,
  688. VK_IMAGE_LAYOUT_GENERAL = 1,
  689. VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2,
  690. VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3,
  691. VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4,
  692. VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5,
  693. VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6,
  694. VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7,
  695. VK_IMAGE_LAYOUT_PREINITIALIZED = 8
  696. );
  697. PVkImageLayout = ^TVkImageLayout;
  698. TVkImageTiling = (
  699. VK_IMAGE_TILING_OPTIMAL = 0,
  700. VK_IMAGE_TILING_LINEAR = 1
  701. );
  702. PVkImageTiling = ^TVkImageTiling;
  703. TVkImageType = (
  704. VK_IMAGE_TYPE_1D = 0,
  705. VK_IMAGE_TYPE_2D = 1,
  706. VK_IMAGE_TYPE_3D = 2
  707. );
  708. PVkImageType = ^TVkImageType;
  709. TVkImageViewType = (
  710. VK_IMAGE_VIEW_TYPE_1D = 0,
  711. VK_IMAGE_VIEW_TYPE_2D = 1,
  712. VK_IMAGE_VIEW_TYPE_3D = 2,
  713. VK_IMAGE_VIEW_TYPE_CUBE = 3,
  714. VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4,
  715. VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5,
  716. VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6
  717. );
  718. PVkImageViewType = ^TVkImageViewType;
  719. TVkIndexType = (
  720. VK_INDEX_TYPE_UINT16 = 0,
  721. VK_INDEX_TYPE_UINT32 = 1
  722. );
  723. PVkIndexType = ^TVkIndexType;
  724. TVkInternalAllocationType = (
  725. VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0
  726. );
  727. PVkInternalAllocationType = ^TVkInternalAllocationType;
  728. TVkLogicOp = (
  729. VK_LOGIC_OP_CLEAR = 0,
  730. VK_LOGIC_OP_AND = 1,
  731. VK_LOGIC_OP_AND_REVERSE = 2,
  732. VK_LOGIC_OP_COPY = 3,
  733. VK_LOGIC_OP_AND_INVERTED = 4,
  734. VK_LOGIC_OP_NO_OP = 5,
  735. VK_LOGIC_OP_XOR = 6,
  736. VK_LOGIC_OP_OR = 7,
  737. VK_LOGIC_OP_NOR = 8,
  738. VK_LOGIC_OP_EQUIVALENT = 9,
  739. VK_LOGIC_OP_INVERT = 10,
  740. VK_LOGIC_OP_OR_REVERSE = 11,
  741. VK_LOGIC_OP_COPY_INVERTED = 12,
  742. VK_LOGIC_OP_OR_INVERTED = 13,
  743. VK_LOGIC_OP_NAND = 14,
  744. VK_LOGIC_OP_SET = 15
  745. );
  746. PVkLogicOp = ^TVkLogicOp;
  747. TVkPhysicalDeviceType = (
  748. VK_PHYSICAL_DEVICE_TYPE_OTHER = 0,
  749. VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1,
  750. VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2,
  751. VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3,
  752. VK_PHYSICAL_DEVICE_TYPE_CPU = 4
  753. );
  754. PVkPhysicalDeviceType = ^TVkPhysicalDeviceType;
  755. TVkPipelineBindPoint = (
  756. VK_PIPELINE_BIND_POINT_GRAPHICS = 0,
  757. VK_PIPELINE_BIND_POINT_COMPUTE = 1
  758. );
  759. PVkPipelineBindPoint = ^TVkPipelineBindPoint;
  760. TVkPipelineCacheHeaderVersion = (
  761. VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1
  762. );
  763. PVkPipelineCacheHeaderVersion = ^TVkPipelineCacheHeaderVersion;
  764. TVkPipelineStageFlagBits = (
  765. VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = (1 shl 0),
  766. VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = (1 shl 1),
  767. VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = (1 shl 2),
  768. VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = (1 shl 3),
  769. VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = (1 shl 4),
  770. VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = (1 shl 5),
  771. VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = (1 shl 6),
  772. VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = (1 shl 7),
  773. VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = (1 shl 8),
  774. VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = (1 shl 9),
  775. VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = (1 shl 10),
  776. VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = (1 shl 11),
  777. VK_PIPELINE_STAGE_TRANSFER_BIT = (1 shl 12),
  778. VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = (1 shl 13),
  779. VK_PIPELINE_STAGE_HOST_BIT = (1 shl 14),
  780. VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = (1 shl 15),
  781. VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = (1 shl 16)
  782. );
  783. PVkPipelineStageFlagBits = ^TVkPipelineStageFlagBits;
  784. TVkPolygonMode = (
  785. VK_POLYGON_MODE_FILL = 0,
  786. VK_POLYGON_MODE_LINE = 1,
  787. VK_POLYGON_MODE_POINT = 2
  788. );
  789. PVkPolygonMode = ^TVkPolygonMode;
  790. TVkPrimitiveTopology = (
  791. VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0,
  792. VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1,
  793. VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2,
  794. VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3,
  795. VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4,
  796. VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5,
  797. VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6,
  798. VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7,
  799. VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8,
  800. VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9,
  801. VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10
  802. );
  803. PVkPrimitiveTopology = ^TVkPrimitiveTopology;
  804. TVkQueryType = (
  805. VK_QUERY_TYPE_OCCLUSION = 0,
  806. VK_QUERY_TYPE_PIPELINE_STATISTICS = 1,
  807. VK_QUERY_TYPE_TIMESTAMP = 2
  808. );
  809. PVkQueryType = ^TVkQueryType;
  810. TVkResult = (
  811. VK_SUCCESS = 0,
  812. VK_NOT_READY = 1,
  813. VK_TIMEOUT = 2,
  814. VK_EVENT_SET = 3,
  815. VK_EVENT_RESET = 4,
  816. VK_INCOMPLETE = 5,
  817. VK_ERROR_OUT_OF_HOST_MEMORY = -1,
  818. VK_ERROR_OUT_OF_DEVICE_MEMORY = -2,
  819. VK_ERROR_INITIALIZATION_FAILED = -3,
  820. VK_ERROR_DEVICE_LOST = -4,
  821. VK_ERROR_MEMORY_MAP_FAILED = -5,
  822. VK_ERROR_LAYER_NOT_PRESENT = -6,
  823. VK_ERROR_EXTENSION_NOT_PRESENT = -7,
  824. VK_ERROR_FEATURE_NOT_PRESENT = -8,
  825. VK_ERROR_INCOMPATIBLE_DRIVER = -9,
  826. VK_ERROR_TOO_MANY_OBJECTS = -10,
  827. VK_ERROR_FORMAT_NOT_SUPPORTED = -11
  828. );
  829. PVkResult = ^TVkResult;
  830. TVkSampleCountFlagBits = (
  831. VK_SAMPLE_COUNT_1_BIT = (1 shl 0),
  832. VK_SAMPLE_COUNT_2_BIT = (1 shl 1),
  833. VK_SAMPLE_COUNT_4_BIT = (1 shl 2),
  834. VK_SAMPLE_COUNT_8_BIT = (1 shl 3),
  835. VK_SAMPLE_COUNT_16_BIT = (1 shl 4),
  836. VK_SAMPLE_COUNT_32_BIT = (1 shl 5),
  837. VK_SAMPLE_COUNT_64_BIT = (1 shl 6)
  838. );
  839. PVkSampleCountFlagBits = ^TVkSampleCountFlagBits;
  840. TVkSamplerAddressMode = (
  841. VK_SAMPLER_ADDRESS_MODE_REPEAT = 0,
  842. VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 1,
  843. VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 2,
  844. VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 3,
  845. VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 4
  846. );
  847. PVkSamplerAddressMode = ^TVkSamplerAddressMode;
  848. TVkSamplerMipmapMode = (
  849. VK_SAMPLER_MIPMAP_MODE_NEAREST = 0,
  850. VK_SAMPLER_MIPMAP_MODE_LINEAR = 1
  851. );
  852. PVkSamplerMipmapMode = ^TVkSamplerMipmapMode;
  853. TVkShaderStageFlagBits = (
  854. VK_SHADER_STAGE_VERTEX_BIT = (1 shl 0),
  855. VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = (1 shl 1),
  856. VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = (1 shl 2),
  857. VK_SHADER_STAGE_GEOMETRY_BIT = (1 shl 3),
  858. VK_SHADER_STAGE_FRAGMENT_BIT = (1 shl 4),
  859. VK_SHADER_STAGE_COMPUTE_BIT = (1 shl 5),
  860. VK_SHADER_STAGE_ALL_GRAPHICS = $1F,
  861. VK_SHADER_STAGE_ALL = $7FFFFFFF
  862. );
  863. PVkShaderStageFlagBits = ^TVkShaderStageFlagBits;
  864. TVkSharingMode = (
  865. VK_SHARING_MODE_EXCLUSIVE = 0,
  866. VK_SHARING_MODE_CONCURRENT = 1
  867. );
  868. PVkSharingMode = ^TVkSharingMode;
  869. TVkStencilOp = (
  870. VK_STENCIL_OP_KEEP = 0,
  871. VK_STENCIL_OP_ZERO = 1,
  872. VK_STENCIL_OP_REPLACE = 2,
  873. VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3,
  874. VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4,
  875. VK_STENCIL_OP_INVERT = 5,
  876. VK_STENCIL_OP_INCREMENT_AND_WRAP = 6,
  877. VK_STENCIL_OP_DECREMENT_AND_WRAP = 7
  878. );
  879. PVkStencilOp = ^TVkStencilOp;
  880. TVkStructureType = (
  881. VK_STRUCTURE_TYPE_APPLICATION_INFO = 0,
  882. VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1,
  883. VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2,
  884. VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3,
  885. VK_STRUCTURE_TYPE_SUBMIT_INFO = 4,
  886. VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5,
  887. VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6,
  888. VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7,
  889. VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8,
  890. VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9,
  891. VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10,
  892. VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11,
  893. VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12,
  894. VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13,
  895. VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14,
  896. VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15,
  897. VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16,
  898. VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17,
  899. VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18,
  900. VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19,
  901. VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20,
  902. VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21,
  903. VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22,
  904. VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23,
  905. VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24,
  906. VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25,
  907. VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26,
  908. VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27,
  909. VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28,
  910. VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29,
  911. VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30,
  912. VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31,
  913. VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32,
  914. VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33,
  915. VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34,
  916. VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35,
  917. VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36,
  918. VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37,
  919. VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38,
  920. VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39,
  921. VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40,
  922. VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41,
  923. VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42,
  924. VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43,
  925. VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44,
  926. VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45,
  927. VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46,
  928. VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47,
  929. VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48
  930. );
  931. PVkStructureType = ^TVkStructureType;
  932. TVkSubpassContents = (
  933. VK_SUBPASS_CONTENTS_INLINE = 0,
  934. VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1
  935. );
  936. PVkSubpassContents = ^TVkSubpassContents;
  937. TVkSystemAllocationScope = (
  938. VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0,
  939. VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1,
  940. VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2,
  941. VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3,
  942. VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4
  943. );
  944. PVkSystemAllocationScope = ^TVkSystemAllocationScope;
  945. TVkVertexInputRate = (
  946. VK_VERTEX_INPUT_RATE_VERTEX = 0,
  947. VK_VERTEX_INPUT_RATE_INSTANCE = 1
  948. );
  949. PVkVertexInputRate = ^TVkVertexInputRate;
  950. type { funcptrs }
  951. TvkVoidFunction = procedure(); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  952. TvkFreeFunction = procedure(pUserData: PVkVoid; pMemory: PVkVoid); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  953. TvkAllocationFunction = procedure(pUserData: PVkVoid; size: VkSize; alignment: VkSize; allocationScope: TVkSystemAllocationScope); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  954. TvkInternalAllocationNotification = procedure(pUserData: PVkVoid; size: VkSize; allocationType: TVkInternalAllocationType; allocationScope: TVkSystemAllocationScope); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  955. TvkInternalFreeNotification = procedure(pUserData: PVkVoid; size: VkSize; allocationType: TVkInternalAllocationType; allocationScope: TVkSystemAllocationScope); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  956. TvkReallocationFunction = procedure(pUserData: PVkVoid; pOriginal: PVkVoid; size: VkSize; alignment: VkSize; allocationScope: TVkSystemAllocationScope); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  957. type { structs }
  958. TVkViewport = record
  959. x: VkFloat;
  960. y: VkFloat;
  961. width: VkFloat;
  962. height: VkFloat;
  963. minDepth: VkFloat;
  964. maxDepth: VkFloat;
  965. end;
  966. PVkViewport = ^TVkViewport;
  967. PPVkViewport = ^PVkViewport;
  968. TVkOffset2D = record
  969. x: VkInt32;
  970. y: VkInt32;
  971. end;
  972. PVkOffset2D = ^TVkOffset2D;
  973. PPVkOffset2D = ^PVkOffset2D;
  974. TVkOffset3D = record
  975. x: VkInt32;
  976. y: VkInt32;
  977. z: VkInt32;
  978. end;
  979. PVkOffset3D = ^TVkOffset3D;
  980. PPVkOffset3D = ^PVkOffset3D;
  981. TVkClearColorValue = record
  982. case Integer of
  983. 000: (float32: array[0..4] of VkFloat);
  984. 001: (int32: array[0..4] of VkInt32);
  985. 002: (uint32: array[0..4] of VkUint32);
  986. end;
  987. PVkClearColorValue = ^TVkClearColorValue;
  988. PPVkClearColorValue = ^PVkClearColorValue;
  989. TVkClearDepthStencilValue = record
  990. depth: VkFloat;
  991. stencil: VkUint32;
  992. end;
  993. PVkClearDepthStencilValue = ^TVkClearDepthStencilValue;
  994. PPVkClearDepthStencilValue = ^PVkClearDepthStencilValue;
  995. TVkDispatchIndirectCommand = record
  996. x: VkUint32;
  997. y: VkUint32;
  998. z: VkUint32;
  999. end;
  1000. PVkDispatchIndirectCommand = ^TVkDispatchIndirectCommand;
  1001. PPVkDispatchIndirectCommand = ^PVkDispatchIndirectCommand;
  1002. TVkDrawIndexedIndirectCommand = record
  1003. indexCount: VkUint32;
  1004. instanceCount: VkUint32;
  1005. firstIndex: VkUint32;
  1006. vertexOffset: VkInt32;
  1007. firstInstance: VkUint32;
  1008. end;
  1009. PVkDrawIndexedIndirectCommand = ^TVkDrawIndexedIndirectCommand;
  1010. PPVkDrawIndexedIndirectCommand = ^PVkDrawIndexedIndirectCommand;
  1011. TVkDrawIndirectCommand = record
  1012. vertexCount: VkUint32;
  1013. instanceCount: VkUint32;
  1014. firstVertex: VkUint32;
  1015. firstInstance: VkUint32;
  1016. end;
  1017. PVkDrawIndirectCommand = ^TVkDrawIndirectCommand;
  1018. PPVkDrawIndirectCommand = ^PVkDrawIndirectCommand;
  1019. TVkExtensionProperties = record
  1020. extensionName: array[0..VK_MAX_EXTENSION_NAME_SIZE-1] of VkChar;
  1021. specVersion: VkUint32;
  1022. end;
  1023. PVkExtensionProperties = ^TVkExtensionProperties;
  1024. PPVkExtensionProperties = ^PVkExtensionProperties;
  1025. TVkExtent2D = record
  1026. width: VkUint32;
  1027. height: VkUint32;
  1028. end;
  1029. PVkExtent2D = ^TVkExtent2D;
  1030. PPVkExtent2D = ^PVkExtent2D;
  1031. TVkExtent3D = record
  1032. width: VkUint32;
  1033. height: VkUint32;
  1034. depth: VkUint32;
  1035. end;
  1036. PVkExtent3D = ^TVkExtent3D;
  1037. PPVkExtent3D = ^PVkExtent3D;
  1038. TVkLayerProperties = record
  1039. layerName: array[0..VK_MAX_EXTENSION_NAME_SIZE-1] of VkChar;
  1040. specVersion: VkUint32;
  1041. implementationVersion: VkUint32;
  1042. description: array[0..VK_MAX_DESCRIPTION_SIZE-1] of VkChar;
  1043. end;
  1044. PVkLayerProperties = ^TVkLayerProperties;
  1045. PPVkLayerProperties = ^PVkLayerProperties;
  1046. TVkSpecializationMapEntry = record
  1047. constantID: VkUint32;
  1048. offset: VkUint32;
  1049. size: VkSize;
  1050. end;
  1051. PVkSpecializationMapEntry = ^TVkSpecializationMapEntry;
  1052. PPVkSpecializationMapEntry = ^PVkSpecializationMapEntry;
  1053. TVkPhysicalDeviceFeatures = record
  1054. robustBufferAccess: VkBool32;
  1055. fullDrawIndexUint32: VkBool32;
  1056. imageCubeArray: VkBool32;
  1057. independentBlend: VkBool32;
  1058. geometryShader: VkBool32;
  1059. tessellationShader: VkBool32;
  1060. sampleRateShading: VkBool32;
  1061. dualSrcBlend: VkBool32;
  1062. logicOp: VkBool32;
  1063. multiDrawIndirect: VkBool32;
  1064. drawIndirectFirstInstance: VkBool32;
  1065. depthClamp: VkBool32;
  1066. depthBiasClamp: VkBool32;
  1067. fillModeNonSolid: VkBool32;
  1068. depthBounds: VkBool32;
  1069. wideLines: VkBool32;
  1070. largePoints: VkBool32;
  1071. alphaToOne: VkBool32;
  1072. multiViewport: VkBool32;
  1073. samplerAnisotropy: VkBool32;
  1074. textureCompressionETC2: VkBool32;
  1075. textureCompressionASTC_LDR: VkBool32;
  1076. textureCompressionBC: VkBool32;
  1077. occlusionQueryPrecise: VkBool32;
  1078. pipelineStatisticsQuery: VkBool32;
  1079. vertexPipelineStoresAndAtomics: VkBool32;
  1080. fragmentStoresAndAtomics: VkBool32;
  1081. shaderTessellationAndGeometryPointSize: VkBool32;
  1082. shaderImageGatherExtended: VkBool32;
  1083. shaderStorageImageExtendedFormats: VkBool32;
  1084. shaderStorageImageMultisample: VkBool32;
  1085. shaderStorageImageReadWithoutFormat: VkBool32;
  1086. shaderStorageImageWriteWithoutFormat: VkBool32;
  1087. shaderUniformBufferArrayDynamicIndexing: VkBool32;
  1088. shaderSampledImageArrayDynamicIndexing: VkBool32;
  1089. shaderStorageBufferArrayDynamicIndexing: VkBool32;
  1090. shaderStorageImageArrayDynamicIndexing: VkBool32;
  1091. shaderClipDistance: VkBool32;
  1092. shaderCullDistance: VkBool32;
  1093. shaderFloat64: VkBool32;
  1094. shaderInt64: VkBool32;
  1095. shaderInt16: VkBool32;
  1096. shaderResourceResidency: VkBool32;
  1097. shaderResourceMinLod: VkBool32;
  1098. sparseBinding: VkBool32;
  1099. sparseResidencyBuffer: VkBool32;
  1100. sparseResidencyImage2D: VkBool32;
  1101. sparseResidencyImage3D: VkBool32;
  1102. sparseResidency2Samples: VkBool32;
  1103. sparseResidency4Samples: VkBool32;
  1104. sparseResidency8Samples: VkBool32;
  1105. sparseResidency16Samples: VkBool32;
  1106. sparseResidencyAliased: VkBool32;
  1107. variableMultisampleRate: VkBool32;
  1108. inheritedQueries: VkBool32;
  1109. end;
  1110. PVkPhysicalDeviceFeatures = ^TVkPhysicalDeviceFeatures;
  1111. PPVkPhysicalDeviceFeatures = ^PVkPhysicalDeviceFeatures;
  1112. TVkPhysicalDeviceSparseProperties = record
  1113. residencyStandard2DBlockShape: VkBool32;
  1114. residencyStandard2DMultisampleBlockShape: VkBool32;
  1115. residencyStandard3DBlockShape: VkBool32;
  1116. residencyAlignedMipSize: VkBool32;
  1117. residencyNonResidentStrict: VkBool32;
  1118. end;
  1119. PVkPhysicalDeviceSparseProperties = ^TVkPhysicalDeviceSparseProperties;
  1120. PPVkPhysicalDeviceSparseProperties = ^PVkPhysicalDeviceSparseProperties;
  1121. TVkBufferCopy = record
  1122. srcOffset: VkDeviceSize;
  1123. dstOffset: VkDeviceSize;
  1124. size: VkDeviceSize;
  1125. end;
  1126. PVkBufferCopy = ^TVkBufferCopy;
  1127. PPVkBufferCopy = ^PVkBufferCopy;
  1128. TVkMemoryRequirements = record
  1129. size: VkDeviceSize;
  1130. alignment: VkDeviceSize;
  1131. memoryTypeBits: VkUint32;
  1132. end;
  1133. PVkMemoryRequirements = ^TVkMemoryRequirements;
  1134. PPVkMemoryRequirements = ^PVkMemoryRequirements;
  1135. TVkSubresourceLayout = record
  1136. offset: VkDeviceSize;
  1137. size: VkDeviceSize;
  1138. rowPitch: VkDeviceSize;
  1139. arrayPitch: VkDeviceSize;
  1140. depthPitch: VkDeviceSize;
  1141. end;
  1142. PVkSubresourceLayout = ^TVkSubresourceLayout;
  1143. PPVkSubresourceLayout = ^PVkSubresourceLayout;
  1144. TVkFormatProperties = record
  1145. linearTilingFeatures: VkFormatFeatureFlags;
  1146. optimalTilingFeatures: VkFormatFeatureFlags;
  1147. bufferFeatures: VkFormatFeatureFlags;
  1148. end;
  1149. PVkFormatProperties = ^TVkFormatProperties;
  1150. PPVkFormatProperties = ^PVkFormatProperties;
  1151. TVkImageSubresource = record
  1152. aspectMask: VkImageAspectFlags;
  1153. mipLevel: VkUint32;
  1154. arrayLayer: VkUint32;
  1155. end;
  1156. PVkImageSubresource = ^TVkImageSubresource;
  1157. PPVkImageSubresource = ^PVkImageSubresource;
  1158. TVkImageSubresourceLayers = record
  1159. aspectMask: VkImageAspectFlags;
  1160. mipLevel: VkUint32;
  1161. baseArrayLayer: VkUint32;
  1162. layerCount: VkUint32;
  1163. end;
  1164. PVkImageSubresourceLayers = ^TVkImageSubresourceLayers;
  1165. PPVkImageSubresourceLayers = ^PVkImageSubresourceLayers;
  1166. TVkImageSubresourceRange = record
  1167. aspectMask: VkImageAspectFlags;
  1168. baseMipLevel: VkUint32;
  1169. levelCount: VkUint32;
  1170. baseArrayLayer: VkUint32;
  1171. layerCount: VkUint32;
  1172. end;
  1173. PVkImageSubresourceRange = ^TVkImageSubresourceRange;
  1174. PPVkImageSubresourceRange = ^PVkImageSubresourceRange;
  1175. TVkMemoryHeap = record
  1176. size: VkDeviceSize;
  1177. flags: VkMemoryHeapFlags;
  1178. end;
  1179. PVkMemoryHeap = ^TVkMemoryHeap;
  1180. PPVkMemoryHeap = ^PVkMemoryHeap;
  1181. TVkMemoryType = record
  1182. propertyFlags: VkMemoryPropertyFlags;
  1183. heapIndex: VkUint32;
  1184. end;
  1185. PVkMemoryType = ^TVkMemoryType;
  1186. PPVkMemoryType = ^PVkMemoryType;
  1187. TVkSubpassDependency = record
  1188. srcSubpass: VkUint32;
  1189. dstSubpass: VkUint32;
  1190. srcStageMask: VkPipelineStageFlags;
  1191. dstStageMask: VkPipelineStageFlags;
  1192. srcAccessMask: VkAccessFlags;
  1193. dstAccessMask: VkAccessFlags;
  1194. dependencyFlags: VkDependencyFlags;
  1195. end;
  1196. PVkSubpassDependency = ^TVkSubpassDependency;
  1197. PPVkSubpassDependency = ^PVkSubpassDependency;
  1198. TVkPushConstantRange = record
  1199. stageFlags: VkShaderStageFlags;
  1200. offset: VkUint32;
  1201. size: VkUint32;
  1202. end;
  1203. PVkPushConstantRange = ^TVkPushConstantRange;
  1204. PPVkPushConstantRange = ^PVkPushConstantRange;
  1205. TVkPhysicalDeviceLimits = record
  1206. maxImageDimension1D: VkUint32;
  1207. maxImageDimension2D: VkUint32;
  1208. maxImageDimension3D: VkUint32;
  1209. maxImageDimensionCube: VkUint32;
  1210. maxImageArrayLayers: VkUint32;
  1211. maxTexelBufferElements: VkUint32;
  1212. maxUniformBufferRange: VkUint32;
  1213. maxStorageBufferRange: VkUint32;
  1214. maxPushConstantsSize: VkUint32;
  1215. maxMemoryAllocationCount: VkUint32;
  1216. maxSamplerAllocationCount: VkUint32;
  1217. bufferImageGranularity: VkDeviceSize;
  1218. sparseAddressSpaceSize: VkDeviceSize;
  1219. maxBoundDescriptorSets: VkUint32;
  1220. maxPerStageDescriptorSamplers: VkUint32;
  1221. maxPerStageDescriptorUniformBuffers: VkUint32;
  1222. maxPerStageDescriptorStorageBuffers: VkUint32;
  1223. maxPerStageDescriptorSampledImages: VkUint32;
  1224. maxPerStageDescriptorStorageImages: VkUint32;
  1225. maxPerStageDescriptorInputAttachments: VkUint32;
  1226. maxPerStageResources: VkUint32;
  1227. maxDescriptorSetSamplers: VkUint32;
  1228. maxDescriptorSetUniformBuffers: VkUint32;
  1229. maxDescriptorSetUniformBuffersDynamic: VkUint32;
  1230. maxDescriptorSetStorageBuffers: VkUint32;
  1231. maxDescriptorSetStorageBuffersDynamic: VkUint32;
  1232. maxDescriptorSetSampledImages: VkUint32;
  1233. maxDescriptorSetStorageImages: VkUint32;
  1234. maxDescriptorSetInputAttachments: VkUint32;
  1235. maxVertexInputAttributes: VkUint32;
  1236. maxVertexInputBindings: VkUint32;
  1237. maxVertexInputAttributeOffset: VkUint32;
  1238. maxVertexInputBindingStride: VkUint32;
  1239. maxVertexOutputComponents: VkUint32;
  1240. maxTessellationGenerationLevel: VkUint32;
  1241. maxTessellationPatchSize: VkUint32;
  1242. maxTessellationControlPerVertexInputComponents: VkUint32;
  1243. maxTessellationControlPerVertexOutputComponents: VkUint32;
  1244. maxTessellationControlPerPatchOutputComponents: VkUint32;
  1245. maxTessellationControlTotalOutputComponents: VkUint32;
  1246. maxTessellationEvaluationInputComponents: VkUint32;
  1247. maxTessellationEvaluationOutputComponents: VkUint32;
  1248. maxGeometryShaderInvocations: VkUint32;
  1249. maxGeometryInputComponents: VkUint32;
  1250. maxGeometryOutputComponents: VkUint32;
  1251. maxGeometryOutputVertices: VkUint32;
  1252. maxGeometryTotalOutputComponents: VkUint32;
  1253. maxFragmentInputComponents: VkUint32;
  1254. maxFragmentOutputAttachments: VkUint32;
  1255. maxFragmentDualSrcAttachments: VkUint32;
  1256. maxFragmentCombinedOutputResources: VkUint32;
  1257. maxComputeSharedMemorySize: VkUint32;
  1258. maxComputeWorkGroupCount: array[0..3] of VkUint32;
  1259. maxComputeWorkGroupInvocations: VkUint32;
  1260. maxComputeWorkGroupSize: array[0..3] of VkUint32;
  1261. subPixelPrecisionBits: VkUint32;
  1262. subTexelPrecisionBits: VkUint32;
  1263. mipmapPrecisionBits: VkUint32;
  1264. maxDrawIndexedIndexValue: VkUint32;
  1265. maxDrawIndirectCount: VkUint32;
  1266. maxSamplerLodBias: VkFloat;
  1267. maxSamplerAnisotropy: VkFloat;
  1268. maxViewports: VkUint32;
  1269. maxViewportDimensions: array[0..2] of VkUint32;
  1270. viewportBoundsRange: array[0..2] of VkFloat;
  1271. viewportSubPixelBits: VkUint32;
  1272. minMemoryMapAlignment: VkSize;
  1273. minTexelBufferOffsetAlignment: VkDeviceSize;
  1274. minUniformBufferOffsetAlignment: VkDeviceSize;
  1275. minStorageBufferOffsetAlignment: VkDeviceSize;
  1276. minTexelOffset: VkInt32;
  1277. maxTexelOffset: VkUint32;
  1278. minTexelGatherOffset: VkInt32;
  1279. maxTexelGatherOffset: VkUint32;
  1280. minInterpolationOffset: VkFloat;
  1281. maxInterpolationOffset: VkFloat;
  1282. subPixelInterpolationOffsetBits: VkUint32;
  1283. maxFramebufferWidth: VkUint32;
  1284. maxFramebufferHeight: VkUint32;
  1285. maxFramebufferLayers: VkUint32;
  1286. framebufferColorSampleCounts: VkSampleCountFlags;
  1287. framebufferDepthSampleCounts: VkSampleCountFlags;
  1288. framebufferStencilSampleCounts: VkSampleCountFlags;
  1289. framebufferNoAttachmentsSampleCounts: VkSampleCountFlags;
  1290. maxColorAttachments: VkUint32;
  1291. sampledImageColorSampleCounts: VkSampleCountFlags;
  1292. sampledImageIntegerSampleCounts: VkSampleCountFlags;
  1293. sampledImageDepthSampleCounts: VkSampleCountFlags;
  1294. sampledImageStencilSampleCounts: VkSampleCountFlags;
  1295. storageImageSampleCounts: VkSampleCountFlags;
  1296. maxSampleMaskWords: VkUint32;
  1297. timestampComputeAndGraphics: VkBool32;
  1298. timestampPeriod: VkFloat;
  1299. maxClipDistances: VkUint32;
  1300. maxCullDistances: VkUint32;
  1301. maxCombinedClipAndCullDistances: VkUint32;
  1302. discreteQueuePriorities: VkUint32;
  1303. pointSizeRange: array[0..2] of VkFloat;
  1304. lineWidthRange: array[0..2] of VkFloat;
  1305. pointSizeGranularity: VkFloat;
  1306. lineWidthGranularity: VkFloat;
  1307. strictLines: VkBool32;
  1308. standardSampleLocations: VkBool32;
  1309. optimalBufferCopyOffsetAlignment: VkDeviceSize;
  1310. optimalBufferCopyRowPitchAlignment: VkDeviceSize;
  1311. nonCoherentAtomSize: VkDeviceSize;
  1312. end;
  1313. PVkPhysicalDeviceLimits = ^TVkPhysicalDeviceLimits;
  1314. PPVkPhysicalDeviceLimits = ^PVkPhysicalDeviceLimits;
  1315. TVkDescriptorBufferInfo = record
  1316. buffer: VkBuffer;
  1317. offset: VkDeviceSize;
  1318. range: VkDeviceSize;
  1319. end;
  1320. PVkDescriptorBufferInfo = ^TVkDescriptorBufferInfo;
  1321. PPVkDescriptorBufferInfo = ^PVkDescriptorBufferInfo;
  1322. TVkSparseMemoryBind = record
  1323. resourceOffset: VkDeviceSize;
  1324. size: VkDeviceSize;
  1325. memory: VkDeviceMemory;
  1326. memoryOffset: VkDeviceSize;
  1327. flags: VkSparseMemoryBindFlags;
  1328. end;
  1329. PVkSparseMemoryBind = ^TVkSparseMemoryBind;
  1330. PPVkSparseMemoryBind = ^PVkSparseMemoryBind;
  1331. TVkComponentMapping = record
  1332. r: TVkComponentSwizzle;
  1333. g: TVkComponentSwizzle;
  1334. b: TVkComponentSwizzle;
  1335. a: TVkComponentSwizzle;
  1336. end;
  1337. PVkComponentMapping = ^TVkComponentMapping;
  1338. PPVkComponentMapping = ^PVkComponentMapping;
  1339. TVkAttachmentReference = record
  1340. attachment: VkUint32;
  1341. layout: TVkImageLayout;
  1342. end;
  1343. PVkAttachmentReference = ^TVkAttachmentReference;
  1344. PPVkAttachmentReference = ^PVkAttachmentReference;
  1345. TVkDescriptorPoolSize = record
  1346. dType: TVkDescriptorType;
  1347. descriptorCount: VkUint32;
  1348. end;
  1349. PVkDescriptorPoolSize = ^TVkDescriptorPoolSize;
  1350. PPVkDescriptorPoolSize = ^PVkDescriptorPoolSize;
  1351. TVkStencilOpState = record
  1352. failOp: TVkStencilOp;
  1353. passOp: TVkStencilOp;
  1354. depthFailOp: TVkStencilOp;
  1355. compareOp: TVkCompareOp;
  1356. compareMask: VkUint32;
  1357. writeMask: VkUint32;
  1358. reference: VkUint32;
  1359. end;
  1360. PVkStencilOpState = ^TVkStencilOpState;
  1361. PPVkStencilOpState = ^PVkStencilOpState;
  1362. TVkVertexInputAttributeDescription = record
  1363. location: VkUint32;
  1364. binding: VkUint32;
  1365. format: TVkFormat;
  1366. offset: VkUint32;
  1367. end;
  1368. PVkVertexInputAttributeDescription = ^TVkVertexInputAttributeDescription;
  1369. PPVkVertexInputAttributeDescription = ^PVkVertexInputAttributeDescription;
  1370. TVkVertexInputBindingDescription = record
  1371. binding: VkUint32;
  1372. stride: VkUint32;
  1373. inputRate: TVkVertexInputRate;
  1374. end;
  1375. PVkVertexInputBindingDescription = ^TVkVertexInputBindingDescription;
  1376. PPVkVertexInputBindingDescription = ^PVkVertexInputBindingDescription;
  1377. TVkApplicationInfo = record
  1378. sType: TVkStructureType;
  1379. pNext: PVkVoid;
  1380. pApplicationName: PVkChar;
  1381. applicationVersion: VkUint32;
  1382. pEngineName: PVkChar;
  1383. engineVersion: VkUint32;
  1384. apiVersion: VkUint32;
  1385. end;
  1386. PVkApplicationInfo = ^TVkApplicationInfo;
  1387. PPVkApplicationInfo = ^PVkApplicationInfo;
  1388. TVkCommandBufferAllocateInfo = record
  1389. sType: TVkStructureType;
  1390. pNext: PVkVoid;
  1391. commandPool: VkCommandPool;
  1392. level: TVkCommandBufferLevel;
  1393. commandBufferCount: VkUint32;
  1394. end;
  1395. PVkCommandBufferAllocateInfo = ^TVkCommandBufferAllocateInfo;
  1396. PPVkCommandBufferAllocateInfo = ^PVkCommandBufferAllocateInfo;
  1397. TVkCopyDescriptorSet = record
  1398. sType: TVkStructureType;
  1399. pNext: PVkVoid;
  1400. srcSet: VkDescriptorSet;
  1401. srcBinding: VkUint32;
  1402. srcArrayElement: VkUint32;
  1403. dstSet: VkDescriptorSet;
  1404. dstBinding: VkUint32;
  1405. dstArrayElement: VkUint32;
  1406. descriptorCount: VkUint32;
  1407. end;
  1408. PVkCopyDescriptorSet = ^TVkCopyDescriptorSet;
  1409. PPVkCopyDescriptorSet = ^PVkCopyDescriptorSet;
  1410. TVkDescriptorSetAllocateInfo = record
  1411. sType: TVkStructureType;
  1412. pNext: PVkVoid;
  1413. descriptorPool: VkDescriptorPool;
  1414. descriptorSetCount: VkUint32;
  1415. pSetLayouts: PVkDescriptorSetLayout;
  1416. end;
  1417. PVkDescriptorSetAllocateInfo = ^TVkDescriptorSetAllocateInfo;
  1418. PPVkDescriptorSetAllocateInfo = ^PVkDescriptorSetAllocateInfo;
  1419. TVkDescriptorImageInfo = record
  1420. sampler: VkSampler;
  1421. imageView: VkImageView;
  1422. imageLayout: TVkImageLayout;
  1423. end;
  1424. PVkDescriptorImageInfo = ^TVkDescriptorImageInfo;
  1425. PPVkDescriptorImageInfo = ^PVkDescriptorImageInfo;
  1426. TVkClearValue = record
  1427. case Integer of
  1428. 000: (color: TVkClearColorValue);
  1429. 001: (depthStencil: TVkClearDepthStencilValue);
  1430. end;
  1431. PVkClearValue = ^TVkClearValue;
  1432. PPVkClearValue = ^PVkClearValue;
  1433. TVkRect2D = record
  1434. offset: TVkOffset2D;
  1435. extent: TVkExtent2D;
  1436. end;
  1437. PVkRect2D = ^TVkRect2D;
  1438. PPVkRect2D = ^PVkRect2D;
  1439. TVkSpecializationInfo = record
  1440. mapEntryCount: VkUint32;
  1441. pMapEntries: PVkSpecializationMapEntry;
  1442. dataSize: VkSize;
  1443. pData: PVkVoid;
  1444. end;
  1445. PVkSpecializationInfo = ^TVkSpecializationInfo;
  1446. PPVkSpecializationInfo = ^PVkSpecializationInfo;
  1447. TVkBufferMemoryBarrier = record
  1448. sType: TVkStructureType;
  1449. pNext: PVkVoid;
  1450. srcAccessMask: VkAccessFlags;
  1451. dstAccessMask: VkAccessFlags;
  1452. srcQueueFamilyIndex: VkUint32;
  1453. dstQueueFamilyIndex: VkUint32;
  1454. buffer: VkBuffer;
  1455. offset: VkDeviceSize;
  1456. size: VkDeviceSize;
  1457. end;
  1458. PVkBufferMemoryBarrier = ^TVkBufferMemoryBarrier;
  1459. PPVkBufferMemoryBarrier = ^PVkBufferMemoryBarrier;
  1460. TVkBufferCreateInfo = record
  1461. sType: TVkStructureType;
  1462. pNext: PVkVoid;
  1463. flags: VkBufferCreateFlags;
  1464. size: VkDeviceSize;
  1465. usage: VkBufferUsageFlags;
  1466. sharingMode: TVkSharingMode;
  1467. queueFamilyIndexCount: VkUint32;
  1468. pQueueFamilyIndices: PVkUint32;
  1469. end;
  1470. PVkBufferCreateInfo = ^TVkBufferCreateInfo;
  1471. PPVkBufferCreateInfo = ^PVkBufferCreateInfo;
  1472. TVkBufferViewCreateInfo = record
  1473. sType: TVkStructureType;
  1474. pNext: PVkVoid;
  1475. flags: VkBufferViewCreateFlags;
  1476. buffer: VkBuffer;
  1477. format: TVkFormat;
  1478. offset: VkDeviceSize;
  1479. range: VkDeviceSize;
  1480. end;
  1481. PVkBufferViewCreateInfo = ^TVkBufferViewCreateInfo;
  1482. PPVkBufferViewCreateInfo = ^PVkBufferViewCreateInfo;
  1483. TVkPipelineColorBlendAttachmentState = record
  1484. blendEnable: VkBool32;
  1485. srcColorBlendFactor: TVkBlendFactor;
  1486. dstColorBlendFactor: TVkBlendFactor;
  1487. colorBlendOp: TVkBlendOp;
  1488. srcAlphaBlendFactor: TVkBlendFactor;
  1489. dstAlphaBlendFactor: TVkBlendFactor;
  1490. alphaBlendOp: TVkBlendOp;
  1491. colorWriteMask: VkColorComponentFlags;
  1492. end;
  1493. PVkPipelineColorBlendAttachmentState = ^TVkPipelineColorBlendAttachmentState;
  1494. PPVkPipelineColorBlendAttachmentState = ^PVkPipelineColorBlendAttachmentState;
  1495. TVkCommandPoolCreateInfo = record
  1496. sType: TVkStructureType;
  1497. pNext: PVkVoid;
  1498. flags: VkCommandPoolCreateFlags;
  1499. queueFamilyIndex: VkUint32;
  1500. end;
  1501. PVkCommandPoolCreateInfo = ^TVkCommandPoolCreateInfo;
  1502. PPVkCommandPoolCreateInfo = ^PVkCommandPoolCreateInfo;
  1503. TVkDeviceQueueCreateInfo = record
  1504. sType: TVkStructureType;
  1505. pNext: PVkVoid;
  1506. flags: VkDeviceQueueCreateFlags;
  1507. queueFamilyIndex: VkUint32;
  1508. queueCount: VkUint32;
  1509. pQueuePriorities: PVkFloat;
  1510. end;
  1511. PVkDeviceQueueCreateInfo = ^TVkDeviceQueueCreateInfo;
  1512. PPVkDeviceQueueCreateInfo = ^PVkDeviceQueueCreateInfo;
  1513. TVkCommandBufferInheritanceInfo = record
  1514. sType: TVkStructureType;
  1515. pNext: PVkVoid;
  1516. renderPass: VkRenderPass;
  1517. subpass: VkUint32;
  1518. framebuffer: VkFramebuffer;
  1519. occlusionQueryEnable: VkBool32;
  1520. queryFlags: VkQueryControlFlags;
  1521. pipelineStatistics: VkQueryPipelineStatisticFlags;
  1522. end;
  1523. PVkCommandBufferInheritanceInfo = ^TVkCommandBufferInheritanceInfo;
  1524. PPVkCommandBufferInheritanceInfo = ^PVkCommandBufferInheritanceInfo;
  1525. TVkQueueFamilyProperties = record
  1526. queueFlags: VkQueueFlags;
  1527. queueCount: VkUint32;
  1528. timestampValidBits: VkUint32;
  1529. minImageTransferGranularity: TVkExtent3D;
  1530. end;
  1531. PVkQueueFamilyProperties = ^TVkQueueFamilyProperties;
  1532. PPVkQueueFamilyProperties = ^PVkQueueFamilyProperties;
  1533. TVkImageFormatProperties = record
  1534. maxExtent: TVkExtent3D;
  1535. maxMipLevels: VkUint32;
  1536. maxArrayLayers: VkUint32;
  1537. sampleCounts: VkSampleCountFlags;
  1538. maxResourceSize: VkDeviceSize;
  1539. end;
  1540. PVkImageFormatProperties = ^TVkImageFormatProperties;
  1541. PPVkImageFormatProperties = ^PVkImageFormatProperties;
  1542. TVkDescriptorSetLayoutBinding = record
  1543. binding: VkUint32;
  1544. descriptorType: TVkDescriptorType;
  1545. descriptorCount: VkUint32;
  1546. stageFlags: VkShaderStageFlags;
  1547. pImmutableSamplers: PVkSampler;
  1548. end;
  1549. PVkDescriptorSetLayoutBinding = ^TVkDescriptorSetLayoutBinding;
  1550. PPVkDescriptorSetLayoutBinding = ^PVkDescriptorSetLayoutBinding;
  1551. TVkSparseImageFormatProperties = record
  1552. aspectMask: VkImageAspectFlags;
  1553. imageGranularity: TVkExtent3D;
  1554. flags: VkSparseImageFormatFlags;
  1555. end;
  1556. PVkSparseImageFormatProperties = ^TVkSparseImageFormatProperties;
  1557. PPVkSparseImageFormatProperties = ^PVkSparseImageFormatProperties;
  1558. TVkSparseImageMemoryBind = record
  1559. subresource: TVkImageSubresource;
  1560. offset: TVkOffset3D;
  1561. extent: TVkExtent3D;
  1562. memory: VkDeviceMemory;
  1563. memoryOffset: VkDeviceSize;
  1564. flags: VkSparseMemoryBindFlags;
  1565. end;
  1566. PVkSparseImageMemoryBind = ^TVkSparseImageMemoryBind;
  1567. PPVkSparseImageMemoryBind = ^PVkSparseImageMemoryBind;
  1568. TVkBufferImageCopy = record
  1569. bufferOffset: VkDeviceSize;
  1570. bufferRowLength: VkUint32;
  1571. bufferImageHeight: VkUint32;
  1572. imageSubresource: TVkImageSubresourceLayers;
  1573. imageOffset: TVkOffset3D;
  1574. imageExtent: TVkExtent3D;
  1575. end;
  1576. PVkBufferImageCopy = ^TVkBufferImageCopy;
  1577. PPVkBufferImageCopy = ^PVkBufferImageCopy;
  1578. TVkImageBlit = record
  1579. srcSubresource: TVkImageSubresourceLayers;
  1580. srcOffsets: array[0..2] of TVkOffset3D;
  1581. dstSubresource: TVkImageSubresourceLayers;
  1582. dstOffsets: array[0..2] of TVkOffset3D;
  1583. end;
  1584. PVkImageBlit = ^TVkImageBlit;
  1585. PPVkImageBlit = ^PVkImageBlit;
  1586. TVkImageCopy = record
  1587. srcSubresource: TVkImageSubresourceLayers;
  1588. srcOffset: TVkOffset3D;
  1589. dstSubresource: TVkImageSubresourceLayers;
  1590. dstOffset: TVkOffset3D;
  1591. extent: TVkExtent3D;
  1592. end;
  1593. PVkImageCopy = ^TVkImageCopy;
  1594. PPVkImageCopy = ^PVkImageCopy;
  1595. TVkImageResolve = record
  1596. srcSubresource: TVkImageSubresourceLayers;
  1597. srcOffset: TVkOffset3D;
  1598. dstSubresource: TVkImageSubresourceLayers;
  1599. dstOffset: TVkOffset3D;
  1600. extent: TVkExtent3D;
  1601. end;
  1602. PVkImageResolve = ^TVkImageResolve;
  1603. PPVkImageResolve = ^PVkImageResolve;
  1604. TVkPhysicalDeviceMemoryProperties = record
  1605. memoryTypeCount: VkUint32;
  1606. memoryTypes: array[0..VK_MAX_MEMORY_TYPES-1] of TVkMemoryType;
  1607. memoryHeapCount: VkUint32;
  1608. memoryHeaps: array[0..VK_MAX_MEMORY_HEAPS-1] of TVkMemoryHeap;
  1609. end;
  1610. PVkPhysicalDeviceMemoryProperties = ^TVkPhysicalDeviceMemoryProperties;
  1611. PPVkPhysicalDeviceMemoryProperties = ^PVkPhysicalDeviceMemoryProperties;
  1612. TVkPhysicalDeviceProperties = record
  1613. apiVersion: VkUint32;
  1614. driverVersion: VkUint32;
  1615. vendorID: VkUint32;
  1616. deviceID: VkUint32;
  1617. deviceType: TVkPhysicalDeviceType;
  1618. deviceName: array[0..VK_MAX_PHYSICAL_DEVICE_NAME_SIZE-1] of VkChar;
  1619. pipelineCacheUUID: array[0..VK_UUID_SIZE-1] of VkUint8;
  1620. limits: TVkPhysicalDeviceLimits;
  1621. sparseProperties: TVkPhysicalDeviceSparseProperties;
  1622. end;
  1623. PVkPhysicalDeviceProperties = ^TVkPhysicalDeviceProperties;
  1624. PPVkPhysicalDeviceProperties = ^PVkPhysicalDeviceProperties;
  1625. TVkSparseBufferMemoryBindInfo = record
  1626. buffer: VkBuffer;
  1627. bindCount: VkUint32;
  1628. pBinds: PVkSparseMemoryBind;
  1629. end;
  1630. PVkSparseBufferMemoryBindInfo = ^TVkSparseBufferMemoryBindInfo;
  1631. PPVkSparseBufferMemoryBindInfo = ^PVkSparseBufferMemoryBindInfo;
  1632. TVkSparseImageOpaqueMemoryBindInfo = record
  1633. image: VkImage;
  1634. bindCount: VkUint32;
  1635. pBinds: PVkSparseMemoryBind;
  1636. end;
  1637. PVkSparseImageOpaqueMemoryBindInfo = ^TVkSparseImageOpaqueMemoryBindInfo;
  1638. PPVkSparseImageOpaqueMemoryBindInfo = ^PVkSparseImageOpaqueMemoryBindInfo;
  1639. TVkSubpassDescription = record
  1640. flags: VkSubpassDescriptionFlags;
  1641. pipelineBindPoint: TVkPipelineBindPoint;
  1642. inputAttachmentCount: VkUint32;
  1643. pInputAttachments: PVkAttachmentReference;
  1644. colorAttachmentCount: VkUint32;
  1645. pColorAttachments: PVkAttachmentReference;
  1646. pResolveAttachments: PVkAttachmentReference;
  1647. pDepthStencilAttachment: PVkAttachmentReference;
  1648. preserveAttachmentCount: VkUint32;
  1649. pPreserveAttachments: PVkUint32;
  1650. end;
  1651. PVkSubpassDescription = ^TVkSubpassDescription;
  1652. PPVkSubpassDescription = ^PVkSubpassDescription;
  1653. TVkDescriptorPoolCreateInfo = record
  1654. sType: TVkStructureType;
  1655. pNext: PVkVoid;
  1656. flags: VkDescriptorPoolCreateFlags;
  1657. maxSets: VkUint32;
  1658. poolSizeCount: VkUint32;
  1659. pPoolSizes: PVkDescriptorPoolSize;
  1660. end;
  1661. PVkDescriptorPoolCreateInfo = ^TVkDescriptorPoolCreateInfo;
  1662. PPVkDescriptorPoolCreateInfo = ^PVkDescriptorPoolCreateInfo;
  1663. TVkAllocationCallbacks = record
  1664. pUserData: PVkVoid;
  1665. pfnAllocation: TvkAllocationFunction;
  1666. pfnReallocation: TvkReallocationFunction;
  1667. pfnFree: TvkFreeFunction;
  1668. pfnInternalAllocation: TvkInternalAllocationNotification;
  1669. pfnInternalFree: TvkInternalFreeNotification;
  1670. end;
  1671. PVkAllocationCallbacks = ^TVkAllocationCallbacks;
  1672. PPVkAllocationCallbacks = ^PVkAllocationCallbacks;
  1673. TVkClearAttachment = record
  1674. aspectMask: VkImageAspectFlags;
  1675. colorAttachment: VkUint32;
  1676. clearValue: TVkClearValue;
  1677. end;
  1678. PVkClearAttachment = ^TVkClearAttachment;
  1679. PPVkClearAttachment = ^PVkClearAttachment;
  1680. TVkClearRect = record
  1681. rect: TVkRect2D;
  1682. baseArrayLayer: VkUint32;
  1683. layerCount: VkUint32;
  1684. end;
  1685. PVkClearRect = ^TVkClearRect;
  1686. PPVkClearRect = ^PVkClearRect;
  1687. TVkDeviceCreateInfo = record
  1688. sType: TVkStructureType;
  1689. pNext: PVkVoid;
  1690. flags: VkDeviceCreateFlags;
  1691. queueCreateInfoCount: VkUint32;
  1692. pQueueCreateInfos: PVkDeviceQueueCreateInfo;
  1693. enabledLayerCount: VkUint32;
  1694. ppEnabledLayerNames: PPVkChar;
  1695. enabledExtensionCount: VkUint32;
  1696. ppEnabledExtensionNames: PPVkChar;
  1697. pEnabledFeatures: PVkPhysicalDeviceFeatures;
  1698. end;
  1699. PVkDeviceCreateInfo = ^TVkDeviceCreateInfo;
  1700. PPVkDeviceCreateInfo = ^PVkDeviceCreateInfo;
  1701. TVkCommandBufferBeginInfo = record
  1702. sType: TVkStructureType;
  1703. pNext: PVkVoid;
  1704. flags: VkCommandBufferUsageFlags;
  1705. pInheritanceInfo: PVkCommandBufferInheritanceInfo;
  1706. end;
  1707. PVkCommandBufferBeginInfo = ^TVkCommandBufferBeginInfo;
  1708. PPVkCommandBufferBeginInfo = ^PVkCommandBufferBeginInfo;
  1709. TVkDescriptorSetLayoutCreateInfo = record
  1710. sType: TVkStructureType;
  1711. pNext: PVkVoid;
  1712. flags: VkDescriptorSetLayoutCreateFlags;
  1713. bindingCount: VkUint32;
  1714. pBindings: PVkDescriptorSetLayoutBinding;
  1715. end;
  1716. PVkDescriptorSetLayoutCreateInfo = ^TVkDescriptorSetLayoutCreateInfo;
  1717. PPVkDescriptorSetLayoutCreateInfo = ^PVkDescriptorSetLayoutCreateInfo;
  1718. TVkSparseImageMemoryRequirements = record
  1719. formatProperties: TVkSparseImageFormatProperties;
  1720. imageMipTailFirstLod: VkUint32;
  1721. imageMipTailSize: VkDeviceSize;
  1722. imageMipTailOffset: VkDeviceSize;
  1723. imageMipTailStride: VkDeviceSize;
  1724. end;
  1725. PVkSparseImageMemoryRequirements = ^TVkSparseImageMemoryRequirements;
  1726. PPVkSparseImageMemoryRequirements = ^PVkSparseImageMemoryRequirements;
  1727. TVkSparseImageMemoryBindInfo = record
  1728. image: VkImage;
  1729. bindCount: VkUint32;
  1730. pBinds: PVkSparseImageMemoryBind;
  1731. end;
  1732. PVkSparseImageMemoryBindInfo = ^TVkSparseImageMemoryBindInfo;
  1733. PPVkSparseImageMemoryBindInfo = ^PVkSparseImageMemoryBindInfo;
  1734. TVkBindSparseInfo = record
  1735. sType: TVkStructureType;
  1736. pNext: PVkVoid;
  1737. waitSemaphoreCount: VkUint32;
  1738. pWaitSemaphores: PVkSemaphore;
  1739. bufferBindCount: VkUint32;
  1740. pBufferBinds: PVkSparseBufferMemoryBindInfo;
  1741. imageOpaqueBindCount: VkUint32;
  1742. pImageOpaqueBinds: PVkSparseImageOpaqueMemoryBindInfo;
  1743. imageBindCount: VkUint32;
  1744. pImageBinds: PVkSparseImageMemoryBindInfo;
  1745. signalSemaphoreCount: VkUint32;
  1746. pSignalSemaphores: PVkSemaphore;
  1747. end;
  1748. PVkBindSparseInfo = ^TVkBindSparseInfo;
  1749. PPVkBindSparseInfo = ^PVkBindSparseInfo;
  1750. TVkMappedMemoryRange = record
  1751. sType: TVkStructureType;
  1752. pNext: PVkVoid;
  1753. memory: VkDeviceMemory;
  1754. offset: VkDeviceSize;
  1755. size: VkDeviceSize;
  1756. end;
  1757. PVkMappedMemoryRange = ^TVkMappedMemoryRange;
  1758. PPVkMappedMemoryRange = ^PVkMappedMemoryRange;
  1759. TVkMemoryAllocateInfo = record
  1760. sType: TVkStructureType;
  1761. pNext: PVkVoid;
  1762. allocationSize: VkDeviceSize;
  1763. memoryTypeIndex: VkUint32;
  1764. end;
  1765. PVkMemoryAllocateInfo = ^TVkMemoryAllocateInfo;
  1766. PPVkMemoryAllocateInfo = ^PVkMemoryAllocateInfo;
  1767. TVkMemoryBarrier = record
  1768. sType: TVkStructureType;
  1769. pNext: PVkVoid;
  1770. srcAccessMask: VkAccessFlags;
  1771. dstAccessMask: VkAccessFlags;
  1772. end;
  1773. PVkMemoryBarrier = ^TVkMemoryBarrier;
  1774. PPVkMemoryBarrier = ^PVkMemoryBarrier;
  1775. TVkAttachmentDescription = record
  1776. flags: VkAttachmentDescriptionFlags;
  1777. format: TVkFormat;
  1778. samples: TVkSampleCountFlagBits;
  1779. loadOp: TVkAttachmentLoadOp;
  1780. storeOp: TVkAttachmentStoreOp;
  1781. stencilLoadOp: TVkAttachmentLoadOp;
  1782. stencilStoreOp: TVkAttachmentStoreOp;
  1783. initialLayout: TVkImageLayout;
  1784. finalLayout: TVkImageLayout;
  1785. end;
  1786. PVkAttachmentDescription = ^TVkAttachmentDescription;
  1787. PPVkAttachmentDescription = ^PVkAttachmentDescription;
  1788. TVkEventCreateInfo = record
  1789. sType: TVkStructureType;
  1790. pNext: PVkVoid;
  1791. flags: VkEventCreateFlags;
  1792. end;
  1793. PVkEventCreateInfo = ^TVkEventCreateInfo;
  1794. PPVkEventCreateInfo = ^PVkEventCreateInfo;
  1795. TVkFenceCreateInfo = record
  1796. sType: TVkStructureType;
  1797. pNext: PVkVoid;
  1798. flags: VkFenceCreateFlags;
  1799. end;
  1800. PVkFenceCreateInfo = ^TVkFenceCreateInfo;
  1801. PPVkFenceCreateInfo = ^PVkFenceCreateInfo;
  1802. TVkFramebufferCreateInfo = record
  1803. sType: TVkStructureType;
  1804. pNext: PVkVoid;
  1805. flags: VkFramebufferCreateFlags;
  1806. renderPass: VkRenderPass;
  1807. attachmentCount: VkUint32;
  1808. pAttachments: PVkImageView;
  1809. width: VkUint32;
  1810. height: VkUint32;
  1811. layers: VkUint32;
  1812. end;
  1813. PVkFramebufferCreateInfo = ^TVkFramebufferCreateInfo;
  1814. PPVkFramebufferCreateInfo = ^PVkFramebufferCreateInfo;
  1815. TVkImageCreateInfo = record
  1816. sType: TVkStructureType;
  1817. pNext: PVkVoid;
  1818. flags: VkImageCreateFlags;
  1819. imageType: TVkImageType;
  1820. format: TVkFormat;
  1821. extent: TVkExtent3D;
  1822. mipLevels: VkUint32;
  1823. arrayLayers: VkUint32;
  1824. samples: TVkSampleCountFlagBits;
  1825. tiling: TVkImageTiling;
  1826. usage: VkImageUsageFlags;
  1827. sharingMode: TVkSharingMode;
  1828. queueFamilyIndexCount: VkUint32;
  1829. pQueueFamilyIndices: PVkUint32;
  1830. initialLayout: TVkImageLayout;
  1831. end;
  1832. PVkImageCreateInfo = ^TVkImageCreateInfo;
  1833. PPVkImageCreateInfo = ^PVkImageCreateInfo;
  1834. TVkPipelineCacheCreateInfo = record
  1835. sType: TVkStructureType;
  1836. pNext: PVkVoid;
  1837. flags: VkPipelineCacheCreateFlags;
  1838. initialDataSize: VkSize;
  1839. pInitialData: PVkVoid;
  1840. end;
  1841. PVkPipelineCacheCreateInfo = ^TVkPipelineCacheCreateInfo;
  1842. PPVkPipelineCacheCreateInfo = ^PVkPipelineCacheCreateInfo;
  1843. TVkPipelineDynamicStateCreateInfo = record
  1844. sType: TVkStructureType;
  1845. pNext: PVkVoid;
  1846. flags: VkPipelineDynamicStateCreateFlags;
  1847. dynamicStateCount: VkUint32;
  1848. pDynamicStates: PVkDynamicState;
  1849. end;
  1850. PVkPipelineDynamicStateCreateInfo = ^TVkPipelineDynamicStateCreateInfo;
  1851. PPVkPipelineDynamicStateCreateInfo = ^PVkPipelineDynamicStateCreateInfo;
  1852. TVkPipelineInputAssemblyStateCreateInfo = record
  1853. sType: TVkStructureType;
  1854. pNext: PVkVoid;
  1855. flags: VkPipelineInputAssemblyStateCreateFlags;
  1856. topology: TVkPrimitiveTopology;
  1857. primitiveRestartEnable: VkBool32;
  1858. end;
  1859. PVkPipelineInputAssemblyStateCreateInfo = ^TVkPipelineInputAssemblyStateCreateInfo;
  1860. PPVkPipelineInputAssemblyStateCreateInfo = ^PVkPipelineInputAssemblyStateCreateInfo;
  1861. TVkPipelineMultisampleStateCreateInfo = record
  1862. sType: TVkStructureType;
  1863. pNext: PVkVoid;
  1864. flags: VkPipelineMultisampleStateCreateFlags;
  1865. rasterizationSamples: TVkSampleCountFlagBits;
  1866. sampleShadingEnable: VkBool32;
  1867. minSampleShading: VkFloat;
  1868. pSampleMask: PVkSampleMask;
  1869. alphaToCoverageEnable: VkBool32;
  1870. alphaToOneEnable: VkBool32;
  1871. end;
  1872. PVkPipelineMultisampleStateCreateInfo = ^TVkPipelineMultisampleStateCreateInfo;
  1873. PPVkPipelineMultisampleStateCreateInfo = ^PVkPipelineMultisampleStateCreateInfo;
  1874. TVkPipelineRasterizationStateCreateInfo = record
  1875. sType: TVkStructureType;
  1876. pNext: PVkVoid;
  1877. flags: VkPipelineRasterizationStateCreateFlags;
  1878. depthClampEnable: VkBool32;
  1879. rasterizerDiscardEnable: VkBool32;
  1880. polygonMode: TVkPolygonMode;
  1881. cullMode: VkCullModeFlags;
  1882. frontFace: TVkFrontFace;
  1883. depthBiasEnable: VkBool32;
  1884. depthBiasConstantFactor: VkFloat;
  1885. depthBiasClamp: VkFloat;
  1886. depthBiasSlopeFactor: VkFloat;
  1887. lineWidth: VkFloat;
  1888. end;
  1889. PVkPipelineRasterizationStateCreateInfo = ^TVkPipelineRasterizationStateCreateInfo;
  1890. PPVkPipelineRasterizationStateCreateInfo = ^PVkPipelineRasterizationStateCreateInfo;
  1891. TVkSubmitInfo = record
  1892. sType: TVkStructureType;
  1893. pNext: PVkVoid;
  1894. waitSemaphoreCount: VkUint32;
  1895. pWaitSemaphores: PVkSemaphore;
  1896. pWaitDstStageMask: PVkPipelineStageFlags;
  1897. commandBufferCount: VkUint32;
  1898. pCommandBuffers: PVkCommandBuffer;
  1899. signalSemaphoreCount: VkUint32;
  1900. pSignalSemaphores: PVkSemaphore;
  1901. end;
  1902. PVkSubmitInfo = ^TVkSubmitInfo;
  1903. PPVkSubmitInfo = ^PVkSubmitInfo;
  1904. TVkPipelineTessellationStateCreateInfo = record
  1905. sType: TVkStructureType;
  1906. pNext: PVkVoid;
  1907. flags: VkPipelineTessellationStateCreateFlags;
  1908. patchControlPoints: VkUint32;
  1909. end;
  1910. PVkPipelineTessellationStateCreateInfo = ^TVkPipelineTessellationStateCreateInfo;
  1911. PPVkPipelineTessellationStateCreateInfo = ^PVkPipelineTessellationStateCreateInfo;
  1912. TVkQueryPoolCreateInfo = record
  1913. sType: TVkStructureType;
  1914. pNext: PVkVoid;
  1915. flags: VkQueryPoolCreateFlags;
  1916. queryType: TVkQueryType;
  1917. queryCount: VkUint32;
  1918. pipelineStatistics: VkQueryPipelineStatisticFlags;
  1919. end;
  1920. PVkQueryPoolCreateInfo = ^TVkQueryPoolCreateInfo;
  1921. PPVkQueryPoolCreateInfo = ^PVkQueryPoolCreateInfo;
  1922. TVkSamplerCreateInfo = record
  1923. sType: TVkStructureType;
  1924. pNext: PVkVoid;
  1925. flags: VkSamplerCreateFlags;
  1926. magFilter: TVkFilter;
  1927. minFilter: TVkFilter;
  1928. mipmapMode: TVkSamplerMipmapMode;
  1929. addressModeU: TVkSamplerAddressMode;
  1930. addressModeV: TVkSamplerAddressMode;
  1931. addressModeW: TVkSamplerAddressMode;
  1932. mipLodBias: VkFloat;
  1933. anisotropyEnable: VkBool32;
  1934. maxAnisotropy: VkFloat;
  1935. compareEnable: VkBool32;
  1936. compareOp: TVkCompareOp;
  1937. minLod: VkFloat;
  1938. maxLod: VkFloat;
  1939. borderColor: TVkBorderColor;
  1940. unnormalizedCoordinates: VkBool32;
  1941. end;
  1942. PVkSamplerCreateInfo = ^TVkSamplerCreateInfo;
  1943. PPVkSamplerCreateInfo = ^PVkSamplerCreateInfo;
  1944. TVkSemaphoreCreateInfo = record
  1945. sType: TVkStructureType;
  1946. pNext: PVkVoid;
  1947. flags: VkSemaphoreCreateFlags;
  1948. end;
  1949. PVkSemaphoreCreateInfo = ^TVkSemaphoreCreateInfo;
  1950. PPVkSemaphoreCreateInfo = ^PVkSemaphoreCreateInfo;
  1951. TVkShaderModuleCreateInfo = record
  1952. sType: TVkStructureType;
  1953. pNext: PVkVoid;
  1954. flags: VkShaderModuleCreateFlags;
  1955. codeSize: VkSize;
  1956. pCode: PVkUint32;
  1957. end;
  1958. PVkShaderModuleCreateInfo = ^TVkShaderModuleCreateInfo;
  1959. PPVkShaderModuleCreateInfo = ^PVkShaderModuleCreateInfo;
  1960. TVkImageMemoryBarrier = record
  1961. sType: TVkStructureType;
  1962. pNext: PVkVoid;
  1963. srcAccessMask: VkAccessFlags;
  1964. dstAccessMask: VkAccessFlags;
  1965. oldLayout: TVkImageLayout;
  1966. newLayout: TVkImageLayout;
  1967. srcQueueFamilyIndex: VkUint32;
  1968. dstQueueFamilyIndex: VkUint32;
  1969. image: VkImage;
  1970. subresourceRange: TVkImageSubresourceRange;
  1971. end;
  1972. PVkImageMemoryBarrier = ^TVkImageMemoryBarrier;
  1973. PPVkImageMemoryBarrier = ^PVkImageMemoryBarrier;
  1974. TVkPipelineLayoutCreateInfo = record
  1975. sType: TVkStructureType;
  1976. pNext: PVkVoid;
  1977. flags: VkPipelineLayoutCreateFlags;
  1978. setLayoutCount: VkUint32;
  1979. pSetLayouts: PVkDescriptorSetLayout;
  1980. pushConstantRangeCount: VkUint32;
  1981. pPushConstantRanges: PVkPushConstantRange;
  1982. end;
  1983. PVkPipelineLayoutCreateInfo = ^TVkPipelineLayoutCreateInfo;
  1984. PPVkPipelineLayoutCreateInfo = ^PVkPipelineLayoutCreateInfo;
  1985. TVkImageViewCreateInfo = record
  1986. sType: TVkStructureType;
  1987. pNext: PVkVoid;
  1988. flags: VkImageViewCreateFlags;
  1989. image: VkImage;
  1990. viewType: TVkImageViewType;
  1991. format: TVkFormat;
  1992. components: TVkComponentMapping;
  1993. subresourceRange: TVkImageSubresourceRange;
  1994. end;
  1995. PVkImageViewCreateInfo = ^TVkImageViewCreateInfo;
  1996. PPVkImageViewCreateInfo = ^PVkImageViewCreateInfo;
  1997. TVkPipelineDepthStencilStateCreateInfo = record
  1998. sType: TVkStructureType;
  1999. pNext: PVkVoid;
  2000. flags: VkPipelineDepthStencilStateCreateFlags;
  2001. depthTestEnable: VkBool32;
  2002. depthWriteEnable: VkBool32;
  2003. depthCompareOp: TVkCompareOp;
  2004. depthBoundsTestEnable: VkBool32;
  2005. stencilTestEnable: VkBool32;
  2006. front: TVkStencilOpState;
  2007. back: TVkStencilOpState;
  2008. minDepthBounds: VkFloat;
  2009. maxDepthBounds: VkFloat;
  2010. end;
  2011. PVkPipelineDepthStencilStateCreateInfo = ^TVkPipelineDepthStencilStateCreateInfo;
  2012. PPVkPipelineDepthStencilStateCreateInfo = ^PVkPipelineDepthStencilStateCreateInfo;
  2013. TVkPipelineVertexInputStateCreateInfo = record
  2014. sType: TVkStructureType;
  2015. pNext: PVkVoid;
  2016. flags: VkPipelineVertexInputStateCreateFlags;
  2017. vertexBindingDescriptionCount: VkUint32;
  2018. pVertexBindingDescriptions: PVkVertexInputBindingDescription;
  2019. vertexAttributeDescriptionCount: VkUint32;
  2020. pVertexAttributeDescriptions: PVkVertexInputAttributeDescription;
  2021. end;
  2022. PVkPipelineVertexInputStateCreateInfo = ^TVkPipelineVertexInputStateCreateInfo;
  2023. PPVkPipelineVertexInputStateCreateInfo = ^PVkPipelineVertexInputStateCreateInfo;
  2024. TVkInstanceCreateInfo = record
  2025. sType: TVkStructureType;
  2026. pNext: PVkVoid;
  2027. flags: VkInstanceCreateFlags;
  2028. pApplicationInfo: PVkApplicationInfo;
  2029. enabledLayerCount: VkUint32;
  2030. ppEnabledLayerNames: PPVkChar;
  2031. enabledExtensionCount: VkUint32;
  2032. ppEnabledExtensionNames: PPVkChar;
  2033. end;
  2034. PVkInstanceCreateInfo = ^TVkInstanceCreateInfo;
  2035. PPVkInstanceCreateInfo = ^PVkInstanceCreateInfo;
  2036. TVkWriteDescriptorSet = record
  2037. sType: TVkStructureType;
  2038. pNext: PVkVoid;
  2039. dstSet: VkDescriptorSet;
  2040. dstBinding: VkUint32;
  2041. dstArrayElement: VkUint32;
  2042. descriptorCount: VkUint32;
  2043. descriptorType: TVkDescriptorType;
  2044. pImageInfo: PVkDescriptorImageInfo;
  2045. pBufferInfo: PVkDescriptorBufferInfo;
  2046. pTexelBufferView: PVkBufferView;
  2047. end;
  2048. PVkWriteDescriptorSet = ^TVkWriteDescriptorSet;
  2049. PPVkWriteDescriptorSet = ^PVkWriteDescriptorSet;
  2050. TVkPipelineViewportStateCreateInfo = record
  2051. sType: TVkStructureType;
  2052. pNext: PVkVoid;
  2053. flags: VkPipelineViewportStateCreateFlags;
  2054. viewportCount: VkUint32;
  2055. pViewports: PVkViewport;
  2056. scissorCount: VkUint32;
  2057. pScissors: PVkRect2D;
  2058. end;
  2059. PVkPipelineViewportStateCreateInfo = ^TVkPipelineViewportStateCreateInfo;
  2060. PPVkPipelineViewportStateCreateInfo = ^PVkPipelineViewportStateCreateInfo;
  2061. TVkRenderPassBeginInfo = record
  2062. sType: TVkStructureType;
  2063. pNext: PVkVoid;
  2064. renderPass: VkRenderPass;
  2065. framebuffer: VkFramebuffer;
  2066. renderArea: TVkRect2D;
  2067. clearValueCount: VkUint32;
  2068. pClearValues: PVkClearValue;
  2069. end;
  2070. PVkRenderPassBeginInfo = ^TVkRenderPassBeginInfo;
  2071. PPVkRenderPassBeginInfo = ^PVkRenderPassBeginInfo;
  2072. TVkPipelineShaderStageCreateInfo = record
  2073. sType: TVkStructureType;
  2074. pNext: PVkVoid;
  2075. flags: VkPipelineShaderStageCreateFlags;
  2076. stage: TVkShaderStageFlagBits;
  2077. module: VkShaderModule;
  2078. pName: PVkChar;
  2079. pSpecializationInfo: PVkSpecializationInfo;
  2080. end;
  2081. PVkPipelineShaderStageCreateInfo = ^TVkPipelineShaderStageCreateInfo;
  2082. PPVkPipelineShaderStageCreateInfo = ^PVkPipelineShaderStageCreateInfo;
  2083. TVkPipelineColorBlendStateCreateInfo = record
  2084. sType: TVkStructureType;
  2085. pNext: PVkVoid;
  2086. flags: VkPipelineColorBlendStateCreateFlags;
  2087. logicOpEnable: VkBool32;
  2088. logicOp: TVkLogicOp;
  2089. attachmentCount: VkUint32;
  2090. pAttachments: PVkPipelineColorBlendAttachmentState;
  2091. blendConstants: array[0..4] of VkFloat;
  2092. end;
  2093. PVkPipelineColorBlendStateCreateInfo = ^TVkPipelineColorBlendStateCreateInfo;
  2094. PPVkPipelineColorBlendStateCreateInfo = ^PVkPipelineColorBlendStateCreateInfo;
  2095. TVkRenderPassCreateInfo = record
  2096. sType: TVkStructureType;
  2097. pNext: PVkVoid;
  2098. flags: VkRenderPassCreateFlags;
  2099. attachmentCount: VkUint32;
  2100. pAttachments: PVkAttachmentDescription;
  2101. subpassCount: VkUint32;
  2102. pSubpasses: PVkSubpassDescription;
  2103. dependencyCount: VkUint32;
  2104. pDependencies: PVkSubpassDependency;
  2105. end;
  2106. PVkRenderPassCreateInfo = ^TVkRenderPassCreateInfo;
  2107. PPVkRenderPassCreateInfo = ^PVkRenderPassCreateInfo;
  2108. TVkComputePipelineCreateInfo = record
  2109. sType: TVkStructureType;
  2110. pNext: PVkVoid;
  2111. flags: VkPipelineCreateFlags;
  2112. stage: TVkPipelineShaderStageCreateInfo;
  2113. layout: VkPipelineLayout;
  2114. basePipelineHandle: VkPipeline;
  2115. basePipelineIndex: VkInt32;
  2116. end;
  2117. PVkComputePipelineCreateInfo = ^TVkComputePipelineCreateInfo;
  2118. PPVkComputePipelineCreateInfo = ^PVkComputePipelineCreateInfo;
  2119. TVkGraphicsPipelineCreateInfo = record
  2120. sType: TVkStructureType;
  2121. pNext: PVkVoid;
  2122. flags: VkPipelineCreateFlags;
  2123. stageCount: VkUint32;
  2124. pStages: PVkPipelineShaderStageCreateInfo;
  2125. pVertexInputState: PVkPipelineVertexInputStateCreateInfo;
  2126. pInputAssemblyState: PVkPipelineInputAssemblyStateCreateInfo;
  2127. pTessellationState: PVkPipelineTessellationStateCreateInfo;
  2128. pViewportState: PVkPipelineViewportStateCreateInfo;
  2129. pRasterizationState: PVkPipelineRasterizationStateCreateInfo;
  2130. pMultisampleState: PVkPipelineMultisampleStateCreateInfo;
  2131. pDepthStencilState: PVkPipelineDepthStencilStateCreateInfo;
  2132. pColorBlendState: PVkPipelineColorBlendStateCreateInfo;
  2133. pDynamicState: PVkPipelineDynamicStateCreateInfo;
  2134. layout: VkPipelineLayout;
  2135. renderPass: VkRenderPass;
  2136. subpass: VkUint32;
  2137. basePipelineHandle: VkPipeline;
  2138. basePipelineIndex: VkInt32;
  2139. end;
  2140. PVkGraphicsPipelineCreateInfo = ^TVkGraphicsPipelineCreateInfo;
  2141. PPVkGraphicsPipelineCreateInfo = ^PVkGraphicsPipelineCreateInfo;
  2142. type { commands }
  2143. TvkCmdDispatch = procedure(commandBuffer: VkCommandBuffer; x: VkUint32; y: VkUint32; z: VkUint32); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2144. TvkCmdDraw = procedure(commandBuffer: VkCommandBuffer; vertexCount: VkUint32; instanceCount: VkUint32; firstVertex: VkUint32; firstInstance: VkUint32); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2145. TvkCmdDrawIndexed = procedure(commandBuffer: VkCommandBuffer; indexCount: VkUint32; instanceCount: VkUint32; firstIndex: VkUint32; vertexOffset: VkInt32; firstInstance: VkUint32); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2146. TvkCmdEndRenderPass = procedure(commandBuffer: VkCommandBuffer); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2147. TvkCmdExecuteCommands = procedure(commandBuffer: VkCommandBuffer; commandBufferCount: VkUint32; const pCommandBuffers: PVkCommandBuffer); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2148. TvkCmdSetBlendConstants = procedure(commandBuffer: VkCommandBuffer; const blendConstants: VkFloat); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2149. TvkCmdSetDepthBias = procedure(commandBuffer: VkCommandBuffer; depthBiasConstantFactor: VkFloat; depthBiasClamp: VkFloat; depthBiasSlopeFactor: VkFloat); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2150. TvkCmdSetDepthBounds = procedure(commandBuffer: VkCommandBuffer; minDepthBounds: VkFloat; maxDepthBounds: VkFloat); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2151. TvkDeviceWaitIdle = function (device: VkDevice): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2152. TvkGetDeviceProcAddr = function (device: VkDevice; const pName: PVkChar): TvkVoidFunction; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2153. TvkGetInstanceProcAddr = function (instance: VkInstance; const pName: PVkChar): TvkVoidFunction; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2154. TvkEnumeratePhysicalDevices = function (instance: VkInstance; pPhysicalDeviceCount: PVkUint32; pPhysicalDevices: PVkPhysicalDevice): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2155. TvkGetDeviceQueue = procedure(device: VkDevice; queueFamilyIndex: VkUint32; queueIndex: VkUint32; pQueue: PVkQueue); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2156. TvkQueueWaitIdle = function (queue: VkQueue): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2157. TvkCmdSetLineWidth = procedure(commandBuffer: VkCommandBuffer; lineWidth: VkFloat); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2158. TvkEndCommandBuffer = function (commandBuffer: VkCommandBuffer): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2159. TvkFreeCommandBuffers = procedure(device: VkDevice; commandPool: VkCommandPool; commandBufferCount: VkUint32; const pCommandBuffers: PVkCommandBuffer); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2160. TvkFreeDescriptorSets = function (device: VkDevice; descriptorPool: VkDescriptorPool; descriptorSetCount: VkUint32; const pDescriptorSets: PVkDescriptorSet): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2161. TvkUnmapMemory = procedure(device: VkDevice; memory: VkDeviceMemory); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2162. TvkGetEventStatus = function (device: VkDevice; event: VkEvent): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2163. TvkResetEvent = function (device: VkDevice; event: VkEvent): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2164. TvkSetEvent = function (device: VkDevice; event: VkEvent): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2165. TvkGetFenceStatus = function (device: VkDevice; fence: VkFence): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2166. TvkResetFences = function (device: VkDevice; fenceCount: VkUint32; const pFences: PVkFence): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2167. TvkGetPipelineCacheData = function (device: VkDevice; pipelineCache: VkPipelineCache; pDataSize: PVkSize; pData: PVkVoid): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2168. TvkMergePipelineCaches = function (device: VkDevice; dstCache: VkPipelineCache; srcCacheCount: VkUint32; const pSrcCaches: PVkPipelineCache): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2169. TvkCmdEndQuery = procedure(commandBuffer: VkCommandBuffer; queryPool: VkQueryPool; query: VkUint32); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2170. TvkCmdResetQueryPool = procedure(commandBuffer: VkCommandBuffer; queryPool: VkQueryPool; firstQuery: VkUint32; queryCount: VkUint32); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2171. TvkWaitForFences = function (device: VkDevice; fenceCount: VkUint32; const pFences: PVkFence; waitAll: VkBool32; timeout: VkUint64): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2172. TvkBindBufferMemory = function (device: VkDevice; buffer: VkBuffer; memory: VkDeviceMemory; memoryOffset: VkDeviceSize): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2173. TvkBindImageMemory = function (device: VkDevice; image: VkImage; memory: VkDeviceMemory; memoryOffset: VkDeviceSize): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2174. TvkCmdBindVertexBuffers = procedure(commandBuffer: VkCommandBuffer; firstBinding: VkUint32; bindingCount: VkUint32; const pBuffers: PVkBuffer; const pOffsets: PVkDeviceSize); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2175. TvkCmdDispatchIndirect = procedure(commandBuffer: VkCommandBuffer; buffer: VkBuffer; offset: VkDeviceSize); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2176. TvkCmdDrawIndexedIndirect = procedure(commandBuffer: VkCommandBuffer; buffer: VkBuffer; offset: VkDeviceSize; drawCount: VkUint32; stride: VkUint32); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2177. TvkCmdDrawIndirect = procedure(commandBuffer: VkCommandBuffer; buffer: VkBuffer; offset: VkDeviceSize; drawCount: VkUint32; stride: VkUint32); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2178. TvkCmdFillBuffer = procedure(commandBuffer: VkCommandBuffer; dstBuffer: VkBuffer; dstOffset: VkDeviceSize; size: VkDeviceSize; data: VkUint32); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2179. TvkCmdUpdateBuffer = procedure(commandBuffer: VkCommandBuffer; dstBuffer: VkBuffer; dstOffset: VkDeviceSize; dataSize: VkDeviceSize; const pData: PVkUint32); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2180. TvkGetDeviceMemoryCommitment = procedure(device: VkDevice; memory: VkDeviceMemory; pCommittedMemoryInBytes: PVkDeviceSize); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2181. TvkResetCommandBuffer = function (commandBuffer: VkCommandBuffer; flags: VkCommandBufferResetFlags): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2182. TvkResetCommandPool = function (device: VkDevice; commandPool: VkCommandPool; flags: VkCommandPoolResetFlags): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2183. TvkResetDescriptorPool = function (device: VkDevice; descriptorPool: VkDescriptorPool; flags: VkDescriptorPoolResetFlags): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2184. TvkMapMemory = function (device: VkDevice; memory: VkDeviceMemory; offset: VkDeviceSize; size: VkDeviceSize; flags: VkMemoryMapFlags; ppData: PPVkVoid): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2185. TvkCmdResetEvent = procedure(commandBuffer: VkCommandBuffer; event: VkEvent; stageMask: VkPipelineStageFlags); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2186. TvkCmdSetEvent = procedure(commandBuffer: VkCommandBuffer; event: VkEvent; stageMask: VkPipelineStageFlags); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2187. TvkCmdBeginQuery = procedure(commandBuffer: VkCommandBuffer; queryPool: VkQueryPool; query: VkUint32; flags: VkQueryControlFlags); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2188. TvkCmdCopyQueryPoolResults = procedure(commandBuffer: VkCommandBuffer; queryPool: VkQueryPool; firstQuery: VkUint32; queryCount: VkUint32; dstBuffer: VkBuffer; dstOffset: VkDeviceSize; stride: VkDeviceSize; flags: VkQueryResultFlags); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2189. TvkGetQueryPoolResults = function (device: VkDevice; queryPool: VkQueryPool; firstQuery: VkUint32; queryCount: VkUint32; dataSize: VkSize; pData: PVkVoid; stride: VkDeviceSize; flags: VkQueryResultFlags): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2190. TvkCmdPushConstants = procedure(commandBuffer: VkCommandBuffer; layout: VkPipelineLayout; stageFlags: VkShaderStageFlags; offset: VkUint32; size: VkUint32; const pValues: PVkVoid); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2191. TvkCmdSetStencilCompareMask = procedure(commandBuffer: VkCommandBuffer; faceMask: VkStencilFaceFlags; compareMask: VkUint32); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2192. TvkCmdSetStencilReference = procedure(commandBuffer: VkCommandBuffer; faceMask: VkStencilFaceFlags; reference: VkUint32); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2193. TvkCmdSetStencilWriteMask = procedure(commandBuffer: VkCommandBuffer; faceMask: VkStencilFaceFlags; writeMask: VkUint32); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2194. TvkCmdBindPipeline = procedure(commandBuffer: VkCommandBuffer; pipelineBindPoint: TVkPipelineBindPoint; pipeline: VkPipeline); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2195. TvkCmdBindDescriptorSets = procedure(commandBuffer: VkCommandBuffer; pipelineBindPoint: TVkPipelineBindPoint; layout: VkPipelineLayout; firstSet: VkUint32; descriptorSetCount: VkUint32; const pDescriptorSets: PVkDescriptorSet; dynamicOffsetCount: VkUint32; const pDynamicOffsets: PVkUint32); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2196. TvkCmdSetViewport = procedure(commandBuffer: VkCommandBuffer; firstViewport: VkUint32; viewportCount: VkUint32; const pViewports: PVkViewport); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2197. TvkEnumerateDeviceExtensionProperties = function (physicalDevice: VkPhysicalDevice; const pLayerName: PVkChar; pPropertyCount: PVkUint32; pProperties: PVkExtensionProperties): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2198. TvkEnumerateInstanceExtensionProperties = function (const pLayerName: PVkChar; pPropertyCount: PVkUint32; pProperties: PVkExtensionProperties): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2199. TvkGetRenderAreaGranularity = procedure(device: VkDevice; renderPass: VkRenderPass; pGranularity: PVkExtent2D); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2200. TvkEnumerateDeviceLayerProperties = function (physicalDevice: VkPhysicalDevice; pPropertyCount: PVkUint32; pProperties: PVkLayerProperties): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2201. TvkEnumerateInstanceLayerProperties = function (pPropertyCount: PVkUint32; pProperties: PVkLayerProperties): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2202. TvkCmdBindIndexBuffer = procedure(commandBuffer: VkCommandBuffer; buffer: VkBuffer; offset: VkDeviceSize; indexType: TVkIndexType); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2203. TvkGetPhysicalDeviceFeatures = procedure(physicalDevice: VkPhysicalDevice; pFeatures: PVkPhysicalDeviceFeatures); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2204. TvkCmdCopyBuffer = procedure(commandBuffer: VkCommandBuffer; srcBuffer: VkBuffer; dstBuffer: VkBuffer; regionCount: VkUint32; const pRegions: PVkBufferCopy); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2205. TvkGetBufferMemoryRequirements = procedure(device: VkDevice; buffer: VkBuffer; pMemoryRequirements: PVkMemoryRequirements); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2206. TvkGetImageMemoryRequirements = procedure(device: VkDevice; image: VkImage; pMemoryRequirements: PVkMemoryRequirements); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2207. TvkGetPhysicalDeviceFormatProperties = procedure(physicalDevice: VkPhysicalDevice; format: TVkFormat; pFormatProperties: PVkFormatProperties); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2208. TvkGetImageSubresourceLayout = procedure(device: VkDevice; image: VkImage; const pSubresource: PVkImageSubresource; pLayout: PVkSubresourceLayout); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2209. TvkCmdClearColorImage = procedure(commandBuffer: VkCommandBuffer; image: VkImage; imageLayout: TVkImageLayout; const pColor: PVkClearColorValue; rangeCount: VkUint32; const pRanges: PVkImageSubresourceRange); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2210. TvkCmdClearDepthStencilImage = procedure(commandBuffer: VkCommandBuffer; image: VkImage; imageLayout: TVkImageLayout; const pDepthStencil: PVkClearDepthStencilValue; rangeCount: VkUint32; const pRanges: PVkImageSubresourceRange); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2211. TvkAllocateCommandBuffers = function (device: VkDevice; const pAllocateInfo: PVkCommandBufferAllocateInfo; pCommandBuffers: PVkCommandBuffer): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2212. TvkAllocateDescriptorSets = function (device: VkDevice; const pAllocateInfo: PVkDescriptorSetAllocateInfo; pDescriptorSets: PVkDescriptorSet): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2213. TvkCmdSetScissor = procedure(commandBuffer: VkCommandBuffer; firstScissor: VkUint32; scissorCount: VkUint32; const pScissors: PVkRect2D); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2214. TvkGetPhysicalDeviceQueueFamilyProperties = procedure(physicalDevice: VkPhysicalDevice; pQueueFamilyPropertyCount: PVkUint32; pQueueFamilyProperties: PVkQueueFamilyProperties); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2215. TvkGetPhysicalDeviceImageFormatProperties = function (physicalDevice: VkPhysicalDevice; format: TVkFormat; iType: TVkImageType; tiling: TVkImageTiling; usage: VkImageUsageFlags; flags: VkImageCreateFlags; pImageFormatProperties: PVkImageFormatProperties): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2216. TvkCmdCopyImage = procedure(commandBuffer: VkCommandBuffer; srcImage: VkImage; srcImageLayout: TVkImageLayout; dstImage: VkImage; dstImageLayout: TVkImageLayout; regionCount: VkUint32; const pRegions: PVkImageCopy); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2217. TvkCreateBuffer = function (device: VkDevice; const pCreateInfo: PVkBufferCreateInfo; const pAllocator: PVkAllocationCallbacks; pBuffer: PVkBuffer): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2218. TvkCreateBufferView = function (device: VkDevice; const pCreateInfo: PVkBufferViewCreateInfo; const pAllocator: PVkAllocationCallbacks; pView: PVkBufferView): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2219. TvkCreateCommandPool = function (device: VkDevice; const pCreateInfo: PVkCommandPoolCreateInfo; const pAllocator: PVkAllocationCallbacks; pCommandPool: PVkCommandPool): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2220. TvkDestroyBuffer = procedure(device: VkDevice; buffer: VkBuffer; const pAllocator: PVkAllocationCallbacks); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2221. TvkDestroyBufferView = procedure(device: VkDevice; bufferView: VkBufferView; const pAllocator: PVkAllocationCallbacks); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2222. TvkDestroyCommandPool = procedure(device: VkDevice; commandPool: VkCommandPool; const pAllocator: PVkAllocationCallbacks); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2223. TvkCmdCopyBufferToImage = procedure(commandBuffer: VkCommandBuffer; srcBuffer: VkBuffer; dstImage: VkImage; dstImageLayout: TVkImageLayout; regionCount: VkUint32; const pRegions: PVkBufferImageCopy); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2224. TvkCmdBlitImage = procedure(commandBuffer: VkCommandBuffer; srcImage: VkImage; srcImageLayout: TVkImageLayout; dstImage: VkImage; dstImageLayout: TVkImageLayout; regionCount: VkUint32; const pRegions: PVkImageBlit; filter: TVkFilter); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2225. TvkQueueBindSparse = function (queue: VkQueue; bindInfoCount: VkUint32; const pBindInfo: PVkBindSparseInfo; fence: VkFence): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2226. TvkCmdCopyImageToBuffer = procedure(commandBuffer: VkCommandBuffer; srcImage: VkImage; srcImageLayout: TVkImageLayout; dstBuffer: VkBuffer; regionCount: VkUint32; const pRegions: PVkBufferImageCopy); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2227. TvkCmdResolveImage = procedure(commandBuffer: VkCommandBuffer; srcImage: VkImage; srcImageLayout: TVkImageLayout; dstImage: VkImage; dstImageLayout: TVkImageLayout; regionCount: VkUint32; const pRegions: PVkImageResolve); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2228. TvkGetPhysicalDeviceMemoryProperties = procedure(physicalDevice: VkPhysicalDevice; pMemoryProperties: PVkPhysicalDeviceMemoryProperties); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2229. TvkCreateDescriptorPool = function (device: VkDevice; const pCreateInfo: PVkDescriptorPoolCreateInfo; const pAllocator: PVkAllocationCallbacks; pDescriptorPool: PVkDescriptorPool): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2230. TvkCreateDevice = function (physicalDevice: VkPhysicalDevice; const pCreateInfo: PVkDeviceCreateInfo; const pAllocator: PVkAllocationCallbacks; pDevice: PVkDevice): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2231. TvkCreateDescriptorSetLayout = function (device: VkDevice; const pCreateInfo: PVkDescriptorSetLayoutCreateInfo; const pAllocator: PVkAllocationCallbacks; pSetLayout: PVkDescriptorSetLayout): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2232. TvkGetImageSparseMemoryRequirements = procedure(device: VkDevice; image: VkImage; pSparseMemoryRequirementCount: PVkUint32; pSparseMemoryRequirements: PVkSparseImageMemoryRequirements); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2233. TvkDestroyDescriptorPool = procedure(device: VkDevice; descriptorPool: VkDescriptorPool; const pAllocator: PVkAllocationCallbacks); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2234. TvkDestroyDescriptorSetLayout = procedure(device: VkDevice; descriptorSetLayout: VkDescriptorSetLayout; const pAllocator: PVkAllocationCallbacks); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2235. TvkDestroyDevice = procedure(device: VkDevice; const pAllocator: PVkAllocationCallbacks); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2236. TvkDestroyEvent = procedure(device: VkDevice; event: VkEvent; const pAllocator: PVkAllocationCallbacks); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2237. TvkDestroyFence = procedure(device: VkDevice; fence: VkFence; const pAllocator: PVkAllocationCallbacks); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2238. TvkDestroyFramebuffer = procedure(device: VkDevice; framebuffer: VkFramebuffer; const pAllocator: PVkAllocationCallbacks); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2239. TvkDestroyImage = procedure(device: VkDevice; image: VkImage; const pAllocator: PVkAllocationCallbacks); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2240. TvkDestroyImageView = procedure(device: VkDevice; imageView: VkImageView; const pAllocator: PVkAllocationCallbacks); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2241. TvkDestroyInstance = procedure(instance: VkInstance; const pAllocator: PVkAllocationCallbacks); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2242. TvkDestroyPipeline = procedure(device: VkDevice; pipeline: VkPipeline; const pAllocator: PVkAllocationCallbacks); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2243. TvkDestroyPipelineCache = procedure(device: VkDevice; pipelineCache: VkPipelineCache; const pAllocator: PVkAllocationCallbacks); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2244. TvkDestroyPipelineLayout = procedure(device: VkDevice; pipelineLayout: VkPipelineLayout; const pAllocator: PVkAllocationCallbacks); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2245. TvkGetPhysicalDeviceProperties = procedure(physicalDevice: VkPhysicalDevice; pProperties: PVkPhysicalDeviceProperties); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2246. TvkDestroyQueryPool = procedure(device: VkDevice; queryPool: VkQueryPool; const pAllocator: PVkAllocationCallbacks); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2247. TvkDestroyRenderPass = procedure(device: VkDevice; renderPass: VkRenderPass; const pAllocator: PVkAllocationCallbacks); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2248. TvkDestroySampler = procedure(device: VkDevice; sampler: VkSampler; const pAllocator: PVkAllocationCallbacks); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2249. TvkDestroySemaphore = procedure(device: VkDevice; semaphore: VkSemaphore; const pAllocator: PVkAllocationCallbacks); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2250. TvkDestroyShaderModule = procedure(device: VkDevice; shaderModule: VkShaderModule; const pAllocator: PVkAllocationCallbacks); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2251. TvkFreeMemory = procedure(device: VkDevice; memory: VkDeviceMemory; const pAllocator: PVkAllocationCallbacks); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2252. TvkCmdClearAttachments = procedure(commandBuffer: VkCommandBuffer; attachmentCount: VkUint32; const pAttachments: PVkClearAttachment; rectCount: VkUint32; const pRects: PVkClearRect); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2253. TvkBeginCommandBuffer = function (commandBuffer: VkCommandBuffer; const pBeginInfo: PVkCommandBufferBeginInfo): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2254. TvkCmdNextSubpass = procedure(commandBuffer: VkCommandBuffer; contents: TVkSubpassContents); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2255. TvkCmdWriteTimestamp = procedure(commandBuffer: VkCommandBuffer; pipelineStage: TVkPipelineStageFlagBits; queryPool: VkQueryPool; query: VkUint32); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2256. TvkGetPhysicalDeviceSparseImageFormatProperties = procedure(physicalDevice: VkPhysicalDevice; format: TVkFormat; iType: TVkImageType; samples: TVkSampleCountFlagBits; usage: VkImageUsageFlags; tiling: TVkImageTiling; pPropertyCount: PVkUint32; pProperties: PVkSparseImageFormatProperties); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2257. TvkFlushMappedMemoryRanges = function (device: VkDevice; memoryRangeCount: VkUint32; const pMemoryRanges: PVkMappedMemoryRange): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2258. TvkInvalidateMappedMemoryRanges = function (device: VkDevice; memoryRangeCount: VkUint32; const pMemoryRanges: PVkMappedMemoryRange): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2259. TvkAllocateMemory = function (device: VkDevice; const pAllocateInfo: PVkMemoryAllocateInfo; const pAllocator: PVkAllocationCallbacks; pMemory: PVkDeviceMemory): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2260. TvkCreateEvent = function (device: VkDevice; const pCreateInfo: PVkEventCreateInfo; const pAllocator: PVkAllocationCallbacks; pEvent: PVkEvent): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2261. TvkCreateFence = function (device: VkDevice; const pCreateInfo: PVkFenceCreateInfo; const pAllocator: PVkAllocationCallbacks; pFence: PVkFence): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2262. TvkCreateFramebuffer = function (device: VkDevice; const pCreateInfo: PVkFramebufferCreateInfo; const pAllocator: PVkAllocationCallbacks; pFramebuffer: PVkFramebuffer): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2263. TvkCreateImage = function (device: VkDevice; const pCreateInfo: PVkImageCreateInfo; const pAllocator: PVkAllocationCallbacks; pImage: PVkImage): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2264. TvkCreatePipelineCache = function (device: VkDevice; const pCreateInfo: PVkPipelineCacheCreateInfo; const pAllocator: PVkAllocationCallbacks; pPipelineCache: PVkPipelineCache): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2265. TvkQueueSubmit = function (queue: VkQueue; submitCount: VkUint32; const pSubmits: PVkSubmitInfo; fence: VkFence): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2266. TvkCreateQueryPool = function (device: VkDevice; const pCreateInfo: PVkQueryPoolCreateInfo; const pAllocator: PVkAllocationCallbacks; pQueryPool: PVkQueryPool): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2267. TvkCreateSampler = function (device: VkDevice; const pCreateInfo: PVkSamplerCreateInfo; const pAllocator: PVkAllocationCallbacks; pSampler: PVkSampler): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2268. TvkCreateSemaphore = function (device: VkDevice; const pCreateInfo: PVkSemaphoreCreateInfo; const pAllocator: PVkAllocationCallbacks; pSemaphore: PVkSemaphore): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2269. TvkCreateShaderModule = function (device: VkDevice; const pCreateInfo: PVkShaderModuleCreateInfo; const pAllocator: PVkAllocationCallbacks; pShaderModule: PVkShaderModule): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2270. TvkCmdPipelineBarrier = procedure(commandBuffer: VkCommandBuffer; srcStageMask: VkPipelineStageFlags; dstStageMask: VkPipelineStageFlags; dependencyFlags: VkDependencyFlags; memoryBarrierCount: VkUint32; const pMemoryBarriers: PVkMemoryBarrier; bufferMemoryBarrierCount: VkUint32; const pBufferMemoryBarriers: PVkBufferMemoryBarrier; imageMemoryBarrierCount: VkUint32; const pImageMemoryBarriers: PVkImageMemoryBarrier); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2271. TvkCmdWaitEvents = procedure(commandBuffer: VkCommandBuffer; eventCount: VkUint32; const pEvents: PVkEvent; srcStageMask: VkPipelineStageFlags; dstStageMask: VkPipelineStageFlags; memoryBarrierCount: VkUint32; const pMemoryBarriers: PVkMemoryBarrier; bufferMemoryBarrierCount: VkUint32; const pBufferMemoryBarriers: PVkBufferMemoryBarrier; imageMemoryBarrierCount: VkUint32; const pImageMemoryBarriers: PVkImageMemoryBarrier); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2272. TvkCreatePipelineLayout = function (device: VkDevice; const pCreateInfo: PVkPipelineLayoutCreateInfo; const pAllocator: PVkAllocationCallbacks; pPipelineLayout: PVkPipelineLayout): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2273. TvkCreateImageView = function (device: VkDevice; const pCreateInfo: PVkImageViewCreateInfo; const pAllocator: PVkAllocationCallbacks; pView: PVkImageView): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2274. TvkCreateInstance = function (const pCreateInfo: PVkInstanceCreateInfo; const pAllocator: PVkAllocationCallbacks; pInstance: PVkInstance): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2275. TvkUpdateDescriptorSets = procedure(device: VkDevice; descriptorWriteCount: VkUint32; const pDescriptorWrites: PVkWriteDescriptorSet; descriptorCopyCount: VkUint32; const pDescriptorCopies: PVkCopyDescriptorSet); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2276. TvkCmdBeginRenderPass = procedure(commandBuffer: VkCommandBuffer; const pRenderPassBegin: PVkRenderPassBeginInfo; contents: TVkSubpassContents); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2277. TvkCreateRenderPass = function (device: VkDevice; const pCreateInfo: PVkRenderPassCreateInfo; const pAllocator: PVkAllocationCallbacks; pRenderPass: PVkRenderPass): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2278. TvkCreateGraphicsPipelines = function (device: VkDevice; pipelineCache: VkPipelineCache; createInfoCount: VkUint32; const pCreateInfos: PVkGraphicsPipelineCreateInfo; const pAllocator: PVkAllocationCallbacks; pPipelines: PVkPipeline): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2279. TvkCreateComputePipelines = function (device: VkDevice; pipelineCache: VkPipelineCache; createInfoCount: VkUint32; const pCreateInfos: PVkComputePipelineCreateInfo; const pAllocator: PVkAllocationCallbacks; pPipelines: PVkPipeline): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2280. var { command variables }
  2281. vkCmdDispatch: TvkCmdDispatch = nil;
  2282. vkCmdDraw: TvkCmdDraw = nil;
  2283. vkCmdDrawIndexed: TvkCmdDrawIndexed = nil;
  2284. vkCmdEndRenderPass: TvkCmdEndRenderPass = nil;
  2285. vkCmdExecuteCommands: TvkCmdExecuteCommands = nil;
  2286. vkCmdSetBlendConstants: TvkCmdSetBlendConstants = nil;
  2287. vkCmdSetDepthBias: TvkCmdSetDepthBias = nil;
  2288. vkCmdSetDepthBounds: TvkCmdSetDepthBounds = nil;
  2289. vkDeviceWaitIdle: TvkDeviceWaitIdle = nil;
  2290. vkGetDeviceProcAddr: TvkGetDeviceProcAddr = nil;
  2291. vkGetInstanceProcAddr: TvkGetInstanceProcAddr = nil;
  2292. vkEnumeratePhysicalDevices: TvkEnumeratePhysicalDevices = nil;
  2293. vkGetDeviceQueue: TvkGetDeviceQueue = nil;
  2294. vkQueueWaitIdle: TvkQueueWaitIdle = nil;
  2295. vkCmdSetLineWidth: TvkCmdSetLineWidth = nil;
  2296. vkEndCommandBuffer: TvkEndCommandBuffer = nil;
  2297. vkFreeCommandBuffers: TvkFreeCommandBuffers = nil;
  2298. vkFreeDescriptorSets: TvkFreeDescriptorSets = nil;
  2299. vkUnmapMemory: TvkUnmapMemory = nil;
  2300. vkGetEventStatus: TvkGetEventStatus = nil;
  2301. vkResetEvent: TvkResetEvent = nil;
  2302. vkSetEvent: TvkSetEvent = nil;
  2303. vkGetFenceStatus: TvkGetFenceStatus = nil;
  2304. vkResetFences: TvkResetFences = nil;
  2305. vkGetPipelineCacheData: TvkGetPipelineCacheData = nil;
  2306. vkMergePipelineCaches: TvkMergePipelineCaches = nil;
  2307. vkCmdEndQuery: TvkCmdEndQuery = nil;
  2308. vkCmdResetQueryPool: TvkCmdResetQueryPool = nil;
  2309. vkWaitForFences: TvkWaitForFences = nil;
  2310. vkBindBufferMemory: TvkBindBufferMemory = nil;
  2311. vkBindImageMemory: TvkBindImageMemory = nil;
  2312. vkCmdBindVertexBuffers: TvkCmdBindVertexBuffers = nil;
  2313. vkCmdDispatchIndirect: TvkCmdDispatchIndirect = nil;
  2314. vkCmdDrawIndexedIndirect: TvkCmdDrawIndexedIndirect = nil;
  2315. vkCmdDrawIndirect: TvkCmdDrawIndirect = nil;
  2316. vkCmdFillBuffer: TvkCmdFillBuffer = nil;
  2317. vkCmdUpdateBuffer: TvkCmdUpdateBuffer = nil;
  2318. vkGetDeviceMemoryCommitment: TvkGetDeviceMemoryCommitment = nil;
  2319. vkResetCommandBuffer: TvkResetCommandBuffer = nil;
  2320. vkResetCommandPool: TvkResetCommandPool = nil;
  2321. vkResetDescriptorPool: TvkResetDescriptorPool = nil;
  2322. vkMapMemory: TvkMapMemory = nil;
  2323. vkCmdResetEvent: TvkCmdResetEvent = nil;
  2324. vkCmdSetEvent: TvkCmdSetEvent = nil;
  2325. vkCmdBeginQuery: TvkCmdBeginQuery = nil;
  2326. vkCmdCopyQueryPoolResults: TvkCmdCopyQueryPoolResults = nil;
  2327. vkGetQueryPoolResults: TvkGetQueryPoolResults = nil;
  2328. vkCmdPushConstants: TvkCmdPushConstants = nil;
  2329. vkCmdSetStencilCompareMask: TvkCmdSetStencilCompareMask = nil;
  2330. vkCmdSetStencilReference: TvkCmdSetStencilReference = nil;
  2331. vkCmdSetStencilWriteMask: TvkCmdSetStencilWriteMask = nil;
  2332. vkCmdBindPipeline: TvkCmdBindPipeline = nil;
  2333. vkCmdBindDescriptorSets: TvkCmdBindDescriptorSets = nil;
  2334. vkCmdSetViewport: TvkCmdSetViewport = nil;
  2335. vkEnumerateDeviceExtensionProperties: TvkEnumerateDeviceExtensionProperties = nil;
  2336. vkEnumerateInstanceExtensionProperties: TvkEnumerateInstanceExtensionProperties = nil;
  2337. vkGetRenderAreaGranularity: TvkGetRenderAreaGranularity = nil;
  2338. vkEnumerateDeviceLayerProperties: TvkEnumerateDeviceLayerProperties = nil;
  2339. vkEnumerateInstanceLayerProperties: TvkEnumerateInstanceLayerProperties = nil;
  2340. vkCmdBindIndexBuffer: TvkCmdBindIndexBuffer = nil;
  2341. vkGetPhysicalDeviceFeatures: TvkGetPhysicalDeviceFeatures = nil;
  2342. vkCmdCopyBuffer: TvkCmdCopyBuffer = nil;
  2343. vkGetBufferMemoryRequirements: TvkGetBufferMemoryRequirements = nil;
  2344. vkGetImageMemoryRequirements: TvkGetImageMemoryRequirements = nil;
  2345. vkGetPhysicalDeviceFormatProperties: TvkGetPhysicalDeviceFormatProperties = nil;
  2346. vkGetImageSubresourceLayout: TvkGetImageSubresourceLayout = nil;
  2347. vkCmdClearColorImage: TvkCmdClearColorImage = nil;
  2348. vkCmdClearDepthStencilImage: TvkCmdClearDepthStencilImage = nil;
  2349. vkAllocateCommandBuffers: TvkAllocateCommandBuffers = nil;
  2350. vkAllocateDescriptorSets: TvkAllocateDescriptorSets = nil;
  2351. vkCmdSetScissor: TvkCmdSetScissor = nil;
  2352. vkGetPhysicalDeviceQueueFamilyProperties: TvkGetPhysicalDeviceQueueFamilyProperties = nil;
  2353. vkGetPhysicalDeviceImageFormatProperties: TvkGetPhysicalDeviceImageFormatProperties = nil;
  2354. vkCmdCopyImage: TvkCmdCopyImage = nil;
  2355. vkCreateBuffer: TvkCreateBuffer = nil;
  2356. vkCreateBufferView: TvkCreateBufferView = nil;
  2357. vkCreateCommandPool: TvkCreateCommandPool = nil;
  2358. vkDestroyBuffer: TvkDestroyBuffer = nil;
  2359. vkDestroyBufferView: TvkDestroyBufferView = nil;
  2360. vkDestroyCommandPool: TvkDestroyCommandPool = nil;
  2361. vkCmdCopyBufferToImage: TvkCmdCopyBufferToImage = nil;
  2362. vkCmdBlitImage: TvkCmdBlitImage = nil;
  2363. vkQueueBindSparse: TvkQueueBindSparse = nil;
  2364. vkCmdCopyImageToBuffer: TvkCmdCopyImageToBuffer = nil;
  2365. vkCmdResolveImage: TvkCmdResolveImage = nil;
  2366. vkGetPhysicalDeviceMemoryProperties: TvkGetPhysicalDeviceMemoryProperties = nil;
  2367. vkCreateDescriptorPool: TvkCreateDescriptorPool = nil;
  2368. vkCreateDevice: TvkCreateDevice = nil;
  2369. vkCreateDescriptorSetLayout: TvkCreateDescriptorSetLayout = nil;
  2370. vkGetImageSparseMemoryRequirements: TvkGetImageSparseMemoryRequirements = nil;
  2371. vkDestroyDescriptorPool: TvkDestroyDescriptorPool = nil;
  2372. vkDestroyDescriptorSetLayout: TvkDestroyDescriptorSetLayout = nil;
  2373. vkDestroyDevice: TvkDestroyDevice = nil;
  2374. vkDestroyEvent: TvkDestroyEvent = nil;
  2375. vkDestroyFence: TvkDestroyFence = nil;
  2376. vkDestroyFramebuffer: TvkDestroyFramebuffer = nil;
  2377. vkDestroyImage: TvkDestroyImage = nil;
  2378. vkDestroyImageView: TvkDestroyImageView = nil;
  2379. vkDestroyInstance: TvkDestroyInstance = nil;
  2380. vkDestroyPipeline: TvkDestroyPipeline = nil;
  2381. vkDestroyPipelineCache: TvkDestroyPipelineCache = nil;
  2382. vkDestroyPipelineLayout: TvkDestroyPipelineLayout = nil;
  2383. vkGetPhysicalDeviceProperties: TvkGetPhysicalDeviceProperties = nil;
  2384. vkDestroyQueryPool: TvkDestroyQueryPool = nil;
  2385. vkDestroyRenderPass: TvkDestroyRenderPass = nil;
  2386. vkDestroySampler: TvkDestroySampler = nil;
  2387. vkDestroySemaphore: TvkDestroySemaphore = nil;
  2388. vkDestroyShaderModule: TvkDestroyShaderModule = nil;
  2389. vkFreeMemory: TvkFreeMemory = nil;
  2390. vkCmdClearAttachments: TvkCmdClearAttachments = nil;
  2391. vkBeginCommandBuffer: TvkBeginCommandBuffer = nil;
  2392. vkCmdNextSubpass: TvkCmdNextSubpass = nil;
  2393. vkCmdWriteTimestamp: TvkCmdWriteTimestamp = nil;
  2394. vkGetPhysicalDeviceSparseImageFormatProperties: TvkGetPhysicalDeviceSparseImageFormatProperties = nil;
  2395. vkFlushMappedMemoryRanges: TvkFlushMappedMemoryRanges = nil;
  2396. vkInvalidateMappedMemoryRanges: TvkInvalidateMappedMemoryRanges = nil;
  2397. vkAllocateMemory: TvkAllocateMemory = nil;
  2398. vkCreateEvent: TvkCreateEvent = nil;
  2399. vkCreateFence: TvkCreateFence = nil;
  2400. vkCreateFramebuffer: TvkCreateFramebuffer = nil;
  2401. vkCreateImage: TvkCreateImage = nil;
  2402. vkCreatePipelineCache: TvkCreatePipelineCache = nil;
  2403. vkQueueSubmit: TvkQueueSubmit = nil;
  2404. vkCreateQueryPool: TvkCreateQueryPool = nil;
  2405. vkCreateSampler: TvkCreateSampler = nil;
  2406. vkCreateSemaphore: TvkCreateSemaphore = nil;
  2407. vkCreateShaderModule: TvkCreateShaderModule = nil;
  2408. vkCmdPipelineBarrier: TvkCmdPipelineBarrier = nil;
  2409. vkCmdWaitEvents: TvkCmdWaitEvents = nil;
  2410. vkCreatePipelineLayout: TvkCreatePipelineLayout = nil;
  2411. vkCreateImageView: TvkCreateImageView = nil;
  2412. vkCreateInstance: TvkCreateInstance = nil;
  2413. vkUpdateDescriptorSets: TvkUpdateDescriptorSets = nil;
  2414. vkCmdBeginRenderPass: TvkCmdBeginRenderPass = nil;
  2415. vkCreateRenderPass: TvkCreateRenderPass = nil;
  2416. vkCreateGraphicsPipelines: TvkCreateGraphicsPipelines = nil;
  2417. vkCreateComputePipelines: TvkCreateComputePipelines = nil;
  2418. const
  2419. VULKAN_LIBNAME = 'vulkan-1.dll';
  2420. type
  2421. VkVersion = VkInt32;
  2422. function vkMakeVersion(const aMajor, aMinor, aPatch: Integer): VkVersion;
  2423. function vkGetVersionMajor(const aVersion: VkVersion): Integer;
  2424. function vkGetVersionMinor(const aVersion: VkVersion): Integer;
  2425. function vkgetVersionPatch(const aVersion: VkVersion): Integer;
  2426. function InitializeVulkan(const aLibName: String = VULKAN_LIBNAME): Boolean;
  2427. procedure FinalizeVulkan;
  2428. implementation
  2429. type
  2430. {$IF DEFINED(VK_WIN)}
  2431. TvkLibHandle = TLibHandle;
  2432. {$ELSE}
  2433. TvkLibHandle = Pointer;
  2434. {$ENDIF}
  2435. const
  2436. {$IF DEFINED(VK_WIN)}
  2437. InvalidLibHandle = 0;
  2438. {$ELSE}
  2439. InvalidLibHandle = nil;
  2440. {$ENDIF}
  2441. var
  2442. vkLibHandle: TvkLibHandle = InvalidLibHandle;
  2443. function vkLoadLibrary(const aLibName: String): TvkLibHandle;
  2444. begin
  2445. {$IF DEFINED(VK_WIN)}
  2446. result := LoadLibrary(aLibName);
  2447. {$ELSE}
  2448. result := InvalidLibHandle;
  2449. {$ENDIF}
  2450. end;
  2451. function vkGetProcAddress(const aProcName: String; aLibHandle: TvkLibHandle = InvalidLibHandle): Pointer;
  2452. begin
  2453. if (aLibHandle = InvalidLibHandle) then
  2454. aLibHandle := vkLibHandle;
  2455. {$IF DEFINED(VK_WIN)}
  2456. result := GetProcAddress(aLibHandle, AnsiString(aProcName));
  2457. {$ELSE}
  2458. result := nil;
  2459. {$ENDIF}
  2460. end;
  2461. procedure vkFreeLibrary(var aLibHandle: TvkLibHandle);
  2462. begin
  2463. if (aLibHandle <> InvalidLibHandle) then begin
  2464. {$IF DEFINED(VK_WIN)}
  2465. FreeLibrary(aLibHandle);
  2466. {$ENDIF}
  2467. aLibHandle := InvalidLibHandle;
  2468. end;
  2469. end;
  2470. function vkMakeVersion(const aMajor, aMinor, aPatch: Integer): VkVersion;
  2471. begin
  2472. result := (aMajor shl 22) or (aMinor shl 12) or aPatch;
  2473. end;
  2474. function vkGetVersionMajor(const aVersion: VkVersion): Integer;
  2475. begin
  2476. result := (aVersion shr 22);
  2477. end;
  2478. function vkGetVersionMinor(const aVersion: VkVersion): Integer;
  2479. begin
  2480. result := (aVersion shr 12) and $3FF;
  2481. end;
  2482. function vkGetVersionPatch(const aVersion: VkVersion): Integer;
  2483. begin
  2484. result := (aVersion and $FFF);
  2485. end;
  2486. function InitializeVulkan(const aLibName: String = VULKAN_LIBNAME): Boolean;
  2487. begin
  2488. FinalizeVulkan;
  2489. vkLibHandle := vkLoadLibrary(aLibName);
  2490. result := (vkLibHandle <> InvalidLibHandle);
  2491. if not result then
  2492. exit;
  2493. {********************************* VK_VERSION_1_0 *********************************}
  2494. vkCmdDispatch := vkGetProcAddress('vkCmdDispatch');
  2495. vkCmdDraw := vkGetProcAddress('vkCmdDraw');
  2496. vkCmdDrawIndexed := vkGetProcAddress('vkCmdDrawIndexed');
  2497. vkCmdEndRenderPass := vkGetProcAddress('vkCmdEndRenderPass');
  2498. vkCmdExecuteCommands := vkGetProcAddress('vkCmdExecuteCommands');
  2499. vkCmdSetBlendConstants := vkGetProcAddress('vkCmdSetBlendConstants');
  2500. vkCmdSetDepthBias := vkGetProcAddress('vkCmdSetDepthBias');
  2501. vkCmdSetDepthBounds := vkGetProcAddress('vkCmdSetDepthBounds');
  2502. vkDeviceWaitIdle := vkGetProcAddress('vkDeviceWaitIdle');
  2503. vkGetDeviceProcAddr := vkGetProcAddress('vkGetDeviceProcAddr');
  2504. vkGetInstanceProcAddr := vkGetProcAddress('vkGetInstanceProcAddr');
  2505. vkEnumeratePhysicalDevices := vkGetProcAddress('vkEnumeratePhysicalDevices');
  2506. vkGetDeviceQueue := vkGetProcAddress('vkGetDeviceQueue');
  2507. vkQueueWaitIdle := vkGetProcAddress('vkQueueWaitIdle');
  2508. vkCmdSetLineWidth := vkGetProcAddress('vkCmdSetLineWidth');
  2509. vkEndCommandBuffer := vkGetProcAddress('vkEndCommandBuffer');
  2510. vkFreeCommandBuffers := vkGetProcAddress('vkFreeCommandBuffers');
  2511. vkFreeDescriptorSets := vkGetProcAddress('vkFreeDescriptorSets');
  2512. vkUnmapMemory := vkGetProcAddress('vkUnmapMemory');
  2513. vkGetEventStatus := vkGetProcAddress('vkGetEventStatus');
  2514. vkResetEvent := vkGetProcAddress('vkResetEvent');
  2515. vkSetEvent := vkGetProcAddress('vkSetEvent');
  2516. vkGetFenceStatus := vkGetProcAddress('vkGetFenceStatus');
  2517. vkResetFences := vkGetProcAddress('vkResetFences');
  2518. vkGetPipelineCacheData := vkGetProcAddress('vkGetPipelineCacheData');
  2519. vkMergePipelineCaches := vkGetProcAddress('vkMergePipelineCaches');
  2520. vkCmdEndQuery := vkGetProcAddress('vkCmdEndQuery');
  2521. vkCmdResetQueryPool := vkGetProcAddress('vkCmdResetQueryPool');
  2522. vkWaitForFences := vkGetProcAddress('vkWaitForFences');
  2523. vkBindBufferMemory := vkGetProcAddress('vkBindBufferMemory');
  2524. vkBindImageMemory := vkGetProcAddress('vkBindImageMemory');
  2525. vkCmdBindVertexBuffers := vkGetProcAddress('vkCmdBindVertexBuffers');
  2526. vkCmdDispatchIndirect := vkGetProcAddress('vkCmdDispatchIndirect');
  2527. vkCmdDrawIndexedIndirect := vkGetProcAddress('vkCmdDrawIndexedIndirect');
  2528. vkCmdDrawIndirect := vkGetProcAddress('vkCmdDrawIndirect');
  2529. vkCmdFillBuffer := vkGetProcAddress('vkCmdFillBuffer');
  2530. vkCmdUpdateBuffer := vkGetProcAddress('vkCmdUpdateBuffer');
  2531. vkGetDeviceMemoryCommitment := vkGetProcAddress('vkGetDeviceMemoryCommitment');
  2532. vkResetCommandBuffer := vkGetProcAddress('vkResetCommandBuffer');
  2533. vkResetCommandPool := vkGetProcAddress('vkResetCommandPool');
  2534. vkResetDescriptorPool := vkGetProcAddress('vkResetDescriptorPool');
  2535. vkMapMemory := vkGetProcAddress('vkMapMemory');
  2536. vkCmdResetEvent := vkGetProcAddress('vkCmdResetEvent');
  2537. vkCmdSetEvent := vkGetProcAddress('vkCmdSetEvent');
  2538. vkCmdBeginQuery := vkGetProcAddress('vkCmdBeginQuery');
  2539. vkCmdCopyQueryPoolResults := vkGetProcAddress('vkCmdCopyQueryPoolResults');
  2540. vkGetQueryPoolResults := vkGetProcAddress('vkGetQueryPoolResults');
  2541. vkCmdPushConstants := vkGetProcAddress('vkCmdPushConstants');
  2542. vkCmdSetStencilCompareMask := vkGetProcAddress('vkCmdSetStencilCompareMask');
  2543. vkCmdSetStencilReference := vkGetProcAddress('vkCmdSetStencilReference');
  2544. vkCmdSetStencilWriteMask := vkGetProcAddress('vkCmdSetStencilWriteMask');
  2545. vkCmdBindPipeline := vkGetProcAddress('vkCmdBindPipeline');
  2546. vkCmdBindDescriptorSets := vkGetProcAddress('vkCmdBindDescriptorSets');
  2547. vkCmdSetViewport := vkGetProcAddress('vkCmdSetViewport');
  2548. vkEnumerateDeviceExtensionProperties := vkGetProcAddress('vkEnumerateDeviceExtensionProperties');
  2549. vkEnumerateInstanceExtensionProperties := vkGetProcAddress('vkEnumerateInstanceExtensionProperties');
  2550. vkGetRenderAreaGranularity := vkGetProcAddress('vkGetRenderAreaGranularity');
  2551. vkEnumerateDeviceLayerProperties := vkGetProcAddress('vkEnumerateDeviceLayerProperties');
  2552. vkEnumerateInstanceLayerProperties := vkGetProcAddress('vkEnumerateInstanceLayerProperties');
  2553. vkCmdBindIndexBuffer := vkGetProcAddress('vkCmdBindIndexBuffer');
  2554. vkGetPhysicalDeviceFeatures := vkGetProcAddress('vkGetPhysicalDeviceFeatures');
  2555. vkCmdCopyBuffer := vkGetProcAddress('vkCmdCopyBuffer');
  2556. vkGetBufferMemoryRequirements := vkGetProcAddress('vkGetBufferMemoryRequirements');
  2557. vkGetImageMemoryRequirements := vkGetProcAddress('vkGetImageMemoryRequirements');
  2558. vkGetPhysicalDeviceFormatProperties := vkGetProcAddress('vkGetPhysicalDeviceFormatProperties');
  2559. vkGetImageSubresourceLayout := vkGetProcAddress('vkGetImageSubresourceLayout');
  2560. vkCmdClearColorImage := vkGetProcAddress('vkCmdClearColorImage');
  2561. vkCmdClearDepthStencilImage := vkGetProcAddress('vkCmdClearDepthStencilImage');
  2562. vkAllocateCommandBuffers := vkGetProcAddress('vkAllocateCommandBuffers');
  2563. vkAllocateDescriptorSets := vkGetProcAddress('vkAllocateDescriptorSets');
  2564. vkCmdSetScissor := vkGetProcAddress('vkCmdSetScissor');
  2565. vkGetPhysicalDeviceQueueFamilyProperties := vkGetProcAddress('vkGetPhysicalDeviceQueueFamilyProperties');
  2566. vkGetPhysicalDeviceImageFormatProperties := vkGetProcAddress('vkGetPhysicalDeviceImageFormatProperties');
  2567. vkCmdCopyImage := vkGetProcAddress('vkCmdCopyImage');
  2568. vkCreateBuffer := vkGetProcAddress('vkCreateBuffer');
  2569. vkCreateBufferView := vkGetProcAddress('vkCreateBufferView');
  2570. vkCreateCommandPool := vkGetProcAddress('vkCreateCommandPool');
  2571. vkDestroyBuffer := vkGetProcAddress('vkDestroyBuffer');
  2572. vkDestroyBufferView := vkGetProcAddress('vkDestroyBufferView');
  2573. vkDestroyCommandPool := vkGetProcAddress('vkDestroyCommandPool');
  2574. vkCmdCopyBufferToImage := vkGetProcAddress('vkCmdCopyBufferToImage');
  2575. vkCmdBlitImage := vkGetProcAddress('vkCmdBlitImage');
  2576. vkQueueBindSparse := vkGetProcAddress('vkQueueBindSparse');
  2577. vkCmdCopyImageToBuffer := vkGetProcAddress('vkCmdCopyImageToBuffer');
  2578. vkCmdResolveImage := vkGetProcAddress('vkCmdResolveImage');
  2579. vkGetPhysicalDeviceMemoryProperties := vkGetProcAddress('vkGetPhysicalDeviceMemoryProperties');
  2580. vkCreateDescriptorPool := vkGetProcAddress('vkCreateDescriptorPool');
  2581. vkCreateDevice := vkGetProcAddress('vkCreateDevice');
  2582. vkCreateDescriptorSetLayout := vkGetProcAddress('vkCreateDescriptorSetLayout');
  2583. vkGetImageSparseMemoryRequirements := vkGetProcAddress('vkGetImageSparseMemoryRequirements');
  2584. vkDestroyDescriptorPool := vkGetProcAddress('vkDestroyDescriptorPool');
  2585. vkDestroyDescriptorSetLayout := vkGetProcAddress('vkDestroyDescriptorSetLayout');
  2586. vkDestroyDevice := vkGetProcAddress('vkDestroyDevice');
  2587. vkDestroyEvent := vkGetProcAddress('vkDestroyEvent');
  2588. vkDestroyFence := vkGetProcAddress('vkDestroyFence');
  2589. vkDestroyFramebuffer := vkGetProcAddress('vkDestroyFramebuffer');
  2590. vkDestroyImage := vkGetProcAddress('vkDestroyImage');
  2591. vkDestroyImageView := vkGetProcAddress('vkDestroyImageView');
  2592. vkDestroyInstance := vkGetProcAddress('vkDestroyInstance');
  2593. vkDestroyPipeline := vkGetProcAddress('vkDestroyPipeline');
  2594. vkDestroyPipelineCache := vkGetProcAddress('vkDestroyPipelineCache');
  2595. vkDestroyPipelineLayout := vkGetProcAddress('vkDestroyPipelineLayout');
  2596. vkGetPhysicalDeviceProperties := vkGetProcAddress('vkGetPhysicalDeviceProperties');
  2597. vkDestroyQueryPool := vkGetProcAddress('vkDestroyQueryPool');
  2598. vkDestroyRenderPass := vkGetProcAddress('vkDestroyRenderPass');
  2599. vkDestroySampler := vkGetProcAddress('vkDestroySampler');
  2600. vkDestroySemaphore := vkGetProcAddress('vkDestroySemaphore');
  2601. vkDestroyShaderModule := vkGetProcAddress('vkDestroyShaderModule');
  2602. vkFreeMemory := vkGetProcAddress('vkFreeMemory');
  2603. vkCmdClearAttachments := vkGetProcAddress('vkCmdClearAttachments');
  2604. vkBeginCommandBuffer := vkGetProcAddress('vkBeginCommandBuffer');
  2605. vkCmdNextSubpass := vkGetProcAddress('vkCmdNextSubpass');
  2606. vkCmdWriteTimestamp := vkGetProcAddress('vkCmdWriteTimestamp');
  2607. vkGetPhysicalDeviceSparseImageFormatProperties := vkGetProcAddress('vkGetPhysicalDeviceSparseImageFormatProperties');
  2608. vkFlushMappedMemoryRanges := vkGetProcAddress('vkFlushMappedMemoryRanges');
  2609. vkInvalidateMappedMemoryRanges := vkGetProcAddress('vkInvalidateMappedMemoryRanges');
  2610. vkAllocateMemory := vkGetProcAddress('vkAllocateMemory');
  2611. vkCreateEvent := vkGetProcAddress('vkCreateEvent');
  2612. vkCreateFence := vkGetProcAddress('vkCreateFence');
  2613. vkCreateFramebuffer := vkGetProcAddress('vkCreateFramebuffer');
  2614. vkCreateImage := vkGetProcAddress('vkCreateImage');
  2615. vkCreatePipelineCache := vkGetProcAddress('vkCreatePipelineCache');
  2616. vkQueueSubmit := vkGetProcAddress('vkQueueSubmit');
  2617. vkCreateQueryPool := vkGetProcAddress('vkCreateQueryPool');
  2618. vkCreateSampler := vkGetProcAddress('vkCreateSampler');
  2619. vkCreateSemaphore := vkGetProcAddress('vkCreateSemaphore');
  2620. vkCreateShaderModule := vkGetProcAddress('vkCreateShaderModule');
  2621. vkCmdPipelineBarrier := vkGetProcAddress('vkCmdPipelineBarrier');
  2622. vkCmdWaitEvents := vkGetProcAddress('vkCmdWaitEvents');
  2623. vkCreatePipelineLayout := vkGetProcAddress('vkCreatePipelineLayout');
  2624. vkCreateImageView := vkGetProcAddress('vkCreateImageView');
  2625. vkCreateInstance := vkGetProcAddress('vkCreateInstance');
  2626. vkUpdateDescriptorSets := vkGetProcAddress('vkUpdateDescriptorSets');
  2627. vkCmdBeginRenderPass := vkGetProcAddress('vkCmdBeginRenderPass');
  2628. vkCreateRenderPass := vkGetProcAddress('vkCreateRenderPass');
  2629. vkCreateGraphicsPipelines := vkGetProcAddress('vkCreateGraphicsPipelines');
  2630. vkCreateComputePipelines := vkGetProcAddress('vkCreateComputePipelines');
  2631. end;
  2632. procedure FinalizeVulkan;
  2633. begin
  2634. vkFreeLibrary(vkLibHandle);
  2635. end;
  2636. initialization
  2637. finalization
  2638. FinalizeVulkan;
  2639. end.