Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

4709 рядки
265 KiB

  1. { ============================================================================
  2. This file is autogenerated from vk.xml
  3. You may retrieve the latest version of this file at the Delphi OpenGL
  4. Community home page, located at http://www.delphigl.com/
  5. The contents of this file are used with permission, subject to
  6. the Mozilla Public License Version 1.1 (the "License"); you may
  7. not use this file except in compliance with the License. You may
  8. obtain a copy of the License at
  9. http://www.mozilla.org/MPL/MPL-1.1.html
  10. Software distributed under the License is distributed on an
  11. "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
  12. implied. See the License for the specific language governing
  13. rights and limitations under the License.
  14. Original vk.xml comment:
  15. ==============================================================================
  16. Copyright (c) 2015-2016 The Khronos Group Inc.
  17. Permission is hereby granted, free of charge, to any person obtaining a
  18. copy of this software and/or associated documentation files (the
  19. "Materials"), to deal in the Materials without restriction, including
  20. without limitation the rights to use, copy, modify, merge, publish,
  21. distribute, sublicense, and/or sell copies of the Materials, and to
  22. permit persons to whom the Materials are furnished to do so, subject to
  23. the following conditions:
  24. The above copyright notice and this permission notice shall be included
  25. in all copies or substantial portions of the Materials.
  26. THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  27. EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  28. MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
  29. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
  30. CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
  31. TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
  32. MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
  33. ------------------------------------------------------------------------
  34. This file, vk.xml, is the Vulkan API Registry. It is a critically important
  35. and normative part of the Vulkan Specification, including a canonical
  36. machine-readable definition of the API, parameter and member validation
  37. language incorporated into the Specification and reference pages, and other
  38. material which is registered by Khronos, such as tags used by extension and
  39. layer authors. The only authoritative version of vk.xml is the one
  40. maintained in the master branch of the Khronos Vulkan Github project.
  41. ============================================================================ }
  42. unit Vulkan;
  43. {$I Vulkan.inc}
  44. interface
  45. type
  46. HINSTANCE = THandle;
  47. HWND = THandle;
  48. VkHandle = Pointer;
  49. VkUint8 = Byte;
  50. VkUint16 = Word;
  51. VkUint32 = Cardinal;
  52. VkUint64 = QWord;
  53. VkInt16 = SmallInt;
  54. VkInt32 = Integer;
  55. VkInt64 = Int64;
  56. VkFloat = Single;
  57. VkDouble = Double;
  58. VkChar = AnsiChar;
  59. VkSize = SizeUInt;
  60. PVkVoid = Pointer;
  61. PVkHandle = ^VkHandle;
  62. PVkUint8 = ^VkUint8;
  63. PVkUint16 = ^VkUint16;
  64. PVkUint32 = ^VkUint32;
  65. PVkUint64 = ^VkUint64;
  66. PVkInt16 = ^VkInt16;
  67. PVkInt32 = ^VkInt32;
  68. PVkInt64 = ^VkInt64;
  69. PVkFloat = ^VkFloat;
  70. PVkDouble = ^VkDouble;
  71. PVkChar = ^VkChar;
  72. PVkSize = ^VkSize;
  73. PPVkVoid = ^PVkVoid;
  74. PPVkHandle = ^PVkHandle;
  75. PPVkUint8 = ^PVkUint8;
  76. PPVkUint16 = ^PVkUint16;
  77. PPVkUint32 = ^PVkUint32;
  78. PPVkUint64 = ^PVkUint64;
  79. PPVkInt16 = ^PVkInt16;
  80. PPVkInt32 = ^PVkInt32;
  81. PPVkInt64 = ^PVkInt64;
  82. PPVkFloat = ^PVkFloat;
  83. PPVkDouble = ^PVkDouble;
  84. PPVkChar = ^PVkChar;
  85. PPVkSize = ^PVkSize;
  86. const
  87. VK_API_VERSION = 4194307;
  88. VK_API_VERSION_MAJOR = 1;
  89. VK_API_VERSION_MINOR = 0;
  90. VK_API_VERSION_BUGFIX = 3;
  91. { ========================================== VK_VERSION_1_0 ========================================== }
  92. VK_LOD_CLAMP_NONE = 1000;
  93. VK_REMAINING_MIP_LEVELS = $FFFFFFFF;
  94. VK_REMAINING_ARRAY_LAYERS = $FFFFFFFF;
  95. VK_WHOLE_SIZE = $FFFFFFFF;
  96. VK_ATTACHMENT_UNUSED = $FFFFFFFF;
  97. VK_TRUE = 1;
  98. VK_FALSE = 0;
  99. VK_QUEUE_FAMILY_IGNORED = $FFFFFFFF;
  100. VK_SUBPASS_EXTERNAL = $FFFFFFFF;
  101. VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = 256;
  102. VK_UUID_SIZE = 16;
  103. VK_MAX_MEMORY_TYPES = 32;
  104. VK_MAX_MEMORY_HEAPS = 16;
  105. VK_MAX_EXTENSION_NAME_SIZE = 256;
  106. VK_MAX_DESCRIPTION_SIZE = 256;
  107. { ========================================== VK_KHR_surface ========================================== }
  108. VK_KHR_SURFACE_SPEC_VERSION = 25;
  109. VK_KHR_SURFACE_EXTENSION_NAME = 'VK_KHR_surface';
  110. { ========================================= VK_KHR_swapchain ========================================= }
  111. VK_KHR_SWAPCHAIN_SPEC_VERSION = 67;
  112. VK_KHR_SWAPCHAIN_EXTENSION_NAME = 'VK_KHR_swapchain';
  113. { ========================================== VK_KHR_display ========================================== }
  114. VK_KHR_DISPLAY_SPEC_VERSION = 21;
  115. VK_KHR_DISPLAY_EXTENSION_NAME = 'VK_KHR_display';
  116. { ===================================== VK_KHR_display_swapchain ===================================== }
  117. VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 9;
  118. VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = 'VK_KHR_display_swapchain';
  119. { ======================================= VK_KHR_xlib_surface ======================================== }
  120. {$IFDEF VK_USE_PLATFORM_XLIB_KHR}
  121. VK_KHR_XLIB_SURFACE_SPEC_VERSION = 6;
  122. VK_KHR_XLIB_SURFACE_EXTENSION_NAME = 'VK_KHR_xlib_surface';
  123. {$ENDIF}
  124. { ======================================== VK_KHR_xcb_surface ======================================== }
  125. {$IFDEF VK_USE_PLATFORM_XCB_KHR}
  126. VK_KHR_XCB_SURFACE_SPEC_VERSION = 6;
  127. VK_KHR_XCB_SURFACE_EXTENSION_NAME = 'VK_KHR_xcb_surface';
  128. {$ENDIF}
  129. { ====================================== VK_KHR_wayland_surface ====================================== }
  130. {$IFDEF VK_USE_PLATFORM_WAYLAND_KHR}
  131. VK_KHR_WAYLAND_SURFACE_SPEC_VERSION = 5;
  132. VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME = 'VK_KHR_wayland_surface';
  133. {$ENDIF}
  134. { ======================================== VK_KHR_mir_surface ======================================== }
  135. {$IFDEF VK_USE_PLATFORM_MIR_KHR}
  136. VK_KHR_MIR_SURFACE_SPEC_VERSION = 4;
  137. VK_KHR_MIR_SURFACE_EXTENSION_NAME = 'VK_KHR_mir_surface';
  138. {$ENDIF}
  139. { ====================================== VK_KHR_android_surface ====================================== }
  140. {$IFDEF VK_USE_PLATFORM_ANDROID_KHR}
  141. VK_KHR_ANDROID_SURFACE_SPEC_VERSION = 6;
  142. VK_KHR_ANDROID_SURFACE_EXTENSION_NAME = 'VK_KHR_android_surface';
  143. {$ENDIF}
  144. { ======================================= VK_KHR_win32_surface ======================================= }
  145. {$IFDEF VK_USE_PLATFORM_WIN32_KHR}
  146. VK_KHR_WIN32_SURFACE_SPEC_VERSION = 5;
  147. VK_KHR_WIN32_SURFACE_EXTENSION_NAME = 'VK_KHR_win32_surface';
  148. {$ENDIF}
  149. { ======================================= VK_EXT_debug_report ======================================== }
  150. VK_EXT_DEBUG_REPORT_SPEC_VERSION = 1;
  151. VK_EXT_DEBUG_REPORT_EXTENSION_NAME = 'VK_EXT_debug_report';
  152. type { simple types }
  153. { ========================================== VK_VERSION_1_0 ========================================== }
  154. VkFlags = VkUint32;
  155. PVkFlags = ^VkFlags;
  156. PPVkFlags = ^PVkFlags;
  157. VkInstanceCreateFlags = VkFlags;
  158. PVkInstanceCreateFlags = ^VkInstanceCreateFlags;
  159. PPVkInstanceCreateFlags = ^PVkInstanceCreateFlags;
  160. VkInstance = VkHandle;
  161. PVkInstance = ^VkInstance;
  162. PPVkInstance = ^PVkInstance;
  163. VkPhysicalDevice = VkHandle;
  164. PVkPhysicalDevice = ^VkPhysicalDevice;
  165. PPVkPhysicalDevice = ^PVkPhysicalDevice;
  166. VkBool32 = VkUint32;
  167. PVkBool32 = ^VkBool32;
  168. PPVkBool32 = ^PVkBool32;
  169. VkFormatFeatureFlags = VkFlags;
  170. PVkFormatFeatureFlags = ^VkFormatFeatureFlags;
  171. PPVkFormatFeatureFlags = ^PVkFormatFeatureFlags;
  172. VkImageUsageFlags = VkFlags;
  173. PVkImageUsageFlags = ^VkImageUsageFlags;
  174. PPVkImageUsageFlags = ^PVkImageUsageFlags;
  175. VkImageCreateFlags = VkFlags;
  176. PVkImageCreateFlags = ^VkImageCreateFlags;
  177. PPVkImageCreateFlags = ^PVkImageCreateFlags;
  178. VkSampleCountFlags = VkFlags;
  179. PVkSampleCountFlags = ^VkSampleCountFlags;
  180. PPVkSampleCountFlags = ^PVkSampleCountFlags;
  181. VkDeviceSize = VkUint64;
  182. PVkDeviceSize = ^VkDeviceSize;
  183. PPVkDeviceSize = ^PVkDeviceSize;
  184. VkQueueFlags = VkFlags;
  185. PVkQueueFlags = ^VkQueueFlags;
  186. PPVkQueueFlags = ^PVkQueueFlags;
  187. VkMemoryPropertyFlags = VkFlags;
  188. PVkMemoryPropertyFlags = ^VkMemoryPropertyFlags;
  189. PPVkMemoryPropertyFlags = ^PVkMemoryPropertyFlags;
  190. VkMemoryHeapFlags = VkFlags;
  191. PVkMemoryHeapFlags = ^VkMemoryHeapFlags;
  192. PPVkMemoryHeapFlags = ^PVkMemoryHeapFlags;
  193. VkDevice = VkHandle;
  194. PVkDevice = ^VkDevice;
  195. PPVkDevice = ^PVkDevice;
  196. VkDeviceCreateFlags = VkFlags;
  197. PVkDeviceCreateFlags = ^VkDeviceCreateFlags;
  198. PPVkDeviceCreateFlags = ^PVkDeviceCreateFlags;
  199. VkDeviceQueueCreateFlags = VkFlags;
  200. PVkDeviceQueueCreateFlags = ^VkDeviceQueueCreateFlags;
  201. PPVkDeviceQueueCreateFlags = ^PVkDeviceQueueCreateFlags;
  202. VkQueue = VkHandle;
  203. PVkQueue = ^VkQueue;
  204. PPVkQueue = ^PVkQueue;
  205. VkSemaphore = VkHandle;
  206. PVkSemaphore = ^VkSemaphore;
  207. PPVkSemaphore = ^PVkSemaphore;
  208. VkPipelineStageFlags = VkFlags;
  209. PVkPipelineStageFlags = ^VkPipelineStageFlags;
  210. PPVkPipelineStageFlags = ^PVkPipelineStageFlags;
  211. VkCommandBuffer = VkHandle;
  212. PVkCommandBuffer = ^VkCommandBuffer;
  213. PPVkCommandBuffer = ^PVkCommandBuffer;
  214. VkFence = VkHandle;
  215. PVkFence = ^VkFence;
  216. PPVkFence = ^PVkFence;
  217. VkDeviceMemory = VkHandle;
  218. PVkDeviceMemory = ^VkDeviceMemory;
  219. PPVkDeviceMemory = ^PVkDeviceMemory;
  220. VkMemoryMapFlags = VkFlags;
  221. PVkMemoryMapFlags = ^VkMemoryMapFlags;
  222. PPVkMemoryMapFlags = ^PVkMemoryMapFlags;
  223. VkBuffer = VkHandle;
  224. PVkBuffer = ^VkBuffer;
  225. PPVkBuffer = ^PVkBuffer;
  226. VkImage = VkHandle;
  227. PVkImage = ^VkImage;
  228. PPVkImage = ^PVkImage;
  229. VkImageAspectFlags = VkFlags;
  230. PVkImageAspectFlags = ^VkImageAspectFlags;
  231. PPVkImageAspectFlags = ^PVkImageAspectFlags;
  232. VkSparseImageFormatFlags = VkFlags;
  233. PVkSparseImageFormatFlags = ^VkSparseImageFormatFlags;
  234. PPVkSparseImageFormatFlags = ^PVkSparseImageFormatFlags;
  235. VkSparseMemoryBindFlags = VkFlags;
  236. PVkSparseMemoryBindFlags = ^VkSparseMemoryBindFlags;
  237. PPVkSparseMemoryBindFlags = ^PVkSparseMemoryBindFlags;
  238. VkFenceCreateFlags = VkFlags;
  239. PVkFenceCreateFlags = ^VkFenceCreateFlags;
  240. PPVkFenceCreateFlags = ^PVkFenceCreateFlags;
  241. VkSemaphoreCreateFlags = VkFlags;
  242. PVkSemaphoreCreateFlags = ^VkSemaphoreCreateFlags;
  243. PPVkSemaphoreCreateFlags = ^PVkSemaphoreCreateFlags;
  244. VkEventCreateFlags = VkFlags;
  245. PVkEventCreateFlags = ^VkEventCreateFlags;
  246. PPVkEventCreateFlags = ^PVkEventCreateFlags;
  247. VkEvent = VkHandle;
  248. PVkEvent = ^VkEvent;
  249. PPVkEvent = ^PVkEvent;
  250. VkQueryPoolCreateFlags = VkFlags;
  251. PVkQueryPoolCreateFlags = ^VkQueryPoolCreateFlags;
  252. PPVkQueryPoolCreateFlags = ^PVkQueryPoolCreateFlags;
  253. VkQueryPipelineStatisticFlags = VkFlags;
  254. PVkQueryPipelineStatisticFlags = ^VkQueryPipelineStatisticFlags;
  255. PPVkQueryPipelineStatisticFlags = ^PVkQueryPipelineStatisticFlags;
  256. VkQueryPool = VkHandle;
  257. PVkQueryPool = ^VkQueryPool;
  258. PPVkQueryPool = ^PVkQueryPool;
  259. VkQueryResultFlags = VkFlags;
  260. PVkQueryResultFlags = ^VkQueryResultFlags;
  261. PPVkQueryResultFlags = ^PVkQueryResultFlags;
  262. VkBufferCreateFlags = VkFlags;
  263. PVkBufferCreateFlags = ^VkBufferCreateFlags;
  264. PPVkBufferCreateFlags = ^PVkBufferCreateFlags;
  265. VkBufferUsageFlags = VkFlags;
  266. PVkBufferUsageFlags = ^VkBufferUsageFlags;
  267. PPVkBufferUsageFlags = ^PVkBufferUsageFlags;
  268. VkBufferViewCreateFlags = VkFlags;
  269. PVkBufferViewCreateFlags = ^VkBufferViewCreateFlags;
  270. PPVkBufferViewCreateFlags = ^PVkBufferViewCreateFlags;
  271. VkBufferView = VkHandle;
  272. PVkBufferView = ^VkBufferView;
  273. PPVkBufferView = ^PVkBufferView;
  274. VkImageViewCreateFlags = VkFlags;
  275. PVkImageViewCreateFlags = ^VkImageViewCreateFlags;
  276. PPVkImageViewCreateFlags = ^PVkImageViewCreateFlags;
  277. VkImageView = VkHandle;
  278. PVkImageView = ^VkImageView;
  279. PPVkImageView = ^PVkImageView;
  280. VkShaderModuleCreateFlags = VkFlags;
  281. PVkShaderModuleCreateFlags = ^VkShaderModuleCreateFlags;
  282. PPVkShaderModuleCreateFlags = ^PVkShaderModuleCreateFlags;
  283. VkShaderModule = VkHandle;
  284. PVkShaderModule = ^VkShaderModule;
  285. PPVkShaderModule = ^PVkShaderModule;
  286. VkPipelineCacheCreateFlags = VkFlags;
  287. PVkPipelineCacheCreateFlags = ^VkPipelineCacheCreateFlags;
  288. PPVkPipelineCacheCreateFlags = ^PVkPipelineCacheCreateFlags;
  289. VkPipelineCache = VkHandle;
  290. PVkPipelineCache = ^VkPipelineCache;
  291. PPVkPipelineCache = ^PVkPipelineCache;
  292. VkPipelineCreateFlags = VkFlags;
  293. PVkPipelineCreateFlags = ^VkPipelineCreateFlags;
  294. PPVkPipelineCreateFlags = ^PVkPipelineCreateFlags;
  295. VkPipelineShaderStageCreateFlags = VkFlags;
  296. PVkPipelineShaderStageCreateFlags = ^VkPipelineShaderStageCreateFlags;
  297. PPVkPipelineShaderStageCreateFlags = ^PVkPipelineShaderStageCreateFlags;
  298. VkPipelineVertexInputStateCreateFlags = VkFlags;
  299. PVkPipelineVertexInputStateCreateFlags = ^VkPipelineVertexInputStateCreateFlags;
  300. PPVkPipelineVertexInputStateCreateFlags = ^PVkPipelineVertexInputStateCreateFlags;
  301. VkPipelineInputAssemblyStateCreateFlags = VkFlags;
  302. PVkPipelineInputAssemblyStateCreateFlags = ^VkPipelineInputAssemblyStateCreateFlags;
  303. PPVkPipelineInputAssemblyStateCreateFlags = ^PVkPipelineInputAssemblyStateCreateFlags;
  304. VkPipelineTessellationStateCreateFlags = VkFlags;
  305. PVkPipelineTessellationStateCreateFlags = ^VkPipelineTessellationStateCreateFlags;
  306. PPVkPipelineTessellationStateCreateFlags = ^PVkPipelineTessellationStateCreateFlags;
  307. VkPipelineViewportStateCreateFlags = VkFlags;
  308. PVkPipelineViewportStateCreateFlags = ^VkPipelineViewportStateCreateFlags;
  309. PPVkPipelineViewportStateCreateFlags = ^PVkPipelineViewportStateCreateFlags;
  310. VkPipelineRasterizationStateCreateFlags = VkFlags;
  311. PVkPipelineRasterizationStateCreateFlags = ^VkPipelineRasterizationStateCreateFlags;
  312. PPVkPipelineRasterizationStateCreateFlags = ^PVkPipelineRasterizationStateCreateFlags;
  313. VkCullModeFlags = VkFlags;
  314. PVkCullModeFlags = ^VkCullModeFlags;
  315. PPVkCullModeFlags = ^PVkCullModeFlags;
  316. VkPipelineMultisampleStateCreateFlags = VkFlags;
  317. PVkPipelineMultisampleStateCreateFlags = ^VkPipelineMultisampleStateCreateFlags;
  318. PPVkPipelineMultisampleStateCreateFlags = ^PVkPipelineMultisampleStateCreateFlags;
  319. VkSampleMask = VkUint32;
  320. PVkSampleMask = ^VkSampleMask;
  321. PPVkSampleMask = ^PVkSampleMask;
  322. VkPipelineDepthStencilStateCreateFlags = VkFlags;
  323. PVkPipelineDepthStencilStateCreateFlags = ^VkPipelineDepthStencilStateCreateFlags;
  324. PPVkPipelineDepthStencilStateCreateFlags = ^PVkPipelineDepthStencilStateCreateFlags;
  325. VkPipelineColorBlendStateCreateFlags = VkFlags;
  326. PVkPipelineColorBlendStateCreateFlags = ^VkPipelineColorBlendStateCreateFlags;
  327. PPVkPipelineColorBlendStateCreateFlags = ^PVkPipelineColorBlendStateCreateFlags;
  328. VkColorComponentFlags = VkFlags;
  329. PVkColorComponentFlags = ^VkColorComponentFlags;
  330. PPVkColorComponentFlags = ^PVkColorComponentFlags;
  331. VkPipelineDynamicStateCreateFlags = VkFlags;
  332. PVkPipelineDynamicStateCreateFlags = ^VkPipelineDynamicStateCreateFlags;
  333. PPVkPipelineDynamicStateCreateFlags = ^PVkPipelineDynamicStateCreateFlags;
  334. VkPipelineLayout = VkHandle;
  335. PVkPipelineLayout = ^VkPipelineLayout;
  336. PPVkPipelineLayout = ^PVkPipelineLayout;
  337. VkRenderPass = VkHandle;
  338. PVkRenderPass = ^VkRenderPass;
  339. PPVkRenderPass = ^PVkRenderPass;
  340. VkPipeline = VkHandle;
  341. PVkPipeline = ^VkPipeline;
  342. PPVkPipeline = ^PVkPipeline;
  343. VkPipelineLayoutCreateFlags = VkFlags;
  344. PVkPipelineLayoutCreateFlags = ^VkPipelineLayoutCreateFlags;
  345. PPVkPipelineLayoutCreateFlags = ^PVkPipelineLayoutCreateFlags;
  346. VkDescriptorSetLayout = VkHandle;
  347. PVkDescriptorSetLayout = ^VkDescriptorSetLayout;
  348. PPVkDescriptorSetLayout = ^PVkDescriptorSetLayout;
  349. VkShaderStageFlags = VkFlags;
  350. PVkShaderStageFlags = ^VkShaderStageFlags;
  351. PPVkShaderStageFlags = ^PVkShaderStageFlags;
  352. VkSamplerCreateFlags = VkFlags;
  353. PVkSamplerCreateFlags = ^VkSamplerCreateFlags;
  354. PPVkSamplerCreateFlags = ^PVkSamplerCreateFlags;
  355. VkSampler = VkHandle;
  356. PVkSampler = ^VkSampler;
  357. PPVkSampler = ^PVkSampler;
  358. VkDescriptorSetLayoutCreateFlags = VkFlags;
  359. PVkDescriptorSetLayoutCreateFlags = ^VkDescriptorSetLayoutCreateFlags;
  360. PPVkDescriptorSetLayoutCreateFlags = ^PVkDescriptorSetLayoutCreateFlags;
  361. VkDescriptorPoolCreateFlags = VkFlags;
  362. PVkDescriptorPoolCreateFlags = ^VkDescriptorPoolCreateFlags;
  363. PPVkDescriptorPoolCreateFlags = ^PVkDescriptorPoolCreateFlags;
  364. VkDescriptorPool = VkHandle;
  365. PVkDescriptorPool = ^VkDescriptorPool;
  366. PPVkDescriptorPool = ^PVkDescriptorPool;
  367. VkDescriptorPoolResetFlags = VkFlags;
  368. PVkDescriptorPoolResetFlags = ^VkDescriptorPoolResetFlags;
  369. PPVkDescriptorPoolResetFlags = ^PVkDescriptorPoolResetFlags;
  370. VkDescriptorSet = VkHandle;
  371. PVkDescriptorSet = ^VkDescriptorSet;
  372. PPVkDescriptorSet = ^PVkDescriptorSet;
  373. VkFramebufferCreateFlags = VkFlags;
  374. PVkFramebufferCreateFlags = ^VkFramebufferCreateFlags;
  375. PPVkFramebufferCreateFlags = ^PVkFramebufferCreateFlags;
  376. VkFramebuffer = VkHandle;
  377. PVkFramebuffer = ^VkFramebuffer;
  378. PPVkFramebuffer = ^PVkFramebuffer;
  379. VkRenderPassCreateFlags = VkFlags;
  380. PVkRenderPassCreateFlags = ^VkRenderPassCreateFlags;
  381. PPVkRenderPassCreateFlags = ^PVkRenderPassCreateFlags;
  382. VkAttachmentDescriptionFlags = VkFlags;
  383. PVkAttachmentDescriptionFlags = ^VkAttachmentDescriptionFlags;
  384. PPVkAttachmentDescriptionFlags = ^PVkAttachmentDescriptionFlags;
  385. VkSubpassDescriptionFlags = VkFlags;
  386. PVkSubpassDescriptionFlags = ^VkSubpassDescriptionFlags;
  387. PPVkSubpassDescriptionFlags = ^PVkSubpassDescriptionFlags;
  388. VkAccessFlags = VkFlags;
  389. PVkAccessFlags = ^VkAccessFlags;
  390. PPVkAccessFlags = ^PVkAccessFlags;
  391. VkDependencyFlags = VkFlags;
  392. PVkDependencyFlags = ^VkDependencyFlags;
  393. PPVkDependencyFlags = ^PVkDependencyFlags;
  394. VkCommandPoolCreateFlags = VkFlags;
  395. PVkCommandPoolCreateFlags = ^VkCommandPoolCreateFlags;
  396. PPVkCommandPoolCreateFlags = ^PVkCommandPoolCreateFlags;
  397. VkCommandPool = VkHandle;
  398. PVkCommandPool = ^VkCommandPool;
  399. PPVkCommandPool = ^PVkCommandPool;
  400. VkCommandPoolResetFlags = VkFlags;
  401. PVkCommandPoolResetFlags = ^VkCommandPoolResetFlags;
  402. PPVkCommandPoolResetFlags = ^PVkCommandPoolResetFlags;
  403. VkCommandBufferUsageFlags = VkFlags;
  404. PVkCommandBufferUsageFlags = ^VkCommandBufferUsageFlags;
  405. PPVkCommandBufferUsageFlags = ^PVkCommandBufferUsageFlags;
  406. VkQueryControlFlags = VkFlags;
  407. PVkQueryControlFlags = ^VkQueryControlFlags;
  408. PPVkQueryControlFlags = ^PVkQueryControlFlags;
  409. VkCommandBufferResetFlags = VkFlags;
  410. PVkCommandBufferResetFlags = ^VkCommandBufferResetFlags;
  411. PPVkCommandBufferResetFlags = ^PVkCommandBufferResetFlags;
  412. VkStencilFaceFlags = VkFlags;
  413. PVkStencilFaceFlags = ^VkStencilFaceFlags;
  414. PPVkStencilFaceFlags = ^PVkStencilFaceFlags;
  415. { ========================================== VK_KHR_surface ========================================== }
  416. VkSurfaceKHR = VkHandle;
  417. PVkSurfaceKHR = ^VkSurfaceKHR;
  418. PPVkSurfaceKHR = ^PVkSurfaceKHR;
  419. VkSurfaceTransformFlagsKHR = VkFlags;
  420. PVkSurfaceTransformFlagsKHR = ^VkSurfaceTransformFlagsKHR;
  421. PPVkSurfaceTransformFlagsKHR = ^PVkSurfaceTransformFlagsKHR;
  422. VkCompositeAlphaFlagsKHR = VkFlags;
  423. PVkCompositeAlphaFlagsKHR = ^VkCompositeAlphaFlagsKHR;
  424. PPVkCompositeAlphaFlagsKHR = ^PVkCompositeAlphaFlagsKHR;
  425. { ========================================= VK_KHR_swapchain ========================================= }
  426. VkSwapchainCreateFlagsKHR = VkFlags;
  427. PVkSwapchainCreateFlagsKHR = ^VkSwapchainCreateFlagsKHR;
  428. PPVkSwapchainCreateFlagsKHR = ^PVkSwapchainCreateFlagsKHR;
  429. VkSwapchainKHR = VkHandle;
  430. PVkSwapchainKHR = ^VkSwapchainKHR;
  431. PPVkSwapchainKHR = ^PVkSwapchainKHR;
  432. { ========================================== VK_KHR_display ========================================== }
  433. VkDisplayKHR = VkHandle;
  434. PVkDisplayKHR = ^VkDisplayKHR;
  435. PPVkDisplayKHR = ^PVkDisplayKHR;
  436. VkDisplayModeKHR = VkHandle;
  437. PVkDisplayModeKHR = ^VkDisplayModeKHR;
  438. PPVkDisplayModeKHR = ^PVkDisplayModeKHR;
  439. VkDisplayModeCreateFlagsKHR = VkFlags;
  440. PVkDisplayModeCreateFlagsKHR = ^VkDisplayModeCreateFlagsKHR;
  441. PPVkDisplayModeCreateFlagsKHR = ^PVkDisplayModeCreateFlagsKHR;
  442. VkDisplayPlaneAlphaFlagsKHR = VkFlags;
  443. PVkDisplayPlaneAlphaFlagsKHR = ^VkDisplayPlaneAlphaFlagsKHR;
  444. PPVkDisplayPlaneAlphaFlagsKHR = ^PVkDisplayPlaneAlphaFlagsKHR;
  445. VkDisplaySurfaceCreateFlagsKHR = VkFlags;
  446. PVkDisplaySurfaceCreateFlagsKHR = ^VkDisplaySurfaceCreateFlagsKHR;
  447. PPVkDisplaySurfaceCreateFlagsKHR = ^PVkDisplaySurfaceCreateFlagsKHR;
  448. { ======================================= VK_KHR_xlib_surface ======================================== }
  449. {$IFDEF VK_USE_PLATFORM_XLIB_KHR}
  450. VkXlibSurfaceCreateFlagsKHR = VkFlags;
  451. PVkXlibSurfaceCreateFlagsKHR = ^VkXlibSurfaceCreateFlagsKHR;
  452. PPVkXlibSurfaceCreateFlagsKHR = ^PVkXlibSurfaceCreateFlagsKHR;
  453. {$ENDIF}
  454. { ======================================== VK_KHR_xcb_surface ======================================== }
  455. {$IFDEF VK_USE_PLATFORM_XCB_KHR}
  456. VkXcbSurfaceCreateFlagsKHR = VkFlags;
  457. PVkXcbSurfaceCreateFlagsKHR = ^VkXcbSurfaceCreateFlagsKHR;
  458. PPVkXcbSurfaceCreateFlagsKHR = ^PVkXcbSurfaceCreateFlagsKHR;
  459. {$ENDIF}
  460. { ====================================== VK_KHR_wayland_surface ====================================== }
  461. {$IFDEF VK_USE_PLATFORM_WAYLAND_KHR}
  462. VkWaylandSurfaceCreateFlagsKHR = VkFlags;
  463. PVkWaylandSurfaceCreateFlagsKHR = ^VkWaylandSurfaceCreateFlagsKHR;
  464. PPVkWaylandSurfaceCreateFlagsKHR = ^PVkWaylandSurfaceCreateFlagsKHR;
  465. {$ENDIF}
  466. { ======================================== VK_KHR_mir_surface ======================================== }
  467. {$IFDEF VK_USE_PLATFORM_MIR_KHR}
  468. VkMirSurfaceCreateFlagsKHR = VkFlags;
  469. PVkMirSurfaceCreateFlagsKHR = ^VkMirSurfaceCreateFlagsKHR;
  470. PPVkMirSurfaceCreateFlagsKHR = ^PVkMirSurfaceCreateFlagsKHR;
  471. {$ENDIF}
  472. { ====================================== VK_KHR_android_surface ====================================== }
  473. {$IFDEF VK_USE_PLATFORM_ANDROID_KHR}
  474. VkAndroidSurfaceCreateFlagsKHR = VkFlags;
  475. PVkAndroidSurfaceCreateFlagsKHR = ^VkAndroidSurfaceCreateFlagsKHR;
  476. PPVkAndroidSurfaceCreateFlagsKHR = ^PVkAndroidSurfaceCreateFlagsKHR;
  477. {$ENDIF}
  478. { ======================================= VK_KHR_win32_surface ======================================= }
  479. {$IFDEF VK_USE_PLATFORM_WIN32_KHR}
  480. VkWin32SurfaceCreateFlagsKHR = VkFlags;
  481. PVkWin32SurfaceCreateFlagsKHR = ^VkWin32SurfaceCreateFlagsKHR;
  482. PPVkWin32SurfaceCreateFlagsKHR = ^PVkWin32SurfaceCreateFlagsKHR;
  483. {$ENDIF}
  484. { ======================================= VK_EXT_debug_report ======================================== }
  485. VkDebugReportFlagsEXT = VkFlags;
  486. PVkDebugReportFlagsEXT = ^VkDebugReportFlagsEXT;
  487. PPVkDebugReportFlagsEXT = ^PVkDebugReportFlagsEXT;
  488. VkDebugReportCallbackEXT = VkHandle;
  489. PVkDebugReportCallbackEXT = ^VkDebugReportCallbackEXT;
  490. PPVkDebugReportCallbackEXT = ^PVkDebugReportCallbackEXT;
  491. type { enumerations }
  492. { ========================================== VK_VERSION_1_0 ========================================== }
  493. TVkPipelineCacheHeaderVersion = (
  494. VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1,
  495. VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = $7FFFFFFF
  496. );
  497. PVkPipelineCacheHeaderVersion = ^TVkPipelineCacheHeaderVersion;
  498. PPVkPipelineCacheHeaderVersion = ^PVkPipelineCacheHeaderVersion;
  499. TVkResult = (
  500. VK_SUCCESS = 0,
  501. VK_NOT_READY = 1,
  502. VK_TIMEOUT = 2,
  503. VK_EVENT_SET = 3,
  504. VK_EVENT_RESET = 4,
  505. VK_INCOMPLETE = 5,
  506. VK_ERROR_OUT_OF_HOST_MEMORY = -1,
  507. VK_ERROR_OUT_OF_DEVICE_MEMORY = -2,
  508. VK_ERROR_INITIALIZATION_FAILED = -3,
  509. VK_ERROR_DEVICE_LOST = -4,
  510. VK_ERROR_MEMORY_MAP_FAILED = -5,
  511. VK_ERROR_LAYER_NOT_PRESENT = -6,
  512. VK_ERROR_EXTENSION_NOT_PRESENT = -7,
  513. VK_ERROR_FEATURE_NOT_PRESENT = -8,
  514. VK_ERROR_INCOMPATIBLE_DRIVER = -9,
  515. VK_ERROR_TOO_MANY_OBJECTS = -10,
  516. VK_ERROR_FORMAT_NOT_SUPPORTED = -11,
  517. VK_ERROR_SURFACE_LOST_KHR = -1000000000,
  518. VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001,
  519. VK_SUBOPTIMAL_KHR = 1000001003,
  520. VK_ERROR_OUT_OF_DATE_KHR = -1000001004,
  521. VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001,
  522. VK_ERROR_VALIDATION_FAILED_EXT = -1000011001,
  523. VK_RESULT_MAX_ENUM = $7FFFFFFF
  524. );
  525. PVkResult = ^TVkResult;
  526. PPVkResult = ^PVkResult;
  527. TVkStructureType = (
  528. VK_STRUCTURE_TYPE_APPLICATION_INFO = 0,
  529. VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1,
  530. VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2,
  531. VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3,
  532. VK_STRUCTURE_TYPE_SUBMIT_INFO = 4,
  533. VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5,
  534. VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6,
  535. VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7,
  536. VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8,
  537. VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9,
  538. VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10,
  539. VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11,
  540. VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12,
  541. VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13,
  542. VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14,
  543. VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15,
  544. VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16,
  545. VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17,
  546. VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18,
  547. VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19,
  548. VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20,
  549. VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21,
  550. VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22,
  551. VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23,
  552. VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24,
  553. VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25,
  554. VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26,
  555. VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27,
  556. VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28,
  557. VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29,
  558. VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30,
  559. VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31,
  560. VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32,
  561. VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33,
  562. VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34,
  563. VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35,
  564. VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36,
  565. VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37,
  566. VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38,
  567. VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39,
  568. VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40,
  569. VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41,
  570. VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42,
  571. VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43,
  572. VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44,
  573. VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45,
  574. VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46,
  575. VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47,
  576. VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48,
  577. VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000,
  578. VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001,
  579. VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = 1000002000,
  580. VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = 1000002001,
  581. VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR = 1000003000,
  582. VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = 1000004000,
  583. VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = 1000005000,
  584. VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = 1000006000,
  585. VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR = 1000007000,
  586. VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = 1000008000,
  587. VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000,
  588. VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = 1000011000,
  589. VK_STRUCTURE_TYPE_MAX_ENUM = $7FFFFFFF
  590. );
  591. PVkStructureType = ^TVkStructureType;
  592. PPVkStructureType = ^PVkStructureType;
  593. TVkSystemAllocationScope = (
  594. VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0,
  595. VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1,
  596. VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2,
  597. VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3,
  598. VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4,
  599. VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = $7FFFFFFF
  600. );
  601. PVkSystemAllocationScope = ^TVkSystemAllocationScope;
  602. PPVkSystemAllocationScope = ^PVkSystemAllocationScope;
  603. TVkInternalAllocationType = (
  604. VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0,
  605. VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = $7FFFFFFF
  606. );
  607. PVkInternalAllocationType = ^TVkInternalAllocationType;
  608. PPVkInternalAllocationType = ^PVkInternalAllocationType;
  609. TVkFormat = (
  610. VK_FORMAT_UNDEFINED = 0,
  611. VK_FORMAT_R4G4_UNORM_PACK8 = 1,
  612. VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2,
  613. VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3,
  614. VK_FORMAT_R5G6B5_UNORM_PACK16 = 4,
  615. VK_FORMAT_B5G6R5_UNORM_PACK16 = 5,
  616. VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6,
  617. VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7,
  618. VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 8,
  619. VK_FORMAT_R8_UNORM = 9,
  620. VK_FORMAT_R8_SNORM = 10,
  621. VK_FORMAT_R8_USCALED = 11,
  622. VK_FORMAT_R8_SSCALED = 12,
  623. VK_FORMAT_R8_UINT = 13,
  624. VK_FORMAT_R8_SINT = 14,
  625. VK_FORMAT_R8_SRGB = 15,
  626. VK_FORMAT_R8G8_UNORM = 16,
  627. VK_FORMAT_R8G8_SNORM = 17,
  628. VK_FORMAT_R8G8_USCALED = 18,
  629. VK_FORMAT_R8G8_SSCALED = 19,
  630. VK_FORMAT_R8G8_UINT = 20,
  631. VK_FORMAT_R8G8_SINT = 21,
  632. VK_FORMAT_R8G8_SRGB = 22,
  633. VK_FORMAT_R8G8B8_UNORM = 23,
  634. VK_FORMAT_R8G8B8_SNORM = 24,
  635. VK_FORMAT_R8G8B8_USCALED = 25,
  636. VK_FORMAT_R8G8B8_SSCALED = 26,
  637. VK_FORMAT_R8G8B8_UINT = 27,
  638. VK_FORMAT_R8G8B8_SINT = 28,
  639. VK_FORMAT_R8G8B8_SRGB = 29,
  640. VK_FORMAT_B8G8R8_UNORM = 30,
  641. VK_FORMAT_B8G8R8_SNORM = 31,
  642. VK_FORMAT_B8G8R8_USCALED = 32,
  643. VK_FORMAT_B8G8R8_SSCALED = 33,
  644. VK_FORMAT_B8G8R8_UINT = 34,
  645. VK_FORMAT_B8G8R8_SINT = 35,
  646. VK_FORMAT_B8G8R8_SRGB = 36,
  647. VK_FORMAT_R8G8B8A8_UNORM = 37,
  648. VK_FORMAT_R8G8B8A8_SNORM = 38,
  649. VK_FORMAT_R8G8B8A8_USCALED = 39,
  650. VK_FORMAT_R8G8B8A8_SSCALED = 40,
  651. VK_FORMAT_R8G8B8A8_UINT = 41,
  652. VK_FORMAT_R8G8B8A8_SINT = 42,
  653. VK_FORMAT_R8G8B8A8_SRGB = 43,
  654. VK_FORMAT_B8G8R8A8_UNORM = 44,
  655. VK_FORMAT_B8G8R8A8_SNORM = 45,
  656. VK_FORMAT_B8G8R8A8_USCALED = 46,
  657. VK_FORMAT_B8G8R8A8_SSCALED = 47,
  658. VK_FORMAT_B8G8R8A8_UINT = 48,
  659. VK_FORMAT_B8G8R8A8_SINT = 49,
  660. VK_FORMAT_B8G8R8A8_SRGB = 50,
  661. VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51,
  662. VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52,
  663. VK_FORMAT_A8B8G8R8_USCALED_PACK32 = 53,
  664. VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = 54,
  665. VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55,
  666. VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56,
  667. VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57,
  668. VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58,
  669. VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59,
  670. VK_FORMAT_A2R10G10B10_USCALED_PACK32 = 60,
  671. VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = 61,
  672. VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62,
  673. VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63,
  674. VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64,
  675. VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65,
  676. VK_FORMAT_A2B10G10R10_USCALED_PACK32 = 66,
  677. VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = 67,
  678. VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68,
  679. VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69,
  680. VK_FORMAT_R16_UNORM = 70,
  681. VK_FORMAT_R16_SNORM = 71,
  682. VK_FORMAT_R16_USCALED = 72,
  683. VK_FORMAT_R16_SSCALED = 73,
  684. VK_FORMAT_R16_UINT = 74,
  685. VK_FORMAT_R16_SINT = 75,
  686. VK_FORMAT_R16_SFLOAT = 76,
  687. VK_FORMAT_R16G16_UNORM = 77,
  688. VK_FORMAT_R16G16_SNORM = 78,
  689. VK_FORMAT_R16G16_USCALED = 79,
  690. VK_FORMAT_R16G16_SSCALED = 80,
  691. VK_FORMAT_R16G16_UINT = 81,
  692. VK_FORMAT_R16G16_SINT = 82,
  693. VK_FORMAT_R16G16_SFLOAT = 83,
  694. VK_FORMAT_R16G16B16_UNORM = 84,
  695. VK_FORMAT_R16G16B16_SNORM = 85,
  696. VK_FORMAT_R16G16B16_USCALED = 86,
  697. VK_FORMAT_R16G16B16_SSCALED = 87,
  698. VK_FORMAT_R16G16B16_UINT = 88,
  699. VK_FORMAT_R16G16B16_SINT = 89,
  700. VK_FORMAT_R16G16B16_SFLOAT = 90,
  701. VK_FORMAT_R16G16B16A16_UNORM = 91,
  702. VK_FORMAT_R16G16B16A16_SNORM = 92,
  703. VK_FORMAT_R16G16B16A16_USCALED = 93,
  704. VK_FORMAT_R16G16B16A16_SSCALED = 94,
  705. VK_FORMAT_R16G16B16A16_UINT = 95,
  706. VK_FORMAT_R16G16B16A16_SINT = 96,
  707. VK_FORMAT_R16G16B16A16_SFLOAT = 97,
  708. VK_FORMAT_R32_UINT = 98,
  709. VK_FORMAT_R32_SINT = 99,
  710. VK_FORMAT_R32_SFLOAT = 100,
  711. VK_FORMAT_R32G32_UINT = 101,
  712. VK_FORMAT_R32G32_SINT = 102,
  713. VK_FORMAT_R32G32_SFLOAT = 103,
  714. VK_FORMAT_R32G32B32_UINT = 104,
  715. VK_FORMAT_R32G32B32_SINT = 105,
  716. VK_FORMAT_R32G32B32_SFLOAT = 106,
  717. VK_FORMAT_R32G32B32A32_UINT = 107,
  718. VK_FORMAT_R32G32B32A32_SINT = 108,
  719. VK_FORMAT_R32G32B32A32_SFLOAT = 109,
  720. VK_FORMAT_R64_UINT = 110,
  721. VK_FORMAT_R64_SINT = 111,
  722. VK_FORMAT_R64_SFLOAT = 112,
  723. VK_FORMAT_R64G64_UINT = 113,
  724. VK_FORMAT_R64G64_SINT = 114,
  725. VK_FORMAT_R64G64_SFLOAT = 115,
  726. VK_FORMAT_R64G64B64_UINT = 116,
  727. VK_FORMAT_R64G64B64_SINT = 117,
  728. VK_FORMAT_R64G64B64_SFLOAT = 118,
  729. VK_FORMAT_R64G64B64A64_UINT = 119,
  730. VK_FORMAT_R64G64B64A64_SINT = 120,
  731. VK_FORMAT_R64G64B64A64_SFLOAT = 121,
  732. VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122,
  733. VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123,
  734. VK_FORMAT_D16_UNORM = 124,
  735. VK_FORMAT_X8_D24_UNORM_PACK32 = 125,
  736. VK_FORMAT_D32_SFLOAT = 126,
  737. VK_FORMAT_S8_UINT = 127,
  738. VK_FORMAT_D16_UNORM_S8_UINT = 128,
  739. VK_FORMAT_D24_UNORM_S8_UINT = 129,
  740. VK_FORMAT_D32_SFLOAT_S8_UINT = 130,
  741. VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131,
  742. VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132,
  743. VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133,
  744. VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134,
  745. VK_FORMAT_BC2_UNORM_BLOCK = 135,
  746. VK_FORMAT_BC2_SRGB_BLOCK = 136,
  747. VK_FORMAT_BC3_UNORM_BLOCK = 137,
  748. VK_FORMAT_BC3_SRGB_BLOCK = 138,
  749. VK_FORMAT_BC4_UNORM_BLOCK = 139,
  750. VK_FORMAT_BC4_SNORM_BLOCK = 140,
  751. VK_FORMAT_BC5_UNORM_BLOCK = 141,
  752. VK_FORMAT_BC5_SNORM_BLOCK = 142,
  753. VK_FORMAT_BC6H_UFLOAT_BLOCK = 143,
  754. VK_FORMAT_BC6H_SFLOAT_BLOCK = 144,
  755. VK_FORMAT_BC7_UNORM_BLOCK = 145,
  756. VK_FORMAT_BC7_SRGB_BLOCK = 146,
  757. VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147,
  758. VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148,
  759. VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149,
  760. VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150,
  761. VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151,
  762. VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152,
  763. VK_FORMAT_EAC_R11_UNORM_BLOCK = 153,
  764. VK_FORMAT_EAC_R11_SNORM_BLOCK = 154,
  765. VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155,
  766. VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156,
  767. VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157,
  768. VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158,
  769. VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159,
  770. VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160,
  771. VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161,
  772. VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162,
  773. VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163,
  774. VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164,
  775. VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165,
  776. VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166,
  777. VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167,
  778. VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168,
  779. VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169,
  780. VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170,
  781. VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171,
  782. VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172,
  783. VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173,
  784. VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174,
  785. VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175,
  786. VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176,
  787. VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177,
  788. VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178,
  789. VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179,
  790. VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180,
  791. VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181,
  792. VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182,
  793. VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183,
  794. VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184,
  795. VK_FORMAT_MAX_ENUM = $7FFFFFFF
  796. );
  797. PVkFormat = ^TVkFormat;
  798. PPVkFormat = ^PVkFormat;
  799. TVkImageType = (
  800. VK_IMAGE_TYPE_1D = 0,
  801. VK_IMAGE_TYPE_2D = 1,
  802. VK_IMAGE_TYPE_3D = 2,
  803. VK_IMAGE_TYPE_MAX_ENUM = $7FFFFFFF
  804. );
  805. PVkImageType = ^TVkImageType;
  806. PPVkImageType = ^PVkImageType;
  807. TVkImageTiling = (
  808. VK_IMAGE_TILING_OPTIMAL = 0,
  809. VK_IMAGE_TILING_LINEAR = 1,
  810. VK_IMAGE_TILING_MAX_ENUM = $7FFFFFFF
  811. );
  812. PVkImageTiling = ^TVkImageTiling;
  813. PPVkImageTiling = ^PVkImageTiling;
  814. TVkPhysicalDeviceType = (
  815. VK_PHYSICAL_DEVICE_TYPE_OTHER = 0,
  816. VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1,
  817. VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2,
  818. VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3,
  819. VK_PHYSICAL_DEVICE_TYPE_CPU = 4,
  820. VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = $7FFFFFFF
  821. );
  822. PVkPhysicalDeviceType = ^TVkPhysicalDeviceType;
  823. PPVkPhysicalDeviceType = ^PVkPhysicalDeviceType;
  824. TVkSampleCountFlagBits = (
  825. VK_SAMPLE_COUNT_1_BIT = (1 shl 0),
  826. VK_SAMPLE_COUNT_2_BIT = (1 shl 1),
  827. VK_SAMPLE_COUNT_4_BIT = (1 shl 2),
  828. VK_SAMPLE_COUNT_8_BIT = (1 shl 3),
  829. VK_SAMPLE_COUNT_16_BIT = (1 shl 4),
  830. VK_SAMPLE_COUNT_32_BIT = (1 shl 5),
  831. VK_SAMPLE_COUNT_64_BIT = (1 shl 6)
  832. );
  833. PVkSampleCountFlagBits = ^TVkSampleCountFlagBits;
  834. PPVkSampleCountFlagBits = ^PVkSampleCountFlagBits;
  835. TVkQueryType = (
  836. VK_QUERY_TYPE_OCCLUSION = 0,
  837. VK_QUERY_TYPE_PIPELINE_STATISTICS = 1,
  838. VK_QUERY_TYPE_TIMESTAMP = 2,
  839. VK_QUERY_TYPE_MAX_ENUM = $7FFFFFFF
  840. );
  841. PVkQueryType = ^TVkQueryType;
  842. PPVkQueryType = ^PVkQueryType;
  843. TVkSharingMode = (
  844. VK_SHARING_MODE_EXCLUSIVE = 0,
  845. VK_SHARING_MODE_CONCURRENT = 1,
  846. VK_SHARING_MODE_MAX_ENUM = $7FFFFFFF
  847. );
  848. PVkSharingMode = ^TVkSharingMode;
  849. PPVkSharingMode = ^PVkSharingMode;
  850. TVkImageLayout = (
  851. VK_IMAGE_LAYOUT_UNDEFINED = 0,
  852. VK_IMAGE_LAYOUT_GENERAL = 1,
  853. VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2,
  854. VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3,
  855. VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4,
  856. VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5,
  857. VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6,
  858. VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7,
  859. VK_IMAGE_LAYOUT_PREINITIALIZED = 8,
  860. VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002,
  861. VK_IMAGE_LAYOUT_MAX_ENUM = $7FFFFFFF
  862. );
  863. PVkImageLayout = ^TVkImageLayout;
  864. PPVkImageLayout = ^PVkImageLayout;
  865. TVkImageViewType = (
  866. VK_IMAGE_VIEW_TYPE_1D = 0,
  867. VK_IMAGE_VIEW_TYPE_2D = 1,
  868. VK_IMAGE_VIEW_TYPE_3D = 2,
  869. VK_IMAGE_VIEW_TYPE_CUBE = 3,
  870. VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4,
  871. VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5,
  872. VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6,
  873. VK_IMAGE_VIEW_TYPE_MAX_ENUM = $7FFFFFFF
  874. );
  875. PVkImageViewType = ^TVkImageViewType;
  876. PPVkImageViewType = ^PVkImageViewType;
  877. TVkComponentSwizzle = (
  878. VK_COMPONENT_SWIZZLE_IDENTITY = 0,
  879. VK_COMPONENT_SWIZZLE_ZERO = 1,
  880. VK_COMPONENT_SWIZZLE_ONE = 2,
  881. VK_COMPONENT_SWIZZLE_R = 3,
  882. VK_COMPONENT_SWIZZLE_G = 4,
  883. VK_COMPONENT_SWIZZLE_B = 5,
  884. VK_COMPONENT_SWIZZLE_A = 6,
  885. VK_COMPONENT_SWIZZLE_MAX_ENUM = $7FFFFFFF
  886. );
  887. PVkComponentSwizzle = ^TVkComponentSwizzle;
  888. PPVkComponentSwizzle = ^PVkComponentSwizzle;
  889. TVkShaderStageFlagBits = (
  890. VK_SHADER_STAGE_VERTEX_BIT = (1 shl 0),
  891. VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = (1 shl 1),
  892. VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = (1 shl 2),
  893. VK_SHADER_STAGE_GEOMETRY_BIT = (1 shl 3),
  894. VK_SHADER_STAGE_FRAGMENT_BIT = (1 shl 4),
  895. VK_SHADER_STAGE_COMPUTE_BIT = (1 shl 5),
  896. VK_SHADER_STAGE_ALL_GRAPHICS = $1F,
  897. VK_SHADER_STAGE_ALL = $7FFFFFFF
  898. );
  899. PVkShaderStageFlagBits = ^TVkShaderStageFlagBits;
  900. PPVkShaderStageFlagBits = ^PVkShaderStageFlagBits;
  901. TVkVertexInputRate = (
  902. VK_VERTEX_INPUT_RATE_VERTEX = 0,
  903. VK_VERTEX_INPUT_RATE_INSTANCE = 1,
  904. VK_VERTEX_INPUT_RATE_MAX_ENUM = $7FFFFFFF
  905. );
  906. PVkVertexInputRate = ^TVkVertexInputRate;
  907. PPVkVertexInputRate = ^PVkVertexInputRate;
  908. TVkPrimitiveTopology = (
  909. VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0,
  910. VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1,
  911. VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2,
  912. VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3,
  913. VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4,
  914. VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5,
  915. VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6,
  916. VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7,
  917. VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8,
  918. VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9,
  919. VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10,
  920. VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = $7FFFFFFF
  921. );
  922. PVkPrimitiveTopology = ^TVkPrimitiveTopology;
  923. PPVkPrimitiveTopology = ^PVkPrimitiveTopology;
  924. TVkPolygonMode = (
  925. VK_POLYGON_MODE_FILL = 0,
  926. VK_POLYGON_MODE_LINE = 1,
  927. VK_POLYGON_MODE_POINT = 2,
  928. VK_POLYGON_MODE_MAX_ENUM = $7FFFFFFF
  929. );
  930. PVkPolygonMode = ^TVkPolygonMode;
  931. PPVkPolygonMode = ^PVkPolygonMode;
  932. TVkFrontFace = (
  933. VK_FRONT_FACE_COUNTER_CLOCKWISE = 0,
  934. VK_FRONT_FACE_CLOCKWISE = 1,
  935. VK_FRONT_FACE_MAX_ENUM = $7FFFFFFF
  936. );
  937. PVkFrontFace = ^TVkFrontFace;
  938. PPVkFrontFace = ^PVkFrontFace;
  939. TVkCompareOp = (
  940. VK_COMPARE_OP_NEVER = 0,
  941. VK_COMPARE_OP_LESS = 1,
  942. VK_COMPARE_OP_EQUAL = 2,
  943. VK_COMPARE_OP_LESS_OR_EQUAL = 3,
  944. VK_COMPARE_OP_GREATER = 4,
  945. VK_COMPARE_OP_NOT_EQUAL = 5,
  946. VK_COMPARE_OP_GREATER_OR_EQUAL = 6,
  947. VK_COMPARE_OP_ALWAYS = 7,
  948. VK_COMPARE_OP_MAX_ENUM = $7FFFFFFF
  949. );
  950. PVkCompareOp = ^TVkCompareOp;
  951. PPVkCompareOp = ^PVkCompareOp;
  952. TVkStencilOp = (
  953. VK_STENCIL_OP_KEEP = 0,
  954. VK_STENCIL_OP_ZERO = 1,
  955. VK_STENCIL_OP_REPLACE = 2,
  956. VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3,
  957. VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4,
  958. VK_STENCIL_OP_INVERT = 5,
  959. VK_STENCIL_OP_INCREMENT_AND_WRAP = 6,
  960. VK_STENCIL_OP_DECREMENT_AND_WRAP = 7,
  961. VK_STENCIL_OP_MAX_ENUM = $7FFFFFFF
  962. );
  963. PVkStencilOp = ^TVkStencilOp;
  964. PPVkStencilOp = ^PVkStencilOp;
  965. TVkLogicOp = (
  966. VK_LOGIC_OP_CLEAR = 0,
  967. VK_LOGIC_OP_AND = 1,
  968. VK_LOGIC_OP_AND_REVERSE = 2,
  969. VK_LOGIC_OP_COPY = 3,
  970. VK_LOGIC_OP_AND_INVERTED = 4,
  971. VK_LOGIC_OP_NO_OP = 5,
  972. VK_LOGIC_OP_XOR = 6,
  973. VK_LOGIC_OP_OR = 7,
  974. VK_LOGIC_OP_NOR = 8,
  975. VK_LOGIC_OP_EQUIVALENT = 9,
  976. VK_LOGIC_OP_INVERT = 10,
  977. VK_LOGIC_OP_OR_REVERSE = 11,
  978. VK_LOGIC_OP_COPY_INVERTED = 12,
  979. VK_LOGIC_OP_OR_INVERTED = 13,
  980. VK_LOGIC_OP_NAND = 14,
  981. VK_LOGIC_OP_SET = 15,
  982. VK_LOGIC_OP_MAX_ENUM = $7FFFFFFF
  983. );
  984. PVkLogicOp = ^TVkLogicOp;
  985. PPVkLogicOp = ^PVkLogicOp;
  986. TVkBlendFactor = (
  987. VK_BLEND_FACTOR_ZERO = 0,
  988. VK_BLEND_FACTOR_ONE = 1,
  989. VK_BLEND_FACTOR_SRC_COLOR = 2,
  990. VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3,
  991. VK_BLEND_FACTOR_DST_COLOR = 4,
  992. VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5,
  993. VK_BLEND_FACTOR_SRC_ALPHA = 6,
  994. VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7,
  995. VK_BLEND_FACTOR_DST_ALPHA = 8,
  996. VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9,
  997. VK_BLEND_FACTOR_CONSTANT_COLOR = 10,
  998. VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11,
  999. VK_BLEND_FACTOR_CONSTANT_ALPHA = 12,
  1000. VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13,
  1001. VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14,
  1002. VK_BLEND_FACTOR_SRC1_COLOR = 15,
  1003. VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16,
  1004. VK_BLEND_FACTOR_SRC1_ALPHA = 17,
  1005. VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18,
  1006. VK_BLEND_FACTOR_MAX_ENUM = $7FFFFFFF
  1007. );
  1008. PVkBlendFactor = ^TVkBlendFactor;
  1009. PPVkBlendFactor = ^PVkBlendFactor;
  1010. TVkBlendOp = (
  1011. VK_BLEND_OP_ADD = 0,
  1012. VK_BLEND_OP_SUBTRACT = 1,
  1013. VK_BLEND_OP_REVERSE_SUBTRACT = 2,
  1014. VK_BLEND_OP_MIN = 3,
  1015. VK_BLEND_OP_MAX = 4,
  1016. VK_BLEND_OP_MAX_ENUM = $7FFFFFFF
  1017. );
  1018. PVkBlendOp = ^TVkBlendOp;
  1019. PPVkBlendOp = ^PVkBlendOp;
  1020. TVkDynamicState = (
  1021. VK_DYNAMIC_STATE_VIEWPORT = 0,
  1022. VK_DYNAMIC_STATE_SCISSOR = 1,
  1023. VK_DYNAMIC_STATE_LINE_WIDTH = 2,
  1024. VK_DYNAMIC_STATE_DEPTH_BIAS = 3,
  1025. VK_DYNAMIC_STATE_BLEND_CONSTANTS = 4,
  1026. VK_DYNAMIC_STATE_DEPTH_BOUNDS = 5,
  1027. VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 6,
  1028. VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 7,
  1029. VK_DYNAMIC_STATE_STENCIL_REFERENCE = 8,
  1030. VK_DYNAMIC_STATE_MAX_ENUM = $7FFFFFFF
  1031. );
  1032. PVkDynamicState = ^TVkDynamicState;
  1033. PPVkDynamicState = ^PVkDynamicState;
  1034. TVkFilter = (
  1035. VK_FILTER_NEAREST = 0,
  1036. VK_FILTER_LINEAR = 1,
  1037. VK_FILTER_MAX_ENUM = $7FFFFFFF
  1038. );
  1039. PVkFilter = ^TVkFilter;
  1040. PPVkFilter = ^PVkFilter;
  1041. TVkSamplerMipmapMode = (
  1042. VK_SAMPLER_MIPMAP_MODE_NEAREST = 0,
  1043. VK_SAMPLER_MIPMAP_MODE_LINEAR = 1,
  1044. VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = $7FFFFFFF
  1045. );
  1046. PVkSamplerMipmapMode = ^TVkSamplerMipmapMode;
  1047. PPVkSamplerMipmapMode = ^PVkSamplerMipmapMode;
  1048. TVkSamplerAddressMode = (
  1049. VK_SAMPLER_ADDRESS_MODE_REPEAT = 0,
  1050. VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 1,
  1051. VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 2,
  1052. VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 3,
  1053. VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 4,
  1054. VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = $7FFFFFFF
  1055. );
  1056. PVkSamplerAddressMode = ^TVkSamplerAddressMode;
  1057. PPVkSamplerAddressMode = ^PVkSamplerAddressMode;
  1058. TVkBorderColor = (
  1059. VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0,
  1060. VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 1,
  1061. VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 2,
  1062. VK_BORDER_COLOR_INT_OPAQUE_BLACK = 3,
  1063. VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 4,
  1064. VK_BORDER_COLOR_INT_OPAQUE_WHITE = 5,
  1065. VK_BORDER_COLOR_MAX_ENUM = $7FFFFFFF
  1066. );
  1067. PVkBorderColor = ^TVkBorderColor;
  1068. PPVkBorderColor = ^PVkBorderColor;
  1069. TVkDescriptorType = (
  1070. VK_DESCRIPTOR_TYPE_SAMPLER = 0,
  1071. VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1,
  1072. VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2,
  1073. VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3,
  1074. VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4,
  1075. VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5,
  1076. VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6,
  1077. VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7,
  1078. VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8,
  1079. VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9,
  1080. VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10,
  1081. VK_DESCRIPTOR_TYPE_MAX_ENUM = $7FFFFFFF
  1082. );
  1083. PVkDescriptorType = ^TVkDescriptorType;
  1084. PPVkDescriptorType = ^PVkDescriptorType;
  1085. TVkAttachmentLoadOp = (
  1086. VK_ATTACHMENT_LOAD_OP_LOAD = 0,
  1087. VK_ATTACHMENT_LOAD_OP_CLEAR = 1,
  1088. VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2,
  1089. VK_ATTACHMENT_LOAD_OP_MAX_ENUM = $7FFFFFFF
  1090. );
  1091. PVkAttachmentLoadOp = ^TVkAttachmentLoadOp;
  1092. PPVkAttachmentLoadOp = ^PVkAttachmentLoadOp;
  1093. TVkAttachmentStoreOp = (
  1094. VK_ATTACHMENT_STORE_OP_STORE = 0,
  1095. VK_ATTACHMENT_STORE_OP_DONT_CARE = 1,
  1096. VK_ATTACHMENT_STORE_OP_MAX_ENUM = $7FFFFFFF
  1097. );
  1098. PVkAttachmentStoreOp = ^TVkAttachmentStoreOp;
  1099. PPVkAttachmentStoreOp = ^PVkAttachmentStoreOp;
  1100. TVkPipelineBindPoint = (
  1101. VK_PIPELINE_BIND_POINT_GRAPHICS = 0,
  1102. VK_PIPELINE_BIND_POINT_COMPUTE = 1,
  1103. VK_PIPELINE_BIND_POINT_MAX_ENUM = $7FFFFFFF
  1104. );
  1105. PVkPipelineBindPoint = ^TVkPipelineBindPoint;
  1106. PPVkPipelineBindPoint = ^PVkPipelineBindPoint;
  1107. TVkCommandBufferLevel = (
  1108. VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0,
  1109. VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1,
  1110. VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = $7FFFFFFF
  1111. );
  1112. PVkCommandBufferLevel = ^TVkCommandBufferLevel;
  1113. PPVkCommandBufferLevel = ^PVkCommandBufferLevel;
  1114. TVkIndexType = (
  1115. VK_INDEX_TYPE_UINT16 = 0,
  1116. VK_INDEX_TYPE_UINT32 = 1,
  1117. VK_INDEX_TYPE_MAX_ENUM = $7FFFFFFF
  1118. );
  1119. PVkIndexType = ^TVkIndexType;
  1120. PPVkIndexType = ^PVkIndexType;
  1121. TVkPipelineStageFlagBits = (
  1122. VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = (1 shl 0),
  1123. VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = (1 shl 1),
  1124. VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = (1 shl 2),
  1125. VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = (1 shl 3),
  1126. VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = (1 shl 4),
  1127. VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = (1 shl 5),
  1128. VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = (1 shl 6),
  1129. VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = (1 shl 7),
  1130. VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = (1 shl 8),
  1131. VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = (1 shl 9),
  1132. VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = (1 shl 10),
  1133. VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = (1 shl 11),
  1134. VK_PIPELINE_STAGE_TRANSFER_BIT = (1 shl 12),
  1135. VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = (1 shl 13),
  1136. VK_PIPELINE_STAGE_HOST_BIT = (1 shl 14),
  1137. VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = (1 shl 15),
  1138. VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = (1 shl 16)
  1139. );
  1140. PVkPipelineStageFlagBits = ^TVkPipelineStageFlagBits;
  1141. PPVkPipelineStageFlagBits = ^PVkPipelineStageFlagBits;
  1142. TVkSubpassContents = (
  1143. VK_SUBPASS_CONTENTS_INLINE = 0,
  1144. VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1,
  1145. VK_SUBPASS_CONTENTS_MAX_ENUM = $7FFFFFFF
  1146. );
  1147. PVkSubpassContents = ^TVkSubpassContents;
  1148. PPVkSubpassContents = ^PVkSubpassContents;
  1149. { ========================================== VK_KHR_surface ========================================== }
  1150. TVkSurfaceTransformFlagBitsKHR = (
  1151. VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = (1 shl 0),
  1152. VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = (1 shl 1),
  1153. VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = (1 shl 2),
  1154. VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = (1 shl 3),
  1155. VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = (1 shl 4),
  1156. VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = (1 shl 5),
  1157. VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = (1 shl 6),
  1158. VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = (1 shl 7),
  1159. VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = (1 shl 8)
  1160. );
  1161. PVkSurfaceTransformFlagBitsKHR = ^TVkSurfaceTransformFlagBitsKHR;
  1162. PPVkSurfaceTransformFlagBitsKHR = ^PVkSurfaceTransformFlagBitsKHR;
  1163. TVkColorSpaceKHR = (
  1164. VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0,
  1165. VK_COLORSPACE_MAX_ENUM = $7FFFFFFF
  1166. );
  1167. PVkColorSpaceKHR = ^TVkColorSpaceKHR;
  1168. PPVkColorSpaceKHR = ^PVkColorSpaceKHR;
  1169. TVkPresentModeKHR = (
  1170. VK_PRESENT_MODE_IMMEDIATE_KHR = 0,
  1171. VK_PRESENT_MODE_MAILBOX_KHR = 1,
  1172. VK_PRESENT_MODE_FIFO_KHR = 2,
  1173. VK_PRESENT_MODE_FIFO_RELAXED_KHR = 3,
  1174. VK_PRESENT_MODE_MAX_ENUM = $7FFFFFFF
  1175. );
  1176. PVkPresentModeKHR = ^TVkPresentModeKHR;
  1177. PPVkPresentModeKHR = ^PVkPresentModeKHR;
  1178. { ========================================= VK_KHR_swapchain ========================================= }
  1179. TVkCompositeAlphaFlagBitsKHR = (
  1180. VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = (1 shl 0),
  1181. VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = (1 shl 1),
  1182. VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = (1 shl 2),
  1183. VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = (1 shl 3)
  1184. );
  1185. PVkCompositeAlphaFlagBitsKHR = ^TVkCompositeAlphaFlagBitsKHR;
  1186. PPVkCompositeAlphaFlagBitsKHR = ^PVkCompositeAlphaFlagBitsKHR;
  1187. { ========================================== VK_KHR_display ========================================== }
  1188. TVkDisplayPlaneAlphaFlagBitsKHR = (
  1189. VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = (1 shl 0),
  1190. VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = (1 shl 1),
  1191. VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = (1 shl 2),
  1192. VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = (1 shl 3)
  1193. );
  1194. PVkDisplayPlaneAlphaFlagBitsKHR = ^TVkDisplayPlaneAlphaFlagBitsKHR;
  1195. PPVkDisplayPlaneAlphaFlagBitsKHR = ^PVkDisplayPlaneAlphaFlagBitsKHR;
  1196. { ======================================= VK_EXT_debug_report ======================================== }
  1197. TVkDebugReportObjectTypeEXT = (
  1198. VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = 0,
  1199. VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = 1,
  1200. VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = 2,
  1201. VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT = 3,
  1202. VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT = 4,
  1203. VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT = 5,
  1204. VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT = 6,
  1205. VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT = 7,
  1206. VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT = 8,
  1207. VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT = 9,
  1208. VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT = 10,
  1209. VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT = 11,
  1210. VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT = 12,
  1211. VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT = 13,
  1212. VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT = 14,
  1213. VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT = 15,
  1214. VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT = 16,
  1215. VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT = 17,
  1216. VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT = 18,
  1217. VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT = 19,
  1218. VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT = 20,
  1219. VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT = 21,
  1220. VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT = 22,
  1221. VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT = 23,
  1222. VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT = 24,
  1223. VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT = 25,
  1224. VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = 26,
  1225. VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = 27,
  1226. VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = 28
  1227. );
  1228. PVkDebugReportObjectTypeEXT = ^TVkDebugReportObjectTypeEXT;
  1229. PPVkDebugReportObjectTypeEXT = ^PVkDebugReportObjectTypeEXT;
  1230. TVkDebugReportErrorEXT = (
  1231. VK_DEBUG_REPORT_ERROR_NONE_EXT = 0,
  1232. VK_DEBUG_REPORT_ERROR_CALLBACK_REF_EXT = 1
  1233. );
  1234. PVkDebugReportErrorEXT = ^TVkDebugReportErrorEXT;
  1235. PPVkDebugReportErrorEXT = ^PVkDebugReportErrorEXT;
  1236. type { function pointers }
  1237. { ========================================== VK_VERSION_1_0 ========================================== }
  1238. TvkAllocationFunction = function (
  1239. pUserData: PVkVoid;
  1240. size: VkSize;
  1241. alignment: VkSize;
  1242. allocationScope: TVkSystemAllocationScope
  1243. ): PVkVoid; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1244. TvkReallocationFunction = function (
  1245. pUserData: PVkVoid;
  1246. pOriginal: PVkVoid;
  1247. size: VkSize;
  1248. alignment: VkSize;
  1249. allocationScope: TVkSystemAllocationScope
  1250. ): PVkVoid; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1251. TvkFreeFunction = procedure(
  1252. pUserData: PVkVoid;
  1253. pMemory: PVkVoid
  1254. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1255. TvkInternalAllocationNotification = procedure(
  1256. pUserData: PVkVoid;
  1257. size: VkSize;
  1258. allocationType: TVkInternalAllocationType;
  1259. allocationScope: TVkSystemAllocationScope
  1260. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1261. TvkInternalFreeNotification = procedure(
  1262. pUserData: PVkVoid;
  1263. size: VkSize;
  1264. allocationType: TVkInternalAllocationType;
  1265. allocationScope: TVkSystemAllocationScope
  1266. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1267. TvkVoidFunction = procedure(
  1268. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1269. { ======================================= VK_EXT_debug_report ======================================== }
  1270. TvkDebugReportCallbackEXT = function (
  1271. flags: VkDebugReportFlagsEXT;
  1272. objectType: TVkDebugReportObjectTypeEXT;
  1273. uObject: VkUint64;
  1274. location: VkSize;
  1275. messageCode: VkInt32;
  1276. pLayerPrefix: PVkChar;
  1277. pMessage: PVkChar;
  1278. pUserData: PVkVoid
  1279. ): VkBool32; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1280. type { structures }
  1281. { ========================================== VK_VERSION_1_0 ========================================== }
  1282. TVkApplicationInfo = record
  1283. sType: TVkStructureType;
  1284. pNext: PVkVoid;
  1285. pApplicationName: PVkChar;
  1286. applicationVersion: VkUint32;
  1287. pEngineName: PVkChar;
  1288. engineVersion: VkUint32;
  1289. apiVersion: VkUint32;
  1290. end;
  1291. PVkApplicationInfo = ^TVkApplicationInfo;
  1292. PPVkApplicationInfo = ^PVkApplicationInfo;
  1293. TVkInstanceCreateInfo = record
  1294. sType: TVkStructureType;
  1295. pNext: PVkVoid;
  1296. flags: VkInstanceCreateFlags;
  1297. pApplicationInfo: PVkApplicationInfo;
  1298. enabledLayerCount: VkUint32;
  1299. ppEnabledLayerNames: PPVkChar;
  1300. enabledExtensionCount: VkUint32;
  1301. ppEnabledExtensionNames: PPVkChar;
  1302. end;
  1303. PVkInstanceCreateInfo = ^TVkInstanceCreateInfo;
  1304. PPVkInstanceCreateInfo = ^PVkInstanceCreateInfo;
  1305. TVkAllocationCallbacks = record
  1306. pUserData: PVkVoid;
  1307. pfnAllocation: TvkAllocationFunction;
  1308. pfnReallocation: TvkReallocationFunction;
  1309. pfnFree: TvkFreeFunction;
  1310. pfnInternalAllocation: TvkInternalAllocationNotification;
  1311. pfnInternalFree: TvkInternalFreeNotification;
  1312. end;
  1313. PVkAllocationCallbacks = ^TVkAllocationCallbacks;
  1314. PPVkAllocationCallbacks = ^PVkAllocationCallbacks;
  1315. TVkPhysicalDeviceFeatures = record
  1316. robustBufferAccess: VkBool32;
  1317. fullDrawIndexUint32: VkBool32;
  1318. imageCubeArray: VkBool32;
  1319. independentBlend: VkBool32;
  1320. geometryShader: VkBool32;
  1321. tessellationShader: VkBool32;
  1322. sampleRateShading: VkBool32;
  1323. dualSrcBlend: VkBool32;
  1324. logicOp: VkBool32;
  1325. multiDrawIndirect: VkBool32;
  1326. drawIndirectFirstInstance: VkBool32;
  1327. depthClamp: VkBool32;
  1328. depthBiasClamp: VkBool32;
  1329. fillModeNonSolid: VkBool32;
  1330. depthBounds: VkBool32;
  1331. wideLines: VkBool32;
  1332. largePoints: VkBool32;
  1333. alphaToOne: VkBool32;
  1334. multiViewport: VkBool32;
  1335. samplerAnisotropy: VkBool32;
  1336. textureCompressionETC2: VkBool32;
  1337. textureCompressionASTC_LDR: VkBool32;
  1338. textureCompressionBC: VkBool32;
  1339. occlusionQueryPrecise: VkBool32;
  1340. pipelineStatisticsQuery: VkBool32;
  1341. vertexPipelineStoresAndAtomics: VkBool32;
  1342. fragmentStoresAndAtomics: VkBool32;
  1343. shaderTessellationAndGeometryPointSize: VkBool32;
  1344. shaderImageGatherExtended: VkBool32;
  1345. shaderStorageImageExtendedFormats: VkBool32;
  1346. shaderStorageImageMultisample: VkBool32;
  1347. shaderStorageImageReadWithoutFormat: VkBool32;
  1348. shaderStorageImageWriteWithoutFormat: VkBool32;
  1349. shaderUniformBufferArrayDynamicIndexing: VkBool32;
  1350. shaderSampledImageArrayDynamicIndexing: VkBool32;
  1351. shaderStorageBufferArrayDynamicIndexing: VkBool32;
  1352. shaderStorageImageArrayDynamicIndexing: VkBool32;
  1353. shaderClipDistance: VkBool32;
  1354. shaderCullDistance: VkBool32;
  1355. shaderFloat64: VkBool32;
  1356. shaderInt64: VkBool32;
  1357. shaderInt16: VkBool32;
  1358. shaderResourceResidency: VkBool32;
  1359. shaderResourceMinLod: VkBool32;
  1360. sparseBinding: VkBool32;
  1361. sparseResidencyBuffer: VkBool32;
  1362. sparseResidencyImage2D: VkBool32;
  1363. sparseResidencyImage3D: VkBool32;
  1364. sparseResidency2Samples: VkBool32;
  1365. sparseResidency4Samples: VkBool32;
  1366. sparseResidency8Samples: VkBool32;
  1367. sparseResidency16Samples: VkBool32;
  1368. sparseResidencyAliased: VkBool32;
  1369. variableMultisampleRate: VkBool32;
  1370. inheritedQueries: VkBool32;
  1371. end;
  1372. PVkPhysicalDeviceFeatures = ^TVkPhysicalDeviceFeatures;
  1373. PPVkPhysicalDeviceFeatures = ^PVkPhysicalDeviceFeatures;
  1374. TVkFormatProperties = record
  1375. linearTilingFeatures: VkFormatFeatureFlags;
  1376. optimalTilingFeatures: VkFormatFeatureFlags;
  1377. bufferFeatures: VkFormatFeatureFlags;
  1378. end;
  1379. PVkFormatProperties = ^TVkFormatProperties;
  1380. PPVkFormatProperties = ^PVkFormatProperties;
  1381. TVkExtent3D = record
  1382. width: VkUint32;
  1383. height: VkUint32;
  1384. depth: VkUint32;
  1385. end;
  1386. PVkExtent3D = ^TVkExtent3D;
  1387. PPVkExtent3D = ^PVkExtent3D;
  1388. TVkImageFormatProperties = record
  1389. maxExtent: TVkExtent3D;
  1390. maxMipLevels: VkUint32;
  1391. maxArrayLayers: VkUint32;
  1392. sampleCounts: VkSampleCountFlags;
  1393. maxResourceSize: VkDeviceSize;
  1394. end;
  1395. PVkImageFormatProperties = ^TVkImageFormatProperties;
  1396. PPVkImageFormatProperties = ^PVkImageFormatProperties;
  1397. TVkPhysicalDeviceLimits = record
  1398. maxImageDimension1D: VkUint32;
  1399. maxImageDimension2D: VkUint32;
  1400. maxImageDimension3D: VkUint32;
  1401. maxImageDimensionCube: VkUint32;
  1402. maxImageArrayLayers: VkUint32;
  1403. maxTexelBufferElements: VkUint32;
  1404. maxUniformBufferRange: VkUint32;
  1405. maxStorageBufferRange: VkUint32;
  1406. maxPushConstantsSize: VkUint32;
  1407. maxMemoryAllocationCount: VkUint32;
  1408. maxSamplerAllocationCount: VkUint32;
  1409. bufferImageGranularity: VkDeviceSize;
  1410. sparseAddressSpaceSize: VkDeviceSize;
  1411. maxBoundDescriptorSets: VkUint32;
  1412. maxPerStageDescriptorSamplers: VkUint32;
  1413. maxPerStageDescriptorUniformBuffers: VkUint32;
  1414. maxPerStageDescriptorStorageBuffers: VkUint32;
  1415. maxPerStageDescriptorSampledImages: VkUint32;
  1416. maxPerStageDescriptorStorageImages: VkUint32;
  1417. maxPerStageDescriptorInputAttachments: VkUint32;
  1418. maxPerStageResources: VkUint32;
  1419. maxDescriptorSetSamplers: VkUint32;
  1420. maxDescriptorSetUniformBuffers: VkUint32;
  1421. maxDescriptorSetUniformBuffersDynamic: VkUint32;
  1422. maxDescriptorSetStorageBuffers: VkUint32;
  1423. maxDescriptorSetStorageBuffersDynamic: VkUint32;
  1424. maxDescriptorSetSampledImages: VkUint32;
  1425. maxDescriptorSetStorageImages: VkUint32;
  1426. maxDescriptorSetInputAttachments: VkUint32;
  1427. maxVertexInputAttributes: VkUint32;
  1428. maxVertexInputBindings: VkUint32;
  1429. maxVertexInputAttributeOffset: VkUint32;
  1430. maxVertexInputBindingStride: VkUint32;
  1431. maxVertexOutputComponents: VkUint32;
  1432. maxTessellationGenerationLevel: VkUint32;
  1433. maxTessellationPatchSize: VkUint32;
  1434. maxTessellationControlPerVertexInputComponents: VkUint32;
  1435. maxTessellationControlPerVertexOutputComponents: VkUint32;
  1436. maxTessellationControlPerPatchOutputComponents: VkUint32;
  1437. maxTessellationControlTotalOutputComponents: VkUint32;
  1438. maxTessellationEvaluationInputComponents: VkUint32;
  1439. maxTessellationEvaluationOutputComponents: VkUint32;
  1440. maxGeometryShaderInvocations: VkUint32;
  1441. maxGeometryInputComponents: VkUint32;
  1442. maxGeometryOutputComponents: VkUint32;
  1443. maxGeometryOutputVertices: VkUint32;
  1444. maxGeometryTotalOutputComponents: VkUint32;
  1445. maxFragmentInputComponents: VkUint32;
  1446. maxFragmentOutputAttachments: VkUint32;
  1447. maxFragmentDualSrcAttachments: VkUint32;
  1448. maxFragmentCombinedOutputResources: VkUint32;
  1449. maxComputeSharedMemorySize: VkUint32;
  1450. maxComputeWorkGroupCount: array[0..3] of VkUint32;
  1451. maxComputeWorkGroupInvocations: VkUint32;
  1452. maxComputeWorkGroupSize: array[0..3] of VkUint32;
  1453. subPixelPrecisionBits: VkUint32;
  1454. subTexelPrecisionBits: VkUint32;
  1455. mipmapPrecisionBits: VkUint32;
  1456. maxDrawIndexedIndexValue: VkUint32;
  1457. maxDrawIndirectCount: VkUint32;
  1458. maxSamplerLodBias: VkFloat;
  1459. maxSamplerAnisotropy: VkFloat;
  1460. maxViewports: VkUint32;
  1461. maxViewportDimensions: array[0..2] of VkUint32;
  1462. viewportBoundsRange: array[0..2] of VkFloat;
  1463. viewportSubPixelBits: VkUint32;
  1464. minMemoryMapAlignment: VkSize;
  1465. minTexelBufferOffsetAlignment: VkDeviceSize;
  1466. minUniformBufferOffsetAlignment: VkDeviceSize;
  1467. minStorageBufferOffsetAlignment: VkDeviceSize;
  1468. minTexelOffset: VkInt32;
  1469. maxTexelOffset: VkUint32;
  1470. minTexelGatherOffset: VkInt32;
  1471. maxTexelGatherOffset: VkUint32;
  1472. minInterpolationOffset: VkFloat;
  1473. maxInterpolationOffset: VkFloat;
  1474. subPixelInterpolationOffsetBits: VkUint32;
  1475. maxFramebufferWidth: VkUint32;
  1476. maxFramebufferHeight: VkUint32;
  1477. maxFramebufferLayers: VkUint32;
  1478. framebufferColorSampleCounts: VkSampleCountFlags;
  1479. framebufferDepthSampleCounts: VkSampleCountFlags;
  1480. framebufferStencilSampleCounts: VkSampleCountFlags;
  1481. framebufferNoAttachmentsSampleCounts: VkSampleCountFlags;
  1482. maxColorAttachments: VkUint32;
  1483. sampledImageColorSampleCounts: VkSampleCountFlags;
  1484. sampledImageIntegerSampleCounts: VkSampleCountFlags;
  1485. sampledImageDepthSampleCounts: VkSampleCountFlags;
  1486. sampledImageStencilSampleCounts: VkSampleCountFlags;
  1487. storageImageSampleCounts: VkSampleCountFlags;
  1488. maxSampleMaskWords: VkUint32;
  1489. timestampComputeAndGraphics: VkBool32;
  1490. timestampPeriod: VkFloat;
  1491. maxClipDistances: VkUint32;
  1492. maxCullDistances: VkUint32;
  1493. maxCombinedClipAndCullDistances: VkUint32;
  1494. discreteQueuePriorities: VkUint32;
  1495. pointSizeRange: array[0..2] of VkFloat;
  1496. lineWidthRange: array[0..2] of VkFloat;
  1497. pointSizeGranularity: VkFloat;
  1498. lineWidthGranularity: VkFloat;
  1499. strictLines: VkBool32;
  1500. standardSampleLocations: VkBool32;
  1501. optimalBufferCopyOffsetAlignment: VkDeviceSize;
  1502. optimalBufferCopyRowPitchAlignment: VkDeviceSize;
  1503. nonCoherentAtomSize: VkDeviceSize;
  1504. end;
  1505. PVkPhysicalDeviceLimits = ^TVkPhysicalDeviceLimits;
  1506. PPVkPhysicalDeviceLimits = ^PVkPhysicalDeviceLimits;
  1507. TVkPhysicalDeviceSparseProperties = record
  1508. residencyStandard2DBlockShape: VkBool32;
  1509. residencyStandard2DMultisampleBlockShape: VkBool32;
  1510. residencyStandard3DBlockShape: VkBool32;
  1511. residencyAlignedMipSize: VkBool32;
  1512. residencyNonResidentStrict: VkBool32;
  1513. end;
  1514. PVkPhysicalDeviceSparseProperties = ^TVkPhysicalDeviceSparseProperties;
  1515. PPVkPhysicalDeviceSparseProperties = ^PVkPhysicalDeviceSparseProperties;
  1516. TVkPhysicalDeviceProperties = record
  1517. apiVersion: VkUint32;
  1518. driverVersion: VkUint32;
  1519. vendorID: VkUint32;
  1520. deviceID: VkUint32;
  1521. deviceType: TVkPhysicalDeviceType;
  1522. deviceName: array[0..VK_MAX_PHYSICAL_DEVICE_NAME_SIZE-1] of VkChar;
  1523. pipelineCacheUUID: array[0..VK_UUID_SIZE-1] of VkUint8;
  1524. limits: TVkPhysicalDeviceLimits;
  1525. sparseProperties: TVkPhysicalDeviceSparseProperties;
  1526. end;
  1527. PVkPhysicalDeviceProperties = ^TVkPhysicalDeviceProperties;
  1528. PPVkPhysicalDeviceProperties = ^PVkPhysicalDeviceProperties;
  1529. TVkQueueFamilyProperties = record
  1530. queueFlags: VkQueueFlags;
  1531. queueCount: VkUint32;
  1532. timestampValidBits: VkUint32;
  1533. minImageTransferGranularity: TVkExtent3D;
  1534. end;
  1535. PVkQueueFamilyProperties = ^TVkQueueFamilyProperties;
  1536. PPVkQueueFamilyProperties = ^PVkQueueFamilyProperties;
  1537. TVkMemoryType = record
  1538. propertyFlags: VkMemoryPropertyFlags;
  1539. heapIndex: VkUint32;
  1540. end;
  1541. PVkMemoryType = ^TVkMemoryType;
  1542. PPVkMemoryType = ^PVkMemoryType;
  1543. TVkMemoryHeap = record
  1544. size: VkDeviceSize;
  1545. flags: VkMemoryHeapFlags;
  1546. end;
  1547. PVkMemoryHeap = ^TVkMemoryHeap;
  1548. PPVkMemoryHeap = ^PVkMemoryHeap;
  1549. TVkPhysicalDeviceMemoryProperties = record
  1550. memoryTypeCount: VkUint32;
  1551. memoryTypes: array[0..VK_MAX_MEMORY_TYPES-1] of TVkMemoryType;
  1552. memoryHeapCount: VkUint32;
  1553. memoryHeaps: array[0..VK_MAX_MEMORY_HEAPS-1] of TVkMemoryHeap;
  1554. end;
  1555. PVkPhysicalDeviceMemoryProperties = ^TVkPhysicalDeviceMemoryProperties;
  1556. PPVkPhysicalDeviceMemoryProperties = ^PVkPhysicalDeviceMemoryProperties;
  1557. TVkDeviceQueueCreateInfo = record
  1558. sType: TVkStructureType;
  1559. pNext: PVkVoid;
  1560. flags: VkDeviceQueueCreateFlags;
  1561. queueFamilyIndex: VkUint32;
  1562. queueCount: VkUint32;
  1563. pQueuePriorities: PVkFloat;
  1564. end;
  1565. PVkDeviceQueueCreateInfo = ^TVkDeviceQueueCreateInfo;
  1566. PPVkDeviceQueueCreateInfo = ^PVkDeviceQueueCreateInfo;
  1567. TVkDeviceCreateInfo = record
  1568. sType: TVkStructureType;
  1569. pNext: PVkVoid;
  1570. flags: VkDeviceCreateFlags;
  1571. queueCreateInfoCount: VkUint32;
  1572. pQueueCreateInfos: PVkDeviceQueueCreateInfo;
  1573. enabledLayerCount: VkUint32;
  1574. ppEnabledLayerNames: PPVkChar;
  1575. enabledExtensionCount: VkUint32;
  1576. ppEnabledExtensionNames: PPVkChar;
  1577. pEnabledFeatures: PVkPhysicalDeviceFeatures;
  1578. end;
  1579. PVkDeviceCreateInfo = ^TVkDeviceCreateInfo;
  1580. PPVkDeviceCreateInfo = ^PVkDeviceCreateInfo;
  1581. TVkExtensionProperties = record
  1582. extensionName: array[0..VK_MAX_EXTENSION_NAME_SIZE-1] of VkChar;
  1583. specVersion: VkUint32;
  1584. end;
  1585. PVkExtensionProperties = ^TVkExtensionProperties;
  1586. PPVkExtensionProperties = ^PVkExtensionProperties;
  1587. TVkLayerProperties = record
  1588. layerName: array[0..VK_MAX_EXTENSION_NAME_SIZE-1] of VkChar;
  1589. specVersion: VkUint32;
  1590. implementationVersion: VkUint32;
  1591. description: array[0..VK_MAX_DESCRIPTION_SIZE-1] of VkChar;
  1592. end;
  1593. PVkLayerProperties = ^TVkLayerProperties;
  1594. PPVkLayerProperties = ^PVkLayerProperties;
  1595. TVkSubmitInfo = record
  1596. sType: TVkStructureType;
  1597. pNext: PVkVoid;
  1598. waitSemaphoreCount: VkUint32;
  1599. pWaitSemaphores: PVkSemaphore;
  1600. pWaitDstStageMask: PVkPipelineStageFlags;
  1601. commandBufferCount: VkUint32;
  1602. pCommandBuffers: PVkCommandBuffer;
  1603. signalSemaphoreCount: VkUint32;
  1604. pSignalSemaphores: PVkSemaphore;
  1605. end;
  1606. PVkSubmitInfo = ^TVkSubmitInfo;
  1607. PPVkSubmitInfo = ^PVkSubmitInfo;
  1608. TVkMemoryAllocateInfo = record
  1609. sType: TVkStructureType;
  1610. pNext: PVkVoid;
  1611. allocationSize: VkDeviceSize;
  1612. memoryTypeIndex: VkUint32;
  1613. end;
  1614. PVkMemoryAllocateInfo = ^TVkMemoryAllocateInfo;
  1615. PPVkMemoryAllocateInfo = ^PVkMemoryAllocateInfo;
  1616. TVkMappedMemoryRange = record
  1617. sType: TVkStructureType;
  1618. pNext: PVkVoid;
  1619. memory: VkDeviceMemory;
  1620. offset: VkDeviceSize;
  1621. size: VkDeviceSize;
  1622. end;
  1623. PVkMappedMemoryRange = ^TVkMappedMemoryRange;
  1624. PPVkMappedMemoryRange = ^PVkMappedMemoryRange;
  1625. TVkMemoryRequirements = record
  1626. size: VkDeviceSize;
  1627. alignment: VkDeviceSize;
  1628. memoryTypeBits: VkUint32;
  1629. end;
  1630. PVkMemoryRequirements = ^TVkMemoryRequirements;
  1631. PPVkMemoryRequirements = ^PVkMemoryRequirements;
  1632. TVkSparseImageFormatProperties = record
  1633. aspectMask: VkImageAspectFlags;
  1634. imageGranularity: TVkExtent3D;
  1635. flags: VkSparseImageFormatFlags;
  1636. end;
  1637. PVkSparseImageFormatProperties = ^TVkSparseImageFormatProperties;
  1638. PPVkSparseImageFormatProperties = ^PVkSparseImageFormatProperties;
  1639. TVkSparseImageMemoryRequirements = record
  1640. formatProperties: TVkSparseImageFormatProperties;
  1641. imageMipTailFirstLod: VkUint32;
  1642. imageMipTailSize: VkDeviceSize;
  1643. imageMipTailOffset: VkDeviceSize;
  1644. imageMipTailStride: VkDeviceSize;
  1645. end;
  1646. PVkSparseImageMemoryRequirements = ^TVkSparseImageMemoryRequirements;
  1647. PPVkSparseImageMemoryRequirements = ^PVkSparseImageMemoryRequirements;
  1648. TVkSparseMemoryBind = record
  1649. resourceOffset: VkDeviceSize;
  1650. size: VkDeviceSize;
  1651. memory: VkDeviceMemory;
  1652. memoryOffset: VkDeviceSize;
  1653. flags: VkSparseMemoryBindFlags;
  1654. end;
  1655. PVkSparseMemoryBind = ^TVkSparseMemoryBind;
  1656. PPVkSparseMemoryBind = ^PVkSparseMemoryBind;
  1657. TVkSparseBufferMemoryBindInfo = record
  1658. buffer: VkBuffer;
  1659. bindCount: VkUint32;
  1660. pBinds: PVkSparseMemoryBind;
  1661. end;
  1662. PVkSparseBufferMemoryBindInfo = ^TVkSparseBufferMemoryBindInfo;
  1663. PPVkSparseBufferMemoryBindInfo = ^PVkSparseBufferMemoryBindInfo;
  1664. TVkSparseImageOpaqueMemoryBindInfo = record
  1665. image: VkImage;
  1666. bindCount: VkUint32;
  1667. pBinds: PVkSparseMemoryBind;
  1668. end;
  1669. PVkSparseImageOpaqueMemoryBindInfo = ^TVkSparseImageOpaqueMemoryBindInfo;
  1670. PPVkSparseImageOpaqueMemoryBindInfo = ^PVkSparseImageOpaqueMemoryBindInfo;
  1671. TVkImageSubresource = record
  1672. aspectMask: VkImageAspectFlags;
  1673. mipLevel: VkUint32;
  1674. arrayLayer: VkUint32;
  1675. end;
  1676. PVkImageSubresource = ^TVkImageSubresource;
  1677. PPVkImageSubresource = ^PVkImageSubresource;
  1678. TVkOffset3D = record
  1679. x: VkInt32;
  1680. y: VkInt32;
  1681. z: VkInt32;
  1682. end;
  1683. PVkOffset3D = ^TVkOffset3D;
  1684. PPVkOffset3D = ^PVkOffset3D;
  1685. TVkSparseImageMemoryBind = record
  1686. subresource: TVkImageSubresource;
  1687. offset: TVkOffset3D;
  1688. extent: TVkExtent3D;
  1689. memory: VkDeviceMemory;
  1690. memoryOffset: VkDeviceSize;
  1691. flags: VkSparseMemoryBindFlags;
  1692. end;
  1693. PVkSparseImageMemoryBind = ^TVkSparseImageMemoryBind;
  1694. PPVkSparseImageMemoryBind = ^PVkSparseImageMemoryBind;
  1695. TVkSparseImageMemoryBindInfo = record
  1696. image: VkImage;
  1697. bindCount: VkUint32;
  1698. pBinds: PVkSparseImageMemoryBind;
  1699. end;
  1700. PVkSparseImageMemoryBindInfo = ^TVkSparseImageMemoryBindInfo;
  1701. PPVkSparseImageMemoryBindInfo = ^PVkSparseImageMemoryBindInfo;
  1702. TVkBindSparseInfo = record
  1703. sType: TVkStructureType;
  1704. pNext: PVkVoid;
  1705. waitSemaphoreCount: VkUint32;
  1706. pWaitSemaphores: PVkSemaphore;
  1707. bufferBindCount: VkUint32;
  1708. pBufferBinds: PVkSparseBufferMemoryBindInfo;
  1709. imageOpaqueBindCount: VkUint32;
  1710. pImageOpaqueBinds: PVkSparseImageOpaqueMemoryBindInfo;
  1711. imageBindCount: VkUint32;
  1712. pImageBinds: PVkSparseImageMemoryBindInfo;
  1713. signalSemaphoreCount: VkUint32;
  1714. pSignalSemaphores: PVkSemaphore;
  1715. end;
  1716. PVkBindSparseInfo = ^TVkBindSparseInfo;
  1717. PPVkBindSparseInfo = ^PVkBindSparseInfo;
  1718. TVkFenceCreateInfo = record
  1719. sType: TVkStructureType;
  1720. pNext: PVkVoid;
  1721. flags: VkFenceCreateFlags;
  1722. end;
  1723. PVkFenceCreateInfo = ^TVkFenceCreateInfo;
  1724. PPVkFenceCreateInfo = ^PVkFenceCreateInfo;
  1725. TVkSemaphoreCreateInfo = record
  1726. sType: TVkStructureType;
  1727. pNext: PVkVoid;
  1728. flags: VkSemaphoreCreateFlags;
  1729. end;
  1730. PVkSemaphoreCreateInfo = ^TVkSemaphoreCreateInfo;
  1731. PPVkSemaphoreCreateInfo = ^PVkSemaphoreCreateInfo;
  1732. TVkEventCreateInfo = record
  1733. sType: TVkStructureType;
  1734. pNext: PVkVoid;
  1735. flags: VkEventCreateFlags;
  1736. end;
  1737. PVkEventCreateInfo = ^TVkEventCreateInfo;
  1738. PPVkEventCreateInfo = ^PVkEventCreateInfo;
  1739. TVkQueryPoolCreateInfo = record
  1740. sType: TVkStructureType;
  1741. pNext: PVkVoid;
  1742. flags: VkQueryPoolCreateFlags;
  1743. queryType: TVkQueryType;
  1744. queryCount: VkUint32;
  1745. pipelineStatistics: VkQueryPipelineStatisticFlags;
  1746. end;
  1747. PVkQueryPoolCreateInfo = ^TVkQueryPoolCreateInfo;
  1748. PPVkQueryPoolCreateInfo = ^PVkQueryPoolCreateInfo;
  1749. TVkBufferCreateInfo = record
  1750. sType: TVkStructureType;
  1751. pNext: PVkVoid;
  1752. flags: VkBufferCreateFlags;
  1753. size: VkDeviceSize;
  1754. usage: VkBufferUsageFlags;
  1755. sharingMode: TVkSharingMode;
  1756. queueFamilyIndexCount: VkUint32;
  1757. pQueueFamilyIndices: PVkUint32;
  1758. end;
  1759. PVkBufferCreateInfo = ^TVkBufferCreateInfo;
  1760. PPVkBufferCreateInfo = ^PVkBufferCreateInfo;
  1761. TVkBufferViewCreateInfo = record
  1762. sType: TVkStructureType;
  1763. pNext: PVkVoid;
  1764. flags: VkBufferViewCreateFlags;
  1765. buffer: VkBuffer;
  1766. format: TVkFormat;
  1767. offset: VkDeviceSize;
  1768. range: VkDeviceSize;
  1769. end;
  1770. PVkBufferViewCreateInfo = ^TVkBufferViewCreateInfo;
  1771. PPVkBufferViewCreateInfo = ^PVkBufferViewCreateInfo;
  1772. TVkImageCreateInfo = record
  1773. sType: TVkStructureType;
  1774. pNext: PVkVoid;
  1775. flags: VkImageCreateFlags;
  1776. imageType: TVkImageType;
  1777. format: TVkFormat;
  1778. extent: TVkExtent3D;
  1779. mipLevels: VkUint32;
  1780. arrayLayers: VkUint32;
  1781. samples: TVkSampleCountFlagBits;
  1782. tiling: TVkImageTiling;
  1783. usage: VkImageUsageFlags;
  1784. sharingMode: TVkSharingMode;
  1785. queueFamilyIndexCount: VkUint32;
  1786. pQueueFamilyIndices: PVkUint32;
  1787. initialLayout: TVkImageLayout;
  1788. end;
  1789. PVkImageCreateInfo = ^TVkImageCreateInfo;
  1790. PPVkImageCreateInfo = ^PVkImageCreateInfo;
  1791. TVkSubresourceLayout = record
  1792. offset: VkDeviceSize;
  1793. size: VkDeviceSize;
  1794. rowPitch: VkDeviceSize;
  1795. arrayPitch: VkDeviceSize;
  1796. depthPitch: VkDeviceSize;
  1797. end;
  1798. PVkSubresourceLayout = ^TVkSubresourceLayout;
  1799. PPVkSubresourceLayout = ^PVkSubresourceLayout;
  1800. TVkComponentMapping = record
  1801. r: TVkComponentSwizzle;
  1802. g: TVkComponentSwizzle;
  1803. b: TVkComponentSwizzle;
  1804. a: TVkComponentSwizzle;
  1805. end;
  1806. PVkComponentMapping = ^TVkComponentMapping;
  1807. PPVkComponentMapping = ^PVkComponentMapping;
  1808. TVkImageSubresourceRange = record
  1809. aspectMask: VkImageAspectFlags;
  1810. baseMipLevel: VkUint32;
  1811. levelCount: VkUint32;
  1812. baseArrayLayer: VkUint32;
  1813. layerCount: VkUint32;
  1814. end;
  1815. PVkImageSubresourceRange = ^TVkImageSubresourceRange;
  1816. PPVkImageSubresourceRange = ^PVkImageSubresourceRange;
  1817. TVkImageViewCreateInfo = record
  1818. sType: TVkStructureType;
  1819. pNext: PVkVoid;
  1820. flags: VkImageViewCreateFlags;
  1821. image: VkImage;
  1822. viewType: TVkImageViewType;
  1823. format: TVkFormat;
  1824. components: TVkComponentMapping;
  1825. subresourceRange: TVkImageSubresourceRange;
  1826. end;
  1827. PVkImageViewCreateInfo = ^TVkImageViewCreateInfo;
  1828. PPVkImageViewCreateInfo = ^PVkImageViewCreateInfo;
  1829. TVkShaderModuleCreateInfo = record
  1830. sType: TVkStructureType;
  1831. pNext: PVkVoid;
  1832. flags: VkShaderModuleCreateFlags;
  1833. codeSize: VkSize;
  1834. pCode: PVkUint32;
  1835. end;
  1836. PVkShaderModuleCreateInfo = ^TVkShaderModuleCreateInfo;
  1837. PPVkShaderModuleCreateInfo = ^PVkShaderModuleCreateInfo;
  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. TVkSpecializationMapEntry = record
  1848. constantID: VkUint32;
  1849. offset: VkUint32;
  1850. size: VkSize;
  1851. end;
  1852. PVkSpecializationMapEntry = ^TVkSpecializationMapEntry;
  1853. PPVkSpecializationMapEntry = ^PVkSpecializationMapEntry;
  1854. TVkSpecializationInfo = record
  1855. mapEntryCount: VkUint32;
  1856. pMapEntries: PVkSpecializationMapEntry;
  1857. dataSize: VkSize;
  1858. pData: PVkVoid;
  1859. end;
  1860. PVkSpecializationInfo = ^TVkSpecializationInfo;
  1861. PPVkSpecializationInfo = ^PVkSpecializationInfo;
  1862. TVkPipelineShaderStageCreateInfo = record
  1863. sType: TVkStructureType;
  1864. pNext: PVkVoid;
  1865. flags: VkPipelineShaderStageCreateFlags;
  1866. stage: TVkShaderStageFlagBits;
  1867. module: VkShaderModule;
  1868. pName: PVkChar;
  1869. pSpecializationInfo: PVkSpecializationInfo;
  1870. end;
  1871. PVkPipelineShaderStageCreateInfo = ^TVkPipelineShaderStageCreateInfo;
  1872. PPVkPipelineShaderStageCreateInfo = ^PVkPipelineShaderStageCreateInfo;
  1873. TVkVertexInputBindingDescription = record
  1874. binding: VkUint32;
  1875. stride: VkUint32;
  1876. inputRate: TVkVertexInputRate;
  1877. end;
  1878. PVkVertexInputBindingDescription = ^TVkVertexInputBindingDescription;
  1879. PPVkVertexInputBindingDescription = ^PVkVertexInputBindingDescription;
  1880. TVkVertexInputAttributeDescription = record
  1881. location: VkUint32;
  1882. binding: VkUint32;
  1883. format: TVkFormat;
  1884. offset: VkUint32;
  1885. end;
  1886. PVkVertexInputAttributeDescription = ^TVkVertexInputAttributeDescription;
  1887. PPVkVertexInputAttributeDescription = ^PVkVertexInputAttributeDescription;
  1888. TVkPipelineVertexInputStateCreateInfo = record
  1889. sType: TVkStructureType;
  1890. pNext: PVkVoid;
  1891. flags: VkPipelineVertexInputStateCreateFlags;
  1892. vertexBindingDescriptionCount: VkUint32;
  1893. pVertexBindingDescriptions: PVkVertexInputBindingDescription;
  1894. vertexAttributeDescriptionCount: VkUint32;
  1895. pVertexAttributeDescriptions: PVkVertexInputAttributeDescription;
  1896. end;
  1897. PVkPipelineVertexInputStateCreateInfo = ^TVkPipelineVertexInputStateCreateInfo;
  1898. PPVkPipelineVertexInputStateCreateInfo = ^PVkPipelineVertexInputStateCreateInfo;
  1899. TVkPipelineInputAssemblyStateCreateInfo = record
  1900. sType: TVkStructureType;
  1901. pNext: PVkVoid;
  1902. flags: VkPipelineInputAssemblyStateCreateFlags;
  1903. topology: TVkPrimitiveTopology;
  1904. primitiveRestartEnable: VkBool32;
  1905. end;
  1906. PVkPipelineInputAssemblyStateCreateInfo = ^TVkPipelineInputAssemblyStateCreateInfo;
  1907. PPVkPipelineInputAssemblyStateCreateInfo = ^PVkPipelineInputAssemblyStateCreateInfo;
  1908. TVkPipelineTessellationStateCreateInfo = record
  1909. sType: TVkStructureType;
  1910. pNext: PVkVoid;
  1911. flags: VkPipelineTessellationStateCreateFlags;
  1912. patchControlPoints: VkUint32;
  1913. end;
  1914. PVkPipelineTessellationStateCreateInfo = ^TVkPipelineTessellationStateCreateInfo;
  1915. PPVkPipelineTessellationStateCreateInfo = ^PVkPipelineTessellationStateCreateInfo;
  1916. TVkViewport = record
  1917. x: VkFloat;
  1918. y: VkFloat;
  1919. width: VkFloat;
  1920. height: VkFloat;
  1921. minDepth: VkFloat;
  1922. maxDepth: VkFloat;
  1923. end;
  1924. PVkViewport = ^TVkViewport;
  1925. PPVkViewport = ^PVkViewport;
  1926. TVkOffset2D = record
  1927. x: VkInt32;
  1928. y: VkInt32;
  1929. end;
  1930. PVkOffset2D = ^TVkOffset2D;
  1931. PPVkOffset2D = ^PVkOffset2D;
  1932. TVkExtent2D = record
  1933. width: VkUint32;
  1934. height: VkUint32;
  1935. end;
  1936. PVkExtent2D = ^TVkExtent2D;
  1937. PPVkExtent2D = ^PVkExtent2D;
  1938. TVkRect2D = record
  1939. offset: TVkOffset2D;
  1940. extent: TVkExtent2D;
  1941. end;
  1942. PVkRect2D = ^TVkRect2D;
  1943. PPVkRect2D = ^PVkRect2D;
  1944. TVkPipelineViewportStateCreateInfo = record
  1945. sType: TVkStructureType;
  1946. pNext: PVkVoid;
  1947. flags: VkPipelineViewportStateCreateFlags;
  1948. viewportCount: VkUint32;
  1949. pViewports: PVkViewport;
  1950. scissorCount: VkUint32;
  1951. pScissors: PVkRect2D;
  1952. end;
  1953. PVkPipelineViewportStateCreateInfo = ^TVkPipelineViewportStateCreateInfo;
  1954. PPVkPipelineViewportStateCreateInfo = ^PVkPipelineViewportStateCreateInfo;
  1955. TVkPipelineRasterizationStateCreateInfo = record
  1956. sType: TVkStructureType;
  1957. pNext: PVkVoid;
  1958. flags: VkPipelineRasterizationStateCreateFlags;
  1959. depthClampEnable: VkBool32;
  1960. rasterizerDiscardEnable: VkBool32;
  1961. polygonMode: TVkPolygonMode;
  1962. cullMode: VkCullModeFlags;
  1963. frontFace: TVkFrontFace;
  1964. depthBiasEnable: VkBool32;
  1965. depthBiasConstantFactor: VkFloat;
  1966. depthBiasClamp: VkFloat;
  1967. depthBiasSlopeFactor: VkFloat;
  1968. lineWidth: VkFloat;
  1969. end;
  1970. PVkPipelineRasterizationStateCreateInfo = ^TVkPipelineRasterizationStateCreateInfo;
  1971. PPVkPipelineRasterizationStateCreateInfo = ^PVkPipelineRasterizationStateCreateInfo;
  1972. TVkPipelineMultisampleStateCreateInfo = record
  1973. sType: TVkStructureType;
  1974. pNext: PVkVoid;
  1975. flags: VkPipelineMultisampleStateCreateFlags;
  1976. rasterizationSamples: TVkSampleCountFlagBits;
  1977. sampleShadingEnable: VkBool32;
  1978. minSampleShading: VkFloat;
  1979. pSampleMask: PVkSampleMask;
  1980. alphaToCoverageEnable: VkBool32;
  1981. alphaToOneEnable: VkBool32;
  1982. end;
  1983. PVkPipelineMultisampleStateCreateInfo = ^TVkPipelineMultisampleStateCreateInfo;
  1984. PPVkPipelineMultisampleStateCreateInfo = ^PVkPipelineMultisampleStateCreateInfo;
  1985. TVkStencilOpState = record
  1986. failOp: TVkStencilOp;
  1987. passOp: TVkStencilOp;
  1988. depthFailOp: TVkStencilOp;
  1989. compareOp: TVkCompareOp;
  1990. compareMask: VkUint32;
  1991. writeMask: VkUint32;
  1992. reference: VkUint32;
  1993. end;
  1994. PVkStencilOpState = ^TVkStencilOpState;
  1995. PPVkStencilOpState = ^PVkStencilOpState;
  1996. TVkPipelineDepthStencilStateCreateInfo = record
  1997. sType: TVkStructureType;
  1998. pNext: PVkVoid;
  1999. flags: VkPipelineDepthStencilStateCreateFlags;
  2000. depthTestEnable: VkBool32;
  2001. depthWriteEnable: VkBool32;
  2002. depthCompareOp: TVkCompareOp;
  2003. depthBoundsTestEnable: VkBool32;
  2004. stencilTestEnable: VkBool32;
  2005. front: TVkStencilOpState;
  2006. back: TVkStencilOpState;
  2007. minDepthBounds: VkFloat;
  2008. maxDepthBounds: VkFloat;
  2009. end;
  2010. PVkPipelineDepthStencilStateCreateInfo = ^TVkPipelineDepthStencilStateCreateInfo;
  2011. PPVkPipelineDepthStencilStateCreateInfo = ^PVkPipelineDepthStencilStateCreateInfo;
  2012. TVkPipelineColorBlendAttachmentState = record
  2013. blendEnable: VkBool32;
  2014. srcColorBlendFactor: TVkBlendFactor;
  2015. dstColorBlendFactor: TVkBlendFactor;
  2016. colorBlendOp: TVkBlendOp;
  2017. srcAlphaBlendFactor: TVkBlendFactor;
  2018. dstAlphaBlendFactor: TVkBlendFactor;
  2019. alphaBlendOp: TVkBlendOp;
  2020. colorWriteMask: VkColorComponentFlags;
  2021. end;
  2022. PVkPipelineColorBlendAttachmentState = ^TVkPipelineColorBlendAttachmentState;
  2023. PPVkPipelineColorBlendAttachmentState = ^PVkPipelineColorBlendAttachmentState;
  2024. TVkPipelineColorBlendStateCreateInfo = record
  2025. sType: TVkStructureType;
  2026. pNext: PVkVoid;
  2027. flags: VkPipelineColorBlendStateCreateFlags;
  2028. logicOpEnable: VkBool32;
  2029. logicOp: TVkLogicOp;
  2030. attachmentCount: VkUint32;
  2031. pAttachments: PVkPipelineColorBlendAttachmentState;
  2032. blendConstants: array[0..4] of VkFloat;
  2033. end;
  2034. PVkPipelineColorBlendStateCreateInfo = ^TVkPipelineColorBlendStateCreateInfo;
  2035. PPVkPipelineColorBlendStateCreateInfo = ^PVkPipelineColorBlendStateCreateInfo;
  2036. TVkPipelineDynamicStateCreateInfo = record
  2037. sType: TVkStructureType;
  2038. pNext: PVkVoid;
  2039. flags: VkPipelineDynamicStateCreateFlags;
  2040. dynamicStateCount: VkUint32;
  2041. pDynamicStates: PVkDynamicState;
  2042. end;
  2043. PVkPipelineDynamicStateCreateInfo = ^TVkPipelineDynamicStateCreateInfo;
  2044. PPVkPipelineDynamicStateCreateInfo = ^PVkPipelineDynamicStateCreateInfo;
  2045. TVkGraphicsPipelineCreateInfo = record
  2046. sType: TVkStructureType;
  2047. pNext: PVkVoid;
  2048. flags: VkPipelineCreateFlags;
  2049. stageCount: VkUint32;
  2050. pStages: PVkPipelineShaderStageCreateInfo;
  2051. pVertexInputState: PVkPipelineVertexInputStateCreateInfo;
  2052. pInputAssemblyState: PVkPipelineInputAssemblyStateCreateInfo;
  2053. pTessellationState: PVkPipelineTessellationStateCreateInfo;
  2054. pViewportState: PVkPipelineViewportStateCreateInfo;
  2055. pRasterizationState: PVkPipelineRasterizationStateCreateInfo;
  2056. pMultisampleState: PVkPipelineMultisampleStateCreateInfo;
  2057. pDepthStencilState: PVkPipelineDepthStencilStateCreateInfo;
  2058. pColorBlendState: PVkPipelineColorBlendStateCreateInfo;
  2059. pDynamicState: PVkPipelineDynamicStateCreateInfo;
  2060. layout: VkPipelineLayout;
  2061. renderPass: VkRenderPass;
  2062. subpass: VkUint32;
  2063. basePipelineHandle: VkPipeline;
  2064. basePipelineIndex: VkInt32;
  2065. end;
  2066. PVkGraphicsPipelineCreateInfo = ^TVkGraphicsPipelineCreateInfo;
  2067. PPVkGraphicsPipelineCreateInfo = ^PVkGraphicsPipelineCreateInfo;
  2068. TVkComputePipelineCreateInfo = record
  2069. sType: TVkStructureType;
  2070. pNext: PVkVoid;
  2071. flags: VkPipelineCreateFlags;
  2072. stage: TVkPipelineShaderStageCreateInfo;
  2073. layout: VkPipelineLayout;
  2074. basePipelineHandle: VkPipeline;
  2075. basePipelineIndex: VkInt32;
  2076. end;
  2077. PVkComputePipelineCreateInfo = ^TVkComputePipelineCreateInfo;
  2078. PPVkComputePipelineCreateInfo = ^PVkComputePipelineCreateInfo;
  2079. TVkPushConstantRange = record
  2080. stageFlags: VkShaderStageFlags;
  2081. offset: VkUint32;
  2082. size: VkUint32;
  2083. end;
  2084. PVkPushConstantRange = ^TVkPushConstantRange;
  2085. PPVkPushConstantRange = ^PVkPushConstantRange;
  2086. TVkPipelineLayoutCreateInfo = record
  2087. sType: TVkStructureType;
  2088. pNext: PVkVoid;
  2089. flags: VkPipelineLayoutCreateFlags;
  2090. setLayoutCount: VkUint32;
  2091. pSetLayouts: PVkDescriptorSetLayout;
  2092. pushConstantRangeCount: VkUint32;
  2093. pPushConstantRanges: PVkPushConstantRange;
  2094. end;
  2095. PVkPipelineLayoutCreateInfo = ^TVkPipelineLayoutCreateInfo;
  2096. PPVkPipelineLayoutCreateInfo = ^PVkPipelineLayoutCreateInfo;
  2097. TVkSamplerCreateInfo = record
  2098. sType: TVkStructureType;
  2099. pNext: PVkVoid;
  2100. flags: VkSamplerCreateFlags;
  2101. magFilter: TVkFilter;
  2102. minFilter: TVkFilter;
  2103. mipmapMode: TVkSamplerMipmapMode;
  2104. addressModeU: TVkSamplerAddressMode;
  2105. addressModeV: TVkSamplerAddressMode;
  2106. addressModeW: TVkSamplerAddressMode;
  2107. mipLodBias: VkFloat;
  2108. anisotropyEnable: VkBool32;
  2109. maxAnisotropy: VkFloat;
  2110. compareEnable: VkBool32;
  2111. compareOp: TVkCompareOp;
  2112. minLod: VkFloat;
  2113. maxLod: VkFloat;
  2114. borderColor: TVkBorderColor;
  2115. unnormalizedCoordinates: VkBool32;
  2116. end;
  2117. PVkSamplerCreateInfo = ^TVkSamplerCreateInfo;
  2118. PPVkSamplerCreateInfo = ^PVkSamplerCreateInfo;
  2119. TVkDescriptorSetLayoutBinding = record
  2120. binding: VkUint32;
  2121. descriptorType: TVkDescriptorType;
  2122. descriptorCount: VkUint32;
  2123. stageFlags: VkShaderStageFlags;
  2124. pImmutableSamplers: PVkSampler;
  2125. end;
  2126. PVkDescriptorSetLayoutBinding = ^TVkDescriptorSetLayoutBinding;
  2127. PPVkDescriptorSetLayoutBinding = ^PVkDescriptorSetLayoutBinding;
  2128. TVkDescriptorSetLayoutCreateInfo = record
  2129. sType: TVkStructureType;
  2130. pNext: PVkVoid;
  2131. flags: VkDescriptorSetLayoutCreateFlags;
  2132. bindingCount: VkUint32;
  2133. pBindings: PVkDescriptorSetLayoutBinding;
  2134. end;
  2135. PVkDescriptorSetLayoutCreateInfo = ^TVkDescriptorSetLayoutCreateInfo;
  2136. PPVkDescriptorSetLayoutCreateInfo = ^PVkDescriptorSetLayoutCreateInfo;
  2137. TVkDescriptorPoolSize = record
  2138. dType: TVkDescriptorType;
  2139. descriptorCount: VkUint32;
  2140. end;
  2141. PVkDescriptorPoolSize = ^TVkDescriptorPoolSize;
  2142. PPVkDescriptorPoolSize = ^PVkDescriptorPoolSize;
  2143. TVkDescriptorPoolCreateInfo = record
  2144. sType: TVkStructureType;
  2145. pNext: PVkVoid;
  2146. flags: VkDescriptorPoolCreateFlags;
  2147. maxSets: VkUint32;
  2148. poolSizeCount: VkUint32;
  2149. pPoolSizes: PVkDescriptorPoolSize;
  2150. end;
  2151. PVkDescriptorPoolCreateInfo = ^TVkDescriptorPoolCreateInfo;
  2152. PPVkDescriptorPoolCreateInfo = ^PVkDescriptorPoolCreateInfo;
  2153. TVkDescriptorSetAllocateInfo = record
  2154. sType: TVkStructureType;
  2155. pNext: PVkVoid;
  2156. descriptorPool: VkDescriptorPool;
  2157. descriptorSetCount: VkUint32;
  2158. pSetLayouts: PVkDescriptorSetLayout;
  2159. end;
  2160. PVkDescriptorSetAllocateInfo = ^TVkDescriptorSetAllocateInfo;
  2161. PPVkDescriptorSetAllocateInfo = ^PVkDescriptorSetAllocateInfo;
  2162. TVkDescriptorImageInfo = record
  2163. sampler: VkSampler;
  2164. imageView: VkImageView;
  2165. imageLayout: TVkImageLayout;
  2166. end;
  2167. PVkDescriptorImageInfo = ^TVkDescriptorImageInfo;
  2168. PPVkDescriptorImageInfo = ^PVkDescriptorImageInfo;
  2169. TVkDescriptorBufferInfo = record
  2170. buffer: VkBuffer;
  2171. offset: VkDeviceSize;
  2172. range: VkDeviceSize;
  2173. end;
  2174. PVkDescriptorBufferInfo = ^TVkDescriptorBufferInfo;
  2175. PPVkDescriptorBufferInfo = ^PVkDescriptorBufferInfo;
  2176. TVkWriteDescriptorSet = record
  2177. sType: TVkStructureType;
  2178. pNext: PVkVoid;
  2179. dstSet: VkDescriptorSet;
  2180. dstBinding: VkUint32;
  2181. dstArrayElement: VkUint32;
  2182. descriptorCount: VkUint32;
  2183. descriptorType: TVkDescriptorType;
  2184. pImageInfo: PVkDescriptorImageInfo;
  2185. pBufferInfo: PVkDescriptorBufferInfo;
  2186. pTexelBufferView: PVkBufferView;
  2187. end;
  2188. PVkWriteDescriptorSet = ^TVkWriteDescriptorSet;
  2189. PPVkWriteDescriptorSet = ^PVkWriteDescriptorSet;
  2190. TVkCopyDescriptorSet = record
  2191. sType: TVkStructureType;
  2192. pNext: PVkVoid;
  2193. srcSet: VkDescriptorSet;
  2194. srcBinding: VkUint32;
  2195. srcArrayElement: VkUint32;
  2196. dstSet: VkDescriptorSet;
  2197. dstBinding: VkUint32;
  2198. dstArrayElement: VkUint32;
  2199. descriptorCount: VkUint32;
  2200. end;
  2201. PVkCopyDescriptorSet = ^TVkCopyDescriptorSet;
  2202. PPVkCopyDescriptorSet = ^PVkCopyDescriptorSet;
  2203. TVkFramebufferCreateInfo = record
  2204. sType: TVkStructureType;
  2205. pNext: PVkVoid;
  2206. flags: VkFramebufferCreateFlags;
  2207. renderPass: VkRenderPass;
  2208. attachmentCount: VkUint32;
  2209. pAttachments: PVkImageView;
  2210. width: VkUint32;
  2211. height: VkUint32;
  2212. layers: VkUint32;
  2213. end;
  2214. PVkFramebufferCreateInfo = ^TVkFramebufferCreateInfo;
  2215. PPVkFramebufferCreateInfo = ^PVkFramebufferCreateInfo;
  2216. TVkAttachmentDescription = record
  2217. flags: VkAttachmentDescriptionFlags;
  2218. format: TVkFormat;
  2219. samples: TVkSampleCountFlagBits;
  2220. loadOp: TVkAttachmentLoadOp;
  2221. storeOp: TVkAttachmentStoreOp;
  2222. stencilLoadOp: TVkAttachmentLoadOp;
  2223. stencilStoreOp: TVkAttachmentStoreOp;
  2224. initialLayout: TVkImageLayout;
  2225. finalLayout: TVkImageLayout;
  2226. end;
  2227. PVkAttachmentDescription = ^TVkAttachmentDescription;
  2228. PPVkAttachmentDescription = ^PVkAttachmentDescription;
  2229. TVkAttachmentReference = record
  2230. attachment: VkUint32;
  2231. layout: TVkImageLayout;
  2232. end;
  2233. PVkAttachmentReference = ^TVkAttachmentReference;
  2234. PPVkAttachmentReference = ^PVkAttachmentReference;
  2235. TVkSubpassDescription = record
  2236. flags: VkSubpassDescriptionFlags;
  2237. pipelineBindPoint: TVkPipelineBindPoint;
  2238. inputAttachmentCount: VkUint32;
  2239. pInputAttachments: PVkAttachmentReference;
  2240. colorAttachmentCount: VkUint32;
  2241. pColorAttachments: PVkAttachmentReference;
  2242. pResolveAttachments: PVkAttachmentReference;
  2243. pDepthStencilAttachment: PVkAttachmentReference;
  2244. preserveAttachmentCount: VkUint32;
  2245. pPreserveAttachments: PVkUint32;
  2246. end;
  2247. PVkSubpassDescription = ^TVkSubpassDescription;
  2248. PPVkSubpassDescription = ^PVkSubpassDescription;
  2249. TVkSubpassDependency = record
  2250. srcSubpass: VkUint32;
  2251. dstSubpass: VkUint32;
  2252. srcStageMask: VkPipelineStageFlags;
  2253. dstStageMask: VkPipelineStageFlags;
  2254. srcAccessMask: VkAccessFlags;
  2255. dstAccessMask: VkAccessFlags;
  2256. dependencyFlags: VkDependencyFlags;
  2257. end;
  2258. PVkSubpassDependency = ^TVkSubpassDependency;
  2259. PPVkSubpassDependency = ^PVkSubpassDependency;
  2260. TVkRenderPassCreateInfo = record
  2261. sType: TVkStructureType;
  2262. pNext: PVkVoid;
  2263. flags: VkRenderPassCreateFlags;
  2264. attachmentCount: VkUint32;
  2265. pAttachments: PVkAttachmentDescription;
  2266. subpassCount: VkUint32;
  2267. pSubpasses: PVkSubpassDescription;
  2268. dependencyCount: VkUint32;
  2269. pDependencies: PVkSubpassDependency;
  2270. end;
  2271. PVkRenderPassCreateInfo = ^TVkRenderPassCreateInfo;
  2272. PPVkRenderPassCreateInfo = ^PVkRenderPassCreateInfo;
  2273. TVkCommandPoolCreateInfo = record
  2274. sType: TVkStructureType;
  2275. pNext: PVkVoid;
  2276. flags: VkCommandPoolCreateFlags;
  2277. queueFamilyIndex: VkUint32;
  2278. end;
  2279. PVkCommandPoolCreateInfo = ^TVkCommandPoolCreateInfo;
  2280. PPVkCommandPoolCreateInfo = ^PVkCommandPoolCreateInfo;
  2281. TVkCommandBufferAllocateInfo = record
  2282. sType: TVkStructureType;
  2283. pNext: PVkVoid;
  2284. commandPool: VkCommandPool;
  2285. level: TVkCommandBufferLevel;
  2286. commandBufferCount: VkUint32;
  2287. end;
  2288. PVkCommandBufferAllocateInfo = ^TVkCommandBufferAllocateInfo;
  2289. PPVkCommandBufferAllocateInfo = ^PVkCommandBufferAllocateInfo;
  2290. TVkCommandBufferInheritanceInfo = record
  2291. sType: TVkStructureType;
  2292. pNext: PVkVoid;
  2293. renderPass: VkRenderPass;
  2294. subpass: VkUint32;
  2295. framebuffer: VkFramebuffer;
  2296. occlusionQueryEnable: VkBool32;
  2297. queryFlags: VkQueryControlFlags;
  2298. pipelineStatistics: VkQueryPipelineStatisticFlags;
  2299. end;
  2300. PVkCommandBufferInheritanceInfo = ^TVkCommandBufferInheritanceInfo;
  2301. PPVkCommandBufferInheritanceInfo = ^PVkCommandBufferInheritanceInfo;
  2302. TVkCommandBufferBeginInfo = record
  2303. sType: TVkStructureType;
  2304. pNext: PVkVoid;
  2305. flags: VkCommandBufferUsageFlags;
  2306. pInheritanceInfo: PVkCommandBufferInheritanceInfo;
  2307. end;
  2308. PVkCommandBufferBeginInfo = ^TVkCommandBufferBeginInfo;
  2309. PPVkCommandBufferBeginInfo = ^PVkCommandBufferBeginInfo;
  2310. TVkBufferCopy = record
  2311. srcOffset: VkDeviceSize;
  2312. dstOffset: VkDeviceSize;
  2313. size: VkDeviceSize;
  2314. end;
  2315. PVkBufferCopy = ^TVkBufferCopy;
  2316. PPVkBufferCopy = ^PVkBufferCopy;
  2317. TVkImageSubresourceLayers = record
  2318. aspectMask: VkImageAspectFlags;
  2319. mipLevel: VkUint32;
  2320. baseArrayLayer: VkUint32;
  2321. layerCount: VkUint32;
  2322. end;
  2323. PVkImageSubresourceLayers = ^TVkImageSubresourceLayers;
  2324. PPVkImageSubresourceLayers = ^PVkImageSubresourceLayers;
  2325. TVkImageCopy = record
  2326. srcSubresource: TVkImageSubresourceLayers;
  2327. srcOffset: TVkOffset3D;
  2328. dstSubresource: TVkImageSubresourceLayers;
  2329. dstOffset: TVkOffset3D;
  2330. extent: TVkExtent3D;
  2331. end;
  2332. PVkImageCopy = ^TVkImageCopy;
  2333. PPVkImageCopy = ^PVkImageCopy;
  2334. TVkImageBlit = record
  2335. srcSubresource: TVkImageSubresourceLayers;
  2336. srcOffsets: array[0..2] of TVkOffset3D;
  2337. dstSubresource: TVkImageSubresourceLayers;
  2338. dstOffsets: array[0..2] of TVkOffset3D;
  2339. end;
  2340. PVkImageBlit = ^TVkImageBlit;
  2341. PPVkImageBlit = ^PVkImageBlit;
  2342. TVkBufferImageCopy = record
  2343. bufferOffset: VkDeviceSize;
  2344. bufferRowLength: VkUint32;
  2345. bufferImageHeight: VkUint32;
  2346. imageSubresource: TVkImageSubresourceLayers;
  2347. imageOffset: TVkOffset3D;
  2348. imageExtent: TVkExtent3D;
  2349. end;
  2350. PVkBufferImageCopy = ^TVkBufferImageCopy;
  2351. PPVkBufferImageCopy = ^PVkBufferImageCopy;
  2352. TVkClearColorValue = record
  2353. case Integer of
  2354. 000: (float32: array[0..4] of VkFloat);
  2355. 001: (int32: array[0..4] of VkInt32);
  2356. 002: (uint32: array[0..4] of VkUint32);
  2357. end;
  2358. PVkClearColorValue = ^TVkClearColorValue;
  2359. PPVkClearColorValue = ^PVkClearColorValue;
  2360. TVkClearDepthStencilValue = record
  2361. depth: VkFloat;
  2362. stencil: VkUint32;
  2363. end;
  2364. PVkClearDepthStencilValue = ^TVkClearDepthStencilValue;
  2365. PPVkClearDepthStencilValue = ^PVkClearDepthStencilValue;
  2366. TVkClearValue = record
  2367. case Integer of
  2368. 000: (color: TVkClearColorValue);
  2369. 001: (depthStencil: TVkClearDepthStencilValue);
  2370. end;
  2371. PVkClearValue = ^TVkClearValue;
  2372. PPVkClearValue = ^PVkClearValue;
  2373. TVkClearAttachment = record
  2374. aspectMask: VkImageAspectFlags;
  2375. colorAttachment: VkUint32;
  2376. clearValue: TVkClearValue;
  2377. end;
  2378. PVkClearAttachment = ^TVkClearAttachment;
  2379. PPVkClearAttachment = ^PVkClearAttachment;
  2380. TVkClearRect = record
  2381. rect: TVkRect2D;
  2382. baseArrayLayer: VkUint32;
  2383. layerCount: VkUint32;
  2384. end;
  2385. PVkClearRect = ^TVkClearRect;
  2386. PPVkClearRect = ^PVkClearRect;
  2387. TVkImageResolve = record
  2388. srcSubresource: TVkImageSubresourceLayers;
  2389. srcOffset: TVkOffset3D;
  2390. dstSubresource: TVkImageSubresourceLayers;
  2391. dstOffset: TVkOffset3D;
  2392. extent: TVkExtent3D;
  2393. end;
  2394. PVkImageResolve = ^TVkImageResolve;
  2395. PPVkImageResolve = ^PVkImageResolve;
  2396. TVkMemoryBarrier = record
  2397. sType: TVkStructureType;
  2398. pNext: PVkVoid;
  2399. srcAccessMask: VkAccessFlags;
  2400. dstAccessMask: VkAccessFlags;
  2401. end;
  2402. PVkMemoryBarrier = ^TVkMemoryBarrier;
  2403. PPVkMemoryBarrier = ^PVkMemoryBarrier;
  2404. TVkBufferMemoryBarrier = record
  2405. sType: TVkStructureType;
  2406. pNext: PVkVoid;
  2407. srcAccessMask: VkAccessFlags;
  2408. dstAccessMask: VkAccessFlags;
  2409. srcQueueFamilyIndex: VkUint32;
  2410. dstQueueFamilyIndex: VkUint32;
  2411. buffer: VkBuffer;
  2412. offset: VkDeviceSize;
  2413. size: VkDeviceSize;
  2414. end;
  2415. PVkBufferMemoryBarrier = ^TVkBufferMemoryBarrier;
  2416. PPVkBufferMemoryBarrier = ^PVkBufferMemoryBarrier;
  2417. TVkImageMemoryBarrier = record
  2418. sType: TVkStructureType;
  2419. pNext: PVkVoid;
  2420. srcAccessMask: VkAccessFlags;
  2421. dstAccessMask: VkAccessFlags;
  2422. oldLayout: TVkImageLayout;
  2423. newLayout: TVkImageLayout;
  2424. srcQueueFamilyIndex: VkUint32;
  2425. dstQueueFamilyIndex: VkUint32;
  2426. image: VkImage;
  2427. subresourceRange: TVkImageSubresourceRange;
  2428. end;
  2429. PVkImageMemoryBarrier = ^TVkImageMemoryBarrier;
  2430. PPVkImageMemoryBarrier = ^PVkImageMemoryBarrier;
  2431. TVkRenderPassBeginInfo = record
  2432. sType: TVkStructureType;
  2433. pNext: PVkVoid;
  2434. renderPass: VkRenderPass;
  2435. framebuffer: VkFramebuffer;
  2436. renderArea: TVkRect2D;
  2437. clearValueCount: VkUint32;
  2438. pClearValues: PVkClearValue;
  2439. end;
  2440. PVkRenderPassBeginInfo = ^TVkRenderPassBeginInfo;
  2441. PPVkRenderPassBeginInfo = ^PVkRenderPassBeginInfo;
  2442. TVkDispatchIndirectCommand = record
  2443. x: VkUint32;
  2444. y: VkUint32;
  2445. z: VkUint32;
  2446. end;
  2447. PVkDispatchIndirectCommand = ^TVkDispatchIndirectCommand;
  2448. PPVkDispatchIndirectCommand = ^PVkDispatchIndirectCommand;
  2449. TVkDrawIndexedIndirectCommand = record
  2450. indexCount: VkUint32;
  2451. instanceCount: VkUint32;
  2452. firstIndex: VkUint32;
  2453. vertexOffset: VkInt32;
  2454. firstInstance: VkUint32;
  2455. end;
  2456. PVkDrawIndexedIndirectCommand = ^TVkDrawIndexedIndirectCommand;
  2457. PPVkDrawIndexedIndirectCommand = ^PVkDrawIndexedIndirectCommand;
  2458. TVkDrawIndirectCommand = record
  2459. vertexCount: VkUint32;
  2460. instanceCount: VkUint32;
  2461. firstVertex: VkUint32;
  2462. firstInstance: VkUint32;
  2463. end;
  2464. PVkDrawIndirectCommand = ^TVkDrawIndirectCommand;
  2465. PPVkDrawIndirectCommand = ^PVkDrawIndirectCommand;
  2466. { ========================================== VK_KHR_surface ========================================== }
  2467. TVkSurfaceCapabilitiesKHR = record
  2468. minImageCount: VkUint32;
  2469. maxImageCount: VkUint32;
  2470. currentExtent: TVkExtent2D;
  2471. minImageExtent: TVkExtent2D;
  2472. maxImageExtent: TVkExtent2D;
  2473. maxImageArrayLayers: VkUint32;
  2474. supportedTransforms: VkSurfaceTransformFlagsKHR;
  2475. currentTransform: TVkSurfaceTransformFlagBitsKHR;
  2476. supportedCompositeAlpha: VkCompositeAlphaFlagsKHR;
  2477. supportedUsageFlags: VkImageUsageFlags;
  2478. end;
  2479. PVkSurfaceCapabilitiesKHR = ^TVkSurfaceCapabilitiesKHR;
  2480. PPVkSurfaceCapabilitiesKHR = ^PVkSurfaceCapabilitiesKHR;
  2481. TVkSurfaceFormatKHR = record
  2482. format: TVkFormat;
  2483. colorSpace: TVkColorSpaceKHR;
  2484. end;
  2485. PVkSurfaceFormatKHR = ^TVkSurfaceFormatKHR;
  2486. PPVkSurfaceFormatKHR = ^PVkSurfaceFormatKHR;
  2487. { ========================================= VK_KHR_swapchain ========================================= }
  2488. TVkSwapchainCreateInfoKHR = record
  2489. sType: TVkStructureType;
  2490. pNext: PVkVoid;
  2491. flags: VkSwapchainCreateFlagsKHR;
  2492. surface: VkSurfaceKHR;
  2493. minImageCount: VkUint32;
  2494. imageFormat: TVkFormat;
  2495. imageColorSpace: TVkColorSpaceKHR;
  2496. imageExtent: TVkExtent2D;
  2497. imageArrayLayers: VkUint32;
  2498. imageUsage: VkImageUsageFlags;
  2499. imageSharingMode: TVkSharingMode;
  2500. queueFamilyIndexCount: VkUint32;
  2501. pQueueFamilyIndices: PVkUint32;
  2502. preTransform: TVkSurfaceTransformFlagBitsKHR;
  2503. compositeAlpha: TVkCompositeAlphaFlagBitsKHR;
  2504. presentMode: TVkPresentModeKHR;
  2505. clipped: VkBool32;
  2506. oldSwapchain: VkSwapchainKHR;
  2507. end;
  2508. PVkSwapchainCreateInfoKHR = ^TVkSwapchainCreateInfoKHR;
  2509. PPVkSwapchainCreateInfoKHR = ^PVkSwapchainCreateInfoKHR;
  2510. TVkPresentInfoKHR = record
  2511. sType: TVkStructureType;
  2512. pNext: PVkVoid;
  2513. waitSemaphoreCount: VkUint32;
  2514. pWaitSemaphores: PVkSemaphore;
  2515. swapchainCount: VkUint32;
  2516. pSwapchains: PVkSwapchainKHR;
  2517. pImageIndices: PVkUint32;
  2518. pResults: PVkResult;
  2519. end;
  2520. PVkPresentInfoKHR = ^TVkPresentInfoKHR;
  2521. PPVkPresentInfoKHR = ^PVkPresentInfoKHR;
  2522. { ========================================== VK_KHR_display ========================================== }
  2523. TVkDisplayPropertiesKHR = record
  2524. display: VkDisplayKHR;
  2525. displayName: PVkChar;
  2526. physicalDimensions: TVkExtent2D;
  2527. physicalResolution: TVkExtent2D;
  2528. supportedTransforms: VkSurfaceTransformFlagsKHR;
  2529. planeReorderPossible: VkBool32;
  2530. persistentContent: VkBool32;
  2531. end;
  2532. PVkDisplayPropertiesKHR = ^TVkDisplayPropertiesKHR;
  2533. PPVkDisplayPropertiesKHR = ^PVkDisplayPropertiesKHR;
  2534. TVkDisplayModeParametersKHR = record
  2535. visibleRegion: TVkExtent2D;
  2536. refreshRate: VkUint32;
  2537. end;
  2538. PVkDisplayModeParametersKHR = ^TVkDisplayModeParametersKHR;
  2539. PPVkDisplayModeParametersKHR = ^PVkDisplayModeParametersKHR;
  2540. TVkDisplayModePropertiesKHR = record
  2541. displayMode: VkDisplayModeKHR;
  2542. parameters: TVkDisplayModeParametersKHR;
  2543. end;
  2544. PVkDisplayModePropertiesKHR = ^TVkDisplayModePropertiesKHR;
  2545. PPVkDisplayModePropertiesKHR = ^PVkDisplayModePropertiesKHR;
  2546. TVkDisplayModeCreateInfoKHR = record
  2547. sType: TVkStructureType;
  2548. pNext: PVkVoid;
  2549. flags: VkDisplayModeCreateFlagsKHR;
  2550. parameters: TVkDisplayModeParametersKHR;
  2551. end;
  2552. PVkDisplayModeCreateInfoKHR = ^TVkDisplayModeCreateInfoKHR;
  2553. PPVkDisplayModeCreateInfoKHR = ^PVkDisplayModeCreateInfoKHR;
  2554. TVkDisplayPlaneCapabilitiesKHR = record
  2555. supportedAlpha: VkDisplayPlaneAlphaFlagsKHR;
  2556. minSrcPosition: TVkOffset2D;
  2557. maxSrcPosition: TVkOffset2D;
  2558. minSrcExtent: TVkExtent2D;
  2559. maxSrcExtent: TVkExtent2D;
  2560. minDstPosition: TVkOffset2D;
  2561. maxDstPosition: TVkOffset2D;
  2562. minDstExtent: TVkExtent2D;
  2563. maxDstExtent: TVkExtent2D;
  2564. end;
  2565. PVkDisplayPlaneCapabilitiesKHR = ^TVkDisplayPlaneCapabilitiesKHR;
  2566. PPVkDisplayPlaneCapabilitiesKHR = ^PVkDisplayPlaneCapabilitiesKHR;
  2567. TVkDisplayPlanePropertiesKHR = record
  2568. currentDisplay: VkDisplayKHR;
  2569. currentStackIndex: VkUint32;
  2570. end;
  2571. PVkDisplayPlanePropertiesKHR = ^TVkDisplayPlanePropertiesKHR;
  2572. PPVkDisplayPlanePropertiesKHR = ^PVkDisplayPlanePropertiesKHR;
  2573. TVkDisplaySurfaceCreateInfoKHR = record
  2574. sType: TVkStructureType;
  2575. pNext: PVkVoid;
  2576. flags: VkDisplaySurfaceCreateFlagsKHR;
  2577. displayMode: VkDisplayModeKHR;
  2578. planeIndex: VkUint32;
  2579. planeStackIndex: VkUint32;
  2580. transform: TVkSurfaceTransformFlagBitsKHR;
  2581. globalAlpha: VkFloat;
  2582. alphaMode: TVkDisplayPlaneAlphaFlagBitsKHR;
  2583. imageExtent: TVkExtent2D;
  2584. end;
  2585. PVkDisplaySurfaceCreateInfoKHR = ^TVkDisplaySurfaceCreateInfoKHR;
  2586. PPVkDisplaySurfaceCreateInfoKHR = ^PVkDisplaySurfaceCreateInfoKHR;
  2587. { ===================================== VK_KHR_display_swapchain ===================================== }
  2588. TVkDisplayPresentInfoKHR = record
  2589. sType: TVkStructureType;
  2590. pNext: PVkVoid;
  2591. srcRect: TVkRect2D;
  2592. dstRect: TVkRect2D;
  2593. persistent: VkBool32;
  2594. end;
  2595. PVkDisplayPresentInfoKHR = ^TVkDisplayPresentInfoKHR;
  2596. PPVkDisplayPresentInfoKHR = ^PVkDisplayPresentInfoKHR;
  2597. { ======================================= VK_KHR_xlib_surface ======================================== }
  2598. {$IFDEF VK_USE_PLATFORM_XLIB_KHR}
  2599. TVkXlibSurfaceCreateInfoKHR = record
  2600. sType: TVkStructureType;
  2601. pNext: PVkVoid;
  2602. flags: VkXlibSurfaceCreateFlagsKHR;
  2603. dpy: Display;
  2604. window: Window;
  2605. end;
  2606. PVkXlibSurfaceCreateInfoKHR = ^TVkXlibSurfaceCreateInfoKHR;
  2607. PPVkXlibSurfaceCreateInfoKHR = ^PVkXlibSurfaceCreateInfoKHR;
  2608. {$ENDIF}
  2609. { ======================================== VK_KHR_xcb_surface ======================================== }
  2610. {$IFDEF VK_USE_PLATFORM_XCB_KHR}
  2611. TVkXcbSurfaceCreateInfoKHR = record
  2612. sType: TVkStructureType;
  2613. pNext: PVkVoid;
  2614. flags: VkXcbSurfaceCreateFlagsKHR;
  2615. connection: xcb_connection_t;
  2616. window: xcb_window_t;
  2617. end;
  2618. PVkXcbSurfaceCreateInfoKHR = ^TVkXcbSurfaceCreateInfoKHR;
  2619. PPVkXcbSurfaceCreateInfoKHR = ^PVkXcbSurfaceCreateInfoKHR;
  2620. {$ENDIF}
  2621. { ====================================== VK_KHR_wayland_surface ====================================== }
  2622. {$IFDEF VK_USE_PLATFORM_WAYLAND_KHR}
  2623. TVkWaylandSurfaceCreateInfoKHR = record
  2624. sType: TVkStructureType;
  2625. pNext: PVkVoid;
  2626. flags: VkWaylandSurfaceCreateFlagsKHR;
  2627. display: wl_display;
  2628. surface: wl_surface;
  2629. end;
  2630. PVkWaylandSurfaceCreateInfoKHR = ^TVkWaylandSurfaceCreateInfoKHR;
  2631. PPVkWaylandSurfaceCreateInfoKHR = ^PVkWaylandSurfaceCreateInfoKHR;
  2632. {$ENDIF}
  2633. { ======================================== VK_KHR_mir_surface ======================================== }
  2634. {$IFDEF VK_USE_PLATFORM_MIR_KHR}
  2635. TVkMirSurfaceCreateInfoKHR = record
  2636. sType: TVkStructureType;
  2637. pNext: PVkVoid;
  2638. flags: VkMirSurfaceCreateFlagsKHR;
  2639. connection: MirConnection;
  2640. mirSurface: MirSurface;
  2641. end;
  2642. PVkMirSurfaceCreateInfoKHR = ^TVkMirSurfaceCreateInfoKHR;
  2643. PPVkMirSurfaceCreateInfoKHR = ^PVkMirSurfaceCreateInfoKHR;
  2644. {$ENDIF}
  2645. { ====================================== VK_KHR_android_surface ====================================== }
  2646. {$IFDEF VK_USE_PLATFORM_ANDROID_KHR}
  2647. TVkAndroidSurfaceCreateInfoKHR = record
  2648. sType: TVkStructureType;
  2649. pNext: PVkVoid;
  2650. flags: VkAndroidSurfaceCreateFlagsKHR;
  2651. window: ANativeWindow;
  2652. end;
  2653. PVkAndroidSurfaceCreateInfoKHR = ^TVkAndroidSurfaceCreateInfoKHR;
  2654. PPVkAndroidSurfaceCreateInfoKHR = ^PVkAndroidSurfaceCreateInfoKHR;
  2655. {$ENDIF}
  2656. { ======================================= VK_KHR_win32_surface ======================================= }
  2657. {$IFDEF VK_USE_PLATFORM_WIN32_KHR}
  2658. TVkWin32SurfaceCreateInfoKHR = record
  2659. sType: TVkStructureType;
  2660. pNext: PVkVoid;
  2661. flags: VkWin32SurfaceCreateFlagsKHR;
  2662. hinstance: HINSTANCE;
  2663. hwnd: HWND;
  2664. end;
  2665. PVkWin32SurfaceCreateInfoKHR = ^TVkWin32SurfaceCreateInfoKHR;
  2666. PPVkWin32SurfaceCreateInfoKHR = ^PVkWin32SurfaceCreateInfoKHR;
  2667. {$ENDIF}
  2668. { ======================================= VK_EXT_debug_report ======================================== }
  2669. TVkDebugReportCallbackCreateInfoEXT = record
  2670. sType: TVkStructureType;
  2671. pNext: PVkVoid;
  2672. flags: VkDebugReportFlagsEXT;
  2673. pfnCallback: TvkDebugReportCallbackEXT;
  2674. pUserData: PVkVoid;
  2675. end;
  2676. PVkDebugReportCallbackCreateInfoEXT = ^TVkDebugReportCallbackCreateInfoEXT;
  2677. PPVkDebugReportCallbackCreateInfoEXT = ^PVkDebugReportCallbackCreateInfoEXT;
  2678. type { commands }
  2679. { ========================================== VK_VERSION_1_0 ========================================== }
  2680. TvkCreateInstance = function (
  2681. const pCreateInfo: PVkInstanceCreateInfo;
  2682. const pAllocator: PVkAllocationCallbacks;
  2683. pInstance: PVkInstance
  2684. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2685. TvkDestroyInstance = procedure(
  2686. instance: VkInstance;
  2687. const pAllocator: PVkAllocationCallbacks
  2688. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2689. TvkEnumeratePhysicalDevices = function (
  2690. instance: VkInstance;
  2691. pPhysicalDeviceCount: PVkUint32;
  2692. pPhysicalDevices: PVkPhysicalDevice
  2693. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2694. TvkGetPhysicalDeviceFeatures = procedure(
  2695. physicalDevice: VkPhysicalDevice;
  2696. pFeatures: PVkPhysicalDeviceFeatures
  2697. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2698. TvkGetPhysicalDeviceFormatProperties = procedure(
  2699. physicalDevice: VkPhysicalDevice;
  2700. format: TVkFormat;
  2701. pFormatProperties: PVkFormatProperties
  2702. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2703. TvkGetPhysicalDeviceImageFormatProperties = function (
  2704. physicalDevice: VkPhysicalDevice;
  2705. format: TVkFormat;
  2706. iType: TVkImageType;
  2707. tiling: TVkImageTiling;
  2708. usage: VkImageUsageFlags;
  2709. flags: VkImageCreateFlags;
  2710. pImageFormatProperties: PVkImageFormatProperties
  2711. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2712. TvkGetPhysicalDeviceProperties = procedure(
  2713. physicalDevice: VkPhysicalDevice;
  2714. pProperties: PVkPhysicalDeviceProperties
  2715. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2716. TvkGetPhysicalDeviceQueueFamilyProperties = procedure(
  2717. physicalDevice: VkPhysicalDevice;
  2718. pQueueFamilyPropertyCount: PVkUint32;
  2719. pQueueFamilyProperties: PVkQueueFamilyProperties
  2720. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2721. TvkGetPhysicalDeviceMemoryProperties = procedure(
  2722. physicalDevice: VkPhysicalDevice;
  2723. pMemoryProperties: PVkPhysicalDeviceMemoryProperties
  2724. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2725. TvkGetInstanceProcAddr = function (
  2726. instance: VkInstance;
  2727. const pName: PVkChar
  2728. ): TvkVoidFunction; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2729. TvkGetDeviceProcAddr = function (
  2730. device: VkDevice;
  2731. const pName: PVkChar
  2732. ): TvkVoidFunction; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2733. TvkCreateDevice = function (
  2734. physicalDevice: VkPhysicalDevice;
  2735. const pCreateInfo: PVkDeviceCreateInfo;
  2736. const pAllocator: PVkAllocationCallbacks;
  2737. pDevice: PVkDevice
  2738. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2739. TvkDestroyDevice = procedure(
  2740. device: VkDevice;
  2741. const pAllocator: PVkAllocationCallbacks
  2742. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2743. TvkEnumerateInstanceExtensionProperties = function (
  2744. const pLayerName: PVkChar;
  2745. pPropertyCount: PVkUint32;
  2746. pProperties: PVkExtensionProperties
  2747. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2748. TvkEnumerateDeviceExtensionProperties = function (
  2749. physicalDevice: VkPhysicalDevice;
  2750. const pLayerName: PVkChar;
  2751. pPropertyCount: PVkUint32;
  2752. pProperties: PVkExtensionProperties
  2753. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2754. TvkEnumerateInstanceLayerProperties = function (
  2755. pPropertyCount: PVkUint32;
  2756. pProperties: PVkLayerProperties
  2757. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2758. TvkEnumerateDeviceLayerProperties = function (
  2759. physicalDevice: VkPhysicalDevice;
  2760. pPropertyCount: PVkUint32;
  2761. pProperties: PVkLayerProperties
  2762. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2763. TvkGetDeviceQueue = procedure(
  2764. device: VkDevice;
  2765. queueFamilyIndex: VkUint32;
  2766. queueIndex: VkUint32;
  2767. pQueue: PVkQueue
  2768. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2769. TvkQueueSubmit = function (
  2770. queue: VkQueue;
  2771. submitCount: VkUint32;
  2772. const pSubmits: PVkSubmitInfo;
  2773. fence: VkFence
  2774. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2775. TvkQueueWaitIdle = function (
  2776. queue: VkQueue
  2777. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2778. TvkDeviceWaitIdle = function (
  2779. device: VkDevice
  2780. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2781. TvkAllocateMemory = function (
  2782. device: VkDevice;
  2783. const pAllocateInfo: PVkMemoryAllocateInfo;
  2784. const pAllocator: PVkAllocationCallbacks;
  2785. pMemory: PVkDeviceMemory
  2786. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2787. TvkFreeMemory = procedure(
  2788. device: VkDevice;
  2789. memory: VkDeviceMemory;
  2790. const pAllocator: PVkAllocationCallbacks
  2791. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2792. TvkMapMemory = function (
  2793. device: VkDevice;
  2794. memory: VkDeviceMemory;
  2795. offset: VkDeviceSize;
  2796. size: VkDeviceSize;
  2797. flags: VkMemoryMapFlags;
  2798. ppData: PPVkVoid
  2799. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2800. TvkUnmapMemory = procedure(
  2801. device: VkDevice;
  2802. memory: VkDeviceMemory
  2803. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2804. TvkFlushMappedMemoryRanges = function (
  2805. device: VkDevice;
  2806. memoryRangeCount: VkUint32;
  2807. const pMemoryRanges: PVkMappedMemoryRange
  2808. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2809. TvkInvalidateMappedMemoryRanges = function (
  2810. device: VkDevice;
  2811. memoryRangeCount: VkUint32;
  2812. const pMemoryRanges: PVkMappedMemoryRange
  2813. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2814. TvkGetDeviceMemoryCommitment = procedure(
  2815. device: VkDevice;
  2816. memory: VkDeviceMemory;
  2817. pCommittedMemoryInBytes: PVkDeviceSize
  2818. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2819. TvkBindBufferMemory = function (
  2820. device: VkDevice;
  2821. buffer: VkBuffer;
  2822. memory: VkDeviceMemory;
  2823. memoryOffset: VkDeviceSize
  2824. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2825. TvkBindImageMemory = function (
  2826. device: VkDevice;
  2827. image: VkImage;
  2828. memory: VkDeviceMemory;
  2829. memoryOffset: VkDeviceSize
  2830. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2831. TvkGetBufferMemoryRequirements = procedure(
  2832. device: VkDevice;
  2833. buffer: VkBuffer;
  2834. pMemoryRequirements: PVkMemoryRequirements
  2835. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2836. TvkGetImageMemoryRequirements = procedure(
  2837. device: VkDevice;
  2838. image: VkImage;
  2839. pMemoryRequirements: PVkMemoryRequirements
  2840. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2841. TvkGetImageSparseMemoryRequirements = procedure(
  2842. device: VkDevice;
  2843. image: VkImage;
  2844. pSparseMemoryRequirementCount:PVkUint32;
  2845. pSparseMemoryRequirements: PVkSparseImageMemoryRequirements
  2846. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2847. TvkGetPhysicalDeviceSparseImageFormatProperties = procedure(
  2848. physicalDevice: VkPhysicalDevice;
  2849. format: TVkFormat;
  2850. iType: TVkImageType;
  2851. samples: TVkSampleCountFlagBits;
  2852. usage: VkImageUsageFlags;
  2853. tiling: TVkImageTiling;
  2854. pPropertyCount: PVkUint32;
  2855. pProperties: PVkSparseImageFormatProperties
  2856. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2857. TvkQueueBindSparse = function (
  2858. queue: VkQueue;
  2859. bindInfoCount: VkUint32;
  2860. const pBindInfo: PVkBindSparseInfo;
  2861. fence: VkFence
  2862. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2863. TvkCreateFence = function (
  2864. device: VkDevice;
  2865. const pCreateInfo: PVkFenceCreateInfo;
  2866. const pAllocator: PVkAllocationCallbacks;
  2867. pFence: PVkFence
  2868. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2869. TvkDestroyFence = procedure(
  2870. device: VkDevice;
  2871. fence: VkFence;
  2872. const pAllocator: PVkAllocationCallbacks
  2873. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2874. TvkResetFences = function (
  2875. device: VkDevice;
  2876. fenceCount: VkUint32;
  2877. const pFences: PVkFence
  2878. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2879. TvkGetFenceStatus = function (
  2880. device: VkDevice;
  2881. fence: VkFence
  2882. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2883. TvkWaitForFences = function (
  2884. device: VkDevice;
  2885. fenceCount: VkUint32;
  2886. const pFences: PVkFence;
  2887. waitAll: VkBool32;
  2888. timeout: VkUint64
  2889. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2890. TvkCreateSemaphore = function (
  2891. device: VkDevice;
  2892. const pCreateInfo: PVkSemaphoreCreateInfo;
  2893. const pAllocator: PVkAllocationCallbacks;
  2894. pSemaphore: PVkSemaphore
  2895. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2896. TvkDestroySemaphore = procedure(
  2897. device: VkDevice;
  2898. semaphore: VkSemaphore;
  2899. const pAllocator: PVkAllocationCallbacks
  2900. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2901. TvkCreateEvent = function (
  2902. device: VkDevice;
  2903. const pCreateInfo: PVkEventCreateInfo;
  2904. const pAllocator: PVkAllocationCallbacks;
  2905. pEvent: PVkEvent
  2906. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2907. TvkDestroyEvent = procedure(
  2908. device: VkDevice;
  2909. event: VkEvent;
  2910. const pAllocator: PVkAllocationCallbacks
  2911. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2912. TvkGetEventStatus = function (
  2913. device: VkDevice;
  2914. event: VkEvent
  2915. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2916. TvkSetEvent = function (
  2917. device: VkDevice;
  2918. event: VkEvent
  2919. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2920. TvkResetEvent = function (
  2921. device: VkDevice;
  2922. event: VkEvent
  2923. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2924. TvkCreateQueryPool = function (
  2925. device: VkDevice;
  2926. const pCreateInfo: PVkQueryPoolCreateInfo;
  2927. const pAllocator: PVkAllocationCallbacks;
  2928. pQueryPool: PVkQueryPool
  2929. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2930. TvkDestroyQueryPool = procedure(
  2931. device: VkDevice;
  2932. queryPool: VkQueryPool;
  2933. const pAllocator: PVkAllocationCallbacks
  2934. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2935. TvkGetQueryPoolResults = function (
  2936. device: VkDevice;
  2937. queryPool: VkQueryPool;
  2938. firstQuery: VkUint32;
  2939. queryCount: VkUint32;
  2940. dataSize: VkSize;
  2941. pData: PVkVoid;
  2942. stride: VkDeviceSize;
  2943. flags: VkQueryResultFlags
  2944. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2945. TvkCreateBuffer = function (
  2946. device: VkDevice;
  2947. const pCreateInfo: PVkBufferCreateInfo;
  2948. const pAllocator: PVkAllocationCallbacks;
  2949. pBuffer: PVkBuffer
  2950. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2951. TvkDestroyBuffer = procedure(
  2952. device: VkDevice;
  2953. buffer: VkBuffer;
  2954. const pAllocator: PVkAllocationCallbacks
  2955. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2956. TvkCreateBufferView = function (
  2957. device: VkDevice;
  2958. const pCreateInfo: PVkBufferViewCreateInfo;
  2959. const pAllocator: PVkAllocationCallbacks;
  2960. pView: PVkBufferView
  2961. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2962. TvkDestroyBufferView = procedure(
  2963. device: VkDevice;
  2964. bufferView: VkBufferView;
  2965. const pAllocator: PVkAllocationCallbacks
  2966. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2967. TvkCreateImage = function (
  2968. device: VkDevice;
  2969. const pCreateInfo: PVkImageCreateInfo;
  2970. const pAllocator: PVkAllocationCallbacks;
  2971. pImage: PVkImage
  2972. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2973. TvkDestroyImage = procedure(
  2974. device: VkDevice;
  2975. image: VkImage;
  2976. const pAllocator: PVkAllocationCallbacks
  2977. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2978. TvkGetImageSubresourceLayout = procedure(
  2979. device: VkDevice;
  2980. image: VkImage;
  2981. const pSubresource: PVkImageSubresource;
  2982. pLayout: PVkSubresourceLayout
  2983. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2984. TvkCreateImageView = function (
  2985. device: VkDevice;
  2986. const pCreateInfo: PVkImageViewCreateInfo;
  2987. const pAllocator: PVkAllocationCallbacks;
  2988. pView: PVkImageView
  2989. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2990. TvkDestroyImageView = procedure(
  2991. device: VkDevice;
  2992. imageView: VkImageView;
  2993. const pAllocator: PVkAllocationCallbacks
  2994. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  2995. TvkCreateShaderModule = function (
  2996. device: VkDevice;
  2997. const pCreateInfo: PVkShaderModuleCreateInfo;
  2998. const pAllocator: PVkAllocationCallbacks;
  2999. pShaderModule: PVkShaderModule
  3000. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3001. TvkDestroyShaderModule = procedure(
  3002. device: VkDevice;
  3003. shaderModule: VkShaderModule;
  3004. const pAllocator: PVkAllocationCallbacks
  3005. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3006. TvkCreatePipelineCache = function (
  3007. device: VkDevice;
  3008. const pCreateInfo: PVkPipelineCacheCreateInfo;
  3009. const pAllocator: PVkAllocationCallbacks;
  3010. pPipelineCache: PVkPipelineCache
  3011. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3012. TvkDestroyPipelineCache = procedure(
  3013. device: VkDevice;
  3014. pipelineCache: VkPipelineCache;
  3015. const pAllocator: PVkAllocationCallbacks
  3016. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3017. TvkGetPipelineCacheData = function (
  3018. device: VkDevice;
  3019. pipelineCache: VkPipelineCache;
  3020. pDataSize: PVkSize;
  3021. pData: PVkVoid
  3022. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3023. TvkMergePipelineCaches = function (
  3024. device: VkDevice;
  3025. dstCache: VkPipelineCache;
  3026. srcCacheCount: VkUint32;
  3027. const pSrcCaches: PVkPipelineCache
  3028. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3029. TvkCreateGraphicsPipelines = function (
  3030. device: VkDevice;
  3031. pipelineCache: VkPipelineCache;
  3032. createInfoCount: VkUint32;
  3033. const pCreateInfos: PVkGraphicsPipelineCreateInfo;
  3034. const pAllocator: PVkAllocationCallbacks;
  3035. pPipelines: PVkPipeline
  3036. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3037. TvkCreateComputePipelines = function (
  3038. device: VkDevice;
  3039. pipelineCache: VkPipelineCache;
  3040. createInfoCount: VkUint32;
  3041. const pCreateInfos: PVkComputePipelineCreateInfo;
  3042. const pAllocator: PVkAllocationCallbacks;
  3043. pPipelines: PVkPipeline
  3044. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3045. TvkDestroyPipeline = procedure(
  3046. device: VkDevice;
  3047. pipeline: VkPipeline;
  3048. const pAllocator: PVkAllocationCallbacks
  3049. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3050. TvkCreatePipelineLayout = function (
  3051. device: VkDevice;
  3052. const pCreateInfo: PVkPipelineLayoutCreateInfo;
  3053. const pAllocator: PVkAllocationCallbacks;
  3054. pPipelineLayout: PVkPipelineLayout
  3055. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3056. TvkDestroyPipelineLayout = procedure(
  3057. device: VkDevice;
  3058. pipelineLayout: VkPipelineLayout;
  3059. const pAllocator: PVkAllocationCallbacks
  3060. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3061. TvkCreateSampler = function (
  3062. device: VkDevice;
  3063. const pCreateInfo: PVkSamplerCreateInfo;
  3064. const pAllocator: PVkAllocationCallbacks;
  3065. pSampler: PVkSampler
  3066. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3067. TvkDestroySampler = procedure(
  3068. device: VkDevice;
  3069. sampler: VkSampler;
  3070. const pAllocator: PVkAllocationCallbacks
  3071. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3072. TvkCreateDescriptorSetLayout = function (
  3073. device: VkDevice;
  3074. const pCreateInfo: PVkDescriptorSetLayoutCreateInfo;
  3075. const pAllocator: PVkAllocationCallbacks;
  3076. pSetLayout: PVkDescriptorSetLayout
  3077. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3078. TvkDestroyDescriptorSetLayout = procedure(
  3079. device: VkDevice;
  3080. descriptorSetLayout: VkDescriptorSetLayout;
  3081. const pAllocator: PVkAllocationCallbacks
  3082. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3083. TvkCreateDescriptorPool = function (
  3084. device: VkDevice;
  3085. const pCreateInfo: PVkDescriptorPoolCreateInfo;
  3086. const pAllocator: PVkAllocationCallbacks;
  3087. pDescriptorPool: PVkDescriptorPool
  3088. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3089. TvkDestroyDescriptorPool = procedure(
  3090. device: VkDevice;
  3091. descriptorPool: VkDescriptorPool;
  3092. const pAllocator: PVkAllocationCallbacks
  3093. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3094. TvkResetDescriptorPool = function (
  3095. device: VkDevice;
  3096. descriptorPool: VkDescriptorPool;
  3097. flags: VkDescriptorPoolResetFlags
  3098. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3099. TvkAllocateDescriptorSets = function (
  3100. device: VkDevice;
  3101. const pAllocateInfo: PVkDescriptorSetAllocateInfo;
  3102. pDescriptorSets: PVkDescriptorSet
  3103. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3104. TvkFreeDescriptorSets = function (
  3105. device: VkDevice;
  3106. descriptorPool: VkDescriptorPool;
  3107. descriptorSetCount: VkUint32;
  3108. const pDescriptorSets: PVkDescriptorSet
  3109. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3110. TvkUpdateDescriptorSets = procedure(
  3111. device: VkDevice;
  3112. descriptorWriteCount: VkUint32;
  3113. const pDescriptorWrites: PVkWriteDescriptorSet;
  3114. descriptorCopyCount: VkUint32;
  3115. const pDescriptorCopies: PVkCopyDescriptorSet
  3116. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3117. TvkCreateFramebuffer = function (
  3118. device: VkDevice;
  3119. const pCreateInfo: PVkFramebufferCreateInfo;
  3120. const pAllocator: PVkAllocationCallbacks;
  3121. pFramebuffer: PVkFramebuffer
  3122. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3123. TvkDestroyFramebuffer = procedure(
  3124. device: VkDevice;
  3125. framebuffer: VkFramebuffer;
  3126. const pAllocator: PVkAllocationCallbacks
  3127. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3128. TvkCreateRenderPass = function (
  3129. device: VkDevice;
  3130. const pCreateInfo: PVkRenderPassCreateInfo;
  3131. const pAllocator: PVkAllocationCallbacks;
  3132. pRenderPass: PVkRenderPass
  3133. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3134. TvkDestroyRenderPass = procedure(
  3135. device: VkDevice;
  3136. renderPass: VkRenderPass;
  3137. const pAllocator: PVkAllocationCallbacks
  3138. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3139. TvkGetRenderAreaGranularity = procedure(
  3140. device: VkDevice;
  3141. renderPass: VkRenderPass;
  3142. pGranularity: PVkExtent2D
  3143. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3144. TvkCreateCommandPool = function (
  3145. device: VkDevice;
  3146. const pCreateInfo: PVkCommandPoolCreateInfo;
  3147. const pAllocator: PVkAllocationCallbacks;
  3148. pCommandPool: PVkCommandPool
  3149. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3150. TvkDestroyCommandPool = procedure(
  3151. device: VkDevice;
  3152. commandPool: VkCommandPool;
  3153. const pAllocator: PVkAllocationCallbacks
  3154. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3155. TvkResetCommandPool = function (
  3156. device: VkDevice;
  3157. commandPool: VkCommandPool;
  3158. flags: VkCommandPoolResetFlags
  3159. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3160. TvkAllocateCommandBuffers = function (
  3161. device: VkDevice;
  3162. const pAllocateInfo: PVkCommandBufferAllocateInfo;
  3163. pCommandBuffers: PVkCommandBuffer
  3164. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3165. TvkFreeCommandBuffers = procedure(
  3166. device: VkDevice;
  3167. commandPool: VkCommandPool;
  3168. commandBufferCount: VkUint32;
  3169. const pCommandBuffers: PVkCommandBuffer
  3170. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3171. TvkBeginCommandBuffer = function (
  3172. commandBuffer: VkCommandBuffer;
  3173. const pBeginInfo: PVkCommandBufferBeginInfo
  3174. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3175. TvkEndCommandBuffer = function (
  3176. commandBuffer: VkCommandBuffer
  3177. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3178. TvkResetCommandBuffer = function (
  3179. commandBuffer: VkCommandBuffer;
  3180. flags: VkCommandBufferResetFlags
  3181. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3182. TvkCmdBindPipeline = procedure(
  3183. commandBuffer: VkCommandBuffer;
  3184. pipelineBindPoint: TVkPipelineBindPoint;
  3185. pipeline: VkPipeline
  3186. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3187. TvkCmdSetViewport = procedure(
  3188. commandBuffer: VkCommandBuffer;
  3189. firstViewport: VkUint32;
  3190. viewportCount: VkUint32;
  3191. const pViewports: PVkViewport
  3192. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3193. TvkCmdSetScissor = procedure(
  3194. commandBuffer: VkCommandBuffer;
  3195. firstScissor: VkUint32;
  3196. scissorCount: VkUint32;
  3197. const pScissors: PVkRect2D
  3198. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3199. TvkCmdSetLineWidth = procedure(
  3200. commandBuffer: VkCommandBuffer;
  3201. lineWidth: VkFloat
  3202. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3203. TvkCmdSetDepthBias = procedure(
  3204. commandBuffer: VkCommandBuffer;
  3205. depthBiasConstantFactor: VkFloat;
  3206. depthBiasClamp: VkFloat;
  3207. depthBiasSlopeFactor: VkFloat
  3208. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3209. TvkCmdSetBlendConstants = procedure(
  3210. commandBuffer: VkCommandBuffer;
  3211. const blendConstants: VkFloat
  3212. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3213. TvkCmdSetDepthBounds = procedure(
  3214. commandBuffer: VkCommandBuffer;
  3215. minDepthBounds: VkFloat;
  3216. maxDepthBounds: VkFloat
  3217. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3218. TvkCmdSetStencilCompareMask = procedure(
  3219. commandBuffer: VkCommandBuffer;
  3220. faceMask: VkStencilFaceFlags;
  3221. compareMask: VkUint32
  3222. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3223. TvkCmdSetStencilWriteMask = procedure(
  3224. commandBuffer: VkCommandBuffer;
  3225. faceMask: VkStencilFaceFlags;
  3226. writeMask: VkUint32
  3227. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3228. TvkCmdSetStencilReference = procedure(
  3229. commandBuffer: VkCommandBuffer;
  3230. faceMask: VkStencilFaceFlags;
  3231. reference: VkUint32
  3232. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3233. TvkCmdBindDescriptorSets = procedure(
  3234. commandBuffer: VkCommandBuffer;
  3235. pipelineBindPoint: TVkPipelineBindPoint;
  3236. layout: VkPipelineLayout;
  3237. firstSet: VkUint32;
  3238. descriptorSetCount: VkUint32;
  3239. const pDescriptorSets: PVkDescriptorSet;
  3240. dynamicOffsetCount: VkUint32;
  3241. const pDynamicOffsets: PVkUint32
  3242. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3243. TvkCmdBindIndexBuffer = procedure(
  3244. commandBuffer: VkCommandBuffer;
  3245. buffer: VkBuffer;
  3246. offset: VkDeviceSize;
  3247. indexType: TVkIndexType
  3248. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3249. TvkCmdBindVertexBuffers = procedure(
  3250. commandBuffer: VkCommandBuffer;
  3251. firstBinding: VkUint32;
  3252. bindingCount: VkUint32;
  3253. const pBuffers: PVkBuffer;
  3254. const pOffsets: PVkDeviceSize
  3255. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3256. TvkCmdDraw = procedure(
  3257. commandBuffer: VkCommandBuffer;
  3258. vertexCount: VkUint32;
  3259. instanceCount: VkUint32;
  3260. firstVertex: VkUint32;
  3261. firstInstance: VkUint32
  3262. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3263. TvkCmdDrawIndexed = procedure(
  3264. commandBuffer: VkCommandBuffer;
  3265. indexCount: VkUint32;
  3266. instanceCount: VkUint32;
  3267. firstIndex: VkUint32;
  3268. vertexOffset: VkInt32;
  3269. firstInstance: VkUint32
  3270. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3271. TvkCmdDrawIndirect = procedure(
  3272. commandBuffer: VkCommandBuffer;
  3273. buffer: VkBuffer;
  3274. offset: VkDeviceSize;
  3275. drawCount: VkUint32;
  3276. stride: VkUint32
  3277. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3278. TvkCmdDrawIndexedIndirect = procedure(
  3279. commandBuffer: VkCommandBuffer;
  3280. buffer: VkBuffer;
  3281. offset: VkDeviceSize;
  3282. drawCount: VkUint32;
  3283. stride: VkUint32
  3284. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3285. TvkCmdDispatch = procedure(
  3286. commandBuffer: VkCommandBuffer;
  3287. x: VkUint32;
  3288. y: VkUint32;
  3289. z: VkUint32
  3290. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3291. TvkCmdDispatchIndirect = procedure(
  3292. commandBuffer: VkCommandBuffer;
  3293. buffer: VkBuffer;
  3294. offset: VkDeviceSize
  3295. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3296. TvkCmdCopyBuffer = procedure(
  3297. commandBuffer: VkCommandBuffer;
  3298. srcBuffer: VkBuffer;
  3299. dstBuffer: VkBuffer;
  3300. regionCount: VkUint32;
  3301. const pRegions: PVkBufferCopy
  3302. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3303. TvkCmdCopyImage = procedure(
  3304. commandBuffer: VkCommandBuffer;
  3305. srcImage: VkImage;
  3306. srcImageLayout: TVkImageLayout;
  3307. dstImage: VkImage;
  3308. dstImageLayout: TVkImageLayout;
  3309. regionCount: VkUint32;
  3310. const pRegions: PVkImageCopy
  3311. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3312. TvkCmdBlitImage = procedure(
  3313. commandBuffer: VkCommandBuffer;
  3314. srcImage: VkImage;
  3315. srcImageLayout: TVkImageLayout;
  3316. dstImage: VkImage;
  3317. dstImageLayout: TVkImageLayout;
  3318. regionCount: VkUint32;
  3319. const pRegions: PVkImageBlit;
  3320. filter: TVkFilter
  3321. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3322. TvkCmdCopyBufferToImage = procedure(
  3323. commandBuffer: VkCommandBuffer;
  3324. srcBuffer: VkBuffer;
  3325. dstImage: VkImage;
  3326. dstImageLayout: TVkImageLayout;
  3327. regionCount: VkUint32;
  3328. const pRegions: PVkBufferImageCopy
  3329. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3330. TvkCmdCopyImageToBuffer = procedure(
  3331. commandBuffer: VkCommandBuffer;
  3332. srcImage: VkImage;
  3333. srcImageLayout: TVkImageLayout;
  3334. dstBuffer: VkBuffer;
  3335. regionCount: VkUint32;
  3336. const pRegions: PVkBufferImageCopy
  3337. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3338. TvkCmdUpdateBuffer = procedure(
  3339. commandBuffer: VkCommandBuffer;
  3340. dstBuffer: VkBuffer;
  3341. dstOffset: VkDeviceSize;
  3342. dataSize: VkDeviceSize;
  3343. const pData: PVkUint32
  3344. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3345. TvkCmdFillBuffer = procedure(
  3346. commandBuffer: VkCommandBuffer;
  3347. dstBuffer: VkBuffer;
  3348. dstOffset: VkDeviceSize;
  3349. size: VkDeviceSize;
  3350. data: VkUint32
  3351. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3352. TvkCmdClearColorImage = procedure(
  3353. commandBuffer: VkCommandBuffer;
  3354. image: VkImage;
  3355. imageLayout: TVkImageLayout;
  3356. const pColor: PVkClearColorValue;
  3357. rangeCount: VkUint32;
  3358. const pRanges: PVkImageSubresourceRange
  3359. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3360. TvkCmdClearDepthStencilImage = procedure(
  3361. commandBuffer: VkCommandBuffer;
  3362. image: VkImage;
  3363. imageLayout: TVkImageLayout;
  3364. const pDepthStencil: PVkClearDepthStencilValue;
  3365. rangeCount: VkUint32;
  3366. const pRanges: PVkImageSubresourceRange
  3367. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3368. TvkCmdClearAttachments = procedure(
  3369. commandBuffer: VkCommandBuffer;
  3370. attachmentCount: VkUint32;
  3371. const pAttachments: PVkClearAttachment;
  3372. rectCount: VkUint32;
  3373. const pRects: PVkClearRect
  3374. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3375. TvkCmdResolveImage = procedure(
  3376. commandBuffer: VkCommandBuffer;
  3377. srcImage: VkImage;
  3378. srcImageLayout: TVkImageLayout;
  3379. dstImage: VkImage;
  3380. dstImageLayout: TVkImageLayout;
  3381. regionCount: VkUint32;
  3382. const pRegions: PVkImageResolve
  3383. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3384. TvkCmdSetEvent = procedure(
  3385. commandBuffer: VkCommandBuffer;
  3386. event: VkEvent;
  3387. stageMask: VkPipelineStageFlags
  3388. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3389. TvkCmdResetEvent = procedure(
  3390. commandBuffer: VkCommandBuffer;
  3391. event: VkEvent;
  3392. stageMask: VkPipelineStageFlags
  3393. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3394. TvkCmdWaitEvents = procedure(
  3395. commandBuffer: VkCommandBuffer;
  3396. eventCount: VkUint32;
  3397. const pEvents: PVkEvent;
  3398. srcStageMask: VkPipelineStageFlags;
  3399. dstStageMask: VkPipelineStageFlags;
  3400. memoryBarrierCount: VkUint32;
  3401. const pMemoryBarriers: PVkMemoryBarrier;
  3402. bufferMemoryBarrierCount: VkUint32;
  3403. const pBufferMemoryBarriers: PVkBufferMemoryBarrier;
  3404. imageMemoryBarrierCount: VkUint32;
  3405. const pImageMemoryBarriers: PVkImageMemoryBarrier
  3406. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3407. TvkCmdPipelineBarrier = procedure(
  3408. commandBuffer: VkCommandBuffer;
  3409. srcStageMask: VkPipelineStageFlags;
  3410. dstStageMask: VkPipelineStageFlags;
  3411. dependencyFlags: VkDependencyFlags;
  3412. memoryBarrierCount: VkUint32;
  3413. const pMemoryBarriers: PVkMemoryBarrier;
  3414. bufferMemoryBarrierCount: VkUint32;
  3415. const pBufferMemoryBarriers: PVkBufferMemoryBarrier;
  3416. imageMemoryBarrierCount: VkUint32;
  3417. const pImageMemoryBarriers: PVkImageMemoryBarrier
  3418. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3419. TvkCmdBeginQuery = procedure(
  3420. commandBuffer: VkCommandBuffer;
  3421. queryPool: VkQueryPool;
  3422. query: VkUint32;
  3423. flags: VkQueryControlFlags
  3424. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3425. TvkCmdEndQuery = procedure(
  3426. commandBuffer: VkCommandBuffer;
  3427. queryPool: VkQueryPool;
  3428. query: VkUint32
  3429. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3430. TvkCmdResetQueryPool = procedure(
  3431. commandBuffer: VkCommandBuffer;
  3432. queryPool: VkQueryPool;
  3433. firstQuery: VkUint32;
  3434. queryCount: VkUint32
  3435. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3436. TvkCmdWriteTimestamp = procedure(
  3437. commandBuffer: VkCommandBuffer;
  3438. pipelineStage: TVkPipelineStageFlagBits;
  3439. queryPool: VkQueryPool;
  3440. query: VkUint32
  3441. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3442. TvkCmdCopyQueryPoolResults = procedure(
  3443. commandBuffer: VkCommandBuffer;
  3444. queryPool: VkQueryPool;
  3445. firstQuery: VkUint32;
  3446. queryCount: VkUint32;
  3447. dstBuffer: VkBuffer;
  3448. dstOffset: VkDeviceSize;
  3449. stride: VkDeviceSize;
  3450. flags: VkQueryResultFlags
  3451. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3452. TvkCmdPushConstants = procedure(
  3453. commandBuffer: VkCommandBuffer;
  3454. layout: VkPipelineLayout;
  3455. stageFlags: VkShaderStageFlags;
  3456. offset: VkUint32;
  3457. size: VkUint32;
  3458. const pValues: PVkVoid
  3459. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3460. TvkCmdBeginRenderPass = procedure(
  3461. commandBuffer: VkCommandBuffer;
  3462. const pRenderPassBegin: PVkRenderPassBeginInfo;
  3463. contents: TVkSubpassContents
  3464. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3465. TvkCmdNextSubpass = procedure(
  3466. commandBuffer: VkCommandBuffer;
  3467. contents: TVkSubpassContents
  3468. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3469. TvkCmdEndRenderPass = procedure(
  3470. commandBuffer: VkCommandBuffer
  3471. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3472. TvkCmdExecuteCommands = procedure(
  3473. commandBuffer: VkCommandBuffer;
  3474. commandBufferCount: VkUint32;
  3475. const pCommandBuffers: PVkCommandBuffer
  3476. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3477. { ========================================== VK_KHR_surface ========================================== }
  3478. TvkDestroySurfaceKHR = procedure(
  3479. instance: VkInstance;
  3480. surface: VkSurfaceKHR;
  3481. const pAllocator: PVkAllocationCallbacks
  3482. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3483. TvkGetPhysicalDeviceSurfaceSupportKHR = function (
  3484. physicalDevice: VkPhysicalDevice;
  3485. queueFamilyIndex: VkUint32;
  3486. surface: VkSurfaceKHR;
  3487. pSupported: PVkBool32
  3488. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3489. TvkGetPhysicalDeviceSurfaceCapabilitiesKHR = function (
  3490. physicalDevice: VkPhysicalDevice;
  3491. surface: VkSurfaceKHR;
  3492. pSurfaceCapabilities: PVkSurfaceCapabilitiesKHR
  3493. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3494. TvkGetPhysicalDeviceSurfaceFormatsKHR = function (
  3495. physicalDevice: VkPhysicalDevice;
  3496. surface: VkSurfaceKHR;
  3497. pSurfaceFormatCount: PVkUint32;
  3498. pSurfaceFormats: PVkSurfaceFormatKHR
  3499. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3500. TvkGetPhysicalDeviceSurfacePresentModesKHR = function (
  3501. physicalDevice: VkPhysicalDevice;
  3502. surface: VkSurfaceKHR;
  3503. pPresentModeCount: PVkUint32;
  3504. pPresentModes: PVkPresentModeKHR
  3505. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3506. { ========================================= VK_KHR_swapchain ========================================= }
  3507. TvkCreateSwapchainKHR = function (
  3508. device: VkDevice;
  3509. const pCreateInfo: PVkSwapchainCreateInfoKHR;
  3510. const pAllocator: PVkAllocationCallbacks;
  3511. pSwapchain: PVkSwapchainKHR
  3512. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3513. TvkDestroySwapchainKHR = procedure(
  3514. device: VkDevice;
  3515. swapchain: VkSwapchainKHR;
  3516. const pAllocator: PVkAllocationCallbacks
  3517. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3518. TvkGetSwapchainImagesKHR = function (
  3519. device: VkDevice;
  3520. swapchain: VkSwapchainKHR;
  3521. pSwapchainImageCount: PVkUint32;
  3522. pSwapchainImages: PVkImage
  3523. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3524. TvkAcquireNextImageKHR = function (
  3525. device: VkDevice;
  3526. swapchain: VkSwapchainKHR;
  3527. timeout: VkUint64;
  3528. semaphore: VkSemaphore;
  3529. fence: VkFence;
  3530. pImageIndex: PVkUint32
  3531. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3532. TvkQueuePresentKHR = function (
  3533. queue: VkQueue;
  3534. const pPresentInfo: PVkPresentInfoKHR
  3535. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3536. { ========================================== VK_KHR_display ========================================== }
  3537. TvkGetPhysicalDeviceDisplayPropertiesKHR = function (
  3538. physicalDevice: VkPhysicalDevice;
  3539. pPropertyCount: PVkUint32;
  3540. pProperties: PVkDisplayPropertiesKHR
  3541. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3542. TvkGetPhysicalDeviceDisplayPlanePropertiesKHR = function (
  3543. physicalDevice: VkPhysicalDevice;
  3544. pPropertyCount: PVkUint32;
  3545. pProperties: PVkDisplayPlanePropertiesKHR
  3546. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3547. TvkGetDisplayPlaneSupportedDisplaysKHR = function (
  3548. physicalDevice: VkPhysicalDevice;
  3549. planeIndex: VkUint32;
  3550. pDisplayCount: PVkUint32;
  3551. pDisplays: PVkDisplayKHR
  3552. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3553. TvkGetDisplayModePropertiesKHR = function (
  3554. physicalDevice: VkPhysicalDevice;
  3555. display: VkDisplayKHR;
  3556. pPropertyCount: PVkUint32;
  3557. pProperties: PVkDisplayModePropertiesKHR
  3558. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3559. TvkCreateDisplayModeKHR = function (
  3560. physicalDevice: VkPhysicalDevice;
  3561. display: VkDisplayKHR;
  3562. const pCreateInfo: PVkDisplayModeCreateInfoKHR;
  3563. const pAllocator: PVkAllocationCallbacks;
  3564. pMode: PVkDisplayModeKHR
  3565. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3566. TvkGetDisplayPlaneCapabilitiesKHR = function (
  3567. physicalDevice: VkPhysicalDevice;
  3568. mode: VkDisplayModeKHR;
  3569. planeIndex: VkUint32;
  3570. pCapabilities: PVkDisplayPlaneCapabilitiesKHR
  3571. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3572. TvkCreateDisplayPlaneSurfaceKHR = function (
  3573. instance: VkInstance;
  3574. const pCreateInfo: PVkDisplaySurfaceCreateInfoKHR;
  3575. const pAllocator: PVkAllocationCallbacks;
  3576. pSurface: PVkSurfaceKHR
  3577. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3578. { ===================================== VK_KHR_display_swapchain ===================================== }
  3579. TvkCreateSharedSwapchainsKHR = function (
  3580. device: VkDevice;
  3581. swapchainCount: VkUint32;
  3582. const pCreateInfos: PVkSwapchainCreateInfoKHR;
  3583. const pAllocator: PVkAllocationCallbacks;
  3584. pSwapchains: PVkSwapchainKHR
  3585. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3586. { ======================================= VK_KHR_xlib_surface ======================================== }
  3587. {$IFDEF VK_USE_PLATFORM_XLIB_KHR}
  3588. TvkCreateXlibSurfaceKHR = function (
  3589. instance: VkInstance;
  3590. const pCreateInfo: PVkXlibSurfaceCreateInfoKHR;
  3591. const pAllocator: PVkAllocationCallbacks;
  3592. pSurface: PVkSurfaceKHR
  3593. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3594. TvkGetPhysicalDeviceXlibPresentationSupportKHR = function (
  3595. physicalDevice: VkPhysicalDevice;
  3596. queueFamilyIndex: VkUint32;
  3597. dpy: Display;
  3598. visualID: VisualID
  3599. ): VkBool32; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3600. {$ENDIF}
  3601. { ======================================== VK_KHR_xcb_surface ======================================== }
  3602. {$IFDEF VK_USE_PLATFORM_XCB_KHR}
  3603. TvkCreateXcbSurfaceKHR = function (
  3604. instance: VkInstance;
  3605. const pCreateInfo: PVkXcbSurfaceCreateInfoKHR;
  3606. const pAllocator: PVkAllocationCallbacks;
  3607. pSurface: PVkSurfaceKHR
  3608. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3609. TvkGetPhysicalDeviceXcbPresentationSupportKHR = function (
  3610. physicalDevice: VkPhysicalDevice;
  3611. queueFamilyIndex: VkUint32;
  3612. connection: xcb_connection_t;
  3613. visual_id: xcb_visualid_t
  3614. ): VkBool32; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3615. {$ENDIF}
  3616. { ====================================== VK_KHR_wayland_surface ====================================== }
  3617. {$IFDEF VK_USE_PLATFORM_WAYLAND_KHR}
  3618. TvkCreateWaylandSurfaceKHR = function (
  3619. instance: VkInstance;
  3620. const pCreateInfo: PVkWaylandSurfaceCreateInfoKHR;
  3621. const pAllocator: PVkAllocationCallbacks;
  3622. pSurface: PVkSurfaceKHR
  3623. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3624. TvkGetPhysicalDeviceWaylandPresentationSupportKHR = function (
  3625. physicalDevice: VkPhysicalDevice;
  3626. queueFamilyIndex: VkUint32;
  3627. display: wl_display
  3628. ): VkBool32; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3629. {$ENDIF}
  3630. { ======================================== VK_KHR_mir_surface ======================================== }
  3631. {$IFDEF VK_USE_PLATFORM_MIR_KHR}
  3632. TvkCreateMirSurfaceKHR = function (
  3633. instance: VkInstance;
  3634. const pCreateInfo: PVkMirSurfaceCreateInfoKHR;
  3635. const pAllocator: PVkAllocationCallbacks;
  3636. pSurface: PVkSurfaceKHR
  3637. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3638. TvkGetPhysicalDeviceMirPresentationSupportKHR = function (
  3639. physicalDevice: VkPhysicalDevice;
  3640. queueFamilyIndex: VkUint32;
  3641. connection: MirConnection
  3642. ): VkBool32; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3643. {$ENDIF}
  3644. { ====================================== VK_KHR_android_surface ====================================== }
  3645. {$IFDEF VK_USE_PLATFORM_ANDROID_KHR}
  3646. TvkCreateAndroidSurfaceKHR = function (
  3647. instance: VkInstance;
  3648. const pCreateInfo: PVkAndroidSurfaceCreateInfoKHR;
  3649. const pAllocator: PVkAllocationCallbacks;
  3650. pSurface: PVkSurfaceKHR
  3651. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3652. {$ENDIF}
  3653. { ======================================= VK_KHR_win32_surface ======================================= }
  3654. {$IFDEF VK_USE_PLATFORM_WIN32_KHR}
  3655. TvkCreateWin32SurfaceKHR = function (
  3656. instance: VkInstance;
  3657. const pCreateInfo: PVkWin32SurfaceCreateInfoKHR;
  3658. const pAllocator: PVkAllocationCallbacks;
  3659. pSurface: PVkSurfaceKHR
  3660. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3661. TvkGetPhysicalDeviceWin32PresentationSupportKHR = function (
  3662. physicalDevice: VkPhysicalDevice;
  3663. queueFamilyIndex: VkUint32
  3664. ): VkBool32; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3665. {$ENDIF}
  3666. { ======================================= VK_EXT_debug_report ======================================== }
  3667. TvkCreateDebugReportCallbackEXT = function (
  3668. instance: VkInstance;
  3669. const pCreateInfo: PVkDebugReportCallbackCreateInfoEXT;
  3670. const pAllocator: PVkAllocationCallbacks;
  3671. pCallback: PVkDebugReportCallbackEXT
  3672. ): TVkResult; {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3673. TvkDestroyDebugReportCallbackEXT = procedure(
  3674. instance: VkInstance;
  3675. callback: VkDebugReportCallbackEXT;
  3676. const pAllocator: PVkAllocationCallbacks
  3677. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3678. TvkDebugReportMessageEXT = procedure(
  3679. instance: VkInstance;
  3680. flags: VkDebugReportFlagsEXT;
  3681. objectType: TVkDebugReportObjectTypeEXT;
  3682. uObject: VkUint64;
  3683. location: VkSize;
  3684. messageCode: VkInt32;
  3685. const pLayerPrefix: PVkChar;
  3686. const pMessage: PVkChar
  3687. ); {$IFDEF VK_CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  3688. var
  3689. { ========================================== VK_VERSION_1_0 ========================================== }
  3690. vkCreateInstance: TvkCreateInstance;
  3691. vkDestroyInstance: TvkDestroyInstance;
  3692. vkEnumeratePhysicalDevices: TvkEnumeratePhysicalDevices;
  3693. vkGetPhysicalDeviceFeatures: TvkGetPhysicalDeviceFeatures;
  3694. vkGetPhysicalDeviceFormatProperties: TvkGetPhysicalDeviceFormatProperties;
  3695. vkGetPhysicalDeviceImageFormatProperties: TvkGetPhysicalDeviceImageFormatProperties;
  3696. vkGetPhysicalDeviceProperties: TvkGetPhysicalDeviceProperties;
  3697. vkGetPhysicalDeviceQueueFamilyProperties: TvkGetPhysicalDeviceQueueFamilyProperties;
  3698. vkGetPhysicalDeviceMemoryProperties: TvkGetPhysicalDeviceMemoryProperties;
  3699. vkGetInstanceProcAddr: TvkGetInstanceProcAddr;
  3700. vkGetDeviceProcAddr: TvkGetDeviceProcAddr;
  3701. vkCreateDevice: TvkCreateDevice;
  3702. vkDestroyDevice: TvkDestroyDevice;
  3703. vkEnumerateInstanceExtensionProperties: TvkEnumerateInstanceExtensionProperties;
  3704. vkEnumerateDeviceExtensionProperties: TvkEnumerateDeviceExtensionProperties;
  3705. vkEnumerateInstanceLayerProperties: TvkEnumerateInstanceLayerProperties;
  3706. vkEnumerateDeviceLayerProperties: TvkEnumerateDeviceLayerProperties;
  3707. vkGetDeviceQueue: TvkGetDeviceQueue;
  3708. vkQueueSubmit: TvkQueueSubmit;
  3709. vkQueueWaitIdle: TvkQueueWaitIdle;
  3710. vkDeviceWaitIdle: TvkDeviceWaitIdle;
  3711. vkAllocateMemory: TvkAllocateMemory;
  3712. vkFreeMemory: TvkFreeMemory;
  3713. vkMapMemory: TvkMapMemory;
  3714. vkUnmapMemory: TvkUnmapMemory;
  3715. vkFlushMappedMemoryRanges: TvkFlushMappedMemoryRanges;
  3716. vkInvalidateMappedMemoryRanges: TvkInvalidateMappedMemoryRanges;
  3717. vkGetDeviceMemoryCommitment: TvkGetDeviceMemoryCommitment;
  3718. vkBindBufferMemory: TvkBindBufferMemory;
  3719. vkBindImageMemory: TvkBindImageMemory;
  3720. vkGetBufferMemoryRequirements: TvkGetBufferMemoryRequirements;
  3721. vkGetImageMemoryRequirements: TvkGetImageMemoryRequirements;
  3722. vkGetImageSparseMemoryRequirements: TvkGetImageSparseMemoryRequirements;
  3723. vkGetPhysicalDeviceSparseImageFormatProperties: TvkGetPhysicalDeviceSparseImageFormatProperties;
  3724. vkQueueBindSparse: TvkQueueBindSparse;
  3725. vkCreateFence: TvkCreateFence;
  3726. vkDestroyFence: TvkDestroyFence;
  3727. vkResetFences: TvkResetFences;
  3728. vkGetFenceStatus: TvkGetFenceStatus;
  3729. vkWaitForFences: TvkWaitForFences;
  3730. vkCreateSemaphore: TvkCreateSemaphore;
  3731. vkDestroySemaphore: TvkDestroySemaphore;
  3732. vkCreateEvent: TvkCreateEvent;
  3733. vkDestroyEvent: TvkDestroyEvent;
  3734. vkGetEventStatus: TvkGetEventStatus;
  3735. vkSetEvent: TvkSetEvent;
  3736. vkResetEvent: TvkResetEvent;
  3737. vkCreateQueryPool: TvkCreateQueryPool;
  3738. vkDestroyQueryPool: TvkDestroyQueryPool;
  3739. vkGetQueryPoolResults: TvkGetQueryPoolResults;
  3740. vkCreateBuffer: TvkCreateBuffer;
  3741. vkDestroyBuffer: TvkDestroyBuffer;
  3742. vkCreateBufferView: TvkCreateBufferView;
  3743. vkDestroyBufferView: TvkDestroyBufferView;
  3744. vkCreateImage: TvkCreateImage;
  3745. vkDestroyImage: TvkDestroyImage;
  3746. vkGetImageSubresourceLayout: TvkGetImageSubresourceLayout;
  3747. vkCreateImageView: TvkCreateImageView;
  3748. vkDestroyImageView: TvkDestroyImageView;
  3749. vkCreateShaderModule: TvkCreateShaderModule;
  3750. vkDestroyShaderModule: TvkDestroyShaderModule;
  3751. vkCreatePipelineCache: TvkCreatePipelineCache;
  3752. vkDestroyPipelineCache: TvkDestroyPipelineCache;
  3753. vkGetPipelineCacheData: TvkGetPipelineCacheData;
  3754. vkMergePipelineCaches: TvkMergePipelineCaches;
  3755. vkCreateGraphicsPipelines: TvkCreateGraphicsPipelines;
  3756. vkCreateComputePipelines: TvkCreateComputePipelines;
  3757. vkDestroyPipeline: TvkDestroyPipeline;
  3758. vkCreatePipelineLayout: TvkCreatePipelineLayout;
  3759. vkDestroyPipelineLayout: TvkDestroyPipelineLayout;
  3760. vkCreateSampler: TvkCreateSampler;
  3761. vkDestroySampler: TvkDestroySampler;
  3762. vkCreateDescriptorSetLayout: TvkCreateDescriptorSetLayout;
  3763. vkDestroyDescriptorSetLayout: TvkDestroyDescriptorSetLayout;
  3764. vkCreateDescriptorPool: TvkCreateDescriptorPool;
  3765. vkDestroyDescriptorPool: TvkDestroyDescriptorPool;
  3766. vkResetDescriptorPool: TvkResetDescriptorPool;
  3767. vkAllocateDescriptorSets: TvkAllocateDescriptorSets;
  3768. vkFreeDescriptorSets: TvkFreeDescriptorSets;
  3769. vkUpdateDescriptorSets: TvkUpdateDescriptorSets;
  3770. vkCreateFramebuffer: TvkCreateFramebuffer;
  3771. vkDestroyFramebuffer: TvkDestroyFramebuffer;
  3772. vkCreateRenderPass: TvkCreateRenderPass;
  3773. vkDestroyRenderPass: TvkDestroyRenderPass;
  3774. vkGetRenderAreaGranularity: TvkGetRenderAreaGranularity;
  3775. vkCreateCommandPool: TvkCreateCommandPool;
  3776. vkDestroyCommandPool: TvkDestroyCommandPool;
  3777. vkResetCommandPool: TvkResetCommandPool;
  3778. vkAllocateCommandBuffers: TvkAllocateCommandBuffers;
  3779. vkFreeCommandBuffers: TvkFreeCommandBuffers;
  3780. vkBeginCommandBuffer: TvkBeginCommandBuffer;
  3781. vkEndCommandBuffer: TvkEndCommandBuffer;
  3782. vkResetCommandBuffer: TvkResetCommandBuffer;
  3783. vkCmdBindPipeline: TvkCmdBindPipeline;
  3784. vkCmdSetViewport: TvkCmdSetViewport;
  3785. vkCmdSetScissor: TvkCmdSetScissor;
  3786. vkCmdSetLineWidth: TvkCmdSetLineWidth;
  3787. vkCmdSetDepthBias: TvkCmdSetDepthBias;
  3788. vkCmdSetBlendConstants: TvkCmdSetBlendConstants;
  3789. vkCmdSetDepthBounds: TvkCmdSetDepthBounds;
  3790. vkCmdSetStencilCompareMask: TvkCmdSetStencilCompareMask;
  3791. vkCmdSetStencilWriteMask: TvkCmdSetStencilWriteMask;
  3792. vkCmdSetStencilReference: TvkCmdSetStencilReference;
  3793. vkCmdBindDescriptorSets: TvkCmdBindDescriptorSets;
  3794. vkCmdBindIndexBuffer: TvkCmdBindIndexBuffer;
  3795. vkCmdBindVertexBuffers: TvkCmdBindVertexBuffers;
  3796. vkCmdDraw: TvkCmdDraw;
  3797. vkCmdDrawIndexed: TvkCmdDrawIndexed;
  3798. vkCmdDrawIndirect: TvkCmdDrawIndirect;
  3799. vkCmdDrawIndexedIndirect: TvkCmdDrawIndexedIndirect;
  3800. vkCmdDispatch: TvkCmdDispatch;
  3801. vkCmdDispatchIndirect: TvkCmdDispatchIndirect;
  3802. vkCmdCopyBuffer: TvkCmdCopyBuffer;
  3803. vkCmdCopyImage: TvkCmdCopyImage;
  3804. vkCmdBlitImage: TvkCmdBlitImage;
  3805. vkCmdCopyBufferToImage: TvkCmdCopyBufferToImage;
  3806. vkCmdCopyImageToBuffer: TvkCmdCopyImageToBuffer;
  3807. vkCmdUpdateBuffer: TvkCmdUpdateBuffer;
  3808. vkCmdFillBuffer: TvkCmdFillBuffer;
  3809. vkCmdClearColorImage: TvkCmdClearColorImage;
  3810. vkCmdClearDepthStencilImage: TvkCmdClearDepthStencilImage;
  3811. vkCmdClearAttachments: TvkCmdClearAttachments;
  3812. vkCmdResolveImage: TvkCmdResolveImage;
  3813. vkCmdSetEvent: TvkCmdSetEvent;
  3814. vkCmdResetEvent: TvkCmdResetEvent;
  3815. vkCmdWaitEvents: TvkCmdWaitEvents;
  3816. vkCmdPipelineBarrier: TvkCmdPipelineBarrier;
  3817. vkCmdBeginQuery: TvkCmdBeginQuery;
  3818. vkCmdEndQuery: TvkCmdEndQuery;
  3819. vkCmdResetQueryPool: TvkCmdResetQueryPool;
  3820. vkCmdWriteTimestamp: TvkCmdWriteTimestamp;
  3821. vkCmdCopyQueryPoolResults: TvkCmdCopyQueryPoolResults;
  3822. vkCmdPushConstants: TvkCmdPushConstants;
  3823. vkCmdBeginRenderPass: TvkCmdBeginRenderPass;
  3824. vkCmdNextSubpass: TvkCmdNextSubpass;
  3825. vkCmdEndRenderPass: TvkCmdEndRenderPass;
  3826. vkCmdExecuteCommands: TvkCmdExecuteCommands;
  3827. { ========================================== VK_KHR_surface ========================================== }
  3828. vkDestroySurfaceKHR: TvkDestroySurfaceKHR;
  3829. vkGetPhysicalDeviceSurfaceSupportKHR: TvkGetPhysicalDeviceSurfaceSupportKHR;
  3830. vkGetPhysicalDeviceSurfaceCapabilitiesKHR: TvkGetPhysicalDeviceSurfaceCapabilitiesKHR;
  3831. vkGetPhysicalDeviceSurfaceFormatsKHR: TvkGetPhysicalDeviceSurfaceFormatsKHR;
  3832. vkGetPhysicalDeviceSurfacePresentModesKHR: TvkGetPhysicalDeviceSurfacePresentModesKHR;
  3833. { ========================================= VK_KHR_swapchain ========================================= }
  3834. vkCreateSwapchainKHR: TvkCreateSwapchainKHR;
  3835. vkDestroySwapchainKHR: TvkDestroySwapchainKHR;
  3836. vkGetSwapchainImagesKHR: TvkGetSwapchainImagesKHR;
  3837. vkAcquireNextImageKHR: TvkAcquireNextImageKHR;
  3838. vkQueuePresentKHR: TvkQueuePresentKHR;
  3839. { ========================================== VK_KHR_display ========================================== }
  3840. vkGetPhysicalDeviceDisplayPropertiesKHR: TvkGetPhysicalDeviceDisplayPropertiesKHR;
  3841. vkGetPhysicalDeviceDisplayPlanePropertiesKHR: TvkGetPhysicalDeviceDisplayPlanePropertiesKHR;
  3842. vkGetDisplayPlaneSupportedDisplaysKHR: TvkGetDisplayPlaneSupportedDisplaysKHR;
  3843. vkGetDisplayModePropertiesKHR: TvkGetDisplayModePropertiesKHR;
  3844. vkCreateDisplayModeKHR: TvkCreateDisplayModeKHR;
  3845. vkGetDisplayPlaneCapabilitiesKHR: TvkGetDisplayPlaneCapabilitiesKHR;
  3846. vkCreateDisplayPlaneSurfaceKHR: TvkCreateDisplayPlaneSurfaceKHR;
  3847. { ===================================== VK_KHR_display_swapchain ===================================== }
  3848. vkCreateSharedSwapchainsKHR: TvkCreateSharedSwapchainsKHR;
  3849. { ======================================= VK_KHR_xlib_surface ======================================== }
  3850. {$IFDEF VK_USE_PLATFORM_XLIB_KHR}
  3851. vkCreateXlibSurfaceKHR: TvkCreateXlibSurfaceKHR;
  3852. vkGetPhysicalDeviceXlibPresentationSupportKHR: TvkGetPhysicalDeviceXlibPresentationSupportKHR;
  3853. {$ENDIF}
  3854. { ======================================== VK_KHR_xcb_surface ======================================== }
  3855. {$IFDEF VK_USE_PLATFORM_XCB_KHR}
  3856. vkCreateXcbSurfaceKHR: TvkCreateXcbSurfaceKHR;
  3857. vkGetPhysicalDeviceXcbPresentationSupportKHR: TvkGetPhysicalDeviceXcbPresentationSupportKHR;
  3858. {$ENDIF}
  3859. { ====================================== VK_KHR_wayland_surface ====================================== }
  3860. {$IFDEF VK_USE_PLATFORM_WAYLAND_KHR}
  3861. vkCreateWaylandSurfaceKHR: TvkCreateWaylandSurfaceKHR;
  3862. vkGetPhysicalDeviceWaylandPresentationSupportKHR: TvkGetPhysicalDeviceWaylandPresentationSupportKHR;
  3863. {$ENDIF}
  3864. { ======================================== VK_KHR_mir_surface ======================================== }
  3865. {$IFDEF VK_USE_PLATFORM_MIR_KHR}
  3866. vkCreateMirSurfaceKHR: TvkCreateMirSurfaceKHR;
  3867. vkGetPhysicalDeviceMirPresentationSupportKHR: TvkGetPhysicalDeviceMirPresentationSupportKHR;
  3868. {$ENDIF}
  3869. { ====================================== VK_KHR_android_surface ====================================== }
  3870. {$IFDEF VK_USE_PLATFORM_ANDROID_KHR}
  3871. vkCreateAndroidSurfaceKHR: TvkCreateAndroidSurfaceKHR;
  3872. {$ENDIF}
  3873. { ======================================= VK_KHR_win32_surface ======================================= }
  3874. {$IFDEF VK_USE_PLATFORM_WIN32_KHR}
  3875. vkCreateWin32SurfaceKHR: TvkCreateWin32SurfaceKHR;
  3876. vkGetPhysicalDeviceWin32PresentationSupportKHR: TvkGetPhysicalDeviceWin32PresentationSupportKHR;
  3877. {$ENDIF}
  3878. { ======================================= VK_EXT_debug_report ======================================== }
  3879. vkCreateDebugReportCallbackEXT: TvkCreateDebugReportCallbackEXT;
  3880. vkDestroyDebugReportCallbackEXT: TvkDestroyDebugReportCallbackEXT;
  3881. vkDebugReportMessageEXT: TvkDebugReportMessageEXT;
  3882. const
  3883. VULKAN_LIBNAME = 'vulkan-1.dll';
  3884. type
  3885. VkVersion = VkInt32;
  3886. function vkMakeVersion(const aMajor, aMinor, aPatch: Integer): VkVersion; inline;
  3887. function vkGetVersionMajor(const aVersion: VkVersion): Integer; inline;
  3888. function vkGetVersionMinor(const aVersion: VkVersion): Integer; inline;
  3889. function vkGetVersionPatch(const aVersion: VkVersion): Integer; inline;
  3890. function InitializeVulkan(const aLibName: String = VULKAN_LIBNAME): Boolean;
  3891. procedure LoadVulkanCommands(const aInstance: VkInstance);
  3892. procedure FinalizeVulkan;
  3893. implementation
  3894. type
  3895. {$IF DEFINED(VK_WIN)}
  3896. TvkLibHandle = TLibHandle;
  3897. {$ELSE}
  3898. TvkLibHandle = Pointer;
  3899. {$ENDIF}
  3900. const
  3901. {$IF DEFINED(VK_WIN)}
  3902. InvalidLibHandle = 0;
  3903. {$ELSE}
  3904. InvalidLibHandle = nil;
  3905. {$ENDIF}
  3906. var
  3907. vkLibHandle: TvkLibHandle = InvalidLibHandle;
  3908. function vkLoadLibrary(const aLibName: String): TvkLibHandle;
  3909. begin
  3910. {$IF DEFINED(VK_WIN)}
  3911. result := LoadLibrary(aLibName);
  3912. {$ELSE}
  3913. result := InvalidLibHandle;
  3914. {$ENDIF}
  3915. end;
  3916. function vkGetProcAddress(const aProcName: String; aInstance: VkInstance = nil; aLibHandle: TvkLibHandle = InvalidLibHandle): TvkVoidFunction;
  3917. begin
  3918. result := nil;
  3919. if (aLibHandle = InvalidLibHandle) then
  3920. aLibHandle := vkLibHandle;
  3921. if Assigned(vkGetInstanceProcAddr) then begin
  3922. result := vkGetInstanceProcAddr(aInstance, PVkChar(aProcName));
  3923. if Assigned(result) then
  3924. exit;
  3925. end;
  3926. {$IF DEFINED(VK_WIN)}
  3927. result := GetProcAddress(aLibHandle, AnsiString(aProcName));
  3928. {$ELSE}
  3929. result := nil;
  3930. {$ENDIF}
  3931. end;
  3932. procedure vkLoadAddresses(const aInstance: VkInstance = nil);
  3933. begin
  3934. { ========================================== VK_VERSION_1_0 ========================================== }
  3935. vkCreateInstance := TvkCreateInstance (vkGetProcAddress('vkCreateInstance', aInstance));
  3936. vkDestroyInstance := TvkDestroyInstance (vkGetProcAddress('vkDestroyInstance', aInstance));
  3937. vkEnumeratePhysicalDevices := TvkEnumeratePhysicalDevices (vkGetProcAddress('vkEnumeratePhysicalDevices', aInstance));
  3938. vkGetPhysicalDeviceFeatures := TvkGetPhysicalDeviceFeatures (vkGetProcAddress('vkGetPhysicalDeviceFeatures', aInstance));
  3939. vkGetPhysicalDeviceFormatProperties := TvkGetPhysicalDeviceFormatProperties (vkGetProcAddress('vkGetPhysicalDeviceFormatProperties', aInstance));
  3940. vkGetPhysicalDeviceImageFormatProperties := TvkGetPhysicalDeviceImageFormatProperties (vkGetProcAddress('vkGetPhysicalDeviceImageFormatProperties', aInstance));
  3941. vkGetPhysicalDeviceProperties := TvkGetPhysicalDeviceProperties (vkGetProcAddress('vkGetPhysicalDeviceProperties', aInstance));
  3942. vkGetPhysicalDeviceQueueFamilyProperties := TvkGetPhysicalDeviceQueueFamilyProperties (vkGetProcAddress('vkGetPhysicalDeviceQueueFamilyProperties', aInstance));
  3943. vkGetPhysicalDeviceMemoryProperties := TvkGetPhysicalDeviceMemoryProperties (vkGetProcAddress('vkGetPhysicalDeviceMemoryProperties', aInstance));
  3944. vkGetInstanceProcAddr := TvkGetInstanceProcAddr (vkGetProcAddress('vkGetInstanceProcAddr', aInstance));
  3945. vkGetDeviceProcAddr := TvkGetDeviceProcAddr (vkGetProcAddress('vkGetDeviceProcAddr', aInstance));
  3946. vkCreateDevice := TvkCreateDevice (vkGetProcAddress('vkCreateDevice', aInstance));
  3947. vkDestroyDevice := TvkDestroyDevice (vkGetProcAddress('vkDestroyDevice', aInstance));
  3948. vkEnumerateInstanceExtensionProperties := TvkEnumerateInstanceExtensionProperties (vkGetProcAddress('vkEnumerateInstanceExtensionProperties', aInstance));
  3949. vkEnumerateDeviceExtensionProperties := TvkEnumerateDeviceExtensionProperties (vkGetProcAddress('vkEnumerateDeviceExtensionProperties', aInstance));
  3950. vkEnumerateInstanceLayerProperties := TvkEnumerateInstanceLayerProperties (vkGetProcAddress('vkEnumerateInstanceLayerProperties', aInstance));
  3951. vkEnumerateDeviceLayerProperties := TvkEnumerateDeviceLayerProperties (vkGetProcAddress('vkEnumerateDeviceLayerProperties', aInstance));
  3952. vkGetDeviceQueue := TvkGetDeviceQueue (vkGetProcAddress('vkGetDeviceQueue', aInstance));
  3953. vkQueueSubmit := TvkQueueSubmit (vkGetProcAddress('vkQueueSubmit', aInstance));
  3954. vkQueueWaitIdle := TvkQueueWaitIdle (vkGetProcAddress('vkQueueWaitIdle', aInstance));
  3955. vkDeviceWaitIdle := TvkDeviceWaitIdle (vkGetProcAddress('vkDeviceWaitIdle', aInstance));
  3956. vkAllocateMemory := TvkAllocateMemory (vkGetProcAddress('vkAllocateMemory', aInstance));
  3957. vkFreeMemory := TvkFreeMemory (vkGetProcAddress('vkFreeMemory', aInstance));
  3958. vkMapMemory := TvkMapMemory (vkGetProcAddress('vkMapMemory', aInstance));
  3959. vkUnmapMemory := TvkUnmapMemory (vkGetProcAddress('vkUnmapMemory', aInstance));
  3960. vkFlushMappedMemoryRanges := TvkFlushMappedMemoryRanges (vkGetProcAddress('vkFlushMappedMemoryRanges', aInstance));
  3961. vkInvalidateMappedMemoryRanges := TvkInvalidateMappedMemoryRanges (vkGetProcAddress('vkInvalidateMappedMemoryRanges', aInstance));
  3962. vkGetDeviceMemoryCommitment := TvkGetDeviceMemoryCommitment (vkGetProcAddress('vkGetDeviceMemoryCommitment', aInstance));
  3963. vkBindBufferMemory := TvkBindBufferMemory (vkGetProcAddress('vkBindBufferMemory', aInstance));
  3964. vkBindImageMemory := TvkBindImageMemory (vkGetProcAddress('vkBindImageMemory', aInstance));
  3965. vkGetBufferMemoryRequirements := TvkGetBufferMemoryRequirements (vkGetProcAddress('vkGetBufferMemoryRequirements', aInstance));
  3966. vkGetImageMemoryRequirements := TvkGetImageMemoryRequirements (vkGetProcAddress('vkGetImageMemoryRequirements', aInstance));
  3967. vkGetImageSparseMemoryRequirements := TvkGetImageSparseMemoryRequirements (vkGetProcAddress('vkGetImageSparseMemoryRequirements', aInstance));
  3968. vkGetPhysicalDeviceSparseImageFormatProperties := TvkGetPhysicalDeviceSparseImageFormatProperties (vkGetProcAddress('vkGetPhysicalDeviceSparseImageFormatProperties', aInstance));
  3969. vkQueueBindSparse := TvkQueueBindSparse (vkGetProcAddress('vkQueueBindSparse', aInstance));
  3970. vkCreateFence := TvkCreateFence (vkGetProcAddress('vkCreateFence', aInstance));
  3971. vkDestroyFence := TvkDestroyFence (vkGetProcAddress('vkDestroyFence', aInstance));
  3972. vkResetFences := TvkResetFences (vkGetProcAddress('vkResetFences', aInstance));
  3973. vkGetFenceStatus := TvkGetFenceStatus (vkGetProcAddress('vkGetFenceStatus', aInstance));
  3974. vkWaitForFences := TvkWaitForFences (vkGetProcAddress('vkWaitForFences', aInstance));
  3975. vkCreateSemaphore := TvkCreateSemaphore (vkGetProcAddress('vkCreateSemaphore', aInstance));
  3976. vkDestroySemaphore := TvkDestroySemaphore (vkGetProcAddress('vkDestroySemaphore', aInstance));
  3977. vkCreateEvent := TvkCreateEvent (vkGetProcAddress('vkCreateEvent', aInstance));
  3978. vkDestroyEvent := TvkDestroyEvent (vkGetProcAddress('vkDestroyEvent', aInstance));
  3979. vkGetEventStatus := TvkGetEventStatus (vkGetProcAddress('vkGetEventStatus', aInstance));
  3980. vkSetEvent := TvkSetEvent (vkGetProcAddress('vkSetEvent', aInstance));
  3981. vkResetEvent := TvkResetEvent (vkGetProcAddress('vkResetEvent', aInstance));
  3982. vkCreateQueryPool := TvkCreateQueryPool (vkGetProcAddress('vkCreateQueryPool', aInstance));
  3983. vkDestroyQueryPool := TvkDestroyQueryPool (vkGetProcAddress('vkDestroyQueryPool', aInstance));
  3984. vkGetQueryPoolResults := TvkGetQueryPoolResults (vkGetProcAddress('vkGetQueryPoolResults', aInstance));
  3985. vkCreateBuffer := TvkCreateBuffer (vkGetProcAddress('vkCreateBuffer', aInstance));
  3986. vkDestroyBuffer := TvkDestroyBuffer (vkGetProcAddress('vkDestroyBuffer', aInstance));
  3987. vkCreateBufferView := TvkCreateBufferView (vkGetProcAddress('vkCreateBufferView', aInstance));
  3988. vkDestroyBufferView := TvkDestroyBufferView (vkGetProcAddress('vkDestroyBufferView', aInstance));
  3989. vkCreateImage := TvkCreateImage (vkGetProcAddress('vkCreateImage', aInstance));
  3990. vkDestroyImage := TvkDestroyImage (vkGetProcAddress('vkDestroyImage', aInstance));
  3991. vkGetImageSubresourceLayout := TvkGetImageSubresourceLayout (vkGetProcAddress('vkGetImageSubresourceLayout', aInstance));
  3992. vkCreateImageView := TvkCreateImageView (vkGetProcAddress('vkCreateImageView', aInstance));
  3993. vkDestroyImageView := TvkDestroyImageView (vkGetProcAddress('vkDestroyImageView', aInstance));
  3994. vkCreateShaderModule := TvkCreateShaderModule (vkGetProcAddress('vkCreateShaderModule', aInstance));
  3995. vkDestroyShaderModule := TvkDestroyShaderModule (vkGetProcAddress('vkDestroyShaderModule', aInstance));
  3996. vkCreatePipelineCache := TvkCreatePipelineCache (vkGetProcAddress('vkCreatePipelineCache', aInstance));
  3997. vkDestroyPipelineCache := TvkDestroyPipelineCache (vkGetProcAddress('vkDestroyPipelineCache', aInstance));
  3998. vkGetPipelineCacheData := TvkGetPipelineCacheData (vkGetProcAddress('vkGetPipelineCacheData', aInstance));
  3999. vkMergePipelineCaches := TvkMergePipelineCaches (vkGetProcAddress('vkMergePipelineCaches', aInstance));
  4000. vkCreateGraphicsPipelines := TvkCreateGraphicsPipelines (vkGetProcAddress('vkCreateGraphicsPipelines', aInstance));
  4001. vkCreateComputePipelines := TvkCreateComputePipelines (vkGetProcAddress('vkCreateComputePipelines', aInstance));
  4002. vkDestroyPipeline := TvkDestroyPipeline (vkGetProcAddress('vkDestroyPipeline', aInstance));
  4003. vkCreatePipelineLayout := TvkCreatePipelineLayout (vkGetProcAddress('vkCreatePipelineLayout', aInstance));
  4004. vkDestroyPipelineLayout := TvkDestroyPipelineLayout (vkGetProcAddress('vkDestroyPipelineLayout', aInstance));
  4005. vkCreateSampler := TvkCreateSampler (vkGetProcAddress('vkCreateSampler', aInstance));
  4006. vkDestroySampler := TvkDestroySampler (vkGetProcAddress('vkDestroySampler', aInstance));
  4007. vkCreateDescriptorSetLayout := TvkCreateDescriptorSetLayout (vkGetProcAddress('vkCreateDescriptorSetLayout', aInstance));
  4008. vkDestroyDescriptorSetLayout := TvkDestroyDescriptorSetLayout (vkGetProcAddress('vkDestroyDescriptorSetLayout', aInstance));
  4009. vkCreateDescriptorPool := TvkCreateDescriptorPool (vkGetProcAddress('vkCreateDescriptorPool', aInstance));
  4010. vkDestroyDescriptorPool := TvkDestroyDescriptorPool (vkGetProcAddress('vkDestroyDescriptorPool', aInstance));
  4011. vkResetDescriptorPool := TvkResetDescriptorPool (vkGetProcAddress('vkResetDescriptorPool', aInstance));
  4012. vkAllocateDescriptorSets := TvkAllocateDescriptorSets (vkGetProcAddress('vkAllocateDescriptorSets', aInstance));
  4013. vkFreeDescriptorSets := TvkFreeDescriptorSets (vkGetProcAddress('vkFreeDescriptorSets', aInstance));
  4014. vkUpdateDescriptorSets := TvkUpdateDescriptorSets (vkGetProcAddress('vkUpdateDescriptorSets', aInstance));
  4015. vkCreateFramebuffer := TvkCreateFramebuffer (vkGetProcAddress('vkCreateFramebuffer', aInstance));
  4016. vkDestroyFramebuffer := TvkDestroyFramebuffer (vkGetProcAddress('vkDestroyFramebuffer', aInstance));
  4017. vkCreateRenderPass := TvkCreateRenderPass (vkGetProcAddress('vkCreateRenderPass', aInstance));
  4018. vkDestroyRenderPass := TvkDestroyRenderPass (vkGetProcAddress('vkDestroyRenderPass', aInstance));
  4019. vkGetRenderAreaGranularity := TvkGetRenderAreaGranularity (vkGetProcAddress('vkGetRenderAreaGranularity', aInstance));
  4020. vkCreateCommandPool := TvkCreateCommandPool (vkGetProcAddress('vkCreateCommandPool', aInstance));
  4021. vkDestroyCommandPool := TvkDestroyCommandPool (vkGetProcAddress('vkDestroyCommandPool', aInstance));
  4022. vkResetCommandPool := TvkResetCommandPool (vkGetProcAddress('vkResetCommandPool', aInstance));
  4023. vkAllocateCommandBuffers := TvkAllocateCommandBuffers (vkGetProcAddress('vkAllocateCommandBuffers', aInstance));
  4024. vkFreeCommandBuffers := TvkFreeCommandBuffers (vkGetProcAddress('vkFreeCommandBuffers', aInstance));
  4025. vkBeginCommandBuffer := TvkBeginCommandBuffer (vkGetProcAddress('vkBeginCommandBuffer', aInstance));
  4026. vkEndCommandBuffer := TvkEndCommandBuffer (vkGetProcAddress('vkEndCommandBuffer', aInstance));
  4027. vkResetCommandBuffer := TvkResetCommandBuffer (vkGetProcAddress('vkResetCommandBuffer', aInstance));
  4028. vkCmdBindPipeline := TvkCmdBindPipeline (vkGetProcAddress('vkCmdBindPipeline', aInstance));
  4029. vkCmdSetViewport := TvkCmdSetViewport (vkGetProcAddress('vkCmdSetViewport', aInstance));
  4030. vkCmdSetScissor := TvkCmdSetScissor (vkGetProcAddress('vkCmdSetScissor', aInstance));
  4031. vkCmdSetLineWidth := TvkCmdSetLineWidth (vkGetProcAddress('vkCmdSetLineWidth', aInstance));
  4032. vkCmdSetDepthBias := TvkCmdSetDepthBias (vkGetProcAddress('vkCmdSetDepthBias', aInstance));
  4033. vkCmdSetBlendConstants := TvkCmdSetBlendConstants (vkGetProcAddress('vkCmdSetBlendConstants', aInstance));
  4034. vkCmdSetDepthBounds := TvkCmdSetDepthBounds (vkGetProcAddress('vkCmdSetDepthBounds', aInstance));
  4035. vkCmdSetStencilCompareMask := TvkCmdSetStencilCompareMask (vkGetProcAddress('vkCmdSetStencilCompareMask', aInstance));
  4036. vkCmdSetStencilWriteMask := TvkCmdSetStencilWriteMask (vkGetProcAddress('vkCmdSetStencilWriteMask', aInstance));
  4037. vkCmdSetStencilReference := TvkCmdSetStencilReference (vkGetProcAddress('vkCmdSetStencilReference', aInstance));
  4038. vkCmdBindDescriptorSets := TvkCmdBindDescriptorSets (vkGetProcAddress('vkCmdBindDescriptorSets', aInstance));
  4039. vkCmdBindIndexBuffer := TvkCmdBindIndexBuffer (vkGetProcAddress('vkCmdBindIndexBuffer', aInstance));
  4040. vkCmdBindVertexBuffers := TvkCmdBindVertexBuffers (vkGetProcAddress('vkCmdBindVertexBuffers', aInstance));
  4041. vkCmdDraw := TvkCmdDraw (vkGetProcAddress('vkCmdDraw', aInstance));
  4042. vkCmdDrawIndexed := TvkCmdDrawIndexed (vkGetProcAddress('vkCmdDrawIndexed', aInstance));
  4043. vkCmdDrawIndirect := TvkCmdDrawIndirect (vkGetProcAddress('vkCmdDrawIndirect', aInstance));
  4044. vkCmdDrawIndexedIndirect := TvkCmdDrawIndexedIndirect (vkGetProcAddress('vkCmdDrawIndexedIndirect', aInstance));
  4045. vkCmdDispatch := TvkCmdDispatch (vkGetProcAddress('vkCmdDispatch', aInstance));
  4046. vkCmdDispatchIndirect := TvkCmdDispatchIndirect (vkGetProcAddress('vkCmdDispatchIndirect', aInstance));
  4047. vkCmdCopyBuffer := TvkCmdCopyBuffer (vkGetProcAddress('vkCmdCopyBuffer', aInstance));
  4048. vkCmdCopyImage := TvkCmdCopyImage (vkGetProcAddress('vkCmdCopyImage', aInstance));
  4049. vkCmdBlitImage := TvkCmdBlitImage (vkGetProcAddress('vkCmdBlitImage', aInstance));
  4050. vkCmdCopyBufferToImage := TvkCmdCopyBufferToImage (vkGetProcAddress('vkCmdCopyBufferToImage', aInstance));
  4051. vkCmdCopyImageToBuffer := TvkCmdCopyImageToBuffer (vkGetProcAddress('vkCmdCopyImageToBuffer', aInstance));
  4052. vkCmdUpdateBuffer := TvkCmdUpdateBuffer (vkGetProcAddress('vkCmdUpdateBuffer', aInstance));
  4053. vkCmdFillBuffer := TvkCmdFillBuffer (vkGetProcAddress('vkCmdFillBuffer', aInstance));
  4054. vkCmdClearColorImage := TvkCmdClearColorImage (vkGetProcAddress('vkCmdClearColorImage', aInstance));
  4055. vkCmdClearDepthStencilImage := TvkCmdClearDepthStencilImage (vkGetProcAddress('vkCmdClearDepthStencilImage', aInstance));
  4056. vkCmdClearAttachments := TvkCmdClearAttachments (vkGetProcAddress('vkCmdClearAttachments', aInstance));
  4057. vkCmdResolveImage := TvkCmdResolveImage (vkGetProcAddress('vkCmdResolveImage', aInstance));
  4058. vkCmdSetEvent := TvkCmdSetEvent (vkGetProcAddress('vkCmdSetEvent', aInstance));
  4059. vkCmdResetEvent := TvkCmdResetEvent (vkGetProcAddress('vkCmdResetEvent', aInstance));
  4060. vkCmdWaitEvents := TvkCmdWaitEvents (vkGetProcAddress('vkCmdWaitEvents', aInstance));
  4061. vkCmdPipelineBarrier := TvkCmdPipelineBarrier (vkGetProcAddress('vkCmdPipelineBarrier', aInstance));
  4062. vkCmdBeginQuery := TvkCmdBeginQuery (vkGetProcAddress('vkCmdBeginQuery', aInstance));
  4063. vkCmdEndQuery := TvkCmdEndQuery (vkGetProcAddress('vkCmdEndQuery', aInstance));
  4064. vkCmdResetQueryPool := TvkCmdResetQueryPool (vkGetProcAddress('vkCmdResetQueryPool', aInstance));
  4065. vkCmdWriteTimestamp := TvkCmdWriteTimestamp (vkGetProcAddress('vkCmdWriteTimestamp', aInstance));
  4066. vkCmdCopyQueryPoolResults := TvkCmdCopyQueryPoolResults (vkGetProcAddress('vkCmdCopyQueryPoolResults', aInstance));
  4067. vkCmdPushConstants := TvkCmdPushConstants (vkGetProcAddress('vkCmdPushConstants', aInstance));
  4068. vkCmdBeginRenderPass := TvkCmdBeginRenderPass (vkGetProcAddress('vkCmdBeginRenderPass', aInstance));
  4069. vkCmdNextSubpass := TvkCmdNextSubpass (vkGetProcAddress('vkCmdNextSubpass', aInstance));
  4070. vkCmdEndRenderPass := TvkCmdEndRenderPass (vkGetProcAddress('vkCmdEndRenderPass', aInstance));
  4071. vkCmdExecuteCommands := TvkCmdExecuteCommands (vkGetProcAddress('vkCmdExecuteCommands', aInstance));
  4072. { ========================================== VK_KHR_surface ========================================== }
  4073. vkDestroySurfaceKHR := TvkDestroySurfaceKHR (vkGetProcAddress('vkDestroySurfaceKHR', aInstance));
  4074. vkGetPhysicalDeviceSurfaceSupportKHR := TvkGetPhysicalDeviceSurfaceSupportKHR (vkGetProcAddress('vkGetPhysicalDeviceSurfaceSupportKHR', aInstance));
  4075. vkGetPhysicalDeviceSurfaceCapabilitiesKHR := TvkGetPhysicalDeviceSurfaceCapabilitiesKHR (vkGetProcAddress('vkGetPhysicalDeviceSurfaceCapabilitiesKHR', aInstance));
  4076. vkGetPhysicalDeviceSurfaceFormatsKHR := TvkGetPhysicalDeviceSurfaceFormatsKHR (vkGetProcAddress('vkGetPhysicalDeviceSurfaceFormatsKHR', aInstance));
  4077. vkGetPhysicalDeviceSurfacePresentModesKHR := TvkGetPhysicalDeviceSurfacePresentModesKHR (vkGetProcAddress('vkGetPhysicalDeviceSurfacePresentModesKHR', aInstance));
  4078. { ========================================= VK_KHR_swapchain ========================================= }
  4079. vkCreateSwapchainKHR := TvkCreateSwapchainKHR (vkGetProcAddress('vkCreateSwapchainKHR', aInstance));
  4080. vkDestroySwapchainKHR := TvkDestroySwapchainKHR (vkGetProcAddress('vkDestroySwapchainKHR', aInstance));
  4081. vkGetSwapchainImagesKHR := TvkGetSwapchainImagesKHR (vkGetProcAddress('vkGetSwapchainImagesKHR', aInstance));
  4082. vkAcquireNextImageKHR := TvkAcquireNextImageKHR (vkGetProcAddress('vkAcquireNextImageKHR', aInstance));
  4083. vkQueuePresentKHR := TvkQueuePresentKHR (vkGetProcAddress('vkQueuePresentKHR', aInstance));
  4084. { ========================================== VK_KHR_display ========================================== }
  4085. vkGetPhysicalDeviceDisplayPropertiesKHR := TvkGetPhysicalDeviceDisplayPropertiesKHR (vkGetProcAddress('vkGetPhysicalDeviceDisplayPropertiesKHR', aInstance));
  4086. vkGetPhysicalDeviceDisplayPlanePropertiesKHR := TvkGetPhysicalDeviceDisplayPlanePropertiesKHR (vkGetProcAddress('vkGetPhysicalDeviceDisplayPlanePropertiesKHR', aInstance));
  4087. vkGetDisplayPlaneSupportedDisplaysKHR := TvkGetDisplayPlaneSupportedDisplaysKHR (vkGetProcAddress('vkGetDisplayPlaneSupportedDisplaysKHR', aInstance));
  4088. vkGetDisplayModePropertiesKHR := TvkGetDisplayModePropertiesKHR (vkGetProcAddress('vkGetDisplayModePropertiesKHR', aInstance));
  4089. vkCreateDisplayModeKHR := TvkCreateDisplayModeKHR (vkGetProcAddress('vkCreateDisplayModeKHR', aInstance));
  4090. vkGetDisplayPlaneCapabilitiesKHR := TvkGetDisplayPlaneCapabilitiesKHR (vkGetProcAddress('vkGetDisplayPlaneCapabilitiesKHR', aInstance));
  4091. vkCreateDisplayPlaneSurfaceKHR := TvkCreateDisplayPlaneSurfaceKHR (vkGetProcAddress('vkCreateDisplayPlaneSurfaceKHR', aInstance));
  4092. { ===================================== VK_KHR_display_swapchain ===================================== }
  4093. vkCreateSharedSwapchainsKHR := TvkCreateSharedSwapchainsKHR (vkGetProcAddress('vkCreateSharedSwapchainsKHR', aInstance));
  4094. { ======================================= VK_KHR_xlib_surface ======================================== }
  4095. {$IFDEF VK_USE_PLATFORM_XLIB_KHR}
  4096. vkCreateXlibSurfaceKHR := TvkCreateXlibSurfaceKHR (vkGetProcAddress('vkCreateXlibSurfaceKHR', aInstance));
  4097. vkGetPhysicalDeviceXlibPresentationSupportKHR := TvkGetPhysicalDeviceXlibPresentationSupportKHR (vkGetProcAddress('vkGetPhysicalDeviceXlibPresentationSupportKHR', aInstance));
  4098. {$ENDIF}
  4099. { ======================================== VK_KHR_xcb_surface ======================================== }
  4100. {$IFDEF VK_USE_PLATFORM_XCB_KHR}
  4101. vkCreateXcbSurfaceKHR := TvkCreateXcbSurfaceKHR (vkGetProcAddress('vkCreateXcbSurfaceKHR', aInstance));
  4102. vkGetPhysicalDeviceXcbPresentationSupportKHR := TvkGetPhysicalDeviceXcbPresentationSupportKHR (vkGetProcAddress('vkGetPhysicalDeviceXcbPresentationSupportKHR', aInstance));
  4103. {$ENDIF}
  4104. { ====================================== VK_KHR_wayland_surface ====================================== }
  4105. {$IFDEF VK_USE_PLATFORM_WAYLAND_KHR}
  4106. vkCreateWaylandSurfaceKHR := TvkCreateWaylandSurfaceKHR (vkGetProcAddress('vkCreateWaylandSurfaceKHR', aInstance));
  4107. vkGetPhysicalDeviceWaylandPresentationSupportKHR := TvkGetPhysicalDeviceWaylandPresentationSupportKHR (vkGetProcAddress('vkGetPhysicalDeviceWaylandPresentationSupportKHR',aInstance));
  4108. {$ENDIF}
  4109. { ======================================== VK_KHR_mir_surface ======================================== }
  4110. {$IFDEF VK_USE_PLATFORM_MIR_KHR}
  4111. vkCreateMirSurfaceKHR := TvkCreateMirSurfaceKHR (vkGetProcAddress('vkCreateMirSurfaceKHR', aInstance));
  4112. vkGetPhysicalDeviceMirPresentationSupportKHR := TvkGetPhysicalDeviceMirPresentationSupportKHR (vkGetProcAddress('vkGetPhysicalDeviceMirPresentationSupportKHR', aInstance));
  4113. {$ENDIF}
  4114. { ====================================== VK_KHR_android_surface ====================================== }
  4115. {$IFDEF VK_USE_PLATFORM_ANDROID_KHR}
  4116. vkCreateAndroidSurfaceKHR := TvkCreateAndroidSurfaceKHR (vkGetProcAddress('vkCreateAndroidSurfaceKHR', aInstance));
  4117. {$ENDIF}
  4118. { ======================================= VK_KHR_win32_surface ======================================= }
  4119. {$IFDEF VK_USE_PLATFORM_WIN32_KHR}
  4120. vkCreateWin32SurfaceKHR := TvkCreateWin32SurfaceKHR (vkGetProcAddress('vkCreateWin32SurfaceKHR', aInstance));
  4121. vkGetPhysicalDeviceWin32PresentationSupportKHR := TvkGetPhysicalDeviceWin32PresentationSupportKHR (vkGetProcAddress('vkGetPhysicalDeviceWin32PresentationSupportKHR', aInstance));
  4122. {$ENDIF}
  4123. { ======================================= VK_EXT_debug_report ======================================== }
  4124. vkCreateDebugReportCallbackEXT := TvkCreateDebugReportCallbackEXT (vkGetProcAddress('vkCreateDebugReportCallbackEXT', aInstance));
  4125. vkDestroyDebugReportCallbackEXT := TvkDestroyDebugReportCallbackEXT (vkGetProcAddress('vkDestroyDebugReportCallbackEXT', aInstance));
  4126. vkDebugReportMessageEXT := TvkDebugReportMessageEXT (vkGetProcAddress('vkDebugReportMessageEXT', aInstance));
  4127. end;
  4128. procedure vkFreeLibrary(var aLibHandle: TvkLibHandle);
  4129. begin
  4130. if (aLibHandle <> InvalidLibHandle) then begin
  4131. {$IF DEFINED(VK_WIN)}
  4132. FreeLibrary(aLibHandle);
  4133. {$ENDIF}
  4134. aLibHandle := InvalidLibHandle;
  4135. end;
  4136. end;
  4137. function vkMakeVersion(const aMajor, aMinor, aPatch: Integer): VkVersion;
  4138. begin
  4139. result := (aMajor shl 22) or (aMinor shl 12) or aPatch;
  4140. end;
  4141. function vkGetVersionMajor(const aVersion: VkVersion): Integer;
  4142. begin
  4143. result := (aVersion shr 22);
  4144. end;
  4145. function vkGetVersionMinor(const aVersion: VkVersion): Integer;
  4146. begin
  4147. result := (aVersion shr 12) and $3FF;
  4148. end;
  4149. function vkGetVersionPatch(const aVersion: VkVersion): Integer;
  4150. begin
  4151. result := (aVersion and $FFF);
  4152. end;
  4153. function InitializeVulkan(const aLibName: String = VULKAN_LIBNAME): Boolean;
  4154. begin
  4155. FinalizeVulkan;
  4156. vkLibHandle := vkLoadLibrary(aLibName);
  4157. result := (vkLibHandle <> InvalidLibHandle);
  4158. if not result then
  4159. exit;
  4160. vkGetInstanceProcAddr := TvkGetInstanceProcAddr(vkGetProcAddress('vkGetInstanceProcAddr'));
  4161. vkLoadAddresses(nil);
  4162. end;
  4163. procedure LoadVulkanCommands(const aInstance: VkInstance);
  4164. begin
  4165. vkLoadAddresses(aInstance);
  4166. end;
  4167. procedure FinalizeVulkan;
  4168. begin
  4169. vkFreeLibrary(vkLibHandle);
  4170. end;
  4171. initialization
  4172. finalization
  4173. FinalizeVulkan;
  4174. end.