Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

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