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

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