(*
** Copyright (c) 2015-2016 The Khronos Group Inc.
** Copyright (c) 2016-2021, Benjamin Rosseaux (benjamin@rosseaux.de, the pascal headers)
**
** Permission is hereby granted, free of charge, to any person obtaining a
** copy of this software and/or associated documentation files (the
** "Materials"), to deal in the Materials without restriction, including
** without limitation the rights to use, copy, modify, merge, publish,
** distribute, sublicense, and/or sell copies of the Materials, and to
** permit persons to whom the Materials are furnished to do so, subject to
** the following conditions:
**
** The above copyright notice and this permission notice shall be included
** in all copies or substantial portions of the Materials.
**
** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
*)
(*
** This header is generated from the Khronos Vulkan XML API Registry.
**
*)
unit Vulkan;
{$ifdef fpc}
 {$mode delphi}
 {$z4}
 {$packrecords c}
 {$define CAN_INLINE}
 {$define HAS_ADVANCED_RECORDS}
 {$notes off}
{$else}
 {$z4}
 {$undef CAN_INLINE}
 {$undef HAS_ADVANCED_RECORDS}
 {$ifdef conditionalexpressions}
  {$if CompilerVersion>=24.0}
   {$legacyifend on}
  {$ifend}
  {$if CompilerVersion>=18.0}
   {$define CAN_INLINE}
   {$define HAS_ADVANCED_RECORDS}
  {$ifend}
 {$endif}
{$endif}
{$ifdef Win32}
 {$define Windows}
{$endif}
{$ifdef Win64}
 {$define Windows}
{$endif}
{$ifdef WinCE}
 {$define Windows}
{$endif}
{$if defined(Android)}
 {$define VK_USE_PLATFORM_ANDROID_KHR}
{$elseif defined(Windows)}
 {$define VK_USE_PLATFORM_WIN32_KHR}
{$elseif defined(QNX)}
 {$define VK_USE_PLATFORM_QNX_KHR}
{$elseif defined(Unix) or defined(Linux)}
 {$ifdef WAYLAND}
  {$define VK_USE_PLATFORM_WAYLAND_KHR}
 {$endif}
 {$ifdef XCB}
  {$define VK_USE_PLATFORM_XCB_KHR}
 {$endif}
 {$ifdef XLIB}
  {$define VK_USE_PLATFORM_XLIB_KHR}
 {$endif}
{$ifend}

interface

uses {$if defined(Windows)}
      Windows,
     {$elseif defined(Unix)}
      BaseUnix,UnixType,dl,
     {$ifend}
     {$if defined(XLIB) and defined(VulkanUseXLIBUnits)}x,xlib,{$ifend}
     {$if defined(XCB) and defined(VulkanUseXCBUnits)}xcb,{$ifend}
     {$if defined(Wayland) and defined(VulkanUseWaylandUnits)}Wayland,{$ifend}
     {$if defined(Android) and defined(VulkanUseAndroidUnits)}Android,{$ifend}
     {$if defined(Fuchsia) and defined(VulkanUseFuchsiaUnits)}Fuchsia,{$ifend}
     {$if defined(DirectFB) and defined(VulkanUseDirectFBUnits)}DirectFB,{$ifend}
     {$if defined(QNX) and defined(VulkanUseQNXUnits)}QNX,{$ifend}
     {$if defined(Metal) and defined(VulkanUseMetalUnits)}Metal,{$ifend}
     SysUtils;

const VK_DEFAULT_LIB_NAME={$ifdef Windows}'vulkan-1.dll'{$else}{$ifdef Android}'libvulkan.so'{$else}{$ifdef Unix}'libvulkan.so.1'{$else}'libvulkan'{$endif}{$endif}{$endif};

type PPVkInt8=^PVkInt8;
     PVkInt8=^TVkInt8;
     TVkInt8={$ifdef FPC}Int8{$else}ShortInt{$endif};

     PPVkUInt8=^PVkUInt8;
     PVkUInt8=^TVkUInt8;
     TVkUInt8={$ifdef FPC}UInt8{$else}Byte{$endif};

     PPVkInt16=^PVkInt16;
     PVkInt16=^TVkInt16;
     TVkInt16={$ifdef FPC}Int16{$else}SmallInt{$endif};

     PPVkUInt16=^PVkUInt16;
     PVkUInt16=^TVkUInt16;
     TVkUInt16={$ifdef FPC}UInt16{$else}Word{$endif};

     PPVkInt32=^PVkInt32;
     PVkInt32=^TVkInt32;
     TVkInt32={$ifdef FPC}Int32{$else}LongInt{$endif};

     PPVkUInt32=^PVkUInt32;
     PVkUInt32=^TVkUInt32;
     TVkUInt32={$ifdef FPC}UInt32{$else}LongWord{$endif};

     PPVkInt64=^PVkInt64;
     PVkInt64=^TVkInt64;
     TVkInt64=Int64;

     PPVkUInt64=^PVkUInt64;
     PVkUInt64=^TVkUInt64;
     TVkUInt64=UInt64;

     PPVkChar=^PVkChar;
     PVkChar=PAnsiChar;
     TVkChar=AnsiChar;

     PPVkPointer=^PVkPointer;
     PVkPointer=^TVkPointer;
     TVkPointer=Pointer;

     PPVkVoid=^PVkVoid;
     PVkVoid=Pointer;
     TVkVoid=record
     end;

     PPVkHalfFloat=^PVkHalfFloat;
     PVkHalfFloat=^TVkHalfFloat;
     TVkHalfFloat=TVkUInt16;

     PPVkFloat=^PVkFloat;
     PVkFloat=^TVkFloat;
     TVkFloat=Single;

     PPVkDouble=^PVkDouble;
     PVkDouble=^TVkDouble;
     TVkDouble=Double;

     PPVkPtrUInt=^PVkPtrUInt;
     PPVkPtrInt=^PVkPtrInt;
     PVkPtrUInt=^TVkPtrUInt;
     PVkPtrInt=^TVkPtrInt;
{$ifdef fpc}
     TVkPtrUInt=PtrUInt;
     TVkPtrInt=PtrInt;
 {$undef OldDelphi}
{$else}
 {$ifdef conditionalexpressions}
  {$if CompilerVersion>=23.0}
   {$undef OldDelphi}
     TVkPtrUInt=NativeUInt;
     TVkPtrInt=NativeInt;
  {$else}
   {$define OldDelphi}
  {$ifend}
 {$else}
  {$define OldDelphi}
 {$endif}
{$endif}
{$ifdef OldDelphi}
{$ifdef cpu64}
     TVkPtrUInt=TVkUInt64;
     TVkPtrInt=TVkInt64;
{$else}
     TVkPtrUInt=TVkUInt32;
     TVkPtrInt=TVkInt32;
{$endif}
{$endif}

     PPVkSizeUInt=^PVkSizeUInt;
     PVkSizeUInt=^TVkSizeUInt;
     TVkSizeUInt=TVkPtrUInt;

     PPVkSizeInt=^PVkSizeInt;
     PVkSizeInt=^TVkSizeInt;
     TVkSizeInt=TVkPtrInt;

     PPVkSize=^PVkSizeUInt;
     PVkSize=^TVkSizeUInt;
     TVkSize=TVkPtrUInt;

     PPVkPtrDiff=^PVkPtrDiff;
     PVkPtrDiff=^TVkPtrDiff;
     TVkPtrDiff=TVkPtrInt;

     PPVkCharString=^PVkCharString;
     PVkCharString=^TVkCharString;
     TVkCharString=AnsiString;

{$ifdef Android}
     PPVkAndroidANativeWindow=^PVkAndroidANativeWindow;
     PVkAndroidANativeWindow={$ifdef VulkanUseAndroidUnits}PANativeWindow{$else}TVkPointer{$endif};

     PPVkAndroidAHardwareBuffer=^PVkAndroidAHardwareBuffer;
     PVkAndroidAHardwareBuffer={$ifdef VulkanUseAndroidUnits}PAHardwareBuffer{$else}TVkPointer{$endif};
{$endif}

{$ifdef Fuchsia}
     PPVkFuchsiaZXHandle=^PVkFuchsiaZXHandle;
     PVkFuchsiaZXHandle=^TVkFuchsiaZXHandle;
     TVkFuchsiaZXHandle={$ifdef VulkanUseFuchsiaUnits}Tzx_handle_t{$else}TVkSizeUInt{$endif};
{$endif}

{$ifdef DirectFB}
     PPVkDirectFBIDirectFB=^PVkDirectFBIDirectFB;
     PVkDirectFBIDirectFB=^TVkDirectFBIDirectFB;
     TVkDirectFBIDirectFB={$ifdef VulkanUseDirectFBUnits}IDirectFB{$else}TVkSizeUInt{$endif};

     PPVkDirectFBIDirectFBSurface=^PVkDirectFBIDirectFBSurface;
     PVkDirectFBIDirectFBSurface=^TVkDirectFBIDirectFBSurface;
     TVkDirectFBIDirectFBSurface={$ifdef VulkanUseDirectFBUnits}IDirectFBSurface{$else}TVkSizeUInt{$endif};
{$endif}

{$ifdef Wayland}
     PPVkWaylandDisplay=^PVkWaylandDisplay;
     PVkWaylandDisplay={$ifdef VulkanUseWaylandUnits}Pwl_display{$else}TVkPointer{$endif};

     PPVkWaylandSurface=^PVkWaylandSurface;
     PVkWaylandSurface={$ifdef VulkanUseWaylandUnits}Pwl_surface{$else}TVkPointer{$endif};
{$endif}

{$ifdef XCB}
     PPVkXCBConnection=^PVkXCBConnection;
     PVkXCBConnection={$ifdef VulkanUseXCBUnits}Pxcb_connection_t{$else}TVkPointer{$endif};

     PPVkXCBVisualID=^PVkXCBVisualID;
     PVkXCBVisualID={$ifdef VulkanUseXCBUnits}Pxcb_visualid_t{$else}^TVkXCBVisualID{$endif};
     TVkXCBVisualID={$if defined(VulkanUseXCBUnits)}Pxcb_visualid_t{$elseif defined(CPU64)}TVkUInt64{$else}TVKUInt32{$ifend};

     PPVkXCBWindow=^PVkXCBWindow;
     PVkXCBWindow={$ifdef VulkanUseXCBUnits}Pxcb_window_t{$else}^TVkXCBWindow{$endif};
     TVkXCBWindow={$if defined(VulkanUseXCBUnits)}Txcb_window_t{$elseif defined(CPU64)}TVkUInt64{$else}TVKUInt32{$ifend};
{$endif}

{$ifdef XLIB}
     PPVkXLIBDisplay=^PVkXLIBDisplay;
     PVkXLIBDisplay={$ifdef VulkanUseXLIBUnits}PDisplay{$else}TVkPointer{$endif};
     {$ifdef VulkanUseXLIBUnits}TVkXLIBDisplay=TDisplay;{$endif}

     PPVkXLIBVisualID=^PVkXLIBVisualID;
     PVkXLIBVisualID={$ifdef VulkanUseXLIBUnits}PVisualID{$else}^TVkXLIBVisualID{$endif};
     TVkXLIBVisualID={$if defined(VulkanUseXLIBUnits)}TVisualID{$elseif defined(CPU64)}TVkUInt64{$else}TVKUInt32{$ifend};

     PPVkXLIBWindow=^PVkXLIBWindow;
     PVkXLIBWindow={$ifdef VulkanUseXLIBUnits}PWindow{$else}^TVkXLIBWindow{$endif};
     TVkXLIBWindow={$if defined(VulkanUseXLIBUnits)}TWindow{$elseif defined(CPU64)}TVkUInt64{$else}TVKUInt32{$ifend};
{$endif}

{$ifdef QNX}
     PPVkQNXScreenContext=^PVkQNXScreenContext;
     PVkQNXScreenContext=^TVkQNXScreenContext;
     TVkQNXScreenContext={$if defined(CPU64)}TVkUInt64{$else}TVKUInt32{$ifend};

     PPVkQNXScreenWindow=^PVkQNXScreenWindow;
     PVkQNXScreenWindow=^TVkQNXScreenWindow;
     TVkQNXScreenWindow={$if defined(CPU64)}TVkUInt64{$else}TVKUInt32{$ifend};
{$endif}

     TVkNonDefinedType=pointer;

     PPVkGgpStreamDescriptor=^PVkGgpStreamDescriptor;
     PVkGgpStreamDescriptor=^TVkGgpStreamDescriptor;
     TVkGgpStreamDescriptor=TVkNonDefinedType;

     PPVkGgpFrameToken=^PVkGgpFrameToken;
     PVkGgpFrameToken=^TVkGgpFrameToken;
     TVkGgpFrameToken=TVkNonDefinedType;

     PPVkCAMetalLayer=^PVkCAMetalLayer;
     PVkCAMetalLayer=^TVkCAMetalLayer;
     TVkCAMetalLayer=TVkNonDefinedType;

const VK_NULL_HANDLE=0;

      VK_NULL_INSTANCE=0;

      VK_API_VERSION_WITHOUT_PATCH_MASK=TVkUInt32($fffff000);

      VK_API_VERSION=(0 shl 29) or (1 shl 22) or (0 shl 12) or (0 shl 0);

      VK_API_VERSION_1_0=(0 shl 29) or (1 shl 22) or (0 shl 12) or (0 shl 0);

      VK_API_VERSION_1_1=(0 shl 29) or (1 shl 22) or (1 shl 12) or (0 shl 0);

      VK_API_VERSION_1_2=(0 shl 29) or (1 shl 22) or (2 shl 12) or (0 shl 0);

      VK_API_VERSION_1_3=(0 shl 29) or (1 shl 22) or (3 shl 12) or (0 shl 0);

      VK_HEADER_VERSION=266;

      VK_HEADER_VERSION_COMPLETE=(0 shl 29) or (1 shl 22) or (3 shl 12) or (VK_HEADER_VERSION shl 0);

      VK_MAX_PHYSICAL_DEVICE_NAME_SIZE=256;
      VK_UUID_SIZE=16;
      VK_LUID_SIZE=8;
      VK_LUID_SIZE_KHR=VK_LUID_SIZE;
      VK_MAX_EXTENSION_NAME_SIZE=256;
      VK_MAX_DESCRIPTION_SIZE=256;
      VK_MAX_MEMORY_TYPES=32;
      VK_MAX_MEMORY_HEAPS=16;                                                    //< The maximum number of unique memory heaps, each of which supporting 1 or more memory types
      VK_LOD_CLAMP_NONE=1000.0;
      VK_REMAINING_MIP_LEVELS=TVkUInt32($ffffffff);
      VK_REMAINING_ARRAY_LAYERS=TVkUInt32($ffffffff);
      VK_REMAINING_3D_SLICES_EXT=TVkUInt32($ffffffff);
      VK_WHOLE_SIZE=TVkUInt64($ffffffffffffffff);
      VK_ATTACHMENT_UNUSED=TVkUInt32($ffffffff);
      VK_TRUE=1;
      VK_FALSE=0;
      VK_QUEUE_FAMILY_IGNORED=TVkUInt32($ffffffff);
      VK_QUEUE_FAMILY_EXTERNAL=TVkUInt32($fffffffe);
      VK_QUEUE_FAMILY_EXTERNAL_KHR=VK_QUEUE_FAMILY_EXTERNAL;
      VK_QUEUE_FAMILY_FOREIGN_EXT=TVkUInt32($fffffffd);
      VK_SUBPASS_EXTERNAL=TVkUInt32($ffffffff);
      VK_MAX_DEVICE_GROUP_SIZE=32;
      VK_MAX_DEVICE_GROUP_SIZE_KHR=VK_MAX_DEVICE_GROUP_SIZE;
      VK_MAX_DRIVER_NAME_SIZE=256;
      VK_MAX_DRIVER_NAME_SIZE_KHR=VK_MAX_DRIVER_NAME_SIZE;
      VK_MAX_DRIVER_INFO_SIZE=256;
      VK_MAX_DRIVER_INFO_SIZE_KHR=VK_MAX_DRIVER_INFO_SIZE;
      VK_SHADER_UNUSED_KHR=TVkUInt32($ffffffff);
      VK_SHADER_UNUSED_NV=VK_SHADER_UNUSED_KHR;
      VK_MAX_GLOBAL_PRIORITY_SIZE_KHR=16;
      VK_MAX_GLOBAL_PRIORITY_SIZE_EXT=VK_MAX_GLOBAL_PRIORITY_SIZE_KHR;
      VK_MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT=32;
      VK_SHADER_INDEX_UNUSED_AMDX=TVkUInt32($ffffffff);
      VK_KHR_SURFACE_SPEC_VERSION=25;
      VK_KHR_SURFACE_EXTENSION_NAME='VK_KHR_surface';
      VK_KHR_SWAPCHAIN_SPEC_VERSION=70;
      VK_KHR_SWAPCHAIN_EXTENSION_NAME='VK_KHR_swapchain';
      VK_KHR_DISPLAY_SPEC_VERSION=23;
      VK_KHR_DISPLAY_EXTENSION_NAME='VK_KHR_display';
      VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION=10;
      VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME='VK_KHR_display_swapchain';
      VK_KHR_XLIB_SURFACE_SPEC_VERSION=6;
      VK_KHR_XLIB_SURFACE_EXTENSION_NAME='VK_KHR_xlib_surface';
      VK_KHR_XCB_SURFACE_SPEC_VERSION=6;
      VK_KHR_XCB_SURFACE_EXTENSION_NAME='VK_KHR_xcb_surface';
      VK_KHR_WAYLAND_SURFACE_SPEC_VERSION=6;
      VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME='VK_KHR_wayland_surface';
      VK_KHR_MIR_SURFACE_SPEC_VERSION=4;
      VK_KHR_MIR_SURFACE_EXTENSION_NAME='VK_KHR_mir_surface';
      VK_KHR_ANDROID_SURFACE_SPEC_VERSION=6;
      VK_KHR_ANDROID_SURFACE_EXTENSION_NAME='VK_KHR_android_surface';
      VK_KHR_WIN32_SURFACE_SPEC_VERSION=6;
      VK_KHR_WIN32_SURFACE_EXTENSION_NAME='VK_KHR_win32_surface';
      VK_ANDROID_NATIVE_BUFFER_SPEC_VERSION=8;
      VK_ANDROID_NATIVE_BUFFER_NUMBER=11;
      VK_ANDROID_NATIVE_BUFFER_EXTENSION_NAME='VK_ANDROID_native_buffer';
      VK_ANDROID_NATIVE_BUFFER_NAME=VK_ANDROID_NATIVE_BUFFER_EXTENSION_NAME;
      VK_EXT_DEBUG_REPORT_SPEC_VERSION=10;
      VK_EXT_DEBUG_REPORT_EXTENSION_NAME='VK_EXT_debug_report';
      VK_NV_GLSL_SHADER_SPEC_VERSION=1;
      VK_NV_GLSL_SHADER_EXTENSION_NAME='VK_NV_glsl_shader';
      VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION=1;
      VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME='VK_EXT_depth_range_unrestricted';
      VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION=3;
      VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME='VK_KHR_sampler_mirror_clamp_to_edge';
      VK_IMG_FILTER_CUBIC_SPEC_VERSION=1;
      VK_IMG_FILTER_CUBIC_EXTENSION_NAME='VK_IMG_filter_cubic';
      VK_AMD_EXTENSION_17_SPEC_VERSION=0;
      VK_AMD_EXTENSION_17_EXTENSION_NAME='VK_AMD_extension_17';
      VK_AMD_EXTENSION_18_SPEC_VERSION=0;
      VK_AMD_EXTENSION_18_EXTENSION_NAME='VK_AMD_extension_18';
      VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION=1;
      VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME='VK_AMD_rasterization_order';
      VK_AMD_EXTENSION_20_SPEC_VERSION=0;
      VK_AMD_EXTENSION_20_EXTENSION_NAME='VK_AMD_extension_20';
      VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION=1;
      VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME='VK_AMD_shader_trinary_minmax';
      VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION=1;
      VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME='VK_AMD_shader_explicit_vertex_parameter';
      VK_EXT_DEBUG_MARKER_SPEC_VERSION=4;
      VK_EXT_DEBUG_MARKER_EXTENSION_NAME='VK_EXT_debug_marker';
      VK_KHR_VIDEO_QUEUE_SPEC_VERSION=8;
      VK_KHR_VIDEO_QUEUE_EXTENSION_NAME='VK_KHR_video_queue';
      VK_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION=7;
      VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME='VK_KHR_video_decode_queue';
      VK_AMD_GCN_SHADER_SPEC_VERSION=1;
      VK_AMD_GCN_SHADER_EXTENSION_NAME='VK_AMD_gcn_shader';
      VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION=1;
      VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME='VK_NV_dedicated_allocation';
      VK_EXT_EXTENSION_28_SPEC_VERSION=0;
      VK_EXT_EXTENSION_28_EXTENSION_NAME='VK_EXT_extension_28';
      VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION=1;
      VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME='VK_EXT_transform_feedback';
      VK_NVX_BINARY_IMPORT_SPEC_VERSION=1;
      VK_NVX_BINARY_IMPORT_EXTENSION_NAME='VK_NVX_binary_import';
      VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION=2;
      VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME='VK_NVX_image_view_handle';
      VK_AMD_EXTENSION_32_SPEC_VERSION=0;
      VK_AMD_EXTENSION_32_EXTENSION_NAME='VK_AMD_extension_32';
      VK_AMD_EXTENSION_33_SPEC_VERSION=0;
      VK_AMD_EXTENSION_33_EXTENSION_NAME='VK_AMD_extension_33';
      VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION=2;
      VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME='VK_AMD_draw_indirect_count';
      VK_AMD_EXTENSION_35_SPEC_VERSION=0;
      VK_AMD_EXTENSION_35_EXTENSION_NAME='VK_AMD_extension_35';
      VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION=1;
      VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME='VK_AMD_negative_viewport_height';
      VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION=2;
      VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME='VK_AMD_gpu_shader_half_float';
      VK_AMD_SHADER_BALLOT_SPEC_VERSION=1;
      VK_AMD_SHADER_BALLOT_EXTENSION_NAME='VK_AMD_shader_ballot';
      VK_EXT_VIDEO_ENCODE_H264_SPEC_VERSION=12;
      VK_EXT_VIDEO_ENCODE_H264_EXTENSION_NAME='VK_EXT_video_encode_h264';
      VK_EXT_VIDEO_ENCODE_H265_SPEC_VERSION=12;
      VK_EXT_VIDEO_ENCODE_H265_EXTENSION_NAME='VK_EXT_video_encode_h265';
      VK_KHR_VIDEO_DECODE_H264_SPEC_VERSION=8;
      VK_KHR_VIDEO_DECODE_H264_EXTENSION_NAME='VK_KHR_video_decode_h264';
      VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION=1;
      VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME='VK_AMD_texture_gather_bias_lod';
      VK_AMD_SHADER_INFO_SPEC_VERSION=1;
      VK_AMD_SHADER_INFO_EXTENSION_NAME='VK_AMD_shader_info';
      VK_AMD_EXTENSION_44_SPEC_VERSION=0;
      VK_AMD_EXTENSION_44_EXTENSION_NAME='VK_AMD_extension_44';
      VK_KHR_DYNAMIC_RENDERING_SPEC_VERSION=1;
      VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME='VK_KHR_dynamic_rendering';
      VK_AMD_EXTENSION_46_SPEC_VERSION=0;
      VK_AMD_EXTENSION_46_EXTENSION_NAME='VK_AMD_extension_46';
      VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION=1;
      VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME='VK_AMD_shader_image_load_store_lod';
      VK_NVX_EXTENSION_48_SPEC_VERSION=0;
      VK_NVX_EXTENSION_48_EXTENSION_NAME='VK_NVX_extension_48';
      VK_GOOGLE_EXTENSION_49_SPEC_VERSION=0;
      VK_GOOGLE_EXTENSION_49_EXTENSION_NAME='VK_GOOGLE_extension_49';
      VK_GGP_STREAM_DESCRIPTOR_SURFACE_SPEC_VERSION=1;
      VK_GGP_STREAM_DESCRIPTOR_SURFACE_EXTENSION_NAME='VK_GGP_stream_descriptor_surface';
      VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION=2;
      VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME='VK_NV_corner_sampled_image';
      VK_NV_PRIVATE_VENDOR_INFO_SPEC_VERSION=2;
      VK_NV_PRIVATE_VENDOR_INFO_EXTENSION_NAME='VK_NV_private_vendor_info';
      VK_NV_EXTENSION_53_SPEC_VERSION=0;
      VK_NV_EXTENSION_53_EXTENSION_NAME='VK_NV_extension_53';
      VK_KHR_MULTIVIEW_SPEC_VERSION=1;
      VK_KHR_MULTIVIEW_EXTENSION_NAME='VK_KHR_multiview';
      VK_IMG_FORMAT_PVRTC_SPEC_VERSION=1;
      VK_IMG_FORMAT_PVRTC_EXTENSION_NAME='VK_IMG_format_pvrtc';
      VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION=1;
      VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME='VK_NV_external_memory_capabilities';
      VK_NV_EXTERNAL_MEMORY_SPEC_VERSION=1;
      VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME='VK_NV_external_memory';
      VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION=1;
      VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME='VK_NV_external_memory_win32';
      VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION=2;
      VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME='VK_NV_win32_keyed_mutex';
      VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION=2;
      VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME='VK_KHR_get_physical_device_properties2';
      VK_KHR_DEVICE_GROUP_SPEC_VERSION=4;
      VK_KHR_DEVICE_GROUP_EXTENSION_NAME='VK_KHR_device_group';
      VK_EXT_VALIDATION_FLAGS_SPEC_VERSION=2;
      VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME='VK_EXT_validation_flags';
      VK_NN_VI_SURFACE_SPEC_VERSION=1;
      VK_NN_VI_SURFACE_EXTENSION_NAME='VK_NN_vi_surface';
      VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION=1;
      VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME='VK_KHR_shader_draw_parameters';
      VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION=1;
      VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME='VK_EXT_shader_subgroup_ballot';
      VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION=1;
      VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME='VK_EXT_shader_subgroup_vote';
      VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION=1;
      VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME='VK_EXT_texture_compression_astc_hdr';
      VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION=1;
      VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME='VK_EXT_astc_decode_mode';
      VK_EXT_PIPELINE_ROBUSTNESS_SPEC_VERSION=1;
      VK_EXT_PIPELINE_ROBUSTNESS_EXTENSION_NAME='VK_EXT_pipeline_robustness';
      VK_KHR_MAINTENANCE_1_SPEC_VERSION=2;
      VK_KHR_MAINTENANCE_1_EXTENSION_NAME='VK_KHR_maintenance1';
      VK_KHR_MAINTENANCE1_SPEC_VERSION=VK_KHR_MAINTENANCE_1_SPEC_VERSION;
      VK_KHR_MAINTENANCE1_EXTENSION_NAME=VK_KHR_MAINTENANCE_1_EXTENSION_NAME;
      VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION=1;
      VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME='VK_KHR_device_group_creation';
      VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION=1;
      VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME='VK_KHR_external_memory_capabilities';
      VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION=1;
      VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME='VK_KHR_external_memory';
      VK_KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION=1;
      VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME='VK_KHR_external_memory_win32';
      VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION=1;
      VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME='VK_KHR_external_memory_fd';
      VK_KHR_WIN32_KEYED_MUTEX_SPEC_VERSION=1;
      VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME='VK_KHR_win32_keyed_mutex';
      VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION=1;
      VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME='VK_KHR_external_semaphore_capabilities';
      VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION=1;
      VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME='VK_KHR_external_semaphore';
      VK_KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION=1;
      VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME='VK_KHR_external_semaphore_win32';
      VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION=1;
      VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME='VK_KHR_external_semaphore_fd';
      VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION=2;
      VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME='VK_KHR_push_descriptor';
      VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION=2;
      VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME='VK_EXT_conditional_rendering';
      VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION=1;
      VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME='VK_KHR_shader_float16_int8';
      VK_KHR_16BIT_STORAGE_SPEC_VERSION=1;
      VK_KHR_16BIT_STORAGE_EXTENSION_NAME='VK_KHR_16bit_storage';
      VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION=2;
      VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME='VK_KHR_incremental_present';
      VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION=1;
      VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME='VK_KHR_descriptor_update_template';
      VK_NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION=3;
      VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME='VK_NVX_device_generated_commands';
      VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION=1;
      VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME='VK_NV_clip_space_w_scaling';
      VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION=1;
      VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME='VK_EXT_direct_mode_display';
      VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION=1;
      VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME='VK_EXT_acquire_xlib_display';
      VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION=1;
      VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME='VK_EXT_display_surface_counter';
      VK_EXT_DISPLAY_CONTROL_SPEC_VERSION=1;
      VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME='VK_EXT_display_control';
      VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION=1;
      VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME='VK_GOOGLE_display_timing';
      VK_RESERVED_DO_NOT_USE_94_SPEC_VERSION=1;
      VK_RESERVED_DO_NOT_USE_94_EXTENSION_NAME='VK_RESERVED_do_not_use_94';
      VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION=1;
      VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME='VK_NV_sample_mask_override_coverage';
      VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION=1;
      VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME='VK_NV_geometry_shader_passthrough';
      VK_NV_VIEWPORT_ARRAY_2_SPEC_VERSION=1;
      VK_NV_VIEWPORT_ARRAY_2_EXTENSION_NAME='VK_NV_viewport_array2';
      VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION=VK_NV_VIEWPORT_ARRAY_2_SPEC_VERSION;
      VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME=VK_NV_VIEWPORT_ARRAY_2_EXTENSION_NAME;
      VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION=1;
      VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME='VK_NVX_multiview_per_view_attributes';
      VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION=1;
      VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME='VK_NV_viewport_swizzle';
      VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION=2;
      VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME='VK_EXT_discard_rectangles';
      VK_NV_EXTENSION_101_SPEC_VERSION=0;
      VK_NV_EXTENSION_101_EXTENSION_NAME='VK_NV_extension_101';
      VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION=1;
      VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME='VK_EXT_conservative_rasterization';
      VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION=1;
      VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME='VK_EXT_depth_clip_enable';
      VK_NV_EXTENSION_104_SPEC_VERSION=0;
      VK_NV_EXTENSION_104_EXTENSION_NAME='VK_NV_extension_104';
      VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION=4;
      VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME='VK_EXT_swapchain_colorspace';
      VK_EXT_HDR_METADATA_SPEC_VERSION=2;
      VK_EXT_HDR_METADATA_EXTENSION_NAME='VK_EXT_hdr_metadata';
      VK_IMG_EXTENSION_107_SPEC_VERSION=0;
      VK_IMG_EXTENSION_107_EXTENSION_NAME='VK_IMG_extension_107';
      VK_IMG_EXTENSION_108_SPEC_VERSION=0;
      VK_IMG_EXTENSION_108_EXTENSION_NAME='VK_IMG_extension_108';
      VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION=1;
      VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME='VK_KHR_imageless_framebuffer';
      VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION=1;
      VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME='VK_KHR_create_renderpass2';
      VK_IMG_EXTENSION_111_SPEC_VERSION=0;
      VK_IMG_EXTENSION_111_EXTENSION_NAME='VK_IMG_extension_111';
      VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION=1;
      VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME='VK_KHR_shared_presentable_image';
      VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION=1;
      VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME='VK_KHR_external_fence_capabilities';
      VK_KHR_EXTERNAL_FENCE_SPEC_VERSION=1;
      VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME='VK_KHR_external_fence';
      VK_KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION=1;
      VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME='VK_KHR_external_fence_win32';
      VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION=1;
      VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME='VK_KHR_external_fence_fd';
      VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION=1;
      VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME='VK_KHR_performance_query';
      VK_KHR_MAINTENANCE_2_SPEC_VERSION=1;
      VK_KHR_MAINTENANCE_2_EXTENSION_NAME='VK_KHR_maintenance2';
      VK_KHR_MAINTENANCE2_SPEC_VERSION=VK_KHR_MAINTENANCE_2_SPEC_VERSION;
      VK_KHR_MAINTENANCE2_EXTENSION_NAME=VK_KHR_MAINTENANCE_2_EXTENSION_NAME;
      VK_KHR_EXTENSION_119_SPEC_VERSION=0;
      VK_KHR_EXTENSION_119_EXTENSION_NAME='VK_KHR_extension_119';
      VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION=1;
      VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME='VK_KHR_get_surface_capabilities2';
      VK_KHR_VARIABLE_POINTERS_SPEC_VERSION=1;
      VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME='VK_KHR_variable_pointers';
      VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION=1;
      VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME='VK_KHR_get_display_properties2';
      VK_MVK_IOS_SURFACE_SPEC_VERSION=3;
      VK_MVK_IOS_SURFACE_EXTENSION_NAME='VK_MVK_ios_surface';
      VK_MVK_MACOS_SURFACE_SPEC_VERSION=3;
      VK_MVK_MACOS_SURFACE_EXTENSION_NAME='VK_MVK_macos_surface';
      VK_MVK_MOLTENVK_SPEC_VERSION=0;
      VK_MVK_MOLTENVK_EXTENSION_NAME='VK_MVK_moltenvk';
      VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION=1;
      VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME='VK_EXT_external_memory_dma_buf';
      VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION=1;
      VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME='VK_EXT_queue_family_foreign';
      VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION=3;
      VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME='VK_KHR_dedicated_allocation';
      VK_EXT_DEBUG_UTILS_SPEC_VERSION=2;
      VK_EXT_DEBUG_UTILS_EXTENSION_NAME='VK_EXT_debug_utils';
      VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION=5;
      VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME='VK_ANDROID_external_memory_android_hardware_buffer';
      VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION=2;
      VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME='VK_EXT_sampler_filter_minmax';
      VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION=1;
      VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME='VK_KHR_storage_buffer_storage_class';
      VK_AMD_GPU_SHADER_INT16_SPEC_VERSION=2;
      VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME='VK_AMD_gpu_shader_int16';
      VK_AMD_EXTENSION_134_SPEC_VERSION=0;
      VK_AMD_EXTENSION_134_EXTENSION_NAME='VK_AMD_extension_134';
      VK_AMDX_SHADER_ENQUEUE_SPEC_VERSION=1;
      VK_AMDX_SHADER_ENQUEUE_EXTENSION_NAME='VK_AMDX_shader_enqueue';
      VK_AMD_EXTENSION_136_SPEC_VERSION=0;
      VK_AMD_EXTENSION_136_EXTENSION_NAME='VK_AMD_extension_136';
      VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION=1;
      VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME='VK_AMD_mixed_attachment_samples';
      VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION=1;
      VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME='VK_AMD_shader_fragment_mask';
      VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION=1;
      VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME='VK_EXT_inline_uniform_block';
      VK_AMD_EXTENSION_140_SPEC_VERSION=0;
      VK_AMD_EXTENSION_140_EXTENSION_NAME='VK_AMD_extension_140';
      VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION=1;
      VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME='VK_EXT_shader_stencil_export';
      VK_AMD_EXTENSION_142_SPEC_VERSION=0;
      VK_AMD_EXTENSION_142_EXTENSION_NAME='VK_AMD_extension_142';
      VK_AMD_EXTENSION_143_SPEC_VERSION=0;
      VK_AMD_EXTENSION_143_EXTENSION_NAME='VK_AMD_extension_143';
      VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION=1;
      VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME='VK_EXT_sample_locations';
      VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION=1;
      VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME='VK_KHR_relaxed_block_layout';
      VK_RESERVED_DO_NOT_USE_146_SPEC_VERSION=1;
      VK_RESERVED_DO_NOT_USE_146_EXTENSION_NAME='VK_RESERVED_do_not_use_146';
      VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION=1;
      VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME='VK_KHR_get_memory_requirements2';
      VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION=1;
      VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME='VK_KHR_image_format_list';
      VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION=2;
      VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME='VK_EXT_blend_operation_advanced';
      VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION=1;
      VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME='VK_NV_fragment_coverage_to_color';
      VK_KHR_ACCELERATION_STRUCTURE_SPEC_VERSION=13;
      VK_KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME='VK_KHR_acceleration_structure';
      VK_KHR_RAY_TRACING_PIPELINE_SPEC_VERSION=1;
      VK_KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME='VK_KHR_ray_tracing_pipeline';
      VK_KHR_RAY_QUERY_SPEC_VERSION=1;
      VK_KHR_RAY_QUERY_EXTENSION_NAME='VK_KHR_ray_query';
      VK_NV_EXTENSION_152_SPEC_VERSION=0;
      VK_NV_EXTENSION_152_EXTENSION_NAME='VK_NV_extension_152';
      VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION=1;
      VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME='VK_NV_framebuffer_mixed_samples';
      VK_NV_FILL_RECTANGLE_SPEC_VERSION=1;
      VK_NV_FILL_RECTANGLE_EXTENSION_NAME='VK_NV_fill_rectangle';
      VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION=1;
      VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME='VK_NV_shader_sm_builtins';
      VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION=1;
      VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME='VK_EXT_post_depth_coverage';
      VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION=14;
      VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME='VK_KHR_sampler_ycbcr_conversion';
      VK_KHR_BIND_MEMORY_2_SPEC_VERSION=1;
      VK_KHR_BIND_MEMORY_2_EXTENSION_NAME='VK_KHR_bind_memory2';
      VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION=2;
      VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME='VK_EXT_image_drm_format_modifier';
      VK_EXT_EXTENSION_160_SPEC_VERSION=0;
      VK_EXT_EXTENSION_160_EXTENSION_NAME='VK_EXT_extension_160';
      VK_EXT_VALIDATION_CACHE_SPEC_VERSION=1;
      VK_EXT_VALIDATION_CACHE_EXTENSION_NAME='VK_EXT_validation_cache';
      VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION=2;
      VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME='VK_EXT_descriptor_indexing';
      VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION=1;
      VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME='VK_EXT_shader_viewport_index_layer';
      VK_KHR_PORTABILITY_SUBSET_SPEC_VERSION=1;
      VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME='VK_KHR_portability_subset';
      VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION=3;
      VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME='VK_NV_shading_rate_image';
      VK_NV_RAY_TRACING_SPEC_VERSION=3;
      VK_NV_RAY_TRACING_EXTENSION_NAME='VK_NV_ray_tracing';
      VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION=2;
      VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME='VK_NV_representative_fragment_test';
      VK_NV_EXTENSION_168_SPEC_VERSION=0;
      VK_NV_EXTENSION_168_EXTENSION_NAME='VK_NV_extension_168';
      VK_KHR_MAINTENANCE_3_SPEC_VERSION=1;
      VK_KHR_MAINTENANCE_3_EXTENSION_NAME='VK_KHR_maintenance3';
      VK_KHR_MAINTENANCE3_SPEC_VERSION=VK_KHR_MAINTENANCE_3_SPEC_VERSION;
      VK_KHR_MAINTENANCE3_EXTENSION_NAME=VK_KHR_MAINTENANCE_3_EXTENSION_NAME;
      VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION=1;
      VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME='VK_KHR_draw_indirect_count';
      VK_EXT_FILTER_CUBIC_SPEC_VERSION=3;
      VK_EXT_FILTER_CUBIC_EXTENSION_NAME='VK_EXT_filter_cubic';
      VK_QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION=4;
      VK_QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME='VK_QCOM_render_pass_shader_resolve';
      VK_QCOM_EXTENSION_173_SPEC_VERSION=0;
      VK_QCOM_EXTENSION_173_EXTENSION_NAME='VK_QCOM_extension_173';
      VK_QCOM_EXTENSION_174_SPEC_VERSION=0;
      VK_QCOM_EXTENSION_174_EXTENSION_NAME='VK_QCOM_extension_174';
      VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION=2;
      VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME='VK_EXT_global_priority';
      VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION=1;
      VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME='VK_KHR_shader_subgroup_extended_types';
      VK_EXT_EXTENSION_177_SPEC_VERSION=0;
      VK_EXT_EXTENSION_177_EXTENSION_NAME='VK_EXT_extension_177';
      VK_KHR_8BIT_STORAGE_SPEC_VERSION=1;
      VK_KHR_8BIT_STORAGE_EXTENSION_NAME='VK_KHR_8bit_storage';
      VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION=1;
      VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME='VK_EXT_external_memory_host';
      VK_AMD_BUFFER_MARKER_SPEC_VERSION=1;
      VK_AMD_BUFFER_MARKER_EXTENSION_NAME='VK_AMD_buffer_marker';
      VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION=1;
      VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME='VK_KHR_shader_atomic_int64';
      VK_KHR_SHADER_CLOCK_SPEC_VERSION=1;
      VK_KHR_SHADER_CLOCK_EXTENSION_NAME='VK_KHR_shader_clock';
      VK_AMD_EXTENSION_183_SPEC_VERSION=0;
      VK_AMD_EXTENSION_183_EXTENSION_NAME='VK_AMD_extension_183';
      VK_AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION=1;
      VK_AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME='VK_AMD_pipeline_compiler_control';
      VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION=2;
      VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME='VK_EXT_calibrated_timestamps';
      VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION=2;
      VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME='VK_AMD_shader_core_properties';
      VK_AMD_EXTENSION_187_SPEC_VERSION=0;
      VK_AMD_EXTENSION_187_EXTENSION_NAME='VK_AMD_extension_187';
      VK_KHR_VIDEO_DECODE_H265_SPEC_VERSION=7;
      VK_KHR_VIDEO_DECODE_H265_EXTENSION_NAME='VK_KHR_video_decode_h265';
      VK_KHR_GLOBAL_PRIORITY_SPEC_VERSION=1;
      VK_KHR_GLOBAL_PRIORITY_EXTENSION_NAME='VK_KHR_global_priority';
      VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION=1;
      VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME='VK_AMD_memory_overallocation_behavior';
      VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION=3;
      VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME='VK_EXT_vertex_attribute_divisor';
      VK_GGP_FRAME_TOKEN_SPEC_VERSION=1;
      VK_GGP_FRAME_TOKEN_EXTENSION_NAME='VK_GGP_frame_token';
      VK_EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION=1;
      VK_EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME='VK_EXT_pipeline_creation_feedback';
      VK_GOOGLE_EXTENSION_194_SPEC_VERSION=0;
      VK_GOOGLE_EXTENSION_194_EXTENSION_NAME='VK_GOOGLE_extension_194';
      VK_GOOGLE_EXTENSION_195_SPEC_VERSION=0;
      VK_GOOGLE_EXTENSION_195_EXTENSION_NAME='VK_GOOGLE_extension_195';
      VK_GOOGLE_EXTENSION_196_SPEC_VERSION=0;
      VK_GOOGLE_EXTENSION_196_EXTENSION_NAME='VK_GOOGLE_extension_196';
      VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION=1;
      VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME='VK_KHR_driver_properties';
      VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION=4;
      VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME='VK_KHR_shader_float_controls';
      VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION=1;
      VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME='VK_NV_shader_subgroup_partitioned';
      VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION=1;
      VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME='VK_KHR_depth_stencil_resolve';
      VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION=1;
      VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME='VK_KHR_swapchain_mutable_format';
      VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION=1;
      VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME='VK_NV_compute_shader_derivatives';
      VK_NV_MESH_SHADER_SPEC_VERSION=1;
      VK_NV_MESH_SHADER_EXTENSION_NAME='VK_NV_mesh_shader';
      VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION=1;
      VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME='VK_NV_fragment_shader_barycentric';
      VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION=2;
      VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME='VK_NV_shader_image_footprint';
      VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION=2;
      VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME='VK_NV_scissor_exclusive';
      VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION=2;
      VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME='VK_NV_device_diagnostic_checkpoints';
      VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION=2;
      VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME='VK_KHR_timeline_semaphore';
      VK_KHR_EXTENSION_209_SPEC_VERSION=0;
      VK_KHR_EXTENSION_209_EXTENSION_NAME='VK_KHR_extension_209';
      VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION=1;
      VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME='VK_INTEL_shader_integer_functions2';
      VK_INTEL_PERFORMANCE_QUERY_SPEC_VERSION=2;
      VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME='VK_INTEL_performance_query';
      VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION=3;
      VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME='VK_KHR_vulkan_memory_model';
      VK_EXT_PCI_BUS_INFO_SPEC_VERSION=2;
      VK_EXT_PCI_BUS_INFO_EXTENSION_NAME='VK_EXT_pci_bus_info';
      VK_AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION=1;
      VK_AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME='VK_AMD_display_native_hdr';
      VK_FUCHSIA_IMAGEPIPE_SURFACE_SPEC_VERSION=1;
      VK_FUCHSIA_IMAGEPIPE_SURFACE_EXTENSION_NAME='VK_FUCHSIA_imagepipe_surface';
      VK_KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION=1;
      VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME='VK_KHR_shader_terminate_invocation';
      VK_GOOGLE_EXTENSION_217_SPEC_VERSION=0;
      VK_GOOGLE_EXTENSION_217_EXTENSION_NAME='VK_GOOGLE_extension_217';
      VK_EXT_METAL_SURFACE_SPEC_VERSION=1;
      VK_EXT_METAL_SURFACE_EXTENSION_NAME='VK_EXT_metal_surface';
      VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION=2;
      VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME='VK_EXT_fragment_density_map';
      VK_EXT_EXTENSION_220_SPEC_VERSION=0;
      VK_EXT_EXTENSION_220_EXTENSION_NAME='VK_EXT_extension_220';
      VK_KHR_EXTENSION_221_SPEC_VERSION=0;
      VK_KHR_EXTENSION_221_EXTENSION_NAME='VK_KHR_extension_221';
      VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION=1;
      VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME='VK_EXT_scalar_block_layout';
      VK_EXT_EXTENSION_223_SPEC_VERSION=0;
      VK_EXT_EXTENSION_223_EXTENSION_NAME='VK_EXT_extension_223';
      VK_GOOGLE_HLSL_FUNCTIONALITY_1_SPEC_VERSION=1;
      VK_GOOGLE_HLSL_FUNCTIONALITY_1_EXTENSION_NAME='VK_GOOGLE_hlsl_functionality1';
      VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION=VK_GOOGLE_HLSL_FUNCTIONALITY_1_SPEC_VERSION;
      VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME=VK_GOOGLE_HLSL_FUNCTIONALITY_1_EXTENSION_NAME;
      VK_GOOGLE_DECORATE_STRING_SPEC_VERSION=1;
      VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME='VK_GOOGLE_decorate_string';
      VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION=2;
      VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME='VK_EXT_subgroup_size_control';
      VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION=2;
      VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME='VK_KHR_fragment_shading_rate';
      VK_AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION=1;
      VK_AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME='VK_AMD_shader_core_properties2';
      VK_AMD_EXTENSION_229_SPEC_VERSION=0;
      VK_AMD_EXTENSION_229_EXTENSION_NAME='VK_AMD_extension_229';
      VK_AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION=1;
      VK_AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME='VK_AMD_device_coherent_memory';
      VK_AMD_EXTENSION_231_SPEC_VERSION=0;
      VK_AMD_EXTENSION_231_EXTENSION_NAME='VK_AMD_extension_231';
      VK_AMD_EXTENSION_232_SPEC_VERSION=0;
      VK_AMD_EXTENSION_232_EXTENSION_NAME='VK_AMD_extension_232';
      VK_AMD_EXTENSION_233_SPEC_VERSION=0;
      VK_AMD_EXTENSION_233_EXTENSION_NAME='VK_AMD_extension_233';
      VK_AMD_EXTENSION_234_SPEC_VERSION=0;
      VK_AMD_EXTENSION_234_EXTENSION_NAME='VK_AMD_extension_234';
      VK_EXT_SHADER_IMAGE_ATOMIC_INT64_SPEC_VERSION=1;
      VK_EXT_SHADER_IMAGE_ATOMIC_INT64_EXTENSION_NAME='VK_EXT_shader_image_atomic_int64';
      VK_AMD_EXTENSION_236_SPEC_VERSION=0;
      VK_AMD_EXTENSION_236_EXTENSION_NAME='VK_AMD_extension_236';
      VK_KHR_SPIRV_1_4_SPEC_VERSION=1;
      VK_KHR_SPIRV_1_4_EXTENSION_NAME='VK_KHR_spirv_1_4';
      VK_EXT_MEMORY_BUDGET_SPEC_VERSION=1;
      VK_EXT_MEMORY_BUDGET_EXTENSION_NAME='VK_EXT_memory_budget';
      VK_EXT_MEMORY_PRIORITY_SPEC_VERSION=1;
      VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME='VK_EXT_memory_priority';
      VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION=1;
      VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME='VK_KHR_surface_protected_capabilities';
      VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION=1;
      VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME='VK_NV_dedicated_allocation_image_aliasing';
      VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION=1;
      VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME='VK_KHR_separate_depth_stencil_layouts';
      VK_INTEL_EXTENSION_243_SPEC_VERSION=0;
      VK_INTEL_EXTENSION_243_EXTENSION_NAME='VK_INTEL_extension_243';
      VK_MESA_EXTENSION_244_SPEC_VERSION=0;
      VK_MESA_EXTENSION_244_EXTENSION_NAME='VK_MESA_extension_244';
      VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION=2;
      VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME='VK_EXT_buffer_device_address';
      VK_EXT_TOOLING_INFO_SPEC_VERSION=1;
      VK_EXT_TOOLING_INFO_EXTENSION_NAME='VK_EXT_tooling_info';
      VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION=1;
      VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME='VK_EXT_separate_stencil_usage';
      VK_EXT_VALIDATION_FEATURES_SPEC_VERSION=5;
      VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME='VK_EXT_validation_features';
      VK_KHR_PRESENT_WAIT_SPEC_VERSION=1;
      VK_KHR_PRESENT_WAIT_EXTENSION_NAME='VK_KHR_present_wait';
      VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION=1;
      VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME='VK_NV_cooperative_matrix';
      VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION=1;
      VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME='VK_NV_coverage_reduction_mode';
      VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION=1;
      VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME='VK_EXT_fragment_shader_interlock';
      VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION=1;
      VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME='VK_EXT_ycbcr_image_arrays';
      VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION=1;
      VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME='VK_KHR_uniform_buffer_standard_layout';
      VK_EXT_PROVOKING_VERTEX_SPEC_VERSION=1;
      VK_EXT_PROVOKING_VERTEX_EXTENSION_NAME='VK_EXT_provoking_vertex';
      VK_EXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSION=4;
      VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME='VK_EXT_full_screen_exclusive';
      VK_EXT_HEADLESS_SURFACE_SPEC_VERSION=1;
      VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME='VK_EXT_headless_surface';
      VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION=1;
      VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME='VK_KHR_buffer_device_address';
      VK_EXT_EXTENSION_259_SPEC_VERSION=0;
      VK_EXT_EXTENSION_259_EXTENSION_NAME='VK_EXT_extension_259';
      VK_EXT_LINE_RASTERIZATION_SPEC_VERSION=1;
      VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME='VK_EXT_line_rasterization';
      VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION=1;
      VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME='VK_EXT_shader_atomic_float';
      VK_EXT_HOST_QUERY_RESET_SPEC_VERSION=1;
      VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME='VK_EXT_host_query_reset';
      VK_GGP_EXTENSION_263_SPEC_VERSION=0;
      VK_GGP_EXTENSION_263_EXTENSION_NAME='VK_GGP_extension_263';
      VK_BRCM_EXTENSION_264_SPEC_VERSION=0;
      VK_BRCM_EXTENSION_264_EXTENSION_NAME='VK_BRCM_extension_264';
      VK_BRCM_EXTENSION_265_SPEC_VERSION=0;
      VK_BRCM_EXTENSION_265_EXTENSION_NAME='VK_BRCM_extension_265';
      VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION=1;
      VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME='VK_EXT_index_type_uint8';
      VK_EXT_EXTENSION_267_SPEC_VERSION=0;
      VK_EXT_EXTENSION_267_EXTENSION_NAME='VK_EXT_extension_267';
      VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION=1;
      VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME='VK_EXT_extended_dynamic_state';
      VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION=4;
      VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME='VK_KHR_deferred_host_operations';
      VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION=1;
      VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME='VK_KHR_pipeline_executable_properties';
      VK_EXT_HOST_IMAGE_COPY_SPEC_VERSION=1;
      VK_EXT_HOST_IMAGE_COPY_EXTENSION_NAME='VK_EXT_host_image_copy';
      VK_KHR_MAP_MEMORY_2_SPEC_VERSION=1;
      VK_KHR_MAP_MEMORY_2_EXTENSION_NAME='VK_KHR_map_memory2';
      VK_INTEL_EXTENSION_273_SPEC_VERSION=0;
      VK_INTEL_EXTENSION_273_EXTENSION_NAME='VK_INTEL_extension_273';
      VK_EXT_SHADER_ATOMIC_FLOAT_2_SPEC_VERSION=1;
      VK_EXT_SHADER_ATOMIC_FLOAT_2_EXTENSION_NAME='VK_EXT_shader_atomic_float2';
      VK_EXT_SURFACE_MAINTENANCE_1_SPEC_VERSION=1;
      VK_EXT_SURFACE_MAINTENANCE_1_EXTENSION_NAME='VK_EXT_surface_maintenance1';
      VK_EXT_SWAPCHAIN_MAINTENANCE_1_SPEC_VERSION=1;
      VK_EXT_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME='VK_EXT_swapchain_maintenance1';
      VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION=1;
      VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME='VK_EXT_shader_demote_to_helper_invocation';
      VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION=3;
      VK_NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME='VK_NV_device_generated_commands';
      VK_NV_INHERITED_VIEWPORT_SCISSOR_SPEC_VERSION=1;
      VK_NV_INHERITED_VIEWPORT_SCISSOR_EXTENSION_NAME='VK_NV_inherited_viewport_scissor';
      VK_KHR_EXTENSION_280_SPEC_VERSION=0;
      VK_KHR_EXTENSION_280_EXTENSION_NAME='VK_KHR_extension_280';
      VK_KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION=1;
      VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME='VK_KHR_shader_integer_dot_product';
      VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION=1;
      VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME='VK_EXT_texel_buffer_alignment';
      VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION=3;
      VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME='VK_QCOM_render_pass_transform';
      VK_EXT_DEPTH_BIAS_CONTROL_SPEC_VERSION=1;
      VK_EXT_DEPTH_BIAS_CONTROL_EXTENSION_NAME='VK_EXT_depth_bias_control';
      VK_EXT_DEVICE_MEMORY_REPORT_SPEC_VERSION=2;
      VK_EXT_DEVICE_MEMORY_REPORT_EXTENSION_NAME='VK_EXT_device_memory_report';
      VK_EXT_ACQUIRE_DRM_DISPLAY_SPEC_VERSION=1;
      VK_EXT_ACQUIRE_DRM_DISPLAY_EXTENSION_NAME='VK_EXT_acquire_drm_display';
      VK_EXT_ROBUSTNESS_2_SPEC_VERSION=1;
      VK_EXT_ROBUSTNESS_2_EXTENSION_NAME='VK_EXT_robustness2';
      VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION=12;
      VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME='VK_EXT_custom_border_color';
      VK_EXT_EXTENSION_289_SPEC_VERSION=0;
      VK_EXT_EXTENSION_289_EXTENSION_NAME='VK_EXT_extension_289';
      VK_GOOGLE_USER_TYPE_SPEC_VERSION=1;
      VK_GOOGLE_USER_TYPE_EXTENSION_NAME='VK_GOOGLE_user_type';
      VK_KHR_PIPELINE_LIBRARY_SPEC_VERSION=1;
      VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME='VK_KHR_pipeline_library';
      VK_NV_EXTENSION_292_SPEC_VERSION=0;
      VK_NV_EXTENSION_292_EXTENSION_NAME='VK_NV_extension_292';
      VK_NV_PRESENT_BARRIER_SPEC_VERSION=1;
      VK_NV_PRESENT_BARRIER_EXTENSION_NAME='VK_NV_present_barrier';
      VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION=1;
      VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME='VK_KHR_shader_non_semantic_info';
      VK_KHR_PRESENT_ID_SPEC_VERSION=1;
      VK_KHR_PRESENT_ID_EXTENSION_NAME='VK_KHR_present_id';
      VK_EXT_PRIVATE_DATA_SPEC_VERSION=1;
      VK_EXT_PRIVATE_DATA_EXTENSION_NAME='VK_EXT_private_data';
      VK_KHR_EXTENSION_297_SPEC_VERSION=0;
      VK_KHR_EXTENSION_297_EXTENSION_NAME='VK_KHR_extension_297';
      VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION=3;
      VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME='VK_EXT_pipeline_creation_cache_control';
      VK_KHR_EXTENSION_299_SPEC_VERSION=0;
      VK_KHR_EXTENSION_299_EXTENSION_NAME='VK_KHR_extension_299';
      VK_KHR_VIDEO_ENCODE_QUEUE_SPEC_VERSION=10;
      VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME='VK_KHR_video_encode_queue';
      VK_NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION=2;
      VK_NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME='VK_NV_device_diagnostics_config';
      VK_QCOM_RENDER_PASS_STORE_OPS_SPEC_VERSION=2;
      VK_QCOM_RENDER_PASS_STORE_OPS_EXTENSION_NAME='VK_QCOM_render_pass_store_ops';
      VK_QCOM_EXTENSION_303_SPEC_VERSION=0;
      VK_QCOM_EXTENSION_303_EXTENSION_NAME='VK_QCOM_extension_303';
      VK_QCOM_EXTENSION_304_SPEC_VERSION=0;
      VK_QCOM_EXTENSION_304_EXTENSION_NAME='VK_QCOM_extension_304';
      VK_QCOM_EXTENSION_305_SPEC_VERSION=0;
      VK_QCOM_EXTENSION_305_EXTENSION_NAME='VK_QCOM_extension_305';
      VK_QCOM_EXTENSION_306_SPEC_VERSION=0;
      VK_QCOM_EXTENSION_306_EXTENSION_NAME='VK_QCOM_extension_306';
      VK_QCOM_EXTENSION_307_SPEC_VERSION=0;
      VK_QCOM_EXTENSION_307_EXTENSION_NAME='VK_QCOM_extension_307';
      VK_NV_EXTENSION_308_SPEC_VERSION=0;
      VK_NV_EXTENSION_308_EXTENSION_NAME='VK_NV_extension_308';
      VK_KHR_OBJECT_REFRESH_SPEC_VERSION=1;
      VK_KHR_OBJECT_REFRESH_EXTENSION_NAME='VK_KHR_object_refresh';
      VK_QCOM_EXTENSION_310_SPEC_VERSION=0;
      VK_QCOM_EXTENSION_310_EXTENSION_NAME='VK_QCOM_extension_310';
      VK_NV_LOW_LATENCY_SPEC_VERSION=1;
      VK_NV_LOW_LATENCY_EXTENSION_NAME='VK_NV_low_latency';
      VK_EXT_METAL_OBJECTS_SPEC_VERSION=1;
      VK_EXT_METAL_OBJECTS_EXTENSION_NAME='VK_EXT_metal_objects';
      VK_EXT_EXTENSION_313_SPEC_VERSION=0;
      VK_EXT_EXTENSION_313_EXTENSION_NAME='VK_EXT_extension_313';
      VK_AMD_EXTENSION_314_SPEC_VERSION=0;
      VK_AMD_EXTENSION_314_EXTENSION_NAME='VK_AMD_extension_314';
      VK_KHR_SYNCHRONIZATION_2_SPEC_VERSION=1;
      VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME='VK_KHR_synchronization2';
      VK_AMD_EXTENSION_316_SPEC_VERSION=0;
      VK_AMD_EXTENSION_316_EXTENSION_NAME='VK_AMD_extension_316';
      VK_EXT_DESCRIPTOR_BUFFER_SPEC_VERSION=1;
      VK_EXT_DESCRIPTOR_BUFFER_EXTENSION_NAME='VK_EXT_descriptor_buffer';
      VK_AMD_EXTENSION_318_SPEC_VERSION=0;
      VK_AMD_EXTENSION_318_EXTENSION_NAME='VK_AMD_extension_318';
      VK_AMD_EXTENSION_319_SPEC_VERSION=0;
      VK_AMD_EXTENSION_319_EXTENSION_NAME='VK_AMD_extension_319';
      VK_AMD_EXTENSION_320_SPEC_VERSION=0;
      VK_AMD_EXTENSION_320_EXTENSION_NAME='VK_AMD_extension_320';
      VK_EXT_GRAPHICS_PIPELINE_LIBRARY_SPEC_VERSION=1;
      VK_EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME='VK_EXT_graphics_pipeline_library';
      VK_AMD_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_SPEC_VERSION=1;
      VK_AMD_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_EXTENSION_NAME='VK_AMD_shader_early_and_late_fragment_tests';
      VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION=1;
      VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME='VK_KHR_fragment_shader_barycentric';
      VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_SPEC_VERSION=1;
      VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME='VK_KHR_shader_subgroup_uniform_control_flow';
      VK_KHR_EXTENSION_325_SPEC_VERSION=0;
      VK_KHR_EXTENSION_325_EXTENSION_NAME='VK_KHR_extension_325';
      VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_SPEC_VERSION=1;
      VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME='VK_KHR_zero_initialize_workgroup_memory';
      VK_NV_FRAGMENT_SHADING_RATE_ENUMS_SPEC_VERSION=1;
      VK_NV_FRAGMENT_SHADING_RATE_ENUMS_EXTENSION_NAME='VK_NV_fragment_shading_rate_enums';
      VK_NV_RAY_TRACING_MOTION_BLUR_SPEC_VERSION=1;
      VK_NV_RAY_TRACING_MOTION_BLUR_EXTENSION_NAME='VK_NV_ray_tracing_motion_blur';
      VK_EXT_MESH_SHADER_SPEC_VERSION=1;
      VK_EXT_MESH_SHADER_EXTENSION_NAME='VK_EXT_mesh_shader';
      VK_NV_EXTENSION_330_SPEC_VERSION=0;
      VK_NV_EXTENSION_330_EXTENSION_NAME='VK_NV_extension_330';
      VK_EXT_YCBCR_2PLANE_444_FORMATS_SPEC_VERSION=1;
      VK_EXT_YCBCR_2PLANE_444_FORMATS_EXTENSION_NAME='VK_EXT_ycbcr_2plane_444_formats';
      VK_NV_EXTENSION_332_SPEC_VERSION=0;
      VK_NV_EXTENSION_332_EXTENSION_NAME='VK_NV_extension_332';
      VK_EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION=1;
      VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME='VK_EXT_fragment_density_map2';
      VK_QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION=1;
      VK_QCOM_ROTATED_COPY_COMMANDS_EXTENSION_NAME='VK_QCOM_rotated_copy_commands';
      VK_KHR_EXTENSION_335_SPEC_VERSION=0;
      VK_KHR_EXTENSION_335_EXTENSION_NAME='VK_KHR_extension_335';
      VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION=1;
      VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME='VK_EXT_image_robustness';
      VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_SPEC_VERSION=1;
      VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME='VK_KHR_workgroup_memory_explicit_layout';
      VK_KHR_COPY_COMMANDS_2_SPEC_VERSION=1;
      VK_KHR_COPY_COMMANDS_2_EXTENSION_NAME='VK_KHR_copy_commands2';
      VK_EXT_IMAGE_COMPRESSION_CONTROL_SPEC_VERSION=1;
      VK_EXT_IMAGE_COMPRESSION_CONTROL_EXTENSION_NAME='VK_EXT_image_compression_control';
      VK_EXT_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_SPEC_VERSION=2;
      VK_EXT_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_EXTENSION_NAME='VK_EXT_attachment_feedback_loop_layout';
      VK_EXT_4444_FORMATS_SPEC_VERSION=1;
      VK_EXT_4444_FORMATS_EXTENSION_NAME='VK_EXT_4444_formats';
      VK_EXT_DEVICE_FAULT_SPEC_VERSION=2;
      VK_EXT_DEVICE_FAULT_EXTENSION_NAME='VK_EXT_device_fault';
      VK_ARM_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_SPEC_VERSION=1;
      VK_ARM_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_EXTENSION_NAME='VK_ARM_rasterization_order_attachment_access';
      VK_ARM_EXTENSION_344_SPEC_VERSION=0;
      VK_ARM_EXTENSION_344_EXTENSION_NAME='VK_ARM_extension_344';
      VK_EXT_RGBA10X6_FORMATS_SPEC_VERSION=1;
      VK_EXT_RGBA10X6_FORMATS_EXTENSION_NAME='VK_EXT_rgba10x6_formats';
      VK_NV_ACQUIRE_WINRT_DISPLAY_SPEC_VERSION=1;
      VK_NV_ACQUIRE_WINRT_DISPLAY_EXTENSION_NAME='VK_NV_acquire_winrt_display';
      VK_EXT_DIRECTFB_SURFACE_SPEC_VERSION=1;
      VK_EXT_DIRECTFB_SURFACE_EXTENSION_NAME='VK_EXT_directfb_surface';
      VK_KHR_EXTENSION_350_SPEC_VERSION=0;
      VK_KHR_EXTENSION_350_EXTENSION_NAME='VK_KHR_extension_350';
      VK_NV_EXTENSION_351_SPEC_VERSION=0;
      VK_NV_EXTENSION_351_EXTENSION_NAME='VK_NV_extension_351';
      VK_VALVE_MUTABLE_DESCRIPTOR_TYPE_SPEC_VERSION=1;
      VK_VALVE_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME='VK_VALVE_mutable_descriptor_type';
      VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_SPEC_VERSION=2;
      VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME='VK_EXT_vertex_input_dynamic_state';
      VK_EXT_PHYSICAL_DEVICE_DRM_SPEC_VERSION=1;
      VK_EXT_PHYSICAL_DEVICE_DRM_EXTENSION_NAME='VK_EXT_physical_device_drm';
      VK_EXT_DEVICE_ADDRESS_BINDING_REPORT_SPEC_VERSION=1;
      VK_EXT_DEVICE_ADDRESS_BINDING_REPORT_EXTENSION_NAME='VK_EXT_device_address_binding_report';
      VK_EXT_DEPTH_CLIP_CONTROL_SPEC_VERSION=1;
      VK_EXT_DEPTH_CLIP_CONTROL_EXTENSION_NAME='VK_EXT_depth_clip_control';
      VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_SPEC_VERSION=1;
      VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_EXTENSION_NAME='VK_EXT_primitive_topology_list_restart';
      VK_KHR_EXTENSION_358_SPEC_VERSION=0;
      VK_KHR_EXTENSION_358_EXTENSION_NAME='VK_KHR_extension_358';
      VK_EXT_EXTENSION_359_SPEC_VERSION=0;
      VK_EXT_EXTENSION_359_EXTENSION_NAME='VK_EXT_extension_359';
      VK_EXT_EXTENSION_360_SPEC_VERSION=0;
      VK_EXT_EXTENSION_360_EXTENSION_NAME='VK_EXT_extension_360';
      VK_KHR_FORMAT_FEATURE_FLAGS_2_SPEC_VERSION=2;
      VK_KHR_FORMAT_FEATURE_FLAGS_2_EXTENSION_NAME='VK_KHR_format_feature_flags2';
      VK_EXT_EXTENSION_362_SPEC_VERSION=0;
      VK_EXT_EXTENSION_362_EXTENSION_NAME='VK_EXT_extension_362';
      VK_EXT_EXTENSION_363_SPEC_VERSION=0;
      VK_EXT_EXTENSION_363_EXTENSION_NAME='VK_EXT_extension_363';
      VK_FUCHSIA_EXTENSION_364_SPEC_VERSION=0;
      VK_FUCHSIA_EXTENSION_364_EXTENSION_NAME='VK_FUCHSIA_extension_364';
      VK_FUCHSIA_EXTERNAL_MEMORY_SPEC_VERSION=1;
      VK_FUCHSIA_EXTERNAL_MEMORY_EXTENSION_NAME='VK_FUCHSIA_external_memory';
      VK_FUCHSIA_EXTERNAL_SEMAPHORE_SPEC_VERSION=1;
      VK_FUCHSIA_EXTERNAL_SEMAPHORE_EXTENSION_NAME='VK_FUCHSIA_external_semaphore';
      VK_FUCHSIA_BUFFER_COLLECTION_SPEC_VERSION=2;
      VK_FUCHSIA_BUFFER_COLLECTION_EXTENSION_NAME='VK_FUCHSIA_buffer_collection';
      VK_FUCHSIA_EXTENSION_368_SPEC_VERSION=0;
      VK_FUCHSIA_EXTENSION_368_EXTENSION_NAME='VK_FUCHSIA_extension_368';
      VK_QCOM_EXTENSION_369_SPEC_VERSION=0;
      VK_QCOM_EXTENSION_369_EXTENSION_NAME='VK_QCOM_extension_369';
      VK_HUAWEI_SUBPASS_SHADING_SPEC_VERSION=3;
      VK_HUAWEI_SUBPASS_SHADING_EXTENSION_NAME='VK_HUAWEI_subpass_shading';
      VK_HUAWEI_INVOCATION_MASK_SPEC_VERSION=1;
      VK_HUAWEI_INVOCATION_MASK_EXTENSION_NAME='VK_HUAWEI_invocation_mask';
      VK_NV_EXTERNAL_MEMORY_RDMA_SPEC_VERSION=1;
      VK_NV_EXTERNAL_MEMORY_RDMA_EXTENSION_NAME='VK_NV_external_memory_rdma';
      VK_EXT_PIPELINE_PROPERTIES_SPEC_VERSION=1;
      VK_EXT_PIPELINE_PROPERTIES_EXTENSION_NAME='VK_EXT_pipeline_properties';
      VK_NV_EXTERNAL_SCI_SYNC_SPEC_VERSION=2;
      VK_NV_EXTERNAL_SCI_SYNC_EXTENSION_NAME='VK_NV_external_sci_sync';
      VK_NV_EXTERNAL_MEMORY_SCI_BUF_SPEC_VERSION=2;
      VK_NV_EXTERNAL_MEMORY_SCI_BUF_EXTENSION_NAME='VK_NV_external_memory_sci_buf';
      VK_EXT_FRAME_BOUNDARY_SPEC_VERSION=1;
      VK_EXT_FRAME_BOUNDARY_EXTENSION_NAME='VK_EXT_frame_boundary';
      VK_EXT_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_SPEC_VERSION=1;
      VK_EXT_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_EXTENSION_NAME='VK_EXT_multisampled_render_to_single_sampled';
      VK_EXT_EXTENDED_DYNAMIC_STATE_2_SPEC_VERSION=1;
      VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME='VK_EXT_extended_dynamic_state2';
      VK_QNX_SCREEN_SURFACE_SPEC_VERSION=1;
      VK_QNX_SCREEN_SURFACE_EXTENSION_NAME='VK_QNX_screen_surface';
      VK_KHR_EXTENSION_380_SPEC_VERSION=0;
      VK_KHR_EXTENSION_380_EXTENSION_NAME='VK_KHR_extension_380';
      VK_KHR_EXTENSION_381_SPEC_VERSION=0;
      VK_KHR_EXTENSION_381_EXTENSION_NAME='VK_KHR_extension_381';
      VK_EXT_COLOR_WRITE_ENABLE_SPEC_VERSION=1;
      VK_EXT_COLOR_WRITE_ENABLE_EXTENSION_NAME='VK_EXT_color_write_enable';
      VK_EXT_PRIMITIVES_GENERATED_QUERY_SPEC_VERSION=1;
      VK_EXT_PRIMITIVES_GENERATED_QUERY_EXTENSION_NAME='VK_EXT_primitives_generated_query';
      VK_EXT_EXTENSION_384_SPEC_VERSION=0;
      VK_EXT_EXTENSION_384_EXTENSION_NAME='VK_EXT_extension_384';
      VK_MESA_EXTENSION_385_SPEC_VERSION=0;
      VK_MESA_EXTENSION_385_EXTENSION_NAME='VK_MESA_extension_385';
      VK_GOOGLE_EXTENSION_386_SPEC_VERSION=0;
      VK_GOOGLE_EXTENSION_386_EXTENSION_NAME='VK_GOOGLE_extension_386';
      VK_KHR_RAY_TRACING_MAINTENANCE_1_SPEC_VERSION=1;
      VK_KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME='VK_KHR_ray_tracing_maintenance1';
      VK_EXT_EXTENSION_388_SPEC_VERSION=0;
      VK_EXT_EXTENSION_388_EXTENSION_NAME='VK_EXT_extension_388';
      VK_EXT_GLOBAL_PRIORITY_QUERY_SPEC_VERSION=1;
      VK_EXT_GLOBAL_PRIORITY_QUERY_EXTENSION_NAME='VK_EXT_global_priority_query';
      VK_EXT_EXTENSION_390_SPEC_VERSION=0;
      VK_EXT_EXTENSION_390_EXTENSION_NAME='VK_EXT_extension_390';
      VK_EXT_EXTENSION_391_SPEC_VERSION=0;
      VK_EXT_EXTENSION_391_EXTENSION_NAME='VK_EXT_extension_391';
      VK_EXT_IMAGE_VIEW_MIN_LOD_SPEC_VERSION=1;
      VK_EXT_IMAGE_VIEW_MIN_LOD_EXTENSION_NAME='VK_EXT_image_view_min_lod';
      VK_EXT_MULTI_DRAW_SPEC_VERSION=1;
      VK_EXT_MULTI_DRAW_EXTENSION_NAME='VK_EXT_multi_draw';
      VK_EXT_IMAGE_2D_VIEW_OF_3D_SPEC_VERSION=1;
      VK_EXT_IMAGE_2D_VIEW_OF_3D_EXTENSION_NAME='VK_EXT_image_2d_view_of_3d';
      VK_KHR_PORTABILITY_ENUMERATION_SPEC_VERSION=1;
      VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME='VK_KHR_portability_enumeration';
      VK_EXT_SHADER_TILE_IMAGE_SPEC_VERSION=1;
      VK_EXT_SHADER_TILE_IMAGE_EXTENSION_NAME='VK_EXT_shader_tile_image';
      VK_EXT_OPACITY_MICROMAP_SPEC_VERSION=2;
      VK_EXT_OPACITY_MICROMAP_EXTENSION_NAME='VK_EXT_opacity_micromap';
      VK_NV_DISPLACEMENT_MICROMAP_SPEC_VERSION=2;
      VK_NV_DISPLACEMENT_MICROMAP_EXTENSION_NAME='VK_NV_displacement_micromap';
      VK_JUICE_EXTENSION_399_SPEC_VERSION=0;
      VK_JUICE_EXTENSION_399_EXTENSION_NAME='VK_JUICE_extension_399';
      VK_JUICE_EXTENSION_400_SPEC_VERSION=0;
      VK_JUICE_EXTENSION_400_EXTENSION_NAME='VK_JUICE_extension_400';
      VK_EXT_LOAD_STORE_OP_NONE_SPEC_VERSION=1;
      VK_EXT_LOAD_STORE_OP_NONE_EXTENSION_NAME='VK_EXT_load_store_op_none';
      VK_FB_EXTENSION_402_SPEC_VERSION=0;
      VK_FB_EXTENSION_402_EXTENSION_NAME='VK_FB_extension_402';
      VK_FB_EXTENSION_403_SPEC_VERSION=0;
      VK_FB_EXTENSION_403_EXTENSION_NAME='VK_FB_extension_403';
      VK_FB_EXTENSION_404_SPEC_VERSION=0;
      VK_FB_EXTENSION_404_EXTENSION_NAME='VK_FB_extension_404';
      VK_HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION=2;
      VK_HUAWEI_CLUSTER_CULLING_SHADER_EXTENSION_NAME='VK_HUAWEI_cluster_culling_shader';
      VK_HUAWEI_EXTENSION_406_SPEC_VERSION=0;
      VK_HUAWEI_EXTENSION_406_EXTENSION_NAME='VK_HUAWEI_extension_406';
      VK_GGP_EXTENSION_407_SPEC_VERSION=0;
      VK_GGP_EXTENSION_407_EXTENSION_NAME='VK_GGP_extension_407';
      VK_GGP_EXTENSION_408_SPEC_VERSION=0;
      VK_GGP_EXTENSION_408_EXTENSION_NAME='VK_GGP_extension_408';
      VK_GGP_EXTENSION_409_SPEC_VERSION=0;
      VK_GGP_EXTENSION_409_EXTENSION_NAME='VK_GGP_extension_409';
      VK_GGP_EXTENSION_410_SPEC_VERSION=0;
      VK_GGP_EXTENSION_410_EXTENSION_NAME='VK_GGP_extension_410';
      VK_GGP_EXTENSION_411_SPEC_VERSION=0;
      VK_GGP_EXTENSION_411_EXTENSION_NAME='VK_GGP_extension_411';
      VK_EXT_BORDER_COLOR_SWIZZLE_SPEC_VERSION=1;
      VK_EXT_BORDER_COLOR_SWIZZLE_EXTENSION_NAME='VK_EXT_border_color_swizzle';
      VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_SPEC_VERSION=1;
      VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_EXTENSION_NAME='VK_EXT_pageable_device_local_memory';
      VK_KHR_MAINTENANCE_4_SPEC_VERSION=2;
      VK_KHR_MAINTENANCE_4_EXTENSION_NAME='VK_KHR_maintenance4';
      VK_HUAWEI_EXTENSION_415_SPEC_VERSION=0;
      VK_HUAWEI_EXTENSION_415_EXTENSION_NAME='VK_HUAWEI_extension_415';
      VK_ARM_SHADER_CORE_PROPERTIES_SPEC_VERSION=1;
      VK_ARM_SHADER_CORE_PROPERTIES_EXTENSION_NAME='VK_ARM_shader_core_properties';
      VK_KHR_EXTENSION_417_SPEC_VERSION=0;
      VK_KHR_EXTENSION_417_EXTENSION_NAME='VK_KHR_extension_417';
      VK_ARM_EXTENSION_418_SPEC_VERSION=0;
      VK_ARM_EXTENSION_418_EXTENSION_NAME='VK_ARM_extension_418';
      VK_EXT_IMAGE_SLICED_VIEW_OF_3D_SPEC_VERSION=1;
      VK_EXT_IMAGE_SLICED_VIEW_OF_3D_EXTENSION_NAME='VK_EXT_image_sliced_view_of_3d';
      VK_EXT_EXTENSION_420_SPEC_VERSION=0;
      VK_EXT_EXTENSION_420_EXTENSION_NAME='VK_EXT_extension_420';
      VK_VALVE_DESCRIPTOR_SET_HOST_MAPPING_SPEC_VERSION=1;
      VK_VALVE_DESCRIPTOR_SET_HOST_MAPPING_EXTENSION_NAME='VK_VALVE_descriptor_set_host_mapping';
      VK_EXT_DEPTH_CLAMP_ZERO_ONE_SPEC_VERSION=1;
      VK_EXT_DEPTH_CLAMP_ZERO_ONE_EXTENSION_NAME='VK_EXT_depth_clamp_zero_one';
      VK_EXT_NON_SEAMLESS_CUBE_MAP_SPEC_VERSION=1;
      VK_EXT_NON_SEAMLESS_CUBE_MAP_EXTENSION_NAME='VK_EXT_non_seamless_cube_map';
      VK_ARM_EXTENSION_424_SPEC_VERSION=0;
      VK_ARM_EXTENSION_424_EXTENSION_NAME='VK_ARM_extension_424';
      VK_ARM_EXTENSION_425_SPEC_VERSION=0;
      VK_ARM_EXTENSION_425_EXTENSION_NAME='VK_ARM_extension_425';
      VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION=1;
      VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME='VK_QCOM_fragment_density_map_offset';
      VK_NV_COPY_MEMORY_INDIRECT_SPEC_VERSION=1;
      VK_NV_COPY_MEMORY_INDIRECT_EXTENSION_NAME='VK_NV_copy_memory_indirect';
      VK_NV_MEMORY_DECOMPRESSION_SPEC_VERSION=1;
      VK_NV_MEMORY_DECOMPRESSION_EXTENSION_NAME='VK_NV_memory_decompression';
      VK_NV_DEVICE_GENERATED_COMMANDS_COMPUTE_SPEC_VERSION=2;
      VK_NV_DEVICE_GENERATED_COMMANDS_COMPUTE_EXTENSION_NAME='VK_NV_device_generated_commands_compute';
      VK_NV_EXTENSION_430_SPEC_VERSION=0;
      VK_NV_EXTENSION_430_EXTENSION_NAME='VK_NV_extension_430';
      VK_NV_LINEAR_COLOR_ATTACHMENT_SPEC_VERSION=1;
      VK_NV_LINEAR_COLOR_ATTACHMENT_EXTENSION_NAME='VK_NV_linear_color_attachment';
      VK_NV_EXTENSION_432_SPEC_VERSION=0;
      VK_NV_EXTENSION_432_EXTENSION_NAME='VK_NV_extension_432';
      VK_NV_EXTENSION_433_SPEC_VERSION=0;
      VK_NV_EXTENSION_433_EXTENSION_NAME='VK_NV_extension_433';
      VK_GOOGLE_SURFACELESS_QUERY_SPEC_VERSION=2;
      VK_GOOGLE_SURFACELESS_QUERY_EXTENSION_NAME='VK_GOOGLE_surfaceless_query';
      VK_KHR_EXTENSION_435_SPEC_VERSION=0;
      VK_KHR_EXTENSION_435_EXTENSION_NAME='VK_KHR_extension_435';
      VK_EXT_APPLICATION_PARAMETERS_SPEC_VERSION=1;
      VK_EXT_APPLICATION_PARAMETERS_EXTENSION_NAME='VK_EXT_application_parameters';
      VK_EXT_EXTENSION_437_SPEC_VERSION=0;
      VK_EXT_EXTENSION_437_EXTENSION_NAME='VK_EXT_extension_437';
      VK_EXT_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_SPEC_VERSION=1;
      VK_EXT_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_EXTENSION_NAME='VK_EXT_image_compression_control_swapchain';
      VK_SEC_EXTENSION_439_SPEC_VERSION=0;
      VK_SEC_EXTENSION_439_EXTENSION_NAME='VK_SEC_extension_439';
      VK_QCOM_EXTENSION_440_SPEC_VERSION=0;
      VK_QCOM_EXTENSION_440_EXTENSION_NAME='VK_QCOM_extension_440';
      VK_QCOM_IMAGE_PROCESSING_SPEC_VERSION=1;
      VK_QCOM_IMAGE_PROCESSING_EXTENSION_NAME='VK_QCOM_image_processing';
      VK_COREAVI_EXTENSION_442_SPEC_VERSION=0;
      VK_COREAVI_EXTENSION_442_EXTENSION_NAME='VK_COREAVI_extension_442';
      VK_COREAVI_EXTENSION_443_SPEC_VERSION=0;
      VK_COREAVI_EXTENSION_443_EXTENSION_NAME='VK_COREAVI_extension_443';
      VK_COREAVI_EXTENSION_444_SPEC_VERSION=0;
      VK_COREAVI_EXTENSION_444_EXTENSION_NAME='VK_COREAVI_extension_444';
      VK_COREAVI_EXTENSION_445_SPEC_VERSION=0;
      VK_COREAVI_EXTENSION_445_EXTENSION_NAME='VK_COREAVI_extension_445';
      VK_COREAVI_EXTENSION_446_SPEC_VERSION=0;
      VK_COREAVI_EXTENSION_446_EXTENSION_NAME='VK_COREAVI_extension_446';
      VK_COREAVI_EXTENSION_447_SPEC_VERSION=0;
      VK_COREAVI_EXTENSION_447_EXTENSION_NAME='VK_COREAVI_extension_447';
      VK_SEC_EXTENSION_448_SPEC_VERSION=0;
      VK_SEC_EXTENSION_448_EXTENSION_NAME='VK_SEC_extension_448';
      VK_SEC_EXTENSION_449_SPEC_VERSION=0;
      VK_SEC_EXTENSION_449_EXTENSION_NAME='VK_SEC_extension_449';
      VK_SEC_EXTENSION_450_SPEC_VERSION=0;
      VK_SEC_EXTENSION_450_EXTENSION_NAME='VK_SEC_extension_450';
      VK_SEC_EXTENSION_451_SPEC_VERSION=0;
      VK_SEC_EXTENSION_451_EXTENSION_NAME='VK_SEC_extension_451';
      VK_NV_EXTENSION_452_SPEC_VERSION=0;
      VK_NV_EXTENSION_452_EXTENSION_NAME='VK_NV_extension_452';
      VK_ARM_EXTENSION_453_SPEC_VERSION=0;
      VK_ARM_EXTENSION_453_EXTENSION_NAME='VK_ARM_extension_453';
      VK_EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_SPEC_VERSION=1;
      VK_EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXTENSION_NAME='VK_EXT_external_memory_acquire_unmodified';
      VK_GOOGLE_EXTENSION_455_SPEC_VERSION=0;
      VK_GOOGLE_EXTENSION_455_EXTENSION_NAME='VK_GOOGLE_extension_455';
      VK_EXT_EXTENDED_DYNAMIC_STATE_3_SPEC_VERSION=2;
      VK_EXT_EXTENDED_DYNAMIC_STATE_3_EXTENSION_NAME='VK_EXT_extended_dynamic_state3';
      VK_EXT_EXTENSION_457_SPEC_VERSION=0;
      VK_EXT_EXTENSION_457_EXTENSION_NAME='VK_EXT_extension_457';
      VK_EXT_EXTENSION_458_SPEC_VERSION=0;
      VK_EXT_EXTENSION_458_EXTENSION_NAME='VK_EXT_extension_458';
      VK_EXT_SUBPASS_MERGE_FEEDBACK_SPEC_VERSION=2;
      VK_EXT_SUBPASS_MERGE_FEEDBACK_EXTENSION_NAME='VK_EXT_subpass_merge_feedback';
      VK_LUNARG_DIRECT_DRIVER_LOADING_SPEC_VERSION=1;
      VK_LUNARG_DIRECT_DRIVER_LOADING_EXTENSION_NAME='VK_LUNARG_direct_driver_loading';
      VK_EXT_EXTENSION_461_SPEC_VERSION=0;
      VK_EXT_EXTENSION_461_EXTENSION_NAME='VK_EXT_extension_461';
      VK_EXT_EXTENSION_462_SPEC_VERSION=0;
      VK_EXT_EXTENSION_462_EXTENSION_NAME='VK_EXT_extension_462';
      VK_EXT_SHADER_MODULE_IDENTIFIER_SPEC_VERSION=1;
      VK_EXT_SHADER_MODULE_IDENTIFIER_EXTENSION_NAME='VK_EXT_shader_module_identifier';
      VK_EXT_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_SPEC_VERSION=1;
      VK_EXT_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_EXTENSION_NAME='VK_EXT_rasterization_order_attachment_access';
      VK_NV_OPTICAL_FLOW_SPEC_VERSION=1;
      VK_NV_OPTICAL_FLOW_EXTENSION_NAME='VK_NV_optical_flow';
      VK_EXT_LEGACY_DITHERING_SPEC_VERSION=1;
      VK_EXT_LEGACY_DITHERING_EXTENSION_NAME='VK_EXT_legacy_dithering';
      VK_EXT_PIPELINE_PROTECTED_ACCESS_SPEC_VERSION=1;
      VK_EXT_PIPELINE_PROTECTED_ACCESS_EXTENSION_NAME='VK_EXT_pipeline_protected_access';
      VK_EXT_EXTENSION_468_SPEC_VERSION=0;
      VK_EXT_EXTENSION_468_EXTENSION_NAME='VK_EXT_extension_468';
      VK_ANDROID_EXTERNAL_FORMAT_RESOLVE_SPEC_VERSION=1;
      VK_ANDROID_EXTERNAL_FORMAT_RESOLVE_EXTENSION_NAME='VK_ANDROID_external_format_resolve';
      VK_AMD_EXTENSION_470_SPEC_VERSION=0;
      VK_AMD_EXTENSION_470_EXTENSION_NAME='VK_AMD_extension_470';
      VK_KHR_MAINTENANCE_5_SPEC_VERSION=1;
      VK_KHR_MAINTENANCE_5_EXTENSION_NAME='VK_KHR_maintenance5';
      VK_AMD_EXTENSION_472_SPEC_VERSION=0;
      VK_AMD_EXTENSION_472_EXTENSION_NAME='VK_AMD_extension_472';
      VK_AMD_EXTENSION_473_SPEC_VERSION=0;
      VK_AMD_EXTENSION_473_EXTENSION_NAME='VK_AMD_extension_473';
      VK_AMD_EXTENSION_474_SPEC_VERSION=0;
      VK_AMD_EXTENSION_474_EXTENSION_NAME='VK_AMD_extension_474';
      VK_AMD_EXTENSION_475_SPEC_VERSION=0;
      VK_AMD_EXTENSION_475_EXTENSION_NAME='VK_AMD_extension_475';
      VK_AMD_EXTENSION_476_SPEC_VERSION=0;
      VK_AMD_EXTENSION_476_EXTENSION_NAME='VK_AMD_extension_476';
      VK_AMD_EXTENSION_477_SPEC_VERSION=0;
      VK_AMD_EXTENSION_477_EXTENSION_NAME='VK_AMD_extension_477';
      VK_AMD_EXTENSION_478_SPEC_VERSION=0;
      VK_AMD_EXTENSION_478_EXTENSION_NAME='VK_AMD_extension_478';
      VK_AMD_EXTENSION_479_SPEC_VERSION=0;
      VK_AMD_EXTENSION_479_EXTENSION_NAME='VK_AMD_extension_479';
      VK_EXT_EXTENSION_480_SPEC_VERSION=0;
      VK_EXT_EXTENSION_480_EXTENSION_NAME='VK_EXT_extension_480';
      VK_EXT_EXTENSION_481_SPEC_VERSION=0;
      VK_EXT_EXTENSION_481_EXTENSION_NAME='VK_EXT_extension_481';
      VK_KHR_RAY_TRACING_POSITION_FETCH_SPEC_VERSION=1;
      VK_KHR_RAY_TRACING_POSITION_FETCH_EXTENSION_NAME='VK_KHR_ray_tracing_position_fetch';
      VK_EXT_SHADER_OBJECT_SPEC_VERSION=1;
      VK_EXT_SHADER_OBJECT_EXTENSION_NAME='VK_EXT_shader_object';
      VK_EXT_EXTENSION_484_SPEC_VERSION=0;
      VK_EXT_EXTENSION_484_EXTENSION_NAME='VK_EXT_extension_484';
      VK_QCOM_TILE_PROPERTIES_SPEC_VERSION=1;
      VK_QCOM_TILE_PROPERTIES_EXTENSION_NAME='VK_QCOM_tile_properties';
      VK_SEC_AMIGO_PROFILING_SPEC_VERSION=1;
      VK_SEC_AMIGO_PROFILING_EXTENSION_NAME='VK_SEC_amigo_profiling';
      VK_EXT_EXTENSION_487_SPEC_VERSION=0;
      VK_EXT_EXTENSION_487_EXTENSION_NAME='VK_EXT_extension_487';
      VK_EXT_EXTENSION_488_SPEC_VERSION=0;
      VK_EXT_EXTENSION_488_EXTENSION_NAME='VK_EXT_extension_488';
      VK_QCOM_MULTIVIEW_PER_VIEW_VIEWPORTS_SPEC_VERSION=1;
      VK_QCOM_MULTIVIEW_PER_VIEW_VIEWPORTS_EXTENSION_NAME='VK_QCOM_multiview_per_view_viewports';
      VK_NV_EXTERNAL_SCI_SYNC_2_SPEC_VERSION=1;
      VK_NV_EXTERNAL_SCI_SYNC_2_EXTENSION_NAME='VK_NV_external_sci_sync2';
      VK_NV_RAY_TRACING_INVOCATION_REORDER_SPEC_VERSION=1;
      VK_NV_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME='VK_NV_ray_tracing_invocation_reorder';
      VK_NV_EXTENSION_492_SPEC_VERSION=0;
      VK_NV_EXTENSION_492_EXTENSION_NAME='VK_NV_extension_492';
      VK_NV_EXTENSION_493_SPEC_VERSION=0;
      VK_NV_EXTENSION_493_EXTENSION_NAME='VK_NV_extension_493';
      VK_NV_EXTENSION_494_SPEC_VERSION=0;
      VK_NV_EXTENSION_494_EXTENSION_NAME='VK_NV_extension_494';
      VK_EXT_MUTABLE_DESCRIPTOR_TYPE_SPEC_VERSION=1;
      VK_EXT_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME='VK_EXT_mutable_descriptor_type';
      VK_EXT_EXTENSION_496_SPEC_VERSION=0;
      VK_EXT_EXTENSION_496_EXTENSION_NAME='VK_EXT_extension_496';
      VK_EXT_EXTENSION_497_SPEC_VERSION=0;
      VK_EXT_EXTENSION_497_EXTENSION_NAME='VK_EXT_extension_497';
      VK_ARM_SHADER_CORE_BUILTINS_SPEC_VERSION=2;
      VK_ARM_SHADER_CORE_BUILTINS_EXTENSION_NAME='VK_ARM_shader_core_builtins';
      VK_EXT_PIPELINE_LIBRARY_GROUP_HANDLES_SPEC_VERSION=1;
      VK_EXT_PIPELINE_LIBRARY_GROUP_HANDLES_EXTENSION_NAME='VK_EXT_pipeline_library_group_handles';
      VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_SPEC_VERSION=1;
      VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_EXTENSION_NAME='VK_EXT_dynamic_rendering_unused_attachments';
      VK_EXT_EXTENSION_501_SPEC_VERSION=0;
      VK_EXT_EXTENSION_501_EXTENSION_NAME='VK_EXT_extension_501';
      VK_EXT_EXTENSION_502_SPEC_VERSION=0;
      VK_EXT_EXTENSION_502_EXTENSION_NAME='VK_EXT_extension_502';
      VK_EXT_EXTENSION_503_SPEC_VERSION=0;
      VK_EXT_EXTENSION_503_EXTENSION_NAME='VK_EXT_extension_503';
      VK_NV_EXTENSION_504_SPEC_VERSION=0;
      VK_NV_EXTENSION_504_EXTENSION_NAME='VK_NV_extension_504';
      VK_EXT_EXTENSION_505_SPEC_VERSION=0;
      VK_EXT_EXTENSION_505_EXTENSION_NAME='VK_EXT_extension_505';
      VK_NV_LOW_LATENCY_2_SPEC_VERSION=1;
      VK_NV_LOW_LATENCY_2_EXTENSION_NAME='VK_NV_low_latency2';
      VK_KHR_COOPERATIVE_MATRIX_SPEC_VERSION=2;
      VK_KHR_COOPERATIVE_MATRIX_EXTENSION_NAME='VK_KHR_cooperative_matrix';
      VK_EXT_EXTENSION_508_SPEC_VERSION=0;
      VK_EXT_EXTENSION_508_EXTENSION_NAME='VK_EXT_extension_508';
      VK_EXT_EXTENSION_509_SPEC_VERSION=0;
      VK_EXT_EXTENSION_509_EXTENSION_NAME='VK_EXT_extension_509';
      VK_MESA_EXTENSION_510_SPEC_VERSION=0;
      VK_MESA_EXTENSION_510_EXTENSION_NAME='VK_MESA_extension_510';
      VK_QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_SPEC_VERSION=1;
      VK_QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_EXTENSION_NAME='VK_QCOM_multiview_per_view_render_areas';
      VK_EXT_EXTENSION_512_SPEC_VERSION=0;
      VK_EXT_EXTENSION_512_EXTENSION_NAME='VK_EXT_extension_512';
      VK_KHR_EXTENSION_513_SPEC_VERSION=0;
      VK_KHR_EXTENSION_513_EXTENSION_NAME='VK_KHR_extension_513';
      VK_KHR_EXTENSION_514_SPEC_VERSION=0;
      VK_KHR_EXTENSION_514_EXTENSION_NAME='VK_KHR_extension_514';
      VK_KHR_EXTENSION_515_SPEC_VERSION=0;
      VK_KHR_EXTENSION_515_EXTENSION_NAME='VK_KHR_extension_515';
      VK_KHR_EXTENSION_516_SPEC_VERSION=0;
      VK_KHR_EXTENSION_516_EXTENSION_NAME='VK_KHR_extension_516';
      VK_EXT_EXTENSION_517_SPEC_VERSION=0;
      VK_EXT_EXTENSION_517_EXTENSION_NAME='VK_EXT_extension_517';
      VK_MESA_EXTENSION_518_SPEC_VERSION=0;
      VK_MESA_EXTENSION_518_EXTENSION_NAME='VK_MESA_extension_518';
      VK_QCOM_IMAGE_PROCESSING_2_SPEC_VERSION=1;
      VK_QCOM_IMAGE_PROCESSING_2_EXTENSION_NAME='VK_QCOM_image_processing2';
      VK_QCOM_FILTER_CUBIC_WEIGHTS_SPEC_VERSION=1;
      VK_QCOM_FILTER_CUBIC_WEIGHTS_EXTENSION_NAME='VK_QCOM_filter_cubic_weights';
      VK_QCOM_YCBCR_DEGAMMA_SPEC_VERSION=1;
      VK_QCOM_YCBCR_DEGAMMA_EXTENSION_NAME='VK_QCOM_ycbcr_degamma';
      VK_QCOM_FILTER_CUBIC_CLAMP_SPEC_VERSION=1;
      VK_QCOM_FILTER_CUBIC_CLAMP_EXTENSION_NAME='VK_QCOM_filter_cubic_clamp';
      VK_EXT_EXTENSION_523_SPEC_VERSION=0;
      VK_EXT_EXTENSION_523_EXTENSION_NAME='VK_EXT_extension_523';
      VK_EXT_EXTENSION_524_SPEC_VERSION=0;
      VK_EXT_EXTENSION_524_EXTENSION_NAME='VK_EXT_extension_524';
      VK_EXT_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_SPEC_VERSION=1;
      VK_EXT_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_EXTENSION_NAME='VK_EXT_attachment_feedback_loop_dynamic_state';
      VK_EXT_EXTENSION_526_SPEC_VERSION=0;
      VK_EXT_EXTENSION_526_EXTENSION_NAME='VK_EXT_extension_526';
      VK_EXT_EXTENSION_527_SPEC_VERSION=0;
      VK_EXT_EXTENSION_527_EXTENSION_NAME='VK_EXT_extension_527';
      VK_EXT_EXTENSION_528_SPEC_VERSION=0;
      VK_EXT_EXTENSION_528_EXTENSION_NAME='VK_EXT_extension_528';
      VK_KHR_EXTENSION_529_SPEC_VERSION=0;
      VK_KHR_EXTENSION_529_EXTENSION_NAME='VK_KHR_extension_529';
      VK_QNX_EXTERNAL_MEMORY_SCREEN_BUFFER_SPEC_VERSION=1;
      VK_QNX_EXTERNAL_MEMORY_SCREEN_BUFFER_EXTENSION_NAME='VK_QNX_external_memory_screen_buffer';
      VK_MSFT_LAYERED_DRIVER_SPEC_VERSION=1;
      VK_MSFT_LAYERED_DRIVER_EXTENSION_NAME='VK_MSFT_layered_driver';
      VK_KHR_EXTENSION_532_SPEC_VERSION=0;
      VK_KHR_EXTENSION_532_EXTENSION_NAME='VK_KHR_extension_532';
      VK_EXT_EXTENSION_533_SPEC_VERSION=0;
      VK_EXT_EXTENSION_533_EXTENSION_NAME='VK_EXT_extension_533';
      VK_KHR_EXTENSION_534_SPEC_VERSION=0;
      VK_KHR_EXTENSION_534_EXTENSION_NAME='VK_KHR_extension_534';
      VK_KHR_EXTENSION_535_SPEC_VERSION=0;
      VK_KHR_EXTENSION_535_EXTENSION_NAME='VK_KHR_extension_535';
      VK_QCOM_EXTENSION_536_SPEC_VERSION=0;
      VK_QCOM_EXTENSION_536_EXTENSION_NAME='VK_QCOM_extension_536';
      VK_EXT_EXTENSION_537_SPEC_VERSION=0;
      VK_EXT_EXTENSION_537_EXTENSION_NAME='VK_EXT_extension_537';
      VK_EXT_EXTENSION_538_SPEC_VERSION=0;
      VK_EXT_EXTENSION_538_EXTENSION_NAME='VK_EXT_extension_538';
      VK_EXT_EXTENSION_539_SPEC_VERSION=0;
      VK_EXT_EXTENSION_539_EXTENSION_NAME='VK_EXT_extension_539';
      VK_EXT_EXTENSION_540_SPEC_VERSION=0;
      VK_EXT_EXTENSION_540_EXTENSION_NAME='VK_EXT_extension_540';
      VK_EXT_EXTENSION_541_SPEC_VERSION=0;
      VK_EXT_EXTENSION_541_EXTENSION_NAME='VK_EXT_extension_541';
      VK_EXT_EXTENSION_542_SPEC_VERSION=0;
      VK_EXT_EXTENSION_542_EXTENSION_NAME='VK_EXT_extension_542';
      VK_EXT_EXTENSION_543_SPEC_VERSION=0;
      VK_EXT_EXTENSION_543_EXTENSION_NAME='VK_EXT_extension_543';
      VK_KHR_EXTENSION_544_SPEC_VERSION=0;
      VK_KHR_EXTENSION_544_EXTENSION_NAME='VK_KHR_extension_544';
      VK_KHR_EXTENSION_545_SPEC_VERSION=0;
      VK_KHR_EXTENSION_545_EXTENSION_NAME='VK_KHR_extension_545';
      VK_KHR_EXTENSION_546_SPEC_VERSION=0;
      VK_KHR_EXTENSION_546_EXTENSION_NAME='VK_KHR_extension_546';
      VK_NV_DESCRIPTOR_POOL_OVERALLOCATION_SPEC_VERSION=1;
      VK_NV_DESCRIPTOR_POOL_OVERALLOCATION_EXTENSION_NAME='VK_NV_descriptor_pool_overallocation';
      VK_QCOM_EXTENSION_548_SPEC_VERSION=0;
      VK_QCOM_EXTENSION_548_EXTENSION_NAME='VK_QCOM_extension_548';
      VK_NV_EXTENSION_549_SPEC_VERSION=0;
      VK_NV_EXTENSION_549_EXTENSION_NAME='VK_NV_extension_549';

type PPVkDispatchableHandle=^PVkDispatchableHandle;
     PVkDispatchableHandle=^TVkDispatchableHandle;
     TVkDispatchableHandle=TVkPtrInt;

     PPVkNonDispatchableHandle=^PVkNonDispatchableHandle;
     PVkNonDispatchableHandle=^TVkNonDispatchableHandle;
     TVkNonDispatchableHandle=TVkUInt64;

     PPVkEnum=^PVkEnum;
     PVkEnum=^TVkEnum;
     TVkEnum=TVkInt32;

{$ifdef Windows}
     PPVkHINSTANCE=^PVkHINSTANCE;
     PVkHINSTANCE=^TVkHINSTANCE;
     TVkHINSTANCE=TVkPtrUInt;

     PPVkHWND=^PVkHWND;
     PVkHWND=^TVkHWND;
     TVkHWND=HWND;

     PPVkHMONITOR=^PVkHMONITOR;
     PVkHMONITOR=^TVkHMONITOR;
     TVkHMONITOR=HMONITOR;
{$endif}

     PPANativeWindow=^PANativeWindow;
     PANativeWindow=^TANativeWindow;
     TANativeWindow=TVkNonDefinedType;

     PPAHardwareBuffer=^PAHardwareBuffer;
     PAHardwareBuffer=^TAHardwareBuffer;
     TAHardwareBuffer=TVkNonDefinedType;

{$ifdef Metal}
     PPCAMetalLayer=^PCAMetalLayer;
     PCAMetalLayer=^TCAMetalLayer;
     TCAMetalLayer=TVkNonDefinedType;
{$endif}

{$ifdef Metal}
     PPMTLDevice_id=^PMTLDevice_id;
     PMTLDevice_id=^TMTLDevice_id;
     TMTLDevice_id=TVkNonDefinedType;
{$endif}

{$ifdef Metal}
     PPMTLCommandQueue_id=^PMTLCommandQueue_id;
     PMTLCommandQueue_id=^TMTLCommandQueue_id;
     TMTLCommandQueue_id=TVkNonDefinedType;
{$endif}

{$ifdef Metal}
     PPMTLBuffer_id=^PMTLBuffer_id;
     PMTLBuffer_id=^TMTLBuffer_id;
     TMTLBuffer_id=TVkNonDefinedType;
{$endif}

{$ifdef Metal}
     PPMTLTexture_id=^PMTLTexture_id;
     PMTLTexture_id=^TMTLTexture_id;
     TMTLTexture_id=TVkNonDefinedType;
{$endif}

{$ifdef Metal}
     PPMTLSharedEvent_id=^PMTLSharedEvent_id;
     PMTLSharedEvent_id=^TMTLSharedEvent_id;
     TMTLSharedEvent_id=TVkNonDefinedType;
{$endif}

     PPIOSurfaceRef=^PIOSurfaceRef;
     PIOSurfaceRef=^TIOSurfaceRef;
     TIOSurfaceRef=TVkNonDefinedType;

     PPVkSampleMask=^PVkSampleMask;
     PVkSampleMask=^TVkSampleMask;
     TVkSampleMask=TVkUInt32;

     PPVkBool32=^PVkBool32;
     PVkBool32=^TVkBool32;
     TVkBool32=TVkUInt32;

     PPVkFlags=^PVkFlags;
     PVkFlags=^TVkFlags;
     TVkFlags=TVkUInt32;

     PPVkFlags64=^PVkFlags64;
     PVkFlags64=^TVkFlags64;
     TVkFlags64=TVkUInt64;

     PPVkDeviceSize=^PVkDeviceSize;
     PVkDeviceSize=^TVkDeviceSize;
     TVkDeviceSize=TVkUInt64;

     PPVkDeviceAddress=^PVkDeviceAddress;
     PVkDeviceAddress=^TVkDeviceAddress;
     TVkDeviceAddress=TVkUInt64;

     PPVkRemoteAddressNV=^PVkRemoteAddressNV;
     PVkRemoteAddressNV=^TVkRemoteAddressNV;
     TVkRemoteAddressNV=TVkVoid;

     PPVkFramebufferCreateFlags=^PVkFramebufferCreateFlags;
     PVkFramebufferCreateFlags=^TVkFramebufferCreateFlags;
     TVkFramebufferCreateFlags=TVkFlags;

     PPVkQueryPoolCreateFlags=^PVkQueryPoolCreateFlags;
     PVkQueryPoolCreateFlags=^TVkQueryPoolCreateFlags;
     TVkQueryPoolCreateFlags=TVkFlags;

     PPVkRenderPassCreateFlags=^PVkRenderPassCreateFlags;
     PVkRenderPassCreateFlags=^TVkRenderPassCreateFlags;
     TVkRenderPassCreateFlags=TVkFlags;

     PPVkSamplerCreateFlags=^PVkSamplerCreateFlags;
     PVkSamplerCreateFlags=^TVkSamplerCreateFlags;
     TVkSamplerCreateFlags=TVkFlags;

     PPVkPipelineLayoutCreateFlags=^PVkPipelineLayoutCreateFlags;
     PVkPipelineLayoutCreateFlags=^TVkPipelineLayoutCreateFlags;
     TVkPipelineLayoutCreateFlags=TVkFlags;

     PPVkPipelineCacheCreateFlags=^PVkPipelineCacheCreateFlags;
     PVkPipelineCacheCreateFlags=^TVkPipelineCacheCreateFlags;
     TVkPipelineCacheCreateFlags=TVkFlags;

     PPVkPipelineDepthStencilStateCreateFlags=^PVkPipelineDepthStencilStateCreateFlags;
     PVkPipelineDepthStencilStateCreateFlags=^TVkPipelineDepthStencilStateCreateFlags;
     TVkPipelineDepthStencilStateCreateFlags=TVkFlags;

     PPVkPipelineDynamicStateCreateFlags=^PVkPipelineDynamicStateCreateFlags;
     PVkPipelineDynamicStateCreateFlags=^TVkPipelineDynamicStateCreateFlags;
     TVkPipelineDynamicStateCreateFlags=TVkFlags;

     PPVkPipelineColorBlendStateCreateFlags=^PVkPipelineColorBlendStateCreateFlags;
     PVkPipelineColorBlendStateCreateFlags=^TVkPipelineColorBlendStateCreateFlags;
     TVkPipelineColorBlendStateCreateFlags=TVkFlags;

     PPVkPipelineMultisampleStateCreateFlags=^PVkPipelineMultisampleStateCreateFlags;
     PVkPipelineMultisampleStateCreateFlags=^TVkPipelineMultisampleStateCreateFlags;
     TVkPipelineMultisampleStateCreateFlags=TVkFlags;

     PPVkPipelineRasterizationStateCreateFlags=^PVkPipelineRasterizationStateCreateFlags;
     PVkPipelineRasterizationStateCreateFlags=^TVkPipelineRasterizationStateCreateFlags;
     TVkPipelineRasterizationStateCreateFlags=TVkFlags;

     PPVkPipelineViewportStateCreateFlags=^PVkPipelineViewportStateCreateFlags;
     PVkPipelineViewportStateCreateFlags=^TVkPipelineViewportStateCreateFlags;
     TVkPipelineViewportStateCreateFlags=TVkFlags;

     PPVkPipelineTessellationStateCreateFlags=^PVkPipelineTessellationStateCreateFlags;
     PVkPipelineTessellationStateCreateFlags=^TVkPipelineTessellationStateCreateFlags;
     TVkPipelineTessellationStateCreateFlags=TVkFlags;

     PPVkPipelineInputAssemblyStateCreateFlags=^PVkPipelineInputAssemblyStateCreateFlags;
     PVkPipelineInputAssemblyStateCreateFlags=^TVkPipelineInputAssemblyStateCreateFlags;
     TVkPipelineInputAssemblyStateCreateFlags=TVkFlags;

     PPVkPipelineVertexInputStateCreateFlags=^PVkPipelineVertexInputStateCreateFlags;
     PVkPipelineVertexInputStateCreateFlags=^TVkPipelineVertexInputStateCreateFlags;
     TVkPipelineVertexInputStateCreateFlags=TVkFlags;

     PPVkPipelineShaderStageCreateFlags=^PVkPipelineShaderStageCreateFlags;
     PVkPipelineShaderStageCreateFlags=^TVkPipelineShaderStageCreateFlags;
     TVkPipelineShaderStageCreateFlags=TVkFlags;

     PPVkDescriptorSetLayoutCreateFlags=^PVkDescriptorSetLayoutCreateFlags;
     PVkDescriptorSetLayoutCreateFlags=^TVkDescriptorSetLayoutCreateFlags;
     TVkDescriptorSetLayoutCreateFlags=TVkFlags;

     PPVkBufferViewCreateFlags=^PVkBufferViewCreateFlags;
     PVkBufferViewCreateFlags=^TVkBufferViewCreateFlags;
     TVkBufferViewCreateFlags=TVkFlags;

     PPVkInstanceCreateFlags=^PVkInstanceCreateFlags;
     PVkInstanceCreateFlags=^TVkInstanceCreateFlags;
     TVkInstanceCreateFlags=TVkFlags;

     PPVkDeviceCreateFlags=^PVkDeviceCreateFlags;
     PVkDeviceCreateFlags=^TVkDeviceCreateFlags;
     TVkDeviceCreateFlags=TVkFlags;

     PPVkDeviceQueueCreateFlags=^PVkDeviceQueueCreateFlags;
     PVkDeviceQueueCreateFlags=^TVkDeviceQueueCreateFlags;
     TVkDeviceQueueCreateFlags=TVkFlags;

     PPVkQueueFlags=^PVkQueueFlags;
     PVkQueueFlags=^TVkQueueFlags;
     TVkQueueFlags=TVkFlags;

     PPVkMemoryPropertyFlags=^PVkMemoryPropertyFlags;
     PVkMemoryPropertyFlags=^TVkMemoryPropertyFlags;
     TVkMemoryPropertyFlags=TVkFlags;

     PPVkMemoryHeapFlags=^PVkMemoryHeapFlags;
     PVkMemoryHeapFlags=^TVkMemoryHeapFlags;
     TVkMemoryHeapFlags=TVkFlags;

     PPVkAccessFlags=^PVkAccessFlags;
     PVkAccessFlags=^TVkAccessFlags;
     TVkAccessFlags=TVkFlags;

     PPVkBufferUsageFlags=^PVkBufferUsageFlags;
     PVkBufferUsageFlags=^TVkBufferUsageFlags;
     TVkBufferUsageFlags=TVkFlags;

     PPVkBufferCreateFlags=^PVkBufferCreateFlags;
     PVkBufferCreateFlags=^TVkBufferCreateFlags;
     TVkBufferCreateFlags=TVkFlags;

     PPVkShaderStageFlags=^PVkShaderStageFlags;
     PVkShaderStageFlags=^TVkShaderStageFlags;
     TVkShaderStageFlags=TVkFlags;

     PPVkImageUsageFlags=^PVkImageUsageFlags;
     PVkImageUsageFlags=^TVkImageUsageFlags;
     TVkImageUsageFlags=TVkFlags;

     PPVkImageCreateFlags=^PVkImageCreateFlags;
     PVkImageCreateFlags=^TVkImageCreateFlags;
     TVkImageCreateFlags=TVkFlags;

     PPVkImageViewCreateFlags=^PVkImageViewCreateFlags;
     PVkImageViewCreateFlags=^TVkImageViewCreateFlags;
     TVkImageViewCreateFlags=TVkFlags;

     PPVkPipelineCreateFlags=^PVkPipelineCreateFlags;
     PVkPipelineCreateFlags=^TVkPipelineCreateFlags;
     TVkPipelineCreateFlags=TVkFlags;

     PPVkColorComponentFlags=^PVkColorComponentFlags;
     PVkColorComponentFlags=^TVkColorComponentFlags;
     TVkColorComponentFlags=TVkFlags;

     PPVkFenceCreateFlags=^PVkFenceCreateFlags;
     PVkFenceCreateFlags=^TVkFenceCreateFlags;
     TVkFenceCreateFlags=TVkFlags;

     PPVkSemaphoreCreateFlags=^PVkSemaphoreCreateFlags;
     PVkSemaphoreCreateFlags=^TVkSemaphoreCreateFlags;
     TVkSemaphoreCreateFlags=TVkFlags;

     PPVkFormatFeatureFlags=^PVkFormatFeatureFlags;
     PVkFormatFeatureFlags=^TVkFormatFeatureFlags;
     TVkFormatFeatureFlags=TVkFlags;

     PPVkQueryControlFlags=^PVkQueryControlFlags;
     PVkQueryControlFlags=^TVkQueryControlFlags;
     TVkQueryControlFlags=TVkFlags;

     PPVkQueryResultFlags=^PVkQueryResultFlags;
     PVkQueryResultFlags=^TVkQueryResultFlags;
     TVkQueryResultFlags=TVkFlags;

     PPVkShaderModuleCreateFlags=^PVkShaderModuleCreateFlags;
     PVkShaderModuleCreateFlags=^TVkShaderModuleCreateFlags;
     TVkShaderModuleCreateFlags=TVkFlags;

     PPVkEventCreateFlags=^PVkEventCreateFlags;
     PVkEventCreateFlags=^TVkEventCreateFlags;
     TVkEventCreateFlags=TVkFlags;

     PPVkCommandPoolCreateFlags=^PVkCommandPoolCreateFlags;
     PVkCommandPoolCreateFlags=^TVkCommandPoolCreateFlags;
     TVkCommandPoolCreateFlags=TVkFlags;

     PPVkCommandPoolResetFlags=^PVkCommandPoolResetFlags;
     PVkCommandPoolResetFlags=^TVkCommandPoolResetFlags;
     TVkCommandPoolResetFlags=TVkFlags;

     PPVkCommandBufferResetFlags=^PVkCommandBufferResetFlags;
     PVkCommandBufferResetFlags=^TVkCommandBufferResetFlags;
     TVkCommandBufferResetFlags=TVkFlags;

     PPVkCommandBufferUsageFlags=^PVkCommandBufferUsageFlags;
     PVkCommandBufferUsageFlags=^TVkCommandBufferUsageFlags;
     TVkCommandBufferUsageFlags=TVkFlags;

     PPVkQueryPipelineStatisticFlags=^PVkQueryPipelineStatisticFlags;
     PVkQueryPipelineStatisticFlags=^TVkQueryPipelineStatisticFlags;
     TVkQueryPipelineStatisticFlags=TVkFlags;

     PPVkMemoryMapFlags=^PVkMemoryMapFlags;
     PVkMemoryMapFlags=^TVkMemoryMapFlags;
     TVkMemoryMapFlags=TVkFlags;

     PPVkMemoryUnmapFlagsKHR=^PVkMemoryUnmapFlagsKHR;
     PVkMemoryUnmapFlagsKHR=^TVkMemoryUnmapFlagsKHR;
     TVkMemoryUnmapFlagsKHR=TVkFlags;

     PPVkImageAspectFlags=^PVkImageAspectFlags;
     PVkImageAspectFlags=^TVkImageAspectFlags;
     TVkImageAspectFlags=TVkFlags;

     PPVkSparseMemoryBindFlags=^PVkSparseMemoryBindFlags;
     PVkSparseMemoryBindFlags=^TVkSparseMemoryBindFlags;
     TVkSparseMemoryBindFlags=TVkFlags;

     PPVkSparseImageFormatFlags=^PVkSparseImageFormatFlags;
     PVkSparseImageFormatFlags=^TVkSparseImageFormatFlags;
     TVkSparseImageFormatFlags=TVkFlags;

     PPVkSubpassDescriptionFlags=^PVkSubpassDescriptionFlags;
     PVkSubpassDescriptionFlags=^TVkSubpassDescriptionFlags;
     TVkSubpassDescriptionFlags=TVkFlags;

     PPVkPipelineStageFlags=^PVkPipelineStageFlags;
     PVkPipelineStageFlags=^TVkPipelineStageFlags;
     TVkPipelineStageFlags=TVkFlags;

     PPVkSampleCountFlags=^PVkSampleCountFlags;
     PVkSampleCountFlags=^TVkSampleCountFlags;
     TVkSampleCountFlags=TVkFlags;

     PPVkAttachmentDescriptionFlags=^PVkAttachmentDescriptionFlags;
     PVkAttachmentDescriptionFlags=^TVkAttachmentDescriptionFlags;
     TVkAttachmentDescriptionFlags=TVkFlags;

     PPVkStencilFaceFlags=^PVkStencilFaceFlags;
     PVkStencilFaceFlags=^TVkStencilFaceFlags;
     TVkStencilFaceFlags=TVkFlags;

     PPVkCullModeFlags=^PVkCullModeFlags;
     PVkCullModeFlags=^TVkCullModeFlags;
     TVkCullModeFlags=TVkFlags;

     PPVkDescriptorPoolCreateFlags=^PVkDescriptorPoolCreateFlags;
     PVkDescriptorPoolCreateFlags=^TVkDescriptorPoolCreateFlags;
     TVkDescriptorPoolCreateFlags=TVkFlags;

     PPVkDescriptorPoolResetFlags=^PVkDescriptorPoolResetFlags;
     PVkDescriptorPoolResetFlags=^TVkDescriptorPoolResetFlags;
     TVkDescriptorPoolResetFlags=TVkFlags;

     PPVkDependencyFlags=^PVkDependencyFlags;
     PVkDependencyFlags=^TVkDependencyFlags;
     TVkDependencyFlags=TVkFlags;

     PPVkSubgroupFeatureFlags=^PVkSubgroupFeatureFlags;
     PVkSubgroupFeatureFlags=^TVkSubgroupFeatureFlags;
     TVkSubgroupFeatureFlags=TVkFlags;

     PPVkIndirectCommandsLayoutUsageFlagsNV=^PVkIndirectCommandsLayoutUsageFlagsNV;
     PVkIndirectCommandsLayoutUsageFlagsNV=^TVkIndirectCommandsLayoutUsageFlagsNV;
     TVkIndirectCommandsLayoutUsageFlagsNV=TVkFlags;

     PPVkIndirectStateFlagsNV=^PVkIndirectStateFlagsNV;
     PVkIndirectStateFlagsNV=^TVkIndirectStateFlagsNV;
     TVkIndirectStateFlagsNV=TVkFlags;

     PPVkGeometryFlagsKHR=^PVkGeometryFlagsKHR;
     PVkGeometryFlagsKHR=^TVkGeometryFlagsKHR;
     TVkGeometryFlagsKHR=TVkFlags;

     PPVkGeometryFlagsNV=PPVkGeometryFlagsKHR;
     PVkGeometryFlagsNV=PVkGeometryFlagsKHR;
     TVkGeometryFlagsNV=TVkGeometryFlagsKHR;

     PPVkGeometryInstanceFlagsKHR=^PVkGeometryInstanceFlagsKHR;
     PVkGeometryInstanceFlagsKHR=^TVkGeometryInstanceFlagsKHR;
     TVkGeometryInstanceFlagsKHR=TVkFlags;

     PPVkGeometryInstanceFlagsNV=PPVkGeometryInstanceFlagsKHR;
     PVkGeometryInstanceFlagsNV=PVkGeometryInstanceFlagsKHR;
     TVkGeometryInstanceFlagsNV=TVkGeometryInstanceFlagsKHR;

     PPVkBuildAccelerationStructureFlagsKHR=^PVkBuildAccelerationStructureFlagsKHR;
     PVkBuildAccelerationStructureFlagsKHR=^TVkBuildAccelerationStructureFlagsKHR;
     TVkBuildAccelerationStructureFlagsKHR=TVkFlags;

     PPVkBuildAccelerationStructureFlagsNV=PPVkBuildAccelerationStructureFlagsKHR;
     PVkBuildAccelerationStructureFlagsNV=PVkBuildAccelerationStructureFlagsKHR;
     TVkBuildAccelerationStructureFlagsNV=TVkBuildAccelerationStructureFlagsKHR;

     PPVkPrivateDataSlotCreateFlags=^PVkPrivateDataSlotCreateFlags;
     PVkPrivateDataSlotCreateFlags=^TVkPrivateDataSlotCreateFlags;
     TVkPrivateDataSlotCreateFlags=TVkFlags;

     PPVkPrivateDataSlotCreateFlagsEXT=PPVkPrivateDataSlotCreateFlags;
     PVkPrivateDataSlotCreateFlagsEXT=PVkPrivateDataSlotCreateFlags;
     TVkPrivateDataSlotCreateFlagsEXT=TVkPrivateDataSlotCreateFlags;

     PPVkAccelerationStructureCreateFlagsKHR=^PVkAccelerationStructureCreateFlagsKHR;
     PVkAccelerationStructureCreateFlagsKHR=^TVkAccelerationStructureCreateFlagsKHR;
     TVkAccelerationStructureCreateFlagsKHR=TVkFlags;

     PPVkDescriptorUpdateTemplateCreateFlags=^PVkDescriptorUpdateTemplateCreateFlags;
     PVkDescriptorUpdateTemplateCreateFlags=^TVkDescriptorUpdateTemplateCreateFlags;
     TVkDescriptorUpdateTemplateCreateFlags=TVkFlags;

     PPVkDescriptorUpdateTemplateCreateFlagsKHR=PPVkDescriptorUpdateTemplateCreateFlags;
     PVkDescriptorUpdateTemplateCreateFlagsKHR=PVkDescriptorUpdateTemplateCreateFlags;
     TVkDescriptorUpdateTemplateCreateFlagsKHR=TVkDescriptorUpdateTemplateCreateFlags;

     PPVkPipelineCreationFeedbackFlags=^PVkPipelineCreationFeedbackFlags;
     PVkPipelineCreationFeedbackFlags=^TVkPipelineCreationFeedbackFlags;
     TVkPipelineCreationFeedbackFlags=TVkFlags;

     PPVkPipelineCreationFeedbackFlagsEXT=PPVkPipelineCreationFeedbackFlags;
     PVkPipelineCreationFeedbackFlagsEXT=PVkPipelineCreationFeedbackFlags;
     TVkPipelineCreationFeedbackFlagsEXT=TVkPipelineCreationFeedbackFlags;

     PPVkPerformanceCounterDescriptionFlagsKHR=^PVkPerformanceCounterDescriptionFlagsKHR;
     PVkPerformanceCounterDescriptionFlagsKHR=^TVkPerformanceCounterDescriptionFlagsKHR;
     TVkPerformanceCounterDescriptionFlagsKHR=TVkFlags;

     PPVkAcquireProfilingLockFlagsKHR=^PVkAcquireProfilingLockFlagsKHR;
     PVkAcquireProfilingLockFlagsKHR=^TVkAcquireProfilingLockFlagsKHR;
     TVkAcquireProfilingLockFlagsKHR=TVkFlags;

     PPVkSemaphoreWaitFlags=^PVkSemaphoreWaitFlags;
     PVkSemaphoreWaitFlags=^TVkSemaphoreWaitFlags;
     TVkSemaphoreWaitFlags=TVkFlags;

     PPVkSemaphoreWaitFlagsKHR=PPVkSemaphoreWaitFlags;
     PVkSemaphoreWaitFlagsKHR=PVkSemaphoreWaitFlags;
     TVkSemaphoreWaitFlagsKHR=TVkSemaphoreWaitFlags;

     PPVkPipelineCompilerControlFlagsAMD=^PVkPipelineCompilerControlFlagsAMD;
     PVkPipelineCompilerControlFlagsAMD=^TVkPipelineCompilerControlFlagsAMD;
     TVkPipelineCompilerControlFlagsAMD=TVkFlags;

     PPVkShaderCorePropertiesFlagsAMD=^PVkShaderCorePropertiesFlagsAMD;
     PVkShaderCorePropertiesFlagsAMD=^TVkShaderCorePropertiesFlagsAMD;
     TVkShaderCorePropertiesFlagsAMD=TVkFlags;

     PPVkDeviceDiagnosticsConfigFlagsNV=^PVkDeviceDiagnosticsConfigFlagsNV;
     PVkDeviceDiagnosticsConfigFlagsNV=^TVkDeviceDiagnosticsConfigFlagsNV;
     TVkDeviceDiagnosticsConfigFlagsNV=TVkFlags;

     PPVkRefreshObjectFlagsKHR=^PVkRefreshObjectFlagsKHR;
     PVkRefreshObjectFlagsKHR=^TVkRefreshObjectFlagsKHR;
     TVkRefreshObjectFlagsKHR=TVkFlags;

     PPVkAccessFlags2=^PVkAccessFlags2;
     PVkAccessFlags2=^TVkAccessFlags2;
     TVkAccessFlags2=TVkFlags64;

     PPVkAccessFlags2KHR=PPVkAccessFlags2;
     PVkAccessFlags2KHR=PVkAccessFlags2;
     TVkAccessFlags2KHR=TVkAccessFlags2;

     PPVkPipelineStageFlags2=^PVkPipelineStageFlags2;
     PVkPipelineStageFlags2=^TVkPipelineStageFlags2;
     TVkPipelineStageFlags2=TVkFlags64;

     PPVkPipelineStageFlags2KHR=PPVkPipelineStageFlags2;
     PVkPipelineStageFlags2KHR=PVkPipelineStageFlags2;
     TVkPipelineStageFlags2KHR=TVkPipelineStageFlags2;

     PPVkAccelerationStructureMotionInfoFlagsNV=^PVkAccelerationStructureMotionInfoFlagsNV;
     PVkAccelerationStructureMotionInfoFlagsNV=^TVkAccelerationStructureMotionInfoFlagsNV;
     TVkAccelerationStructureMotionInfoFlagsNV=TVkFlags;

     PPVkAccelerationStructureMotionInstanceFlagsNV=^PVkAccelerationStructureMotionInstanceFlagsNV;
     PVkAccelerationStructureMotionInstanceFlagsNV=^TVkAccelerationStructureMotionInstanceFlagsNV;
     TVkAccelerationStructureMotionInstanceFlagsNV=TVkFlags;

     PPVkFormatFeatureFlags2=^PVkFormatFeatureFlags2;
     PVkFormatFeatureFlags2=^TVkFormatFeatureFlags2;
     TVkFormatFeatureFlags2=TVkFlags64;

     PPVkFormatFeatureFlags2KHR=PPVkFormatFeatureFlags2;
     PVkFormatFeatureFlags2KHR=PVkFormatFeatureFlags2;
     TVkFormatFeatureFlags2KHR=TVkFormatFeatureFlags2;

     PPVkRenderingFlags=^PVkRenderingFlags;
     PVkRenderingFlags=^TVkRenderingFlags;
     TVkRenderingFlags=TVkFlags;

     PPVkMemoryDecompressionMethodFlagsNV=^PVkMemoryDecompressionMethodFlagsNV;
     PVkMemoryDecompressionMethodFlagsNV=^TVkMemoryDecompressionMethodFlagsNV;
     TVkMemoryDecompressionMethodFlagsNV=TVkFlags64;

     PPVkRenderingFlagsKHR=PPVkRenderingFlags;
     PVkRenderingFlagsKHR=PVkRenderingFlags;
     TVkRenderingFlagsKHR=TVkRenderingFlags;

     PPVkBuildMicromapFlagsEXT=^PVkBuildMicromapFlagsEXT;
     PVkBuildMicromapFlagsEXT=^TVkBuildMicromapFlagsEXT;
     TVkBuildMicromapFlagsEXT=TVkFlags;

     PPVkMicromapCreateFlagsEXT=^PVkMicromapCreateFlagsEXT;
     PVkMicromapCreateFlagsEXT=^TVkMicromapCreateFlagsEXT;
     TVkMicromapCreateFlagsEXT=TVkFlags;

     PPVkDirectDriverLoadingFlagsLUNARG=^PVkDirectDriverLoadingFlagsLUNARG;
     PVkDirectDriverLoadingFlagsLUNARG=^TVkDirectDriverLoadingFlagsLUNARG;
     TVkDirectDriverLoadingFlagsLUNARG=TVkFlags;

     PPVkPipelineCreateFlags2KHR=^PVkPipelineCreateFlags2KHR;
     PVkPipelineCreateFlags2KHR=^TVkPipelineCreateFlags2KHR;
     TVkPipelineCreateFlags2KHR=TVkFlags64;

     PPVkBufferUsageFlags2KHR=^PVkBufferUsageFlags2KHR;
     PVkBufferUsageFlags2KHR=^TVkBufferUsageFlags2KHR;
     TVkBufferUsageFlags2KHR=TVkFlags64;

     PPVkCompositeAlphaFlagsKHR=^PVkCompositeAlphaFlagsKHR;
     PVkCompositeAlphaFlagsKHR=^TVkCompositeAlphaFlagsKHR;
     TVkCompositeAlphaFlagsKHR=TVkFlags;

     PPVkDisplayPlaneAlphaFlagsKHR=^PVkDisplayPlaneAlphaFlagsKHR;
     PVkDisplayPlaneAlphaFlagsKHR=^TVkDisplayPlaneAlphaFlagsKHR;
     TVkDisplayPlaneAlphaFlagsKHR=TVkFlags;

     PPVkSurfaceTransformFlagsKHR=^PVkSurfaceTransformFlagsKHR;
     PVkSurfaceTransformFlagsKHR=^TVkSurfaceTransformFlagsKHR;
     TVkSurfaceTransformFlagsKHR=TVkFlags;

     PPVkSwapchainCreateFlagsKHR=^PVkSwapchainCreateFlagsKHR;
     PVkSwapchainCreateFlagsKHR=^TVkSwapchainCreateFlagsKHR;
     TVkSwapchainCreateFlagsKHR=TVkFlags;

     PPVkDisplayModeCreateFlagsKHR=^PVkDisplayModeCreateFlagsKHR;
     PVkDisplayModeCreateFlagsKHR=^TVkDisplayModeCreateFlagsKHR;
     TVkDisplayModeCreateFlagsKHR=TVkFlags;

     PPVkDisplaySurfaceCreateFlagsKHR=^PVkDisplaySurfaceCreateFlagsKHR;
     PVkDisplaySurfaceCreateFlagsKHR=^TVkDisplaySurfaceCreateFlagsKHR;
     TVkDisplaySurfaceCreateFlagsKHR=TVkFlags;

     PPVkAndroidSurfaceCreateFlagsKHR=^PVkAndroidSurfaceCreateFlagsKHR;
     PVkAndroidSurfaceCreateFlagsKHR=^TVkAndroidSurfaceCreateFlagsKHR;
     TVkAndroidSurfaceCreateFlagsKHR=TVkFlags;

     PPVkViSurfaceCreateFlagsNN=^PVkViSurfaceCreateFlagsNN;
     PVkViSurfaceCreateFlagsNN=^TVkViSurfaceCreateFlagsNN;
     TVkViSurfaceCreateFlagsNN=TVkFlags;

     PPVkWaylandSurfaceCreateFlagsKHR=^PVkWaylandSurfaceCreateFlagsKHR;
     PVkWaylandSurfaceCreateFlagsKHR=^TVkWaylandSurfaceCreateFlagsKHR;
     TVkWaylandSurfaceCreateFlagsKHR=TVkFlags;

     PPVkWin32SurfaceCreateFlagsKHR=^PVkWin32SurfaceCreateFlagsKHR;
     PVkWin32SurfaceCreateFlagsKHR=^TVkWin32SurfaceCreateFlagsKHR;
     TVkWin32SurfaceCreateFlagsKHR=TVkFlags;

     PPVkXlibSurfaceCreateFlagsKHR=^PVkXlibSurfaceCreateFlagsKHR;
     PVkXlibSurfaceCreateFlagsKHR=^TVkXlibSurfaceCreateFlagsKHR;
     TVkXlibSurfaceCreateFlagsKHR=TVkFlags;

     PPVkXcbSurfaceCreateFlagsKHR=^PVkXcbSurfaceCreateFlagsKHR;
     PVkXcbSurfaceCreateFlagsKHR=^TVkXcbSurfaceCreateFlagsKHR;
     TVkXcbSurfaceCreateFlagsKHR=TVkFlags;

     PPVkDirectFBSurfaceCreateFlagsEXT=^PVkDirectFBSurfaceCreateFlagsEXT;
     PVkDirectFBSurfaceCreateFlagsEXT=^TVkDirectFBSurfaceCreateFlagsEXT;
     TVkDirectFBSurfaceCreateFlagsEXT=TVkFlags;

     PPVkIOSSurfaceCreateFlagsMVK=^PVkIOSSurfaceCreateFlagsMVK;
     PVkIOSSurfaceCreateFlagsMVK=^TVkIOSSurfaceCreateFlagsMVK;
     TVkIOSSurfaceCreateFlagsMVK=TVkFlags;

     PPVkMacOSSurfaceCreateFlagsMVK=^PVkMacOSSurfaceCreateFlagsMVK;
     PVkMacOSSurfaceCreateFlagsMVK=^TVkMacOSSurfaceCreateFlagsMVK;
     TVkMacOSSurfaceCreateFlagsMVK=TVkFlags;

     PPVkMetalSurfaceCreateFlagsEXT=^PVkMetalSurfaceCreateFlagsEXT;
     PVkMetalSurfaceCreateFlagsEXT=^TVkMetalSurfaceCreateFlagsEXT;
     TVkMetalSurfaceCreateFlagsEXT=TVkFlags;

     PPVkImagePipeSurfaceCreateFlagsFUCHSIA=^PVkImagePipeSurfaceCreateFlagsFUCHSIA;
     PVkImagePipeSurfaceCreateFlagsFUCHSIA=^TVkImagePipeSurfaceCreateFlagsFUCHSIA;
     TVkImagePipeSurfaceCreateFlagsFUCHSIA=TVkFlags;

     PPVkStreamDescriptorSurfaceCreateFlagsGGP=^PVkStreamDescriptorSurfaceCreateFlagsGGP;
     PVkStreamDescriptorSurfaceCreateFlagsGGP=^TVkStreamDescriptorSurfaceCreateFlagsGGP;
     TVkStreamDescriptorSurfaceCreateFlagsGGP=TVkFlags;

     PPVkHeadlessSurfaceCreateFlagsEXT=^PVkHeadlessSurfaceCreateFlagsEXT;
     PVkHeadlessSurfaceCreateFlagsEXT=^TVkHeadlessSurfaceCreateFlagsEXT;
     TVkHeadlessSurfaceCreateFlagsEXT=TVkFlags;

     PPVkScreenSurfaceCreateFlagsQNX=^PVkScreenSurfaceCreateFlagsQNX;
     PVkScreenSurfaceCreateFlagsQNX=^TVkScreenSurfaceCreateFlagsQNX;
     TVkScreenSurfaceCreateFlagsQNX=TVkFlags;

     PPVkPeerMemoryFeatureFlags=^PVkPeerMemoryFeatureFlags;
     PVkPeerMemoryFeatureFlags=^TVkPeerMemoryFeatureFlags;
     TVkPeerMemoryFeatureFlags=TVkFlags;

     PPVkPeerMemoryFeatureFlagsKHR=PPVkPeerMemoryFeatureFlags;
     PVkPeerMemoryFeatureFlagsKHR=PVkPeerMemoryFeatureFlags;
     TVkPeerMemoryFeatureFlagsKHR=TVkPeerMemoryFeatureFlags;

     PPVkMemoryAllocateFlags=^PVkMemoryAllocateFlags;
     PVkMemoryAllocateFlags=^TVkMemoryAllocateFlags;
     TVkMemoryAllocateFlags=TVkFlags;

     PPVkMemoryAllocateFlagsKHR=PPVkMemoryAllocateFlags;
     PVkMemoryAllocateFlagsKHR=PVkMemoryAllocateFlags;
     TVkMemoryAllocateFlagsKHR=TVkMemoryAllocateFlags;

     PPVkDeviceGroupPresentModeFlagsKHR=^PVkDeviceGroupPresentModeFlagsKHR;
     PVkDeviceGroupPresentModeFlagsKHR=^TVkDeviceGroupPresentModeFlagsKHR;
     TVkDeviceGroupPresentModeFlagsKHR=TVkFlags;

     PPVkDebugReportFlagsEXT=^PVkDebugReportFlagsEXT;
     PVkDebugReportFlagsEXT=^TVkDebugReportFlagsEXT;
     TVkDebugReportFlagsEXT=TVkFlags;

     PPVkCommandPoolTrimFlags=^PVkCommandPoolTrimFlags;
     PVkCommandPoolTrimFlags=^TVkCommandPoolTrimFlags;
     TVkCommandPoolTrimFlags=TVkFlags;

     PPVkCommandPoolTrimFlagsKHR=PPVkCommandPoolTrimFlags;
     PVkCommandPoolTrimFlagsKHR=PVkCommandPoolTrimFlags;
     TVkCommandPoolTrimFlagsKHR=TVkCommandPoolTrimFlags;

     PPVkExternalMemoryHandleTypeFlagsNV=^PVkExternalMemoryHandleTypeFlagsNV;
     PVkExternalMemoryHandleTypeFlagsNV=^TVkExternalMemoryHandleTypeFlagsNV;
     TVkExternalMemoryHandleTypeFlagsNV=TVkFlags;

     PPVkExternalMemoryFeatureFlagsNV=^PVkExternalMemoryFeatureFlagsNV;
     PVkExternalMemoryFeatureFlagsNV=^TVkExternalMemoryFeatureFlagsNV;
     TVkExternalMemoryFeatureFlagsNV=TVkFlags;

     PPVkExternalMemoryHandleTypeFlags=^PVkExternalMemoryHandleTypeFlags;
     PVkExternalMemoryHandleTypeFlags=^TVkExternalMemoryHandleTypeFlags;
     TVkExternalMemoryHandleTypeFlags=TVkFlags;

     PPVkExternalMemoryHandleTypeFlagsKHR=PPVkExternalMemoryHandleTypeFlags;
     PVkExternalMemoryHandleTypeFlagsKHR=PVkExternalMemoryHandleTypeFlags;
     TVkExternalMemoryHandleTypeFlagsKHR=TVkExternalMemoryHandleTypeFlags;

     PPVkExternalMemoryFeatureFlags=^PVkExternalMemoryFeatureFlags;
     PVkExternalMemoryFeatureFlags=^TVkExternalMemoryFeatureFlags;
     TVkExternalMemoryFeatureFlags=TVkFlags;

     PPVkExternalMemoryFeatureFlagsKHR=PPVkExternalMemoryFeatureFlags;
     PVkExternalMemoryFeatureFlagsKHR=PVkExternalMemoryFeatureFlags;
     TVkExternalMemoryFeatureFlagsKHR=TVkExternalMemoryFeatureFlags;

     PPVkExternalSemaphoreHandleTypeFlags=^PVkExternalSemaphoreHandleTypeFlags;
     PVkExternalSemaphoreHandleTypeFlags=^TVkExternalSemaphoreHandleTypeFlags;
     TVkExternalSemaphoreHandleTypeFlags=TVkFlags;

     PPVkExternalSemaphoreHandleTypeFlagsKHR=PPVkExternalSemaphoreHandleTypeFlags;
     PVkExternalSemaphoreHandleTypeFlagsKHR=PVkExternalSemaphoreHandleTypeFlags;
     TVkExternalSemaphoreHandleTypeFlagsKHR=TVkExternalSemaphoreHandleTypeFlags;

     PPVkExternalSemaphoreFeatureFlags=^PVkExternalSemaphoreFeatureFlags;
     PVkExternalSemaphoreFeatureFlags=^TVkExternalSemaphoreFeatureFlags;
     TVkExternalSemaphoreFeatureFlags=TVkFlags;

     PPVkExternalSemaphoreFeatureFlagsKHR=PPVkExternalSemaphoreFeatureFlags;
     PVkExternalSemaphoreFeatureFlagsKHR=PVkExternalSemaphoreFeatureFlags;
     TVkExternalSemaphoreFeatureFlagsKHR=TVkExternalSemaphoreFeatureFlags;

     PPVkSemaphoreImportFlags=^PVkSemaphoreImportFlags;
     PVkSemaphoreImportFlags=^TVkSemaphoreImportFlags;
     TVkSemaphoreImportFlags=TVkFlags;

     PPVkSemaphoreImportFlagsKHR=PPVkSemaphoreImportFlags;
     PVkSemaphoreImportFlagsKHR=PVkSemaphoreImportFlags;
     TVkSemaphoreImportFlagsKHR=TVkSemaphoreImportFlags;

     PPVkExternalFenceHandleTypeFlags=^PVkExternalFenceHandleTypeFlags;
     PVkExternalFenceHandleTypeFlags=^TVkExternalFenceHandleTypeFlags;
     TVkExternalFenceHandleTypeFlags=TVkFlags;

     PPVkExternalFenceHandleTypeFlagsKHR=PPVkExternalFenceHandleTypeFlags;
     PVkExternalFenceHandleTypeFlagsKHR=PVkExternalFenceHandleTypeFlags;
     TVkExternalFenceHandleTypeFlagsKHR=TVkExternalFenceHandleTypeFlags;

     PPVkExternalFenceFeatureFlags=^PVkExternalFenceFeatureFlags;
     PVkExternalFenceFeatureFlags=^TVkExternalFenceFeatureFlags;
     TVkExternalFenceFeatureFlags=TVkFlags;

     PPVkExternalFenceFeatureFlagsKHR=PPVkExternalFenceFeatureFlags;
     PVkExternalFenceFeatureFlagsKHR=PVkExternalFenceFeatureFlags;
     TVkExternalFenceFeatureFlagsKHR=TVkExternalFenceFeatureFlags;

     PPVkFenceImportFlags=^PVkFenceImportFlags;
     PVkFenceImportFlags=^TVkFenceImportFlags;
     TVkFenceImportFlags=TVkFlags;

     PPVkFenceImportFlagsKHR=PPVkFenceImportFlags;
     PVkFenceImportFlagsKHR=PVkFenceImportFlags;
     TVkFenceImportFlagsKHR=TVkFenceImportFlags;

     PPVkSurfaceCounterFlagsEXT=^PVkSurfaceCounterFlagsEXT;
     PVkSurfaceCounterFlagsEXT=^TVkSurfaceCounterFlagsEXT;
     TVkSurfaceCounterFlagsEXT=TVkFlags;

     PPVkPipelineViewportSwizzleStateCreateFlagsNV=^PVkPipelineViewportSwizzleStateCreateFlagsNV;
     PVkPipelineViewportSwizzleStateCreateFlagsNV=^TVkPipelineViewportSwizzleStateCreateFlagsNV;
     TVkPipelineViewportSwizzleStateCreateFlagsNV=TVkFlags;

     PPVkPipelineDiscardRectangleStateCreateFlagsEXT=^PVkPipelineDiscardRectangleStateCreateFlagsEXT;
     PVkPipelineDiscardRectangleStateCreateFlagsEXT=^TVkPipelineDiscardRectangleStateCreateFlagsEXT;
     TVkPipelineDiscardRectangleStateCreateFlagsEXT=TVkFlags;

     PPVkPipelineCoverageToColorStateCreateFlagsNV=^PVkPipelineCoverageToColorStateCreateFlagsNV;
     PVkPipelineCoverageToColorStateCreateFlagsNV=^TVkPipelineCoverageToColorStateCreateFlagsNV;
     TVkPipelineCoverageToColorStateCreateFlagsNV=TVkFlags;

     PPVkPipelineCoverageModulationStateCreateFlagsNV=^PVkPipelineCoverageModulationStateCreateFlagsNV;
     PVkPipelineCoverageModulationStateCreateFlagsNV=^TVkPipelineCoverageModulationStateCreateFlagsNV;
     TVkPipelineCoverageModulationStateCreateFlagsNV=TVkFlags;

     PPVkPipelineCoverageReductionStateCreateFlagsNV=^PVkPipelineCoverageReductionStateCreateFlagsNV;
     PVkPipelineCoverageReductionStateCreateFlagsNV=^TVkPipelineCoverageReductionStateCreateFlagsNV;
     TVkPipelineCoverageReductionStateCreateFlagsNV=TVkFlags;

     PPVkValidationCacheCreateFlagsEXT=^PVkValidationCacheCreateFlagsEXT;
     PVkValidationCacheCreateFlagsEXT=^TVkValidationCacheCreateFlagsEXT;
     TVkValidationCacheCreateFlagsEXT=TVkFlags;

     PPVkDebugUtilsMessageSeverityFlagsEXT=^PVkDebugUtilsMessageSeverityFlagsEXT;
     PVkDebugUtilsMessageSeverityFlagsEXT=^TVkDebugUtilsMessageSeverityFlagsEXT;
     TVkDebugUtilsMessageSeverityFlagsEXT=TVkFlags;

     PPVkDebugUtilsMessageTypeFlagsEXT=^PVkDebugUtilsMessageTypeFlagsEXT;
     PVkDebugUtilsMessageTypeFlagsEXT=^TVkDebugUtilsMessageTypeFlagsEXT;
     TVkDebugUtilsMessageTypeFlagsEXT=TVkFlags;

     PPVkDebugUtilsMessengerCreateFlagsEXT=^PVkDebugUtilsMessengerCreateFlagsEXT;
     PVkDebugUtilsMessengerCreateFlagsEXT=^TVkDebugUtilsMessengerCreateFlagsEXT;
     TVkDebugUtilsMessengerCreateFlagsEXT=TVkFlags;

     PPVkDebugUtilsMessengerCallbackDataFlagsEXT=^PVkDebugUtilsMessengerCallbackDataFlagsEXT;
     PVkDebugUtilsMessengerCallbackDataFlagsEXT=^TVkDebugUtilsMessengerCallbackDataFlagsEXT;
     TVkDebugUtilsMessengerCallbackDataFlagsEXT=TVkFlags;

     PPVkDeviceMemoryReportFlagsEXT=^PVkDeviceMemoryReportFlagsEXT;
     PVkDeviceMemoryReportFlagsEXT=^TVkDeviceMemoryReportFlagsEXT;
     TVkDeviceMemoryReportFlagsEXT=TVkFlags;

     PPVkPipelineRasterizationConservativeStateCreateFlagsEXT=^PVkPipelineRasterizationConservativeStateCreateFlagsEXT;
     PVkPipelineRasterizationConservativeStateCreateFlagsEXT=^TVkPipelineRasterizationConservativeStateCreateFlagsEXT;
     TVkPipelineRasterizationConservativeStateCreateFlagsEXT=TVkFlags;

     PPVkDescriptorBindingFlags=^PVkDescriptorBindingFlags;
     PVkDescriptorBindingFlags=^TVkDescriptorBindingFlags;
     TVkDescriptorBindingFlags=TVkFlags;

     PPVkDescriptorBindingFlagsEXT=PPVkDescriptorBindingFlags;
     PVkDescriptorBindingFlagsEXT=PVkDescriptorBindingFlags;
     TVkDescriptorBindingFlagsEXT=TVkDescriptorBindingFlags;

     PPVkConditionalRenderingFlagsEXT=^PVkConditionalRenderingFlagsEXT;
     PVkConditionalRenderingFlagsEXT=^TVkConditionalRenderingFlagsEXT;
     TVkConditionalRenderingFlagsEXT=TVkFlags;

     PPVkResolveModeFlags=^PVkResolveModeFlags;
     PVkResolveModeFlags=^TVkResolveModeFlags;
     TVkResolveModeFlags=TVkFlags;

     PPVkResolveModeFlagsKHR=PPVkResolveModeFlags;
     PVkResolveModeFlagsKHR=PVkResolveModeFlags;
     TVkResolveModeFlagsKHR=TVkResolveModeFlags;

     PPVkPipelineRasterizationStateStreamCreateFlagsEXT=^PVkPipelineRasterizationStateStreamCreateFlagsEXT;
     PVkPipelineRasterizationStateStreamCreateFlagsEXT=^TVkPipelineRasterizationStateStreamCreateFlagsEXT;
     TVkPipelineRasterizationStateStreamCreateFlagsEXT=TVkFlags;

     PPVkPipelineRasterizationDepthClipStateCreateFlagsEXT=^PVkPipelineRasterizationDepthClipStateCreateFlagsEXT;
     PVkPipelineRasterizationDepthClipStateCreateFlagsEXT=^TVkPipelineRasterizationDepthClipStateCreateFlagsEXT;
     TVkPipelineRasterizationDepthClipStateCreateFlagsEXT=TVkFlags;

     PPVkSwapchainImageUsageFlagsANDROID=^PVkSwapchainImageUsageFlagsANDROID;
     PVkSwapchainImageUsageFlagsANDROID=^TVkSwapchainImageUsageFlagsANDROID;
     TVkSwapchainImageUsageFlagsANDROID=TVkFlags;

     PPVkToolPurposeFlags=^PVkToolPurposeFlags;
     PVkToolPurposeFlags=^TVkToolPurposeFlags;
     TVkToolPurposeFlags=TVkFlags;

     PPVkToolPurposeFlagsEXT=PPVkToolPurposeFlags;
     PVkToolPurposeFlagsEXT=PVkToolPurposeFlags;
     TVkToolPurposeFlagsEXT=TVkToolPurposeFlags;

     PPVkSubmitFlags=^PVkSubmitFlags;
     PVkSubmitFlags=^TVkSubmitFlags;
     TVkSubmitFlags=TVkFlags;

     PPVkSubmitFlagsKHR=PPVkSubmitFlags;
     PVkSubmitFlagsKHR=PVkSubmitFlags;
     TVkSubmitFlagsKHR=TVkSubmitFlags;

     PPVkImageFormatConstraintsFlagsFUCHSIA=^PVkImageFormatConstraintsFlagsFUCHSIA;
     PVkImageFormatConstraintsFlagsFUCHSIA=^TVkImageFormatConstraintsFlagsFUCHSIA;
     TVkImageFormatConstraintsFlagsFUCHSIA=TVkFlags;

     PPVkHostImageCopyFlagsEXT=^PVkHostImageCopyFlagsEXT;
     PVkHostImageCopyFlagsEXT=^TVkHostImageCopyFlagsEXT;
     TVkHostImageCopyFlagsEXT=TVkFlags;

     PPVkImageConstraintsInfoFlagsFUCHSIA=^PVkImageConstraintsInfoFlagsFUCHSIA;
     PVkImageConstraintsInfoFlagsFUCHSIA=^TVkImageConstraintsInfoFlagsFUCHSIA;
     TVkImageConstraintsInfoFlagsFUCHSIA=TVkFlags;

     PPVkGraphicsPipelineLibraryFlagsEXT=^PVkGraphicsPipelineLibraryFlagsEXT;
     PVkGraphicsPipelineLibraryFlagsEXT=^TVkGraphicsPipelineLibraryFlagsEXT;
     TVkGraphicsPipelineLibraryFlagsEXT=TVkFlags;

     PPVkImageCompressionFlagsEXT=^PVkImageCompressionFlagsEXT;
     PVkImageCompressionFlagsEXT=^TVkImageCompressionFlagsEXT;
     TVkImageCompressionFlagsEXT=TVkFlags;

     PPVkImageCompressionFixedRateFlagsEXT=^PVkImageCompressionFixedRateFlagsEXT;
     PVkImageCompressionFixedRateFlagsEXT=^TVkImageCompressionFixedRateFlagsEXT;
     TVkImageCompressionFixedRateFlagsEXT=TVkFlags;

     PPVkExportMetalObjectTypeFlagsEXT=^PVkExportMetalObjectTypeFlagsEXT;
     PVkExportMetalObjectTypeFlagsEXT=^TVkExportMetalObjectTypeFlagsEXT;
     TVkExportMetalObjectTypeFlagsEXT=TVkFlags;

     PPVkDeviceAddressBindingFlagsEXT=^PVkDeviceAddressBindingFlagsEXT;
     PVkDeviceAddressBindingFlagsEXT=^TVkDeviceAddressBindingFlagsEXT;
     TVkDeviceAddressBindingFlagsEXT=TVkFlags;

     PPVkOpticalFlowGridSizeFlagsNV=^PVkOpticalFlowGridSizeFlagsNV;
     PVkOpticalFlowGridSizeFlagsNV=^TVkOpticalFlowGridSizeFlagsNV;
     TVkOpticalFlowGridSizeFlagsNV=TVkFlags;

     PPVkOpticalFlowUsageFlagsNV=^PVkOpticalFlowUsageFlagsNV;
     PVkOpticalFlowUsageFlagsNV=^TVkOpticalFlowUsageFlagsNV;
     TVkOpticalFlowUsageFlagsNV=TVkFlags;

     PPVkOpticalFlowSessionCreateFlagsNV=^PVkOpticalFlowSessionCreateFlagsNV;
     PVkOpticalFlowSessionCreateFlagsNV=^TVkOpticalFlowSessionCreateFlagsNV;
     TVkOpticalFlowSessionCreateFlagsNV=TVkFlags;

     PPVkOpticalFlowExecuteFlagsNV=^PVkOpticalFlowExecuteFlagsNV;
     PVkOpticalFlowExecuteFlagsNV=^TVkOpticalFlowExecuteFlagsNV;
     TVkOpticalFlowExecuteFlagsNV=TVkFlags;

     PPVkFrameBoundaryFlagsEXT=^PVkFrameBoundaryFlagsEXT;
     PVkFrameBoundaryFlagsEXT=^TVkFrameBoundaryFlagsEXT;
     TVkFrameBoundaryFlagsEXT=TVkFlags;

     PPVkPresentScalingFlagsEXT=^PVkPresentScalingFlagsEXT;
     PVkPresentScalingFlagsEXT=^TVkPresentScalingFlagsEXT;
     TVkPresentScalingFlagsEXT=TVkFlags;

     PPVkPresentGravityFlagsEXT=^PVkPresentGravityFlagsEXT;
     PVkPresentGravityFlagsEXT=^TVkPresentGravityFlagsEXT;
     TVkPresentGravityFlagsEXT=TVkFlags;

     PPVkShaderCreateFlagsEXT=^PVkShaderCreateFlagsEXT;
     PVkShaderCreateFlagsEXT=^TVkShaderCreateFlagsEXT;
     TVkShaderCreateFlagsEXT=TVkFlags;

     PPVkVideoCodecOperationFlagsKHR=^PVkVideoCodecOperationFlagsKHR;
     PVkVideoCodecOperationFlagsKHR=^TVkVideoCodecOperationFlagsKHR;
     TVkVideoCodecOperationFlagsKHR=TVkFlags;

     PPVkVideoCapabilityFlagsKHR=^PVkVideoCapabilityFlagsKHR;
     PVkVideoCapabilityFlagsKHR=^TVkVideoCapabilityFlagsKHR;
     TVkVideoCapabilityFlagsKHR=TVkFlags;

     PPVkVideoSessionCreateFlagsKHR=^PVkVideoSessionCreateFlagsKHR;
     PVkVideoSessionCreateFlagsKHR=^TVkVideoSessionCreateFlagsKHR;
     TVkVideoSessionCreateFlagsKHR=TVkFlags;

     PPVkVideoSessionParametersCreateFlagsKHR=^PVkVideoSessionParametersCreateFlagsKHR;
     PVkVideoSessionParametersCreateFlagsKHR=^TVkVideoSessionParametersCreateFlagsKHR;
     TVkVideoSessionParametersCreateFlagsKHR=TVkFlags;

     PPVkVideoBeginCodingFlagsKHR=^PVkVideoBeginCodingFlagsKHR;
     PVkVideoBeginCodingFlagsKHR=^TVkVideoBeginCodingFlagsKHR;
     TVkVideoBeginCodingFlagsKHR=TVkFlags;

     PPVkVideoEndCodingFlagsKHR=^PVkVideoEndCodingFlagsKHR;
     PVkVideoEndCodingFlagsKHR=^TVkVideoEndCodingFlagsKHR;
     TVkVideoEndCodingFlagsKHR=TVkFlags;

     PPVkVideoCodingControlFlagsKHR=^PVkVideoCodingControlFlagsKHR;
     PVkVideoCodingControlFlagsKHR=^TVkVideoCodingControlFlagsKHR;
     TVkVideoCodingControlFlagsKHR=TVkFlags;

     PPVkVideoDecodeUsageFlagsKHR=^PVkVideoDecodeUsageFlagsKHR;
     PVkVideoDecodeUsageFlagsKHR=^TVkVideoDecodeUsageFlagsKHR;
     TVkVideoDecodeUsageFlagsKHR=TVkFlags;

     PPVkVideoDecodeCapabilityFlagsKHR=^PVkVideoDecodeCapabilityFlagsKHR;
     PVkVideoDecodeCapabilityFlagsKHR=^TVkVideoDecodeCapabilityFlagsKHR;
     TVkVideoDecodeCapabilityFlagsKHR=TVkFlags;

     PPVkVideoDecodeFlagsKHR=^PVkVideoDecodeFlagsKHR;
     PVkVideoDecodeFlagsKHR=^TVkVideoDecodeFlagsKHR;
     TVkVideoDecodeFlagsKHR=TVkFlags;

     PPVkVideoDecodeH264PictureLayoutFlagsKHR=^PVkVideoDecodeH264PictureLayoutFlagsKHR;
     PVkVideoDecodeH264PictureLayoutFlagsKHR=^TVkVideoDecodeH264PictureLayoutFlagsKHR;
     TVkVideoDecodeH264PictureLayoutFlagsKHR=TVkFlags;

     PPVkVideoEncodeFlagsKHR=^PVkVideoEncodeFlagsKHR;
     PVkVideoEncodeFlagsKHR=^TVkVideoEncodeFlagsKHR;
     TVkVideoEncodeFlagsKHR=TVkFlags;

     PPVkVideoEncodeUsageFlagsKHR=^PVkVideoEncodeUsageFlagsKHR;
     PVkVideoEncodeUsageFlagsKHR=^TVkVideoEncodeUsageFlagsKHR;
     TVkVideoEncodeUsageFlagsKHR=TVkFlags;

     PPVkVideoEncodeContentFlagsKHR=^PVkVideoEncodeContentFlagsKHR;
     PVkVideoEncodeContentFlagsKHR=^TVkVideoEncodeContentFlagsKHR;
     TVkVideoEncodeContentFlagsKHR=TVkFlags;

     PPVkVideoEncodeCapabilityFlagsKHR=^PVkVideoEncodeCapabilityFlagsKHR;
     PVkVideoEncodeCapabilityFlagsKHR=^TVkVideoEncodeCapabilityFlagsKHR;
     TVkVideoEncodeCapabilityFlagsKHR=TVkFlags;

     PPVkVideoEncodeFeedbackFlagsKHR=^PVkVideoEncodeFeedbackFlagsKHR;
     PVkVideoEncodeFeedbackFlagsKHR=^TVkVideoEncodeFeedbackFlagsKHR;
     TVkVideoEncodeFeedbackFlagsKHR=TVkFlags;

     PPVkVideoEncodeRateControlFlagsKHR=^PVkVideoEncodeRateControlFlagsKHR;
     PVkVideoEncodeRateControlFlagsKHR=^TVkVideoEncodeRateControlFlagsKHR;
     TVkVideoEncodeRateControlFlagsKHR=TVkFlags;

     PPVkVideoEncodeRateControlModeFlagsKHR=^PVkVideoEncodeRateControlModeFlagsKHR;
     PVkVideoEncodeRateControlModeFlagsKHR=^TVkVideoEncodeRateControlModeFlagsKHR;
     TVkVideoEncodeRateControlModeFlagsKHR=TVkFlags;

     PPVkVideoChromaSubsamplingFlagsKHR=^PVkVideoChromaSubsamplingFlagsKHR;
     PVkVideoChromaSubsamplingFlagsKHR=^TVkVideoChromaSubsamplingFlagsKHR;
     TVkVideoChromaSubsamplingFlagsKHR=TVkFlags;

     PPVkVideoComponentBitDepthFlagsKHR=^PVkVideoComponentBitDepthFlagsKHR;
     PVkVideoComponentBitDepthFlagsKHR=^TVkVideoComponentBitDepthFlagsKHR;
     TVkVideoComponentBitDepthFlagsKHR=TVkFlags;

     PPVkVideoEncodeH264CapabilityFlagsEXT=^PVkVideoEncodeH264CapabilityFlagsEXT;
     PVkVideoEncodeH264CapabilityFlagsEXT=^TVkVideoEncodeH264CapabilityFlagsEXT;
     TVkVideoEncodeH264CapabilityFlagsEXT=TVkFlags;

     PPVkVideoEncodeH264StdFlagsEXT=^PVkVideoEncodeH264StdFlagsEXT;
     PVkVideoEncodeH264StdFlagsEXT=^TVkVideoEncodeH264StdFlagsEXT;
     TVkVideoEncodeH264StdFlagsEXT=TVkFlags;

     PPVkVideoEncodeH264RateControlFlagsEXT=^PVkVideoEncodeH264RateControlFlagsEXT;
     PVkVideoEncodeH264RateControlFlagsEXT=^TVkVideoEncodeH264RateControlFlagsEXT;
     TVkVideoEncodeH264RateControlFlagsEXT=TVkFlags;

     PPVkVideoEncodeH265CapabilityFlagsEXT=^PVkVideoEncodeH265CapabilityFlagsEXT;
     PVkVideoEncodeH265CapabilityFlagsEXT=^TVkVideoEncodeH265CapabilityFlagsEXT;
     TVkVideoEncodeH265CapabilityFlagsEXT=TVkFlags;

     PPVkVideoEncodeH265StdFlagsEXT=^PVkVideoEncodeH265StdFlagsEXT;
     PVkVideoEncodeH265StdFlagsEXT=^TVkVideoEncodeH265StdFlagsEXT;
     TVkVideoEncodeH265StdFlagsEXT=TVkFlags;

     PPVkVideoEncodeH265RateControlFlagsEXT=^PVkVideoEncodeH265RateControlFlagsEXT;
     PVkVideoEncodeH265RateControlFlagsEXT=^TVkVideoEncodeH265RateControlFlagsEXT;
     TVkVideoEncodeH265RateControlFlagsEXT=TVkFlags;

     PPVkVideoEncodeH265CtbSizeFlagsEXT=^PVkVideoEncodeH265CtbSizeFlagsEXT;
     PVkVideoEncodeH265CtbSizeFlagsEXT=^TVkVideoEncodeH265CtbSizeFlagsEXT;
     TVkVideoEncodeH265CtbSizeFlagsEXT=TVkFlags;

     PPVkVideoEncodeH265TransformBlockSizeFlagsEXT=^PVkVideoEncodeH265TransformBlockSizeFlagsEXT;
     PVkVideoEncodeH265TransformBlockSizeFlagsEXT=^TVkVideoEncodeH265TransformBlockSizeFlagsEXT;
     TVkVideoEncodeH265TransformBlockSizeFlagsEXT=TVkFlags;

     PPVkInstance=^PVkInstance;
     PVkInstance=^TVkInstance;
     TVkInstance=TVkDispatchableHandle;

     PPVkPhysicalDevice=^PVkPhysicalDevice;
     PVkPhysicalDevice=^TVkPhysicalDevice;
     TVkPhysicalDevice=TVkDispatchableHandle;

     PPVkDevice=^PVkDevice;
     PVkDevice=^TVkDevice;
     TVkDevice=TVkDispatchableHandle;

     PPVkQueue=^PVkQueue;
     PVkQueue=^TVkQueue;
     TVkQueue=TVkDispatchableHandle;

     PPVkCommandBuffer=^PVkCommandBuffer;
     PVkCommandBuffer=^TVkCommandBuffer;
     TVkCommandBuffer=TVkDispatchableHandle;

     PPVkDeviceMemory=^PVkDeviceMemory;
     PVkDeviceMemory=^TVkDeviceMemory;
     TVkDeviceMemory=TVkNonDispatchableHandle;

     PPVkCommandPool=^PVkCommandPool;
     PVkCommandPool=^TVkCommandPool;
     TVkCommandPool=TVkNonDispatchableHandle;

     PPVkBuffer=^PVkBuffer;
     PVkBuffer=^TVkBuffer;
     TVkBuffer=TVkNonDispatchableHandle;

     PPVkBufferView=^PVkBufferView;
     PVkBufferView=^TVkBufferView;
     TVkBufferView=TVkNonDispatchableHandle;

     PPVkImage=^PVkImage;
     PVkImage=^TVkImage;
     TVkImage=TVkNonDispatchableHandle;

     PPVkImageView=^PVkImageView;
     PVkImageView=^TVkImageView;
     TVkImageView=TVkNonDispatchableHandle;

     PPVkShaderModule=^PVkShaderModule;
     PVkShaderModule=^TVkShaderModule;
     TVkShaderModule=TVkNonDispatchableHandle;

     PPVkPipeline=^PVkPipeline;
     PVkPipeline=^TVkPipeline;
     TVkPipeline=TVkNonDispatchableHandle;

     PPVkPipelineLayout=^PVkPipelineLayout;
     PVkPipelineLayout=^TVkPipelineLayout;
     TVkPipelineLayout=TVkNonDispatchableHandle;

     PPVkSampler=^PVkSampler;
     PVkSampler=^TVkSampler;
     TVkSampler=TVkNonDispatchableHandle;

     PPVkDescriptorSet=^PVkDescriptorSet;
     PVkDescriptorSet=^TVkDescriptorSet;
     TVkDescriptorSet=TVkNonDispatchableHandle;

     PPVkDescriptorSetLayout=^PVkDescriptorSetLayout;
     PVkDescriptorSetLayout=^TVkDescriptorSetLayout;
     TVkDescriptorSetLayout=TVkNonDispatchableHandle;

     PPVkDescriptorPool=^PVkDescriptorPool;
     PVkDescriptorPool=^TVkDescriptorPool;
     TVkDescriptorPool=TVkNonDispatchableHandle;

     PPVkFence=^PVkFence;
     PVkFence=^TVkFence;
     TVkFence=TVkNonDispatchableHandle;

     PPVkSemaphore=^PVkSemaphore;
     PVkSemaphore=^TVkSemaphore;
     TVkSemaphore=TVkNonDispatchableHandle;

     PPVkEvent=^PVkEvent;
     PVkEvent=^TVkEvent;
     TVkEvent=TVkNonDispatchableHandle;

     PPVkQueryPool=^PVkQueryPool;
     PVkQueryPool=^TVkQueryPool;
     TVkQueryPool=TVkNonDispatchableHandle;

     PPVkFramebuffer=^PVkFramebuffer;
     PVkFramebuffer=^TVkFramebuffer;
     TVkFramebuffer=TVkNonDispatchableHandle;

     PPVkRenderPass=^PVkRenderPass;
     PVkRenderPass=^TVkRenderPass;
     TVkRenderPass=TVkNonDispatchableHandle;

     PPVkPipelineCache=^PVkPipelineCache;
     PVkPipelineCache=^TVkPipelineCache;
     TVkPipelineCache=TVkNonDispatchableHandle;

     PPVkIndirectCommandsLayoutNV=^PVkIndirectCommandsLayoutNV;
     PVkIndirectCommandsLayoutNV=^TVkIndirectCommandsLayoutNV;
     TVkIndirectCommandsLayoutNV=TVkNonDispatchableHandle;

     PPVkDescriptorUpdateTemplate=^PVkDescriptorUpdateTemplate;
     PVkDescriptorUpdateTemplate=^TVkDescriptorUpdateTemplate;
     TVkDescriptorUpdateTemplate=TVkNonDispatchableHandle;

     PPVkDescriptorUpdateTemplateKHR=PPVkDescriptorUpdateTemplate;
     PVkDescriptorUpdateTemplateKHR=PVkDescriptorUpdateTemplate;
     TVkDescriptorUpdateTemplateKHR=TVkDescriptorUpdateTemplate;

     PPVkSamplerYcbcrConversion=^PVkSamplerYcbcrConversion;
     PVkSamplerYcbcrConversion=^TVkSamplerYcbcrConversion;
     TVkSamplerYcbcrConversion=TVkNonDispatchableHandle;

     PPVkSamplerYcbcrConversionKHR=PPVkSamplerYcbcrConversion;
     PVkSamplerYcbcrConversionKHR=PVkSamplerYcbcrConversion;
     TVkSamplerYcbcrConversionKHR=TVkSamplerYcbcrConversion;

     PPVkValidationCacheEXT=^PVkValidationCacheEXT;
     PVkValidationCacheEXT=^TVkValidationCacheEXT;
     TVkValidationCacheEXT=TVkNonDispatchableHandle;

     PPVkAccelerationStructureKHR=^PVkAccelerationStructureKHR;
     PVkAccelerationStructureKHR=^TVkAccelerationStructureKHR;
     TVkAccelerationStructureKHR=TVkNonDispatchableHandle;

     PPVkAccelerationStructureNV=^PVkAccelerationStructureNV;
     PVkAccelerationStructureNV=^TVkAccelerationStructureNV;
     TVkAccelerationStructureNV=TVkNonDispatchableHandle;

     PPVkPerformanceConfigurationINTEL=^PVkPerformanceConfigurationINTEL;
     PVkPerformanceConfigurationINTEL=^TVkPerformanceConfigurationINTEL;
     TVkPerformanceConfigurationINTEL=TVkNonDispatchableHandle;

     PPVkBufferCollectionFUCHSIA=^PVkBufferCollectionFUCHSIA;
     PVkBufferCollectionFUCHSIA=^TVkBufferCollectionFUCHSIA;
     TVkBufferCollectionFUCHSIA=TVkNonDispatchableHandle;

     PPVkDeferredOperationKHR=^PVkDeferredOperationKHR;
     PVkDeferredOperationKHR=^TVkDeferredOperationKHR;
     TVkDeferredOperationKHR=TVkNonDispatchableHandle;

     PPVkPrivateDataSlot=^PVkPrivateDataSlot;
     PVkPrivateDataSlot=^TVkPrivateDataSlot;
     TVkPrivateDataSlot=TVkNonDispatchableHandle;

     PPVkPrivateDataSlotEXT=PPVkPrivateDataSlot;
     PVkPrivateDataSlotEXT=PVkPrivateDataSlot;
     TVkPrivateDataSlotEXT=TVkPrivateDataSlot;

     PPVkCuModuleNVX=^PVkCuModuleNVX;
     PVkCuModuleNVX=^TVkCuModuleNVX;
     TVkCuModuleNVX=TVkNonDispatchableHandle;

     PPVkCuFunctionNVX=^PVkCuFunctionNVX;
     PVkCuFunctionNVX=^TVkCuFunctionNVX;
     TVkCuFunctionNVX=TVkNonDispatchableHandle;

     PPVkOpticalFlowSessionNV=^PVkOpticalFlowSessionNV;
     PVkOpticalFlowSessionNV=^TVkOpticalFlowSessionNV;
     TVkOpticalFlowSessionNV=TVkNonDispatchableHandle;

     PPVkMicromapEXT=^PVkMicromapEXT;
     PVkMicromapEXT=^TVkMicromapEXT;
     TVkMicromapEXT=TVkNonDispatchableHandle;

     PPVkShaderEXT=^PVkShaderEXT;
     PVkShaderEXT=^TVkShaderEXT;
     TVkShaderEXT=TVkNonDispatchableHandle;

     PPVkDisplayKHR=^PVkDisplayKHR;
     PVkDisplayKHR=^TVkDisplayKHR;
     TVkDisplayKHR=TVkNonDispatchableHandle;

     PPVkDisplayModeKHR=^PVkDisplayModeKHR;
     PVkDisplayModeKHR=^TVkDisplayModeKHR;
     TVkDisplayModeKHR=TVkNonDispatchableHandle;

     PPVkSurfaceKHR=^PVkSurfaceKHR;
     PVkSurfaceKHR=^TVkSurfaceKHR;
     TVkSurfaceKHR=TVkNonDispatchableHandle;

     PPVkSwapchainKHR=^PVkSwapchainKHR;
     PVkSwapchainKHR=^TVkSwapchainKHR;
     TVkSwapchainKHR=TVkNonDispatchableHandle;

     PPVkDebugReportCallbackEXT=^PVkDebugReportCallbackEXT;
     PVkDebugReportCallbackEXT=^TVkDebugReportCallbackEXT;
     TVkDebugReportCallbackEXT=TVkNonDispatchableHandle;

     PPVkDebugUtilsMessengerEXT=^PVkDebugUtilsMessengerEXT;
     PVkDebugUtilsMessengerEXT=^TVkDebugUtilsMessengerEXT;
     TVkDebugUtilsMessengerEXT=TVkNonDispatchableHandle;

     PPVkVideoSessionKHR=^PVkVideoSessionKHR;
     PVkVideoSessionKHR=^TVkVideoSessionKHR;
     TVkVideoSessionKHR=TVkNonDispatchableHandle;

     PPVkVideoSessionParametersKHR=^PVkVideoSessionParametersKHR;
     PVkVideoSessionParametersKHR=^TVkVideoSessionParametersKHR;
     TVkVideoSessionParametersKHR=TVkNonDispatchableHandle;

     PPVkSemaphoreSciSyncPoolNV=^PVkSemaphoreSciSyncPoolNV;
     PVkSemaphoreSciSyncPoolNV=^TVkSemaphoreSciSyncPoolNV;
     TVkSemaphoreSciSyncPoolNV=TVkNonDispatchableHandle;

     PPVkImageLayout=^PVkImageLayout;
     PVkImageLayout=^TVkImageLayout;
     TVkImageLayout=
      (
       VK_IMAGE_LAYOUT_UNDEFINED=0,                                              //< Implicit layout an image is when its contents are undefined due to various reasons (e.g. right after creation)
       VK_IMAGE_LAYOUT_GENERAL=1,                                                //< General layout when image can be used for any kind of access
       VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL=2,                               //< Optimal layout when image is only used for color attachment read/write
       VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL=3,                       //< Optimal layout when image is only used for depth/stencil attachment read/write
       VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL=4,                        //< Optimal layout when image is used for read only depth/stencil attachment and shader access
       VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL=5,                               //< Optimal layout when image is used for read only shader access
       VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL=6,                                   //< Optimal layout when image is used only as source of transfer operations
       VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL=7,                                   //< Optimal layout when image is used only as destination of transfer operations
       VK_IMAGE_LAYOUT_PREINITIALIZED=8,                                         //< Initial layout used when the data is populated by the CPU
       VK_IMAGE_LAYOUT_PRESENT_SRC_KHR=1000001002,
       VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR=1000024000,
       VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR=1000024001,
       VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR=1000024002,
       VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR=1000111000,
       VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL=1000117000,
       VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL=1000117001,
       VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR=1000164003,
       VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT=1000218000,
       VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL=1000241000,
       VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL=1000241001,
       VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL=1000241002,
       VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL=1000241003,
       VK_IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR=1000299000,
       VK_IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR=1000299001,
       VK_IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR=1000299002,
       VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL=1000314000,
       VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL=1000314001,
       VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT=1000339000,
       VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR=VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL,
       VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR=VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL,
       VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR=VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL,
       VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR=VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL,
       VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR=VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL,
       VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV=VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR,
       VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR=VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL,
       VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR=VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL,
       VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR=VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
      );

     PPVkAttachmentLoadOp=^PVkAttachmentLoadOp;
     PVkAttachmentLoadOp=^TVkAttachmentLoadOp;
     TVkAttachmentLoadOp=
      (
       VK_ATTACHMENT_LOAD_OP_LOAD=0,
       VK_ATTACHMENT_LOAD_OP_CLEAR=1,
       VK_ATTACHMENT_LOAD_OP_DONT_CARE=2,
       VK_ATTACHMENT_LOAD_OP_NONE_EXT=1000400000
      );

     PPVkAttachmentStoreOp=^PVkAttachmentStoreOp;
     PVkAttachmentStoreOp=^TVkAttachmentStoreOp;
     TVkAttachmentStoreOp=
      (
       VK_ATTACHMENT_STORE_OP_STORE=0,
       VK_ATTACHMENT_STORE_OP_DONT_CARE=1,
       VK_ATTACHMENT_STORE_OP_NONE=1000301000,
       VK_ATTACHMENT_STORE_OP_NONE_KHR=VK_ATTACHMENT_STORE_OP_NONE,
       VK_ATTACHMENT_STORE_OP_NONE_QCOM=VK_ATTACHMENT_STORE_OP_NONE,
       VK_ATTACHMENT_STORE_OP_NONE_EXT=VK_ATTACHMENT_STORE_OP_NONE
      );

     PPVkImageType=^PVkImageType;
     PVkImageType=^TVkImageType;
     TVkImageType=
      (
       VK_IMAGE_TYPE_1D=0,
       VK_IMAGE_TYPE_2D=1,
       VK_IMAGE_TYPE_3D=2
      );

     PPVkImageTiling=^PVkImageTiling;
     PVkImageTiling=^TVkImageTiling;
     TVkImageTiling=
      (
       VK_IMAGE_TILING_OPTIMAL=0,
       VK_IMAGE_TILING_LINEAR=1,
       VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT=1000158000
      );

     PPVkImageViewType=^PVkImageViewType;
     PVkImageViewType=^TVkImageViewType;
     TVkImageViewType=
      (
       VK_IMAGE_VIEW_TYPE_1D=0,
       VK_IMAGE_VIEW_TYPE_2D=1,
       VK_IMAGE_VIEW_TYPE_3D=2,
       VK_IMAGE_VIEW_TYPE_CUBE=3,
       VK_IMAGE_VIEW_TYPE_1D_ARRAY=4,
       VK_IMAGE_VIEW_TYPE_2D_ARRAY=5,
       VK_IMAGE_VIEW_TYPE_CUBE_ARRAY=6
      );

     PPVkCommandBufferLevel=^PVkCommandBufferLevel;
     PVkCommandBufferLevel=^TVkCommandBufferLevel;
     TVkCommandBufferLevel=
      (
       VK_COMMAND_BUFFER_LEVEL_PRIMARY=0,
       VK_COMMAND_BUFFER_LEVEL_SECONDARY=1
      );

     PPVkComponentSwizzle=^PVkComponentSwizzle;
     PVkComponentSwizzle=^TVkComponentSwizzle;
     TVkComponentSwizzle=
      (
       VK_COMPONENT_SWIZZLE_IDENTITY=0,
       VK_COMPONENT_SWIZZLE_ZERO=1,
       VK_COMPONENT_SWIZZLE_ONE=2,
       VK_COMPONENT_SWIZZLE_R=3,
       VK_COMPONENT_SWIZZLE_G=4,
       VK_COMPONENT_SWIZZLE_B=5,
       VK_COMPONENT_SWIZZLE_A=6
      );

     PPVkDescriptorType=^PVkDescriptorType;
     PVkDescriptorType=^TVkDescriptorType;
     TVkDescriptorType=
      (
       VK_DESCRIPTOR_TYPE_SAMPLER=0,
       VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER=1,
       VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE=2,
       VK_DESCRIPTOR_TYPE_STORAGE_IMAGE=3,
       VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER=4,
       VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER=5,
       VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER=6,
       VK_DESCRIPTOR_TYPE_STORAGE_BUFFER=7,
       VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC=8,
       VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC=9,
       VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT=10,
       VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK=1000138000,
       VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR=1000150000,
       VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV=1000165000,
       VK_DESCRIPTOR_TYPE_MUTABLE_EXT=1000351000,
       VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM=1000440000,
       VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM=1000440001,
       VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT=VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK,
       VK_DESCRIPTOR_TYPE_MUTABLE_VALVE=VK_DESCRIPTOR_TYPE_MUTABLE_EXT
      );

     PPVkQueryType=^PVkQueryType;
     PVkQueryType=^TVkQueryType;
     TVkQueryType=
      (
       VK_QUERY_TYPE_OCCLUSION=0,
       VK_QUERY_TYPE_PIPELINE_STATISTICS=1,                                      //< Optional
       VK_QUERY_TYPE_TIMESTAMP=2,
       VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR=1000023000,
       VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT=1000028004,
       VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR=1000116000,
       VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR=1000150000,
       VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR=1000150001,
       VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV=1000165000,
       VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL=1000210000,
       VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR=1000299000,
       VK_QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT=1000328000,
       VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT=1000382000,
       VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR=1000386000,
       VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR=1000386001,
       VK_QUERY_TYPE_MICROMAP_SERIALIZATION_SIZE_EXT=1000396000,
       VK_QUERY_TYPE_MICROMAP_COMPACTED_SIZE_EXT=1000396001
      );

     PPVkBorderColor=^PVkBorderColor;
     PVkBorderColor=^TVkBorderColor;
     TVkBorderColor=
      (
       VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK=0,
       VK_BORDER_COLOR_INT_TRANSPARENT_BLACK=1,
       VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK=2,
       VK_BORDER_COLOR_INT_OPAQUE_BLACK=3,
       VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE=4,
       VK_BORDER_COLOR_INT_OPAQUE_WHITE=5,
       VK_BORDER_COLOR_FLOAT_CUSTOM_EXT=1000287003,
       VK_BORDER_COLOR_INT_CUSTOM_EXT=1000287004
      );

     PPVkPipelineBindPoint=^PVkPipelineBindPoint;
     PVkPipelineBindPoint=^TVkPipelineBindPoint;
     TVkPipelineBindPoint=
      (
       VK_PIPELINE_BIND_POINT_GRAPHICS=0,
       VK_PIPELINE_BIND_POINT_COMPUTE=1,
       VK_PIPELINE_BIND_POINT_EXECUTION_GRAPH_AMDX=1000134000,
       VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR=1000165000,
       VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI=1000369003,
       VK_PIPELINE_BIND_POINT_RAY_TRACING_NV=VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR
      );

     PPVkPipelineCacheHeaderVersion=^PVkPipelineCacheHeaderVersion;
     PVkPipelineCacheHeaderVersion=^TVkPipelineCacheHeaderVersion;
     TVkPipelineCacheHeaderVersion=
      (
       VK_PIPELINE_CACHE_HEADER_VERSION_ONE=1
      );

     PPVkPipelineCacheCreateFlagBits=^PVkPipelineCacheCreateFlagBits;
     PVkPipelineCacheCreateFlagBits=^TVkPipelineCacheCreateFlagBits;
     TVkPipelineCacheCreateFlagBits=
      (
       VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT=$00000001,
       VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT=VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT
      );

     PPVkPrimitiveTopology=^PVkPrimitiveTopology;
     PVkPrimitiveTopology=^TVkPrimitiveTopology;
     TVkPrimitiveTopology=
      (
       VK_PRIMITIVE_TOPOLOGY_POINT_LIST=0,
       VK_PRIMITIVE_TOPOLOGY_LINE_LIST=1,
       VK_PRIMITIVE_TOPOLOGY_LINE_STRIP=2,
       VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST=3,
       VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP=4,
       VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN=5,
       VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY=6,
       VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY=7,
       VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY=8,
       VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY=9,
       VK_PRIMITIVE_TOPOLOGY_PATCH_LIST=10
      );

     PPVkSharingMode=^PVkSharingMode;
     PVkSharingMode=^TVkSharingMode;
     TVkSharingMode=
      (
       VK_SHARING_MODE_EXCLUSIVE=0,
       VK_SHARING_MODE_CONCURRENT=1
      );

     PPVkIndexType=^PVkIndexType;
     PVkIndexType=^TVkIndexType;
     TVkIndexType=
      (
       VK_INDEX_TYPE_UINT16=0,
       VK_INDEX_TYPE_UINT32=1,
       VK_INDEX_TYPE_NONE_KHR=1000165000,
       VK_INDEX_TYPE_UINT8_EXT=1000265000,
       VK_INDEX_TYPE_NONE_NV=VK_INDEX_TYPE_NONE_KHR
      );

     PPVkFilter=^PVkFilter;
     PVkFilter=^TVkFilter;
     TVkFilter=
      (
       VK_FILTER_NEAREST=0,
       VK_FILTER_LINEAR=1,
       VK_FILTER_CUBIC_EXT=1000015000,
       VK_FILTER_CUBIC_IMG=VK_FILTER_CUBIC_EXT
      );

     PPVkSamplerMipmapMode=^PVkSamplerMipmapMode;
     PVkSamplerMipmapMode=^TVkSamplerMipmapMode;
     TVkSamplerMipmapMode=
      (
       VK_SAMPLER_MIPMAP_MODE_NEAREST=0,                                         //< Choose nearest mip level
       VK_SAMPLER_MIPMAP_MODE_LINEAR=1                                           //< Linear filter between mip levels
      );

     PPVkSamplerAddressMode=^PVkSamplerAddressMode;
     PVkSamplerAddressMode=^TVkSamplerAddressMode;
     TVkSamplerAddressMode=
      (
       VK_SAMPLER_ADDRESS_MODE_REPEAT=0,
       VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT=1,
       VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE=2,
       VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER=3,
       VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE=4,
       VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE_KHR=VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE
      );

     PPVkCompareOp=^PVkCompareOp;
     PVkCompareOp=^TVkCompareOp;
     TVkCompareOp=
      (
       VK_COMPARE_OP_NEVER=0,
       VK_COMPARE_OP_LESS=1,
       VK_COMPARE_OP_EQUAL=2,
       VK_COMPARE_OP_LESS_OR_EQUAL=3,
       VK_COMPARE_OP_GREATER=4,
       VK_COMPARE_OP_NOT_EQUAL=5,
       VK_COMPARE_OP_GREATER_OR_EQUAL=6,
       VK_COMPARE_OP_ALWAYS=7
      );

     PPVkPolygonMode=^PVkPolygonMode;
     PVkPolygonMode=^TVkPolygonMode;
     TVkPolygonMode=
      (
       VK_POLYGON_MODE_FILL=0,
       VK_POLYGON_MODE_LINE=1,
       VK_POLYGON_MODE_POINT=2,
       VK_POLYGON_MODE_FILL_RECTANGLE_NV=1000153000
      );

     PPVkFrontFace=^PVkFrontFace;
     PVkFrontFace=^TVkFrontFace;
     TVkFrontFace=
      (
       VK_FRONT_FACE_COUNTER_CLOCKWISE=0,
       VK_FRONT_FACE_CLOCKWISE=1
      );

     PPVkBlendFactor=^PVkBlendFactor;
     PVkBlendFactor=^TVkBlendFactor;
     TVkBlendFactor=
      (
       VK_BLEND_FACTOR_ZERO=0,
       VK_BLEND_FACTOR_ONE=1,
       VK_BLEND_FACTOR_SRC_COLOR=2,
       VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR=3,
       VK_BLEND_FACTOR_DST_COLOR=4,
       VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR=5,
       VK_BLEND_FACTOR_SRC_ALPHA=6,
       VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA=7,
       VK_BLEND_FACTOR_DST_ALPHA=8,
       VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA=9,
       VK_BLEND_FACTOR_CONSTANT_COLOR=10,
       VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR=11,
       VK_BLEND_FACTOR_CONSTANT_ALPHA=12,
       VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA=13,
       VK_BLEND_FACTOR_SRC_ALPHA_SATURATE=14,
       VK_BLEND_FACTOR_SRC1_COLOR=15,
       VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR=16,
       VK_BLEND_FACTOR_SRC1_ALPHA=17,
       VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA=18
      );

     PPVkBlendOp=^PVkBlendOp;
     PVkBlendOp=^TVkBlendOp;
     TVkBlendOp=
      (
       VK_BLEND_OP_ADD=0,
       VK_BLEND_OP_SUBTRACT=1,
       VK_BLEND_OP_REVERSE_SUBTRACT=2,
       VK_BLEND_OP_MIN=3,
       VK_BLEND_OP_MAX=4,
       VK_BLEND_OP_ZERO_EXT=1000148000,
       VK_BLEND_OP_SRC_EXT=1000148001,
       VK_BLEND_OP_DST_EXT=1000148002,
       VK_BLEND_OP_SRC_OVER_EXT=1000148003,
       VK_BLEND_OP_DST_OVER_EXT=1000148004,
       VK_BLEND_OP_SRC_IN_EXT=1000148005,
       VK_BLEND_OP_DST_IN_EXT=1000148006,
       VK_BLEND_OP_SRC_OUT_EXT=1000148007,
       VK_BLEND_OP_DST_OUT_EXT=1000148008,
       VK_BLEND_OP_SRC_ATOP_EXT=1000148009,
       VK_BLEND_OP_DST_ATOP_EXT=1000148010,
       VK_BLEND_OP_XOR_EXT=1000148011,
       VK_BLEND_OP_MULTIPLY_EXT=1000148012,
       VK_BLEND_OP_SCREEN_EXT=1000148013,
       VK_BLEND_OP_OVERLAY_EXT=1000148014,
       VK_BLEND_OP_DARKEN_EXT=1000148015,
       VK_BLEND_OP_LIGHTEN_EXT=1000148016,
       VK_BLEND_OP_COLORDODGE_EXT=1000148017,
       VK_BLEND_OP_COLORBURN_EXT=1000148018,
       VK_BLEND_OP_HARDLIGHT_EXT=1000148019,
       VK_BLEND_OP_SOFTLIGHT_EXT=1000148020,
       VK_BLEND_OP_DIFFERENCE_EXT=1000148021,
       VK_BLEND_OP_EXCLUSION_EXT=1000148022,
       VK_BLEND_OP_INVERT_EXT=1000148023,
       VK_BLEND_OP_INVERT_RGB_EXT=1000148024,
       VK_BLEND_OP_LINEARDODGE_EXT=1000148025,
       VK_BLEND_OP_LINEARBURN_EXT=1000148026,
       VK_BLEND_OP_VIVIDLIGHT_EXT=1000148027,
       VK_BLEND_OP_LINEARLIGHT_EXT=1000148028,
       VK_BLEND_OP_PINLIGHT_EXT=1000148029,
       VK_BLEND_OP_HARDMIX_EXT=1000148030,
       VK_BLEND_OP_HSL_HUE_EXT=1000148031,
       VK_BLEND_OP_HSL_SATURATION_EXT=1000148032,
       VK_BLEND_OP_HSL_COLOR_EXT=1000148033,
       VK_BLEND_OP_HSL_LUMINOSITY_EXT=1000148034,
       VK_BLEND_OP_PLUS_EXT=1000148035,
       VK_BLEND_OP_PLUS_CLAMPED_EXT=1000148036,
       VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT=1000148037,
       VK_BLEND_OP_PLUS_DARKER_EXT=1000148038,
       VK_BLEND_OP_MINUS_EXT=1000148039,
       VK_BLEND_OP_MINUS_CLAMPED_EXT=1000148040,
       VK_BLEND_OP_CONTRAST_EXT=1000148041,
       VK_BLEND_OP_INVERT_OVG_EXT=1000148042,
       VK_BLEND_OP_RED_EXT=1000148043,
       VK_BLEND_OP_GREEN_EXT=1000148044,
       VK_BLEND_OP_BLUE_EXT=1000148045
      );

     PPVkStencilOp=^PVkStencilOp;
     PVkStencilOp=^TVkStencilOp;
     TVkStencilOp=
      (
       VK_STENCIL_OP_KEEP=0,
       VK_STENCIL_OP_ZERO=1,
       VK_STENCIL_OP_REPLACE=2,
       VK_STENCIL_OP_INCREMENT_AND_CLAMP=3,
       VK_STENCIL_OP_DECREMENT_AND_CLAMP=4,
       VK_STENCIL_OP_INVERT=5,
       VK_STENCIL_OP_INCREMENT_AND_WRAP=6,
       VK_STENCIL_OP_DECREMENT_AND_WRAP=7
      );

     PPVkLogicOp=^PVkLogicOp;
     PVkLogicOp=^TVkLogicOp;
     TVkLogicOp=
      (
       VK_LOGIC_OP_CLEAR=0,
       VK_LOGIC_OP_AND=1,
       VK_LOGIC_OP_AND_REVERSE=2,
       VK_LOGIC_OP_COPY=3,
       VK_LOGIC_OP_AND_INVERTED=4,
       VK_LOGIC_OP_NO_OP=5,
       VK_LOGIC_OP_XOR=6,
       VK_LOGIC_OP_OR=7,
       VK_LOGIC_OP_NOR=8,
       VK_LOGIC_OP_EQUIVALENT=9,
       VK_LOGIC_OP_INVERT=10,
       VK_LOGIC_OP_OR_REVERSE=11,
       VK_LOGIC_OP_COPY_INVERTED=12,
       VK_LOGIC_OP_OR_INVERTED=13,
       VK_LOGIC_OP_NAND=14,
       VK_LOGIC_OP_SET=15
      );

     PPVkInternalAllocationType=^PVkInternalAllocationType;
     PVkInternalAllocationType=^TVkInternalAllocationType;
     TVkInternalAllocationType=
      (
       VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE=0
      );

     PPVkSystemAllocationScope=^PVkSystemAllocationScope;
     PVkSystemAllocationScope=^TVkSystemAllocationScope;
     TVkSystemAllocationScope=
      (
       VK_SYSTEM_ALLOCATION_SCOPE_COMMAND=0,
       VK_SYSTEM_ALLOCATION_SCOPE_OBJECT=1,
       VK_SYSTEM_ALLOCATION_SCOPE_CACHE=2,
       VK_SYSTEM_ALLOCATION_SCOPE_DEVICE=3,
       VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE=4
      );

     PPVkPhysicalDeviceType=^PVkPhysicalDeviceType;
     PVkPhysicalDeviceType=^TVkPhysicalDeviceType;
     TVkPhysicalDeviceType=
      (
       VK_PHYSICAL_DEVICE_TYPE_OTHER=0,
       VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU=1,
       VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU=2,
       VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU=3,
       VK_PHYSICAL_DEVICE_TYPE_CPU=4
      );

     PPVkVertexInputRate=^PVkVertexInputRate;
     PVkVertexInputRate=^TVkVertexInputRate;
     TVkVertexInputRate=
      (
       VK_VERTEX_INPUT_RATE_VERTEX=0,
       VK_VERTEX_INPUT_RATE_INSTANCE=1
      );

     PPVkFormat=^PVkFormat;
     PVkFormat=^TVkFormat;
     TVkFormat=
      (
       VK_FORMAT_UNDEFINED=0,
       VK_FORMAT_R4G4_UNORM_PACK8=1,
       VK_FORMAT_R4G4B4A4_UNORM_PACK16=2,
       VK_FORMAT_B4G4R4A4_UNORM_PACK16=3,
       VK_FORMAT_R5G6B5_UNORM_PACK16=4,
       VK_FORMAT_B5G6R5_UNORM_PACK16=5,
       VK_FORMAT_R5G5B5A1_UNORM_PACK16=6,
       VK_FORMAT_B5G5R5A1_UNORM_PACK16=7,
       VK_FORMAT_A1R5G5B5_UNORM_PACK16=8,
       VK_FORMAT_R8_UNORM=9,
       VK_FORMAT_R8_SNORM=10,
       VK_FORMAT_R8_USCALED=11,
       VK_FORMAT_R8_SSCALED=12,
       VK_FORMAT_R8_UINT=13,
       VK_FORMAT_R8_SINT=14,
       VK_FORMAT_R8_SRGB=15,
       VK_FORMAT_R8G8_UNORM=16,
       VK_FORMAT_R8G8_SNORM=17,
       VK_FORMAT_R8G8_USCALED=18,
       VK_FORMAT_R8G8_SSCALED=19,
       VK_FORMAT_R8G8_UINT=20,
       VK_FORMAT_R8G8_SINT=21,
       VK_FORMAT_R8G8_SRGB=22,
       VK_FORMAT_R8G8B8_UNORM=23,
       VK_FORMAT_R8G8B8_SNORM=24,
       VK_FORMAT_R8G8B8_USCALED=25,
       VK_FORMAT_R8G8B8_SSCALED=26,
       VK_FORMAT_R8G8B8_UINT=27,
       VK_FORMAT_R8G8B8_SINT=28,
       VK_FORMAT_R8G8B8_SRGB=29,
       VK_FORMAT_B8G8R8_UNORM=30,
       VK_FORMAT_B8G8R8_SNORM=31,
       VK_FORMAT_B8G8R8_USCALED=32,
       VK_FORMAT_B8G8R8_SSCALED=33,
       VK_FORMAT_B8G8R8_UINT=34,
       VK_FORMAT_B8G8R8_SINT=35,
       VK_FORMAT_B8G8R8_SRGB=36,
       VK_FORMAT_R8G8B8A8_UNORM=37,
       VK_FORMAT_R8G8B8A8_SNORM=38,
       VK_FORMAT_R8G8B8A8_USCALED=39,
       VK_FORMAT_R8G8B8A8_SSCALED=40,
       VK_FORMAT_R8G8B8A8_UINT=41,
       VK_FORMAT_R8G8B8A8_SINT=42,
       VK_FORMAT_R8G8B8A8_SRGB=43,
       VK_FORMAT_B8G8R8A8_UNORM=44,
       VK_FORMAT_B8G8R8A8_SNORM=45,
       VK_FORMAT_B8G8R8A8_USCALED=46,
       VK_FORMAT_B8G8R8A8_SSCALED=47,
       VK_FORMAT_B8G8R8A8_UINT=48,
       VK_FORMAT_B8G8R8A8_SINT=49,
       VK_FORMAT_B8G8R8A8_SRGB=50,
       VK_FORMAT_A8B8G8R8_UNORM_PACK32=51,
       VK_FORMAT_A8B8G8R8_SNORM_PACK32=52,
       VK_FORMAT_A8B8G8R8_USCALED_PACK32=53,
       VK_FORMAT_A8B8G8R8_SSCALED_PACK32=54,
       VK_FORMAT_A8B8G8R8_UINT_PACK32=55,
       VK_FORMAT_A8B8G8R8_SINT_PACK32=56,
       VK_FORMAT_A8B8G8R8_SRGB_PACK32=57,
       VK_FORMAT_A2R10G10B10_UNORM_PACK32=58,
       VK_FORMAT_A2R10G10B10_SNORM_PACK32=59,
       VK_FORMAT_A2R10G10B10_USCALED_PACK32=60,
       VK_FORMAT_A2R10G10B10_SSCALED_PACK32=61,
       VK_FORMAT_A2R10G10B10_UINT_PACK32=62,
       VK_FORMAT_A2R10G10B10_SINT_PACK32=63,
       VK_FORMAT_A2B10G10R10_UNORM_PACK32=64,
       VK_FORMAT_A2B10G10R10_SNORM_PACK32=65,
       VK_FORMAT_A2B10G10R10_USCALED_PACK32=66,
       VK_FORMAT_A2B10G10R10_SSCALED_PACK32=67,
       VK_FORMAT_A2B10G10R10_UINT_PACK32=68,
       VK_FORMAT_A2B10G10R10_SINT_PACK32=69,
       VK_FORMAT_R16_UNORM=70,
       VK_FORMAT_R16_SNORM=71,
       VK_FORMAT_R16_USCALED=72,
       VK_FORMAT_R16_SSCALED=73,
       VK_FORMAT_R16_UINT=74,
       VK_FORMAT_R16_SINT=75,
       VK_FORMAT_R16_SFLOAT=76,
       VK_FORMAT_R16G16_UNORM=77,
       VK_FORMAT_R16G16_SNORM=78,
       VK_FORMAT_R16G16_USCALED=79,
       VK_FORMAT_R16G16_SSCALED=80,
       VK_FORMAT_R16G16_UINT=81,
       VK_FORMAT_R16G16_SINT=82,
       VK_FORMAT_R16G16_SFLOAT=83,
       VK_FORMAT_R16G16B16_UNORM=84,
       VK_FORMAT_R16G16B16_SNORM=85,
       VK_FORMAT_R16G16B16_USCALED=86,
       VK_FORMAT_R16G16B16_SSCALED=87,
       VK_FORMAT_R16G16B16_UINT=88,
       VK_FORMAT_R16G16B16_SINT=89,
       VK_FORMAT_R16G16B16_SFLOAT=90,
       VK_FORMAT_R16G16B16A16_UNORM=91,
       VK_FORMAT_R16G16B16A16_SNORM=92,
       VK_FORMAT_R16G16B16A16_USCALED=93,
       VK_FORMAT_R16G16B16A16_SSCALED=94,
       VK_FORMAT_R16G16B16A16_UINT=95,
       VK_FORMAT_R16G16B16A16_SINT=96,
       VK_FORMAT_R16G16B16A16_SFLOAT=97,
       VK_FORMAT_R32_UINT=98,
       VK_FORMAT_R32_SINT=99,
       VK_FORMAT_R32_SFLOAT=100,
       VK_FORMAT_R32G32_UINT=101,
       VK_FORMAT_R32G32_SINT=102,
       VK_FORMAT_R32G32_SFLOAT=103,
       VK_FORMAT_R32G32B32_UINT=104,
       VK_FORMAT_R32G32B32_SINT=105,
       VK_FORMAT_R32G32B32_SFLOAT=106,
       VK_FORMAT_R32G32B32A32_UINT=107,
       VK_FORMAT_R32G32B32A32_SINT=108,
       VK_FORMAT_R32G32B32A32_SFLOAT=109,
       VK_FORMAT_R64_UINT=110,
       VK_FORMAT_R64_SINT=111,
       VK_FORMAT_R64_SFLOAT=112,
       VK_FORMAT_R64G64_UINT=113,
       VK_FORMAT_R64G64_SINT=114,
       VK_FORMAT_R64G64_SFLOAT=115,
       VK_FORMAT_R64G64B64_UINT=116,
       VK_FORMAT_R64G64B64_SINT=117,
       VK_FORMAT_R64G64B64_SFLOAT=118,
       VK_FORMAT_R64G64B64A64_UINT=119,
       VK_FORMAT_R64G64B64A64_SINT=120,
       VK_FORMAT_R64G64B64A64_SFLOAT=121,
       VK_FORMAT_B10G11R11_UFLOAT_PACK32=122,
       VK_FORMAT_E5B9G9R9_UFLOAT_PACK32=123,
       VK_FORMAT_D16_UNORM=124,
       VK_FORMAT_X8_D24_UNORM_PACK32=125,
       VK_FORMAT_D32_SFLOAT=126,
       VK_FORMAT_S8_UINT=127,
       VK_FORMAT_D16_UNORM_S8_UINT=128,
       VK_FORMAT_D24_UNORM_S8_UINT=129,
       VK_FORMAT_D32_SFLOAT_S8_UINT=130,
       VK_FORMAT_BC1_RGB_UNORM_BLOCK=131,
       VK_FORMAT_BC1_RGB_SRGB_BLOCK=132,
       VK_FORMAT_BC1_RGBA_UNORM_BLOCK=133,
       VK_FORMAT_BC1_RGBA_SRGB_BLOCK=134,
       VK_FORMAT_BC2_UNORM_BLOCK=135,
       VK_FORMAT_BC2_SRGB_BLOCK=136,
       VK_FORMAT_BC3_UNORM_BLOCK=137,
       VK_FORMAT_BC3_SRGB_BLOCK=138,
       VK_FORMAT_BC4_UNORM_BLOCK=139,
       VK_FORMAT_BC4_SNORM_BLOCK=140,
       VK_FORMAT_BC5_UNORM_BLOCK=141,
       VK_FORMAT_BC5_SNORM_BLOCK=142,
       VK_FORMAT_BC6H_UFLOAT_BLOCK=143,
       VK_FORMAT_BC6H_SFLOAT_BLOCK=144,
       VK_FORMAT_BC7_UNORM_BLOCK=145,
       VK_FORMAT_BC7_SRGB_BLOCK=146,
       VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK=147,
       VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK=148,
       VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK=149,
       VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK=150,
       VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK=151,
       VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK=152,
       VK_FORMAT_EAC_R11_UNORM_BLOCK=153,
       VK_FORMAT_EAC_R11_SNORM_BLOCK=154,
       VK_FORMAT_EAC_R11G11_UNORM_BLOCK=155,
       VK_FORMAT_EAC_R11G11_SNORM_BLOCK=156,
       VK_FORMAT_ASTC_4x4_UNORM_BLOCK=157,
       VK_FORMAT_ASTC_4x4_SRGB_BLOCK=158,
       VK_FORMAT_ASTC_5x4_UNORM_BLOCK=159,
       VK_FORMAT_ASTC_5x4_SRGB_BLOCK=160,
       VK_FORMAT_ASTC_5x5_UNORM_BLOCK=161,
       VK_FORMAT_ASTC_5x5_SRGB_BLOCK=162,
       VK_FORMAT_ASTC_6x5_UNORM_BLOCK=163,
       VK_FORMAT_ASTC_6x5_SRGB_BLOCK=164,
       VK_FORMAT_ASTC_6x6_UNORM_BLOCK=165,
       VK_FORMAT_ASTC_6x6_SRGB_BLOCK=166,
       VK_FORMAT_ASTC_8x5_UNORM_BLOCK=167,
       VK_FORMAT_ASTC_8x5_SRGB_BLOCK=168,
       VK_FORMAT_ASTC_8x6_UNORM_BLOCK=169,
       VK_FORMAT_ASTC_8x6_SRGB_BLOCK=170,
       VK_FORMAT_ASTC_8x8_UNORM_BLOCK=171,
       VK_FORMAT_ASTC_8x8_SRGB_BLOCK=172,
       VK_FORMAT_ASTC_10x5_UNORM_BLOCK=173,
       VK_FORMAT_ASTC_10x5_SRGB_BLOCK=174,
       VK_FORMAT_ASTC_10x6_UNORM_BLOCK=175,
       VK_FORMAT_ASTC_10x6_SRGB_BLOCK=176,
       VK_FORMAT_ASTC_10x8_UNORM_BLOCK=177,
       VK_FORMAT_ASTC_10x8_SRGB_BLOCK=178,
       VK_FORMAT_ASTC_10x10_UNORM_BLOCK=179,
       VK_FORMAT_ASTC_10x10_SRGB_BLOCK=180,
       VK_FORMAT_ASTC_12x10_UNORM_BLOCK=181,
       VK_FORMAT_ASTC_12x10_SRGB_BLOCK=182,
       VK_FORMAT_ASTC_12x12_UNORM_BLOCK=183,
       VK_FORMAT_ASTC_12x12_SRGB_BLOCK=184,
       VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG=1000054000,
       VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG=1000054001,
       VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG=1000054002,
       VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG=1000054003,
       VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG=1000054004,
       VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG=1000054005,
       VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG=1000054006,
       VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG=1000054007,
       VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK=1000066000,
       VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK=1000066001,
       VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK=1000066002,
       VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK=1000066003,
       VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK=1000066004,
       VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK=1000066005,
       VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK=1000066006,
       VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK=1000066007,
       VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK=1000066008,
       VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK=1000066009,
       VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK=1000066010,
       VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK=1000066011,
       VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK=1000066012,
       VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK=1000066013,
       VK_FORMAT_G8B8G8R8_422_UNORM=1000156000,
       VK_FORMAT_B8G8R8G8_422_UNORM=1000156001,
       VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM=1000156002,
       VK_FORMAT_G8_B8R8_2PLANE_420_UNORM=1000156003,
       VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM=1000156004,
       VK_FORMAT_G8_B8R8_2PLANE_422_UNORM=1000156005,
       VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM=1000156006,
       VK_FORMAT_R10X6_UNORM_PACK16=1000156007,
       VK_FORMAT_R10X6G10X6_UNORM_2PACK16=1000156008,
       VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16=1000156009,
       VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16=1000156010,
       VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16=1000156011,
       VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16=1000156012,
       VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16=1000156013,
       VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16=1000156014,
       VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16=1000156015,
       VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16=1000156016,
       VK_FORMAT_R12X4_UNORM_PACK16=1000156017,
       VK_FORMAT_R12X4G12X4_UNORM_2PACK16=1000156018,
       VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16=1000156019,
       VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16=1000156020,
       VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16=1000156021,
       VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16=1000156022,
       VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16=1000156023,
       VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16=1000156024,
       VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16=1000156025,
       VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16=1000156026,
       VK_FORMAT_G16B16G16R16_422_UNORM=1000156027,
       VK_FORMAT_B16G16R16G16_422_UNORM=1000156028,
       VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM=1000156029,
       VK_FORMAT_G16_B16R16_2PLANE_420_UNORM=1000156030,
       VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM=1000156031,
       VK_FORMAT_G16_B16R16_2PLANE_422_UNORM=1000156032,
       VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM=1000156033,
       VK_FORMAT_ASTC_3x3x3_UNORM_BLOCK_EXT=1000288000,
       VK_FORMAT_ASTC_3x3x3_SRGB_BLOCK_EXT=1000288001,
       VK_FORMAT_ASTC_3x3x3_SFLOAT_BLOCK_EXT=1000288002,
       VK_FORMAT_ASTC_4x3x3_UNORM_BLOCK_EXT=1000288003,
       VK_FORMAT_ASTC_4x3x3_SRGB_BLOCK_EXT=1000288004,
       VK_FORMAT_ASTC_4x3x3_SFLOAT_BLOCK_EXT=1000288005,
       VK_FORMAT_ASTC_4x4x3_UNORM_BLOCK_EXT=1000288006,
       VK_FORMAT_ASTC_4x4x3_SRGB_BLOCK_EXT=1000288007,
       VK_FORMAT_ASTC_4x4x3_SFLOAT_BLOCK_EXT=1000288008,
       VK_FORMAT_ASTC_4x4x4_UNORM_BLOCK_EXT=1000288009,
       VK_FORMAT_ASTC_4x4x4_SRGB_BLOCK_EXT=1000288010,
       VK_FORMAT_ASTC_4x4x4_SFLOAT_BLOCK_EXT=1000288011,
       VK_FORMAT_ASTC_5x4x4_UNORM_BLOCK_EXT=1000288012,
       VK_FORMAT_ASTC_5x4x4_SRGB_BLOCK_EXT=1000288013,
       VK_FORMAT_ASTC_5x4x4_SFLOAT_BLOCK_EXT=1000288014,
       VK_FORMAT_ASTC_5x5x4_UNORM_BLOCK_EXT=1000288015,
       VK_FORMAT_ASTC_5x5x4_SRGB_BLOCK_EXT=1000288016,
       VK_FORMAT_ASTC_5x5x4_SFLOAT_BLOCK_EXT=1000288017,
       VK_FORMAT_ASTC_5x5x5_UNORM_BLOCK_EXT=1000288018,
       VK_FORMAT_ASTC_5x5x5_SRGB_BLOCK_EXT=1000288019,
       VK_FORMAT_ASTC_5x5x5_SFLOAT_BLOCK_EXT=1000288020,
       VK_FORMAT_ASTC_6x5x5_UNORM_BLOCK_EXT=1000288021,
       VK_FORMAT_ASTC_6x5x5_SRGB_BLOCK_EXT=1000288022,
       VK_FORMAT_ASTC_6x5x5_SFLOAT_BLOCK_EXT=1000288023,
       VK_FORMAT_ASTC_6x6x5_UNORM_BLOCK_EXT=1000288024,
       VK_FORMAT_ASTC_6x6x5_SRGB_BLOCK_EXT=1000288025,
       VK_FORMAT_ASTC_6x6x5_SFLOAT_BLOCK_EXT=1000288026,
       VK_FORMAT_ASTC_6x6x6_UNORM_BLOCK_EXT=1000288027,
       VK_FORMAT_ASTC_6x6x6_SRGB_BLOCK_EXT=1000288028,
       VK_FORMAT_ASTC_6x6x6_SFLOAT_BLOCK_EXT=1000288029,
       VK_FORMAT_G8_B8R8_2PLANE_444_UNORM=1000330000,
       VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16=1000330001,
       VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16=1000330002,
       VK_FORMAT_G16_B16R16_2PLANE_444_UNORM=1000330003,
       VK_FORMAT_A4R4G4B4_UNORM_PACK16=1000340000,
       VK_FORMAT_A4B4G4R4_UNORM_PACK16=1000340001,
       VK_FORMAT_R16G16_S10_5_NV=1000464000,
       VK_FORMAT_A1B5G5R5_UNORM_PACK16_KHR=1000470000,
       VK_FORMAT_A8_UNORM_KHR=1000470001,
       VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT=VK_FORMAT_A4B4G4R4_UNORM_PACK16,
       VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT=VK_FORMAT_A4R4G4B4_UNORM_PACK16,
       VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT=VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK,
       VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT=VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK,
       VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT=VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK,
       VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT=VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK,
       VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT=VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK,
       VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT=VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK,
       VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT=VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK,
       VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT=VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK,
       VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT=VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK,
       VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT=VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK,
       VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT=VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK,
       VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT=VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK,
       VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT=VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK,
       VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT=VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK,
       VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR=VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16,
       VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR=VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16,
       VK_FORMAT_B16G16R16G16_422_UNORM_KHR=VK_FORMAT_B16G16R16G16_422_UNORM,
       VK_FORMAT_B8G8R8G8_422_UNORM_KHR=VK_FORMAT_B8G8R8G8_422_UNORM,
       VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR=VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16,
       VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR=VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16,
       VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR=VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16,
       VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT=VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16,
       VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR=VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16,
       VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR=VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16,
       VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR=VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16,
       VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR=VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16,
       VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR=VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16,
       VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR=VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16,
       VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT=VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16,
       VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR=VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16,
       VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR=VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16,
       VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR=VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16,
       VK_FORMAT_G16B16G16R16_422_UNORM_KHR=VK_FORMAT_G16B16G16R16_422_UNORM,
       VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR=VK_FORMAT_G16_B16R16_2PLANE_420_UNORM,
       VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR=VK_FORMAT_G16_B16R16_2PLANE_422_UNORM,
       VK_FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT=VK_FORMAT_G16_B16R16_2PLANE_444_UNORM,
       VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR=VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM,
       VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR=VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM,
       VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR=VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM,
       VK_FORMAT_G8B8G8R8_422_UNORM_KHR=VK_FORMAT_G8B8G8R8_422_UNORM,
       VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR=VK_FORMAT_G8_B8R8_2PLANE_420_UNORM,
       VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR=VK_FORMAT_G8_B8R8_2PLANE_422_UNORM,
       VK_FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT=VK_FORMAT_G8_B8R8_2PLANE_444_UNORM,
       VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR=VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM,
       VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR=VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM,
       VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR=VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM,
       VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR=VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16,
       VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR=VK_FORMAT_R10X6G10X6_UNORM_2PACK16,
       VK_FORMAT_R10X6_UNORM_PACK16_KHR=VK_FORMAT_R10X6_UNORM_PACK16,
       VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR=VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16,
       VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR=VK_FORMAT_R12X4G12X4_UNORM_2PACK16,
       VK_FORMAT_R12X4_UNORM_PACK16_KHR=VK_FORMAT_R12X4_UNORM_PACK16
      );

     PPVkStructureType=^PVkStructureType;
     PVkStructureType=^TVkStructureType;
     TVkStructureType=
      (
       VK_STRUCTURE_TYPE_APPLICATION_INFO=0,
       VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO=1,
       VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO=2,
       VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO=3,
       VK_STRUCTURE_TYPE_SUBMIT_INFO=4,
       VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO=5,
       VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE=6,
       VK_STRUCTURE_TYPE_BIND_SPARSE_INFO=7,
       VK_STRUCTURE_TYPE_FENCE_CREATE_INFO=8,
       VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO=9,
       VK_STRUCTURE_TYPE_EVENT_CREATE_INFO=10,
       VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO=11,
       VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO=12,
       VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO=13,
       VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO=14,
       VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO=15,
       VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO=16,
       VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO=17,
       VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO=18,
       VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO=19,
       VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO=20,
       VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO=21,
       VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO=22,
       VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO=23,
       VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO=24,
       VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO=25,
       VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO=26,
       VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO=27,
       VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO=28,
       VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO=29,
       VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO=30,
       VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO=31,
       VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO=32,
       VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO=33,
       VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO=34,
       VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET=35,
       VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET=36,
       VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO=37,
       VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO=38,
       VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO=39,
       VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO=40,
       VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO=41,
       VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO=42,
       VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO=43,
       VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER=44,
       VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER=45,
       VK_STRUCTURE_TYPE_MEMORY_BARRIER=46,
       VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO=47,                         //< Reserved for internal use by the loader, layers, and ICDs
       VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO=48,                           //< Reserved for internal use by the loader, layers, and ICDs
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES=49,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES=50,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES=51,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES=52,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES=53,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES=54,
       VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR=1000001000,
       VK_STRUCTURE_TYPE_PRESENT_INFO_KHR=1000001001,
       VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR=1000002000,
       VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR=1000002001,
       VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR=1000003000,
       VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR=1000004000,
       VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR=1000005000,
       VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR=1000006000,
       VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR=1000008000,
       VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR=1000009000,
       VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID=1000010000,
       VK_STRUCTURE_TYPE_SWAPCHAIN_IMAGE_CREATE_INFO_ANDROID=1000010001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENTATION_PROPERTIES_ANDROID=1000010002,
       VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT=1000011000,
       VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD=1000018000,
       VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT=1000022000,
       VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT=1000022001,
       VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT=1000022002,
       VK_STRUCTURE_TYPE_VIDEO_PROFILE_INFO_KHR=1000023000,
       VK_STRUCTURE_TYPE_VIDEO_CAPABILITIES_KHR=1000023001,
       VK_STRUCTURE_TYPE_VIDEO_PICTURE_RESOURCE_INFO_KHR=1000023002,
       VK_STRUCTURE_TYPE_VIDEO_SESSION_MEMORY_REQUIREMENTS_KHR=1000023003,
       VK_STRUCTURE_TYPE_BIND_VIDEO_SESSION_MEMORY_INFO_KHR=1000023004,
       VK_STRUCTURE_TYPE_VIDEO_SESSION_CREATE_INFO_KHR=1000023005,
       VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR=1000023006,
       VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR=1000023007,
       VK_STRUCTURE_TYPE_VIDEO_BEGIN_CODING_INFO_KHR=1000023008,
       VK_STRUCTURE_TYPE_VIDEO_END_CODING_INFO_KHR=1000023009,
       VK_STRUCTURE_TYPE_VIDEO_CODING_CONTROL_INFO_KHR=1000023010,
       VK_STRUCTURE_TYPE_VIDEO_REFERENCE_SLOT_INFO_KHR=1000023011,
       VK_STRUCTURE_TYPE_QUEUE_FAMILY_VIDEO_PROPERTIES_KHR=1000023012,
       VK_STRUCTURE_TYPE_VIDEO_PROFILE_LIST_INFO_KHR=1000023013,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR=1000023014,
       VK_STRUCTURE_TYPE_VIDEO_FORMAT_PROPERTIES_KHR=1000023015,
       VK_STRUCTURE_TYPE_QUEUE_FAMILY_QUERY_RESULT_STATUS_PROPERTIES_KHR=1000023016,
       VK_STRUCTURE_TYPE_VIDEO_DECODE_INFO_KHR=1000024000,
       VK_STRUCTURE_TYPE_VIDEO_DECODE_CAPABILITIES_KHR=1000024001,
       VK_STRUCTURE_TYPE_VIDEO_DECODE_USAGE_INFO_KHR=1000024002,
       VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV=1000026000,
       VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV=1000026001,
       VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV=1000026002,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT=1000028000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT=1000028001,
       VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT=1000028002,
       VK_STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX=1000029000,
       VK_STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX=1000029001,
       VK_STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX=1000029002,
       VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX=1000030000,
       VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX=1000030001,
       VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_CAPABILITIES_EXT=1000038000,
       VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT=1000038001,
       VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT=1000038002,
       VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PICTURE_INFO_EXT=1000038003,
       VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_EXT=1000038004,
       VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_INFO_EXT=1000038005,
       VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_GOP_REMAINING_FRAME_INFO_EXT=1000038006,
       VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_INFO_EXT=1000038007,
       VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_INFO_EXT=1000038008,
       VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_EXT=1000038009,
       VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_CREATE_INFO_EXT=1000038010,
       VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_QUALITY_LEVEL_PROPERTIES_EXT=1000038011,
       VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_GET_INFO_EXT=1000038012,
       VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_FEEDBACK_INFO_EXT=1000038013,
       VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_EXT=1000039000,
       VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT=1000039001,
       VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT=1000039002,
       VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PICTURE_INFO_EXT=1000039003,
       VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_DPB_SLOT_INFO_EXT=1000039004,
       VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_NALU_SLICE_SEGMENT_INFO_EXT=1000039005,
       VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_GOP_REMAINING_FRAME_INFO_EXT=1000039006,
       VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_INFO_EXT=1000039007,
       VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_INFO_EXT=1000039009,
       VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_EXT=1000039010,
       VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_CREATE_INFO_EXT=1000039011,
       VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_QUALITY_LEVEL_PROPERTIES_EXT=1000039012,
       VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_GET_INFO_EXT=1000039013,
       VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_FEEDBACK_INFO_EXT=1000039014,
       VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_KHR=1000040000,
       VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_KHR=1000040001,
       VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_KHR=1000040003,
       VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR=1000040004,
       VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR=1000040005,
       VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR=1000040006,
       VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD=1000041000,
       VK_STRUCTURE_TYPE_RENDERING_INFO=1000044000,
       VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO=1000044001,
       VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO=1000044002,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES=1000044003,
       VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO=1000044004,
       VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR=1000044006,
       VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT=1000044007,
       VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD=1000044008,
       VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX=1000044009,
       VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP=1000049000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV=1000050000,
       VK_STRUCTURE_TYPE_PRIVATE_VENDOR_INFO_PLACEHOLDER_OFFSET_0_NV=1000051000,
       VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO=1000053000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES=1000053001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES=1000053002,
       VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV=1000056000,
       VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV=1000056001,
       VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV=1000057000,
       VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV=1000057001,
       VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV=1000058000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2=1000059000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2=1000059001,
       VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2=1000059002,
       VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2=1000059003,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2=1000059004,
       VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2=1000059005,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2=1000059006,
       VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2=1000059007,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2=1000059008,
       VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO=1000060000,
       VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO=1000060003,
       VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO=1000060004,
       VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO=1000060005,
       VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO=1000060006,
       VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR=1000060007,
       VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR=1000060008,
       VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR=1000060009,
       VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR=1000060010,
       VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR=1000060011,
       VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR=1000060012,
       VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO=1000060013,
       VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO=1000060014,
       VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT=1000061000,
       VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN=1000062000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES=1000063000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES=1000066000,
       VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT=1000067000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT=1000067001,
       VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT=1000068000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT=1000068001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT=1000068002,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES=1000070000,
       VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO=1000070001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO=1000071000,
       VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES=1000071001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO=1000071002,
       VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES=1000071003,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES=1000071004,
       VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO=1000072000,
       VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO=1000072001,
       VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO=1000072002,
       VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR=1000073000,
       VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR=1000073001,
       VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR=1000073002,
       VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR=1000073003,
       VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR=1000074000,
       VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR=1000074001,
       VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR=1000074002,
       VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR=1000075000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO=1000076000,
       VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES=1000076001,
       VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO=1000077000,
       VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR=1000078000,
       VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR=1000078001,
       VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR=1000078002,
       VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR=1000078003,
       VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR=1000079000,
       VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR=1000079001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR=1000080000,
       VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT=1000081000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT=1000081001,
       VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT=1000081002,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES=1000082000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES=1000083000,
       VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR=1000084000,
       VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO=1000085000,
       VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV=1000087000,
       VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT=1000090000,
       VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT=1000091000,
       VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT=1000091001,
       VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT=1000091002,
       VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT=1000091003,
       VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE=1000092000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES=1000094000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX=1000097000,
       VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV=1000098000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT=1000099000,
       VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT=1000099001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT=1000101000,
       VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT=1000101001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT=1000102000,
       VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT=1000102001,
       VK_STRUCTURE_TYPE_HDR_METADATA_EXT=1000105000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES=1000108000,
       VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO=1000108001,
       VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO=1000108002,
       VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO=1000108003,
       VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2=1000109000,
       VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2=1000109001,
       VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2=1000109002,
       VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2=1000109003,
       VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2=1000109004,
       VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO=1000109005,
       VK_STRUCTURE_TYPE_SUBPASS_END_INFO=1000109006,
       VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR=1000111000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO=1000112000,
       VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES=1000112001,
       VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO=1000113000,
       VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR=1000114000,
       VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR=1000114001,
       VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR=1000114002,
       VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR=1000115000,
       VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR=1000115001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR=1000116000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR=1000116001,
       VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR=1000116002,
       VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR=1000116003,
       VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR=1000116004,
       VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR=1000116005,
       VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR=1000116006,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES=1000117000,
       VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO=1000117001,
       VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO=1000117002,
       VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO=1000117003,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR=1000119000,
       VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR=1000119001,
       VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR=1000119002,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES=1000120000,
       VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR=1000121000,
       VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR=1000121001,
       VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR=1000121002,
       VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR=1000121003,
       VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR=1000121004,
       VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK=1000122000,
       VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK=1000123000,
       VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS=1000127000,
       VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO=1000127001,
       VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT=1000128000,
       VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT=1000128001,
       VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT=1000128002,
       VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT=1000128003,
       VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT=1000128004,
       VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID=1000129000,
       VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID=1000129001,
       VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID=1000129002,
       VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID=1000129003,
       VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID=1000129004,
       VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID=1000129005,
       VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID=1000129006,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES=1000130000,
       VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO=1000130001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_FEATURES_AMDX=1000134000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_PROPERTIES_AMDX=1000134001,
       VK_STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_SCRATCH_SIZE_AMDX=1000134002,
       VK_STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_CREATE_INFO_AMDX=1000134003,
       VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_NODE_CREATE_INFO_AMDX=1000134004,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES=1000138000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES=1000138001,
       VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK=1000138002,
       VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO=1000138003,
       VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT=1000143000,
       VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT=1000143001,
       VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT=1000143002,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT=1000143003,
       VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT=1000143004,
       VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO=1000145000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES=1000145001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES=1000145002,
       VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2=1000145003,
       VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2=1000146000,
       VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2=1000146001,
       VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2=1000146002,
       VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2=1000146003,
       VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2=1000146004,
       VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO=1000147000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT=1000148000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT=1000148001,
       VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT=1000148002,
       VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV=1000149000,
       VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR=1000150000,
       VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR=1000150002,
       VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR=1000150003,
       VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR=1000150004,
       VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR=1000150005,
       VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR=1000150006,
       VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR=1000150007,
       VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR=1000150009,
       VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR=1000150010,
       VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR=1000150011,
       VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR=1000150012,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR=1000150013,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR=1000150014,
       VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR=1000150015,
       VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR=1000150016,
       VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR=1000150017,
       VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR=1000150018,
       VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR=1000150020,
       VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV=1000152000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV=1000154000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV=1000154001,
       VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO=1000156000,
       VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO=1000156001,
       VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO=1000156002,
       VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO=1000156003,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES=1000156004,
       VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES=1000156005,
       VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO=1000157000,
       VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO=1000157001,
       VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT=1000158000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT=1000158002,
       VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT=1000158003,
       VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT=1000158004,
       VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT=1000158005,
       VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT=1000158006,
       VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT=1000160000,
       VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT=1000160001,
       VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO=1000161000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES=1000161001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES=1000161002,
       VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO=1000161003,
       VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT=1000161004,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR=1000163000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR=1000163001,
       VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV=1000164000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV=1000164001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV=1000164002,
       VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV=1000164005,
       VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV=1000165000,
       VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV=1000165001,
       VK_STRUCTURE_TYPE_GEOMETRY_NV=1000165003,
       VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV=1000165004,
       VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV=1000165005,
       VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV=1000165006,
       VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV=1000165007,
       VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV=1000165008,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV=1000165009,
       VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV=1000165011,
       VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV=1000165012,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV=1000166000,
       VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV=1000166001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES=1000168000,
       VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT=1000168001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT=1000170000,
       VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT=1000170001,
       VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR=1000174000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES=1000175000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES=1000177000,
       VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT=1000178000,
       VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT=1000178001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT=1000178002,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES=1000180000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR=1000181000,
       VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD=1000183000,
       VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT=1000184000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD=1000185000,
       VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_KHR=1000187000,
       VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR=1000187001,
       VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR=1000187002,
       VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_KHR=1000187003,
       VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_KHR=1000187004,
       VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR=1000187005,
       VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD=1000189000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT=1000190000,
       VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT=1000190001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT=1000190002,
       VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP=1000191000,
       VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO=1000192000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES=1000196000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES=1000197000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES=1000199000,
       VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE=1000199001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV=1000201000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV=1000202000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV=1000202001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR=1000203000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV=1000204000,
       VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV=1000205000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV=1000205002,
       VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV=1000206000,
       VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV=1000206001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES=1000207000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES=1000207001,
       VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO=1000207002,
       VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO=1000207003,
       VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO=1000207004,
       VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO=1000207005,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL=1000209000,
       VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL=1000210000,
       VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL=1000210001,
       VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL=1000210002,
       VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL=1000210003,
       VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL=1000210004,
       VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL=1000210005,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES=1000211000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT=1000212000,
       VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD=1000213000,
       VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD=1000213001,
       VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA=1000214000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES=1000215000,
       VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT=1000217000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT=1000218000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT=1000218001,
       VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT=1000218002,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES=1000221000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES=1000225000,
       VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO=1000225001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES=1000225002,
       VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR=1000226000,
       VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR=1000226001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR=1000226002,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR=1000226003,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR=1000226004,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD=1000227000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD=1000229000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT=1000234000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT=1000237000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT=1000238000,
       VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT=1000238001,
       VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR=1000239000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV=1000240000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES=1000241000,
       VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT=1000241001,
       VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT=1000241002,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT=1000244000,
       VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO=1000244001,
       VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT=1000244002,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES=1000245000,
       VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO=1000246000,
       VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT=1000247000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR=1000248000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV=1000249000,
       VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV=1000249001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV=1000249002,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV=1000250000,
       VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV=1000250001,
       VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV=1000250002,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT=1000251000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT=1000252000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES=1000253000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT=1000254000,
       VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT=1000254001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT=1000254002,
       VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT=1000255000,
       VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT=1000255001,
       VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT=1000255002,
       VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT=1000256000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES=1000257000,
       VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO=1000257002,
       VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO=1000257003,
       VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO=1000257004,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT=1000259000,
       VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT=1000259001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT=1000259002,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT=1000260000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES=1000261000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT=1000265000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT=1000267000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR=1000269000,
       VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR=1000269001,
       VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR=1000269002,
       VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR=1000269003,
       VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR=1000269004,
       VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR=1000269005,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT=1000270000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT=1000270001,
       VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXT=1000270002,
       VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXT=1000270003,
       VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXT=1000270004,
       VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXT=1000270005,
       VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXT=1000270006,
       VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXT=1000270007,
       VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXT=1000270008,
       VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT=1000270009,
       VK_STRUCTURE_TYPE_MEMORY_MAP_INFO_KHR=1000271000,
       VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO_KHR=1000271001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT=1000273000,
       VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT=1000274000,
       VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT=1000274001,
       VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT=1000274002,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT=1000275000,
       VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT=1000275001,
       VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT=1000275002,
       VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT=1000275003,
       VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT=1000275004,
       VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT=1000275005,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES=1000276000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV=1000277000,
       VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV=1000277001,
       VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV=1000277002,
       VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV=1000277003,
       VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV=1000277004,
       VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV=1000277005,
       VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV=1000277006,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV=1000277007,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV=1000278000,
       VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV=1000278001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES=1000280000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES=1000280001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT=1000281000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES=1000281001,
       VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM=1000282000,
       VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM=1000282001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_FEATURES_EXT=1000283000,
       VK_STRUCTURE_TYPE_DEPTH_BIAS_INFO_EXT=1000283001,
       VK_STRUCTURE_TYPE_DEPTH_BIAS_REPRESENTATION_INFO_EXT=1000283002,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT=1000284000,
       VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT=1000284001,
       VK_STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT=1000284002,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT=1000286000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT=1000286001,
       VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT=1000287000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT=1000287001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT=1000287002,
       VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR=1000290000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_BARRIER_FEATURES_NV=1000292000,
       VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_BARRIER_NV=1000292001,
       VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV=1000292002,
       VK_STRUCTURE_TYPE_PRESENT_ID_KHR=1000294000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR=1000294001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES=1000295000,
       VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO=1000295001,
       VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO=1000295002,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES=1000297000,
       VK_STRUCTURE_TYPE_VIDEO_ENCODE_INFO_KHR=1000299000,
       VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR=1000299001,
       VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR=1000299002,
       VK_STRUCTURE_TYPE_VIDEO_ENCODE_CAPABILITIES_KHR=1000299003,
       VK_STRUCTURE_TYPE_VIDEO_ENCODE_USAGE_INFO_KHR=1000299004,
       VK_STRUCTURE_TYPE_QUERY_POOL_VIDEO_ENCODE_FEEDBACK_CREATE_INFO_KHR=1000299005,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR=1000299006,
       VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_PROPERTIES_KHR=1000299007,
       VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR=1000299008,
       VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_GET_INFO_KHR=1000299009,
       VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_FEEDBACK_INFO_KHR=1000299010,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV=1000300000,
       VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV=1000300001,
       VK_STRUCTURE_TYPE_REFRESH_OBJECT_LIST_KHR=1000308000,
       VK_STRUCTURE_TYPE_QUERY_LOW_LATENCY_SUPPORT_NV=1000310000,
       VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT=1000311000,
       VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECTS_INFO_EXT=1000311001,
       VK_STRUCTURE_TYPE_EXPORT_METAL_DEVICE_INFO_EXT=1000311002,
       VK_STRUCTURE_TYPE_EXPORT_METAL_COMMAND_QUEUE_INFO_EXT=1000311003,
       VK_STRUCTURE_TYPE_EXPORT_METAL_BUFFER_INFO_EXT=1000311004,
       VK_STRUCTURE_TYPE_IMPORT_METAL_BUFFER_INFO_EXT=1000311005,
       VK_STRUCTURE_TYPE_EXPORT_METAL_TEXTURE_INFO_EXT=1000311006,
       VK_STRUCTURE_TYPE_IMPORT_METAL_TEXTURE_INFO_EXT=1000311007,
       VK_STRUCTURE_TYPE_EXPORT_METAL_IO_SURFACE_INFO_EXT=1000311008,
       VK_STRUCTURE_TYPE_IMPORT_METAL_IO_SURFACE_INFO_EXT=1000311009,
       VK_STRUCTURE_TYPE_EXPORT_METAL_SHARED_EVENT_INFO_EXT=1000311010,
       VK_STRUCTURE_TYPE_IMPORT_METAL_SHARED_EVENT_INFO_EXT=1000311011,
       VK_STRUCTURE_TYPE_MEMORY_BARRIER_2=1000314000,
       VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2=1000314001,
       VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2=1000314002,
       VK_STRUCTURE_TYPE_DEPENDENCY_INFO=1000314003,
       VK_STRUCTURE_TYPE_SUBMIT_INFO_2=1000314004,
       VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO=1000314005,
       VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO=1000314006,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES=1000314007,
       VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV=1000314008,
       VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV=1000314009,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT=1000316000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT=1000316001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT=1000316002,
       VK_STRUCTURE_TYPE_DESCRIPTOR_ADDRESS_INFO_EXT=1000316003,
       VK_STRUCTURE_TYPE_DESCRIPTOR_GET_INFO_EXT=1000316004,
       VK_STRUCTURE_TYPE_BUFFER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT=1000316005,
       VK_STRUCTURE_TYPE_IMAGE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT=1000316006,
       VK_STRUCTURE_TYPE_IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXT=1000316007,
       VK_STRUCTURE_TYPE_SAMPLER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT=1000316008,
       VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT=1000316009,
       VK_STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT=1000316010,
       VK_STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_INFO_EXT=1000316011,
       VK_STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT=1000316012,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT=1000320000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT=1000320001,
       VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT=1000320002,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD=1000321000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR=1000322000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR=1000323000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES=1000325000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV=1000326000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV=1000326001,
       VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV=1000326002,
       VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV=1000327000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV=1000327001,
       VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV=1000327002,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT=1000328000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT=1000328001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT=1000330000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT=1000332000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT=1000332001,
       VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM=1000333000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES=1000335000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR=1000336000,
       VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2=1000337000,
       VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2=1000337001,
       VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2=1000337002,
       VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2=1000337003,
       VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2=1000337004,
       VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2=1000337005,
       VK_STRUCTURE_TYPE_BUFFER_COPY_2=1000337006,
       VK_STRUCTURE_TYPE_IMAGE_COPY_2=1000337007,
       VK_STRUCTURE_TYPE_IMAGE_BLIT_2=1000337008,
       VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2=1000337009,
       VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2=1000337010,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT=1000338000,
       VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT=1000338001,
       VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR=1000338002,
       VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR=1000338003,
       VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT=1000338004,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT=1000339000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT=1000340000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_EXT=1000341000,
       VK_STRUCTURE_TYPE_DEVICE_FAULT_COUNTS_EXT=1000341001,
       VK_STRUCTURE_TYPE_DEVICE_FAULT_INFO_EXT=1000341002,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT=1000342000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT=1000344000,
       VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT=1000346000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR=1000347000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR=1000347001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR=1000348013,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT=1000351000,
       VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT=1000351002,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT=1000352000,
       VK_STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT=1000352001,
       VK_STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT=1000352002,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT=1000353000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT=1000354000,
       VK_STRUCTURE_TYPE_DEVICE_ADDRESS_BINDING_CALLBACK_DATA_EXT=1000354001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT=1000355000,
       VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT=1000355001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT=1000356000,
       VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3=1000360000,
       VK_STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA=1000364000,
       VK_STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA=1000364001,
       VK_STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA=1000364002,
       VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA=1000365000,
       VK_STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA=1000365001,
       VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CREATE_INFO_FUCHSIA=1000366000,
       VK_STRUCTURE_TYPE_IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA=1000366001,
       VK_STRUCTURE_TYPE_BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA=1000366002,
       VK_STRUCTURE_TYPE_BUFFER_COLLECTION_PROPERTIES_FUCHSIA=1000366003,
       VK_STRUCTURE_TYPE_BUFFER_CONSTRAINTS_INFO_FUCHSIA=1000366004,
       VK_STRUCTURE_TYPE_BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA=1000366005,
       VK_STRUCTURE_TYPE_IMAGE_CONSTRAINTS_INFO_FUCHSIA=1000366006,
       VK_STRUCTURE_TYPE_IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA=1000366007,
       VK_STRUCTURE_TYPE_SYSMEM_COLOR_SPACE_FUCHSIA=1000366008,
       VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CONSTRAINTS_INFO_FUCHSIA=1000366009,
       VK_STRUCTURE_TYPE_SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI=1000369000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI=1000369001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI=1000369002,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI=1000370000,
       VK_STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV=1000371000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV=1000371001,
       VK_STRUCTURE_TYPE_PIPELINE_PROPERTIES_IDENTIFIER_EXT=1000372000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT=1000372001,
       VK_STRUCTURE_TYPE_IMPORT_FENCE_SCI_SYNC_INFO_NV=1000373000,
       VK_STRUCTURE_TYPE_EXPORT_FENCE_SCI_SYNC_INFO_NV=1000373001,
       VK_STRUCTURE_TYPE_FENCE_GET_SCI_SYNC_INFO_NV=1000373002,
       VK_STRUCTURE_TYPE_SCI_SYNC_ATTRIBUTES_INFO_NV=1000373003,
       VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_SCI_SYNC_INFO_NV=1000373004,
       VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_SCI_SYNC_INFO_NV=1000373005,
       VK_STRUCTURE_TYPE_SEMAPHORE_GET_SCI_SYNC_INFO_NV=1000373006,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SCI_SYNC_FEATURES_NV=1000373007,
       VK_STRUCTURE_TYPE_IMPORT_MEMORY_SCI_BUF_INFO_NV=1000374000,
       VK_STRUCTURE_TYPE_EXPORT_MEMORY_SCI_BUF_INFO_NV=1000374001,
       VK_STRUCTURE_TYPE_MEMORY_GET_SCI_BUF_INFO_NV=1000374002,
       VK_STRUCTURE_TYPE_MEMORY_SCI_BUF_PROPERTIES_NV=1000374003,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCI_BUF_FEATURES_NV=1000374004,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT=1000375000,
       VK_STRUCTURE_TYPE_FRAME_BOUNDARY_EXT=1000375001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT=1000376000,
       VK_STRUCTURE_TYPE_SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT=1000376001,
       VK_STRUCTURE_TYPE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT=1000376002,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT=1000377000,
       VK_STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX=1000378000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT=1000381000,
       VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT=1000381001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT=1000382000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR=1000386000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR=1000388000,
       VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR=1000388001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT=1000391000,
       VK_STRUCTURE_TYPE_IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT=1000391001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT=1000392000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT=1000392001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT=1000393000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT=1000395000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT=1000395001,
       VK_STRUCTURE_TYPE_MICROMAP_BUILD_INFO_EXT=1000396000,
       VK_STRUCTURE_TYPE_MICROMAP_VERSION_INFO_EXT=1000396001,
       VK_STRUCTURE_TYPE_COPY_MICROMAP_INFO_EXT=1000396002,
       VK_STRUCTURE_TYPE_COPY_MICROMAP_TO_MEMORY_INFO_EXT=1000396003,
       VK_STRUCTURE_TYPE_COPY_MEMORY_TO_MICROMAP_INFO_EXT=1000396004,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT=1000396005,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT=1000396006,
       VK_STRUCTURE_TYPE_MICROMAP_CREATE_INFO_EXT=1000396007,
       VK_STRUCTURE_TYPE_MICROMAP_BUILD_SIZES_INFO_EXT=1000396008,
       VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT=1000396009,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_FEATURES_NV=1000397000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_PROPERTIES_NV=1000397001,
       VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_DISPLACEMENT_MICROMAP_NV=1000397002,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI=1000404000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI=1000404001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT=1000411000,
       VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT=1000411001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT=1000412000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES=1000413000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES=1000413001,
       VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS=1000413002,
       VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS=1000413003,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM=1000415000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT=1000418000,
       VK_STRUCTURE_TYPE_IMAGE_VIEW_SLICED_CREATE_INFO_EXT=1000418001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE=1000420000,
       VK_STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE=1000420001,
       VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE=1000420002,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT=1000421000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT=1000422000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM=1000425000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM=1000425001,
       VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM=1000425002,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV=1000426000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV=1000426001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV=1000427000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV=1000427001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV=1000428000,
       VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV=1000428001,
       VK_STRUCTURE_TYPE_PIPELINE_INDIRECT_DEVICE_ADDRESS_INFO_NV=1000428002,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV=1000430000,
       VK_STRUCTURE_TYPE_APPLICATION_PARAMETERS_EXT=1000435000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT=1000437000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM=1000440000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM=1000440001,
       VK_STRUCTURE_TYPE_IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM=1000440002,
       VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT=1000453000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT=1000455000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT=1000455001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT=1000458000,
       VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_CONTROL_EXT=1000458001,
       VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_FEEDBACK_CREATE_INFO_EXT=1000458002,
       VK_STRUCTURE_TYPE_RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT=1000458003,
       VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_INFO_LUNARG=1000459000,
       VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_LIST_LUNARG=1000459001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT=1000462000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT=1000462001,
       VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT=1000462002,
       VK_STRUCTURE_TYPE_SHADER_MODULE_IDENTIFIER_EXT=1000462003,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV=1000464000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_PROPERTIES_NV=1000464001,
       VK_STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_INFO_NV=1000464002,
       VK_STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_NV=1000464003,
       VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_INFO_NV=1000464004,
       VK_STRUCTURE_TYPE_OPTICAL_FLOW_EXECUTE_INFO_NV=1000464005,
       VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV=1000464010,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT=1000465000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT=1000466000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID=1000468000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID=1000468001,
       VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID=1000468002,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR=1000470000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR=1000470001,
       VK_STRUCTURE_TYPE_RENDERING_AREA_INFO_KHR=1000470003,
       VK_STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO_KHR=1000470004,
       VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR=1000470005,
       VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR=1000470006,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR=1000481000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT=1000482000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT=1000482001,
       VK_STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT=1000482002,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM=1000484000,
       VK_STRUCTURE_TYPE_TILE_PROPERTIES_QCOM=1000484001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC=1000485000,
       VK_STRUCTURE_TYPE_AMIGO_PROFILING_SUBMIT_INFO_SEC=1000485001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM=1000488000,
       VK_STRUCTURE_TYPE_SEMAPHORE_SCI_SYNC_POOL_CREATE_INFO_NV=1000489000,
       VK_STRUCTURE_TYPE_SEMAPHORE_SCI_SYNC_CREATE_INFO_NV=1000489001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SCI_SYNC_2_FEATURES_NV=1000489002,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV=1000490000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV=1000490001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM=1000497000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM=1000497001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT=1000498000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT=1000499000,
       VK_STRUCTURE_TYPE_LATENCY_SLEEP_MODE_INFO_NV=1000505000,
       VK_STRUCTURE_TYPE_LATENCY_SLEEP_INFO_NV=1000505001,
       VK_STRUCTURE_TYPE_SET_LATENCY_MARKER_INFO_NV=1000505002,
       VK_STRUCTURE_TYPE_GET_LATENCY_MARKER_INFO_NV=1000505003,
       VK_STRUCTURE_TYPE_LATENCY_TIMINGS_FRAME_REPORT_NV=1000505004,
       VK_STRUCTURE_TYPE_LATENCY_SUBMISSION_PRESENT_ID_NV=1000505005,
       VK_STRUCTURE_TYPE_OUT_OF_BAND_QUEUE_TYPE_INFO_NV=1000505006,
       VK_STRUCTURE_TYPE_SWAPCHAIN_LATENCY_CREATE_INFO_NV=1000505007,
       VK_STRUCTURE_TYPE_LATENCY_SURFACE_CAPABILITIES_NV=1000505008,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR=1000506000,
       VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_KHR=1000506001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR=1000506002,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM=1000510000,
       VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM=1000510001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_FEATURES_QCOM=1000518000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_PROPERTIES_QCOM=1000518001,
       VK_STRUCTURE_TYPE_SAMPLER_BLOCK_MATCH_WINDOW_CREATE_INFO_QCOM=1000518002,
       VK_STRUCTURE_TYPE_SAMPLER_CUBIC_WEIGHTS_CREATE_INFO_QCOM=1000519000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_WEIGHTS_FEATURES_QCOM=1000519001,
       VK_STRUCTURE_TYPE_BLIT_IMAGE_CUBIC_WEIGHTS_INFO_QCOM=1000519002,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_DEGAMMA_FEATURES_QCOM=1000520000,
       VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_YCBCR_DEGAMMA_CREATE_INFO_QCOM=1000520001,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM=1000521000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT=1000524000,
       VK_STRUCTURE_TYPE_SCREEN_BUFFER_PROPERTIES_QNX=1000529000,
       VK_STRUCTURE_TYPE_SCREEN_BUFFER_FORMAT_PROPERTIES_QNX=1000529001,
       VK_STRUCTURE_TYPE_IMPORT_SCREEN_BUFFER_INFO_QNX=1000529002,
       VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_QNX=1000529003,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX=1000529004,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_DRIVER_PROPERTIES_MSFT=1000530000,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV=1000546000,
       VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR=VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2,
       VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR=VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT,
       VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR=VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2,
       VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR=VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT,
       VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_NV=VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD,
       VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR=VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO,
       VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR=VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO,
       VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR=VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO,
       VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR=VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO,
       VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR=VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO,
       VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR=VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2,
       VK_STRUCTURE_TYPE_BUFFER_COPY_2_KHR=VK_STRUCTURE_TYPE_BUFFER_COPY_2,
       VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT=VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO,
       VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR=VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO,
       VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR=VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2,
       VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2_KHR=VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2,
       VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR=VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2,
       VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR=VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO,
       VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR=VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO,
       VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO_KHR=VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO,
       VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR=VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2,
       VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR=VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2,
       VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR=VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2,
       VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR=VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2,
       VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT=VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT,
       VK_STRUCTURE_TYPE_DEPENDENCY_INFO_KHR=VK_STRUCTURE_TYPE_DEPENDENCY_INFO,
       VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT=VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO,
       VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT=VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO,
       VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR=VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT,
       VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT=VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO,
       VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT=VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT,
       VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR=VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO,
       VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS_KHR=VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS,
       VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR=VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO,
       VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR=VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO,
       VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR=VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO,
       VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR=VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO,
       VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR=VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO,
       VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR=VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS,
       VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR=VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO,
       VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT=VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO,
       VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT=VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR,
       VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR=VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO,
       VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR=VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO,
       VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR=VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO,
       VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR=VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES,
       VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR=VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES,
       VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR=VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES,
       VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR=VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO,
       VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR=VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO,
       VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR=VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES,
       VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR=VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2,
       VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3_KHR=VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3,
       VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR=VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO,
       VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR=VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO,
       VK_STRUCTURE_TYPE_IMAGE_BLIT_2_KHR=VK_STRUCTURE_TYPE_IMAGE_BLIT_2,
       VK_STRUCTURE_TYPE_IMAGE_COPY_2_KHR=VK_STRUCTURE_TYPE_IMAGE_COPY_2,
       VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR=VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO,
       VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR=VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2,
       VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2_KHR=VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2,
       VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR=VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2,
       VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR=VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO,
       VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR=VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2,
       VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR=VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2,
       VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT=VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO,
       VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT=VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR,
       VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR=VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO,
       VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR=VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO,
       VK_STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR=VK_STRUCTURE_TYPE_MEMORY_BARRIER_2,
       VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR=VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO,
       VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR=VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS,
       VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR=VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO,
       VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR=VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2,
       VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE=VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SCI_BUF_FEATURES_NV=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCI_BUF_FEATURES_NV,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES_KHR=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES_KHR=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_ARM=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES,
       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES_KHR=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES,
       VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT=VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO,
       VK_STRUCTURE_TYPE_PIPELINE_INFO_EXT=VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR,
       VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR=VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO,
       VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT=VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO,
       VK_STRUCTURE_TYPE_SHADER_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT=VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO,
       VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR=VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO,
       VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT=VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO,
       VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL=VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL,
       VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT=VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR,
       VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR=VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2,
       VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR=VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO,
       VK_STRUCTURE_TYPE_RENDERING_INFO_KHR=VK_STRUCTURE_TYPE_RENDERING_INFO,
       VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR=VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO,
       VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR=VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2,
       VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR=VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO,
       VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR=VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO,
       VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR=VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2,
       VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT=VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO,
       VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR=VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO,
       VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR=VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES,
       VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR=VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO,
       VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR=VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO,
       VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO_KHR=VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO,
       VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR=VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO,
       VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR=VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO,
       VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR=VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2,
       VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR=VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2,
       VK_STRUCTURE_TYPE_SUBMIT_INFO_2_KHR=VK_STRUCTURE_TYPE_SUBMIT_INFO_2,
       VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR=VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO,
       VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR=VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2,
       VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR=VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2,
       VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR=VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE,
       VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR=VK_STRUCTURE_TYPE_SUBPASS_END_INFO,
       VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_EXT=VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR,
       VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT=VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT,
       VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR=VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO,
       VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT=VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK
      );

     PPVkSubpassContents=^PVkSubpassContents;
     PVkSubpassContents=^TVkSubpassContents;
     TVkSubpassContents=
      (
       VK_SUBPASS_CONTENTS_INLINE=0,
       VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS=1
      );

     PPVkResult=^PVkResult;
     PVkResult=^TVkResult;
     TVkResult=
      (
       VK_ERROR_COMPRESSION_EXHAUSTED_EXT=-1000338000,
       VK_ERROR_INVALID_VIDEO_STD_PARAMETERS_KHR=-1000299000,
       VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS=-1000257000,
       VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT=-1000255000,
       VK_ERROR_NOT_PERMITTED_KHR=-1000174001,
       VK_ERROR_FRAGMENTATION=-1000161000,
       VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT=-1000158000,
       VK_ERROR_INVALID_EXTERNAL_HANDLE=-1000072003,
       VK_ERROR_OUT_OF_POOL_MEMORY=-1000069000,
       VK_ERROR_VIDEO_STD_VERSION_NOT_SUPPORTED_KHR=-1000023005,
       VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR=-1000023004,
       VK_ERROR_VIDEO_PROFILE_FORMAT_NOT_SUPPORTED_KHR=-1000023003,
       VK_ERROR_VIDEO_PROFILE_OPERATION_NOT_SUPPORTED_KHR=-1000023002,
       VK_ERROR_VIDEO_PICTURE_LAYOUT_NOT_SUPPORTED_KHR=-1000023001,
       VK_ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR=-1000023000,
       VK_ERROR_INVALID_SHADER_NV=-1000012000,
       VK_ERROR_VALIDATION_FAILED_EXT=-1000011001,
       VK_ERROR_INCOMPATIBLE_DISPLAY_KHR=-1000003001,
       VK_ERROR_OUT_OF_DATE_KHR=-1000001004,
       VK_ERROR_NATIVE_WINDOW_IN_USE_KHR=-1000000001,
       VK_ERROR_SURFACE_LOST_KHR=-1000000000,
       _UNUSED_START=-14,                                                        //< This is the next unused available error code (negative value)
       VK_ERROR_UNKNOWN=-13,                                                     //< An unknown error has occurred, due to an implementation or application bug
       VK_ERROR_FRAGMENTED_POOL=-12,                                             //< A requested pool allocation has failed due to fragmentation of the pool's memory
       VK_ERROR_FORMAT_NOT_SUPPORTED=-11,                                        //< Requested format is not supported on this device
       VK_ERROR_TOO_MANY_OBJECTS=-10,                                            //< Too many objects of the type have already been created
       VK_ERROR_INCOMPATIBLE_DRIVER=-9,                                          //< Unable to find a Vulkan driver
       VK_ERROR_FEATURE_NOT_PRESENT=-8,                                          //< Requested feature is not available on this device
       VK_ERROR_EXTENSION_NOT_PRESENT=-7,                                        //< Extension specified does not exist
       VK_ERROR_LAYER_NOT_PRESENT=-6,                                            //< Layer specified does not exist
       VK_ERROR_MEMORY_MAP_FAILED=-5,                                            //< Mapping of a memory object has failed
       VK_ERROR_DEVICE_LOST=-4,                                                  //< The logical device has been lost. See <<devsandqueues-lost-device>>
       VK_ERROR_INITIALIZATION_FAILED=-3,                                        //< Initialization of an object has failed
       VK_ERROR_OUT_OF_DEVICE_MEMORY=-2,                                         //< A device memory allocation has failed
       VK_ERROR_OUT_OF_HOST_MEMORY=-1,                                           //< A host memory allocation has failed
       VK_SUCCESS=0,                                                             //< Command completed successfully
       VK_NOT_READY=1,                                                           //< A fence or query has not yet completed
       VK_TIMEOUT=2,                                                             //< A wait operation has not completed in the specified time
       VK_EVENT_SET=3,                                                           //< An event is signaled
       VK_EVENT_RESET=4,                                                         //< An event is unsignaled
       VK_INCOMPLETE=5,                                                          //< A return array was too small for the result
       VK_SUBOPTIMAL_KHR=1000001003,
       VK_THREAD_IDLE_KHR=1000268000,
       VK_THREAD_DONE_KHR=1000268001,
       VK_OPERATION_DEFERRED_KHR=1000268002,
       VK_OPERATION_NOT_DEFERRED_KHR=1000268003,
       VK_PIPELINE_COMPILE_REQUIRED=1000297000,
       VK_ERROR_INCOMPATIBLE_SHADER_BINARY_EXT=1000482000,
       VK_ERROR_FRAGMENTATION_EXT=VK_ERROR_FRAGMENTATION,
       VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR=VK_ERROR_INVALID_EXTERNAL_HANDLE,
       VK_ERROR_INVALID_DEVICE_ADDRESS_EXT=VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS,
       VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR=VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS,
       VK_ERROR_NOT_PERMITTED_EXT=VK_ERROR_NOT_PERMITTED_KHR,
       VK_ERROR_OUT_OF_POOL_MEMORY_KHR=VK_ERROR_OUT_OF_POOL_MEMORY,
       VK_PIPELINE_COMPILE_REQUIRED_EXT=VK_PIPELINE_COMPILE_REQUIRED,
       VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT=VK_PIPELINE_COMPILE_REQUIRED
      );

     PPVkDynamicState=^PVkDynamicState;
     PVkDynamicState=^TVkDynamicState;
     TVkDynamicState=
      (
       VK_DYNAMIC_STATE_VIEWPORT=0,
       VK_DYNAMIC_STATE_SCISSOR=1,
       VK_DYNAMIC_STATE_LINE_WIDTH=2,
       VK_DYNAMIC_STATE_DEPTH_BIAS=3,
       VK_DYNAMIC_STATE_BLEND_CONSTANTS=4,
       VK_DYNAMIC_STATE_DEPTH_BOUNDS=5,
       VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK=6,
       VK_DYNAMIC_STATE_STENCIL_WRITE_MASK=7,
       VK_DYNAMIC_STATE_STENCIL_REFERENCE=8,
       VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV=1000087000,
       VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT=1000099000,
       VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT=1000099001,
       VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT=1000099002,
       VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT=1000143000,
       VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV=1000164004,
       VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV=1000164006,
       VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV=1000205000,
       VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV=1000205001,
       VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR=1000226000,
       VK_DYNAMIC_STATE_LINE_STIPPLE_EXT=1000259000,
       VK_DYNAMIC_STATE_CULL_MODE=1000267000,
       VK_DYNAMIC_STATE_FRONT_FACE=1000267001,
       VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY=1000267002,
       VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT=1000267003,
       VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT=1000267004,
       VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE=1000267005,
       VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE=1000267006,
       VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE=1000267007,
       VK_DYNAMIC_STATE_DEPTH_COMPARE_OP=1000267008,
       VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE=1000267009,
       VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE=1000267010,
       VK_DYNAMIC_STATE_STENCIL_OP=1000267011,
       VK_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR=1000347000,
       VK_DYNAMIC_STATE_VERTEX_INPUT_EXT=1000352000,
       VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT=1000377000,
       VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE=1000377001,
       VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE=1000377002,
       VK_DYNAMIC_STATE_LOGIC_OP_EXT=1000377003,
       VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE=1000377004,
       VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT=1000381000,
       VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT=1000455002,
       VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT=1000455003,
       VK_DYNAMIC_STATE_POLYGON_MODE_EXT=1000455004,
       VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT=1000455005,
       VK_DYNAMIC_STATE_SAMPLE_MASK_EXT=1000455006,
       VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT=1000455007,
       VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT=1000455008,
       VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT=1000455009,
       VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT=1000455010,
       VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT=1000455011,
       VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT=1000455012,
       VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT=1000455013,
       VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT=1000455014,
       VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT=1000455015,
       VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT=1000455016,
       VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT=1000455017,
       VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT=1000455018,
       VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT=1000455019,
       VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT=1000455020,
       VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT=1000455021,
       VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT=1000455022,
       VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV=1000455023,
       VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV=1000455024,
       VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV=1000455025,
       VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV=1000455026,
       VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV=1000455027,
       VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV=1000455028,
       VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV=1000455029,
       VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV=1000455030,
       VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV=1000455031,
       VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV=1000455032,
       VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT=1000524000,
       VK_DYNAMIC_STATE_CULL_MODE_EXT=VK_DYNAMIC_STATE_CULL_MODE,
       VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT=VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE,
       VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT=VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE,
       VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT=VK_DYNAMIC_STATE_DEPTH_COMPARE_OP,
       VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT=VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE,
       VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT=VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE,
       VK_DYNAMIC_STATE_FRONT_FACE_EXT=VK_DYNAMIC_STATE_FRONT_FACE,
       VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT=VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE,
       VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT=VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY,
       VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT=VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE,
       VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT=VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT,
       VK_DYNAMIC_STATE_STENCIL_OP_EXT=VK_DYNAMIC_STATE_STENCIL_OP,
       VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT=VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE,
       VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT=VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE,
       VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT=VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
      );

     PPVkDescriptorUpdateTemplateType=^PVkDescriptorUpdateTemplateType;
     PVkDescriptorUpdateTemplateType=^TVkDescriptorUpdateTemplateType;
     TVkDescriptorUpdateTemplateType=
      (
       VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET=0,                      //< Create descriptor update template for descriptor set updates
       VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR=1,
       VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR=VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET
      );

     PPVkObjectType=^PVkObjectType;
     PVkObjectType=^TVkObjectType;
     TVkObjectType=
      (
       VK_OBJECT_TYPE_UNKNOWN=0,
       VK_OBJECT_TYPE_INSTANCE=1,
       VK_OBJECT_TYPE_PHYSICAL_DEVICE=2,
       VK_OBJECT_TYPE_DEVICE=3,
       VK_OBJECT_TYPE_QUEUE=4,
       VK_OBJECT_TYPE_SEMAPHORE=5,
       VK_OBJECT_TYPE_COMMAND_BUFFER=6,
       VK_OBJECT_TYPE_FENCE=7,
       VK_OBJECT_TYPE_DEVICE_MEMORY=8,
       VK_OBJECT_TYPE_BUFFER=9,
       VK_OBJECT_TYPE_IMAGE=10,
       VK_OBJECT_TYPE_EVENT=11,
       VK_OBJECT_TYPE_QUERY_POOL=12,
       VK_OBJECT_TYPE_BUFFER_VIEW=13,
       VK_OBJECT_TYPE_IMAGE_VIEW=14,
       VK_OBJECT_TYPE_SHADER_MODULE=15,
       VK_OBJECT_TYPE_PIPELINE_CACHE=16,
       VK_OBJECT_TYPE_PIPELINE_LAYOUT=17,
       VK_OBJECT_TYPE_RENDER_PASS=18,
       VK_OBJECT_TYPE_PIPELINE=19,
       VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT=20,
       VK_OBJECT_TYPE_SAMPLER=21,
       VK_OBJECT_TYPE_DESCRIPTOR_POOL=22,
       VK_OBJECT_TYPE_DESCRIPTOR_SET=23,
       VK_OBJECT_TYPE_FRAMEBUFFER=24,
       VK_OBJECT_TYPE_COMMAND_POOL=25,
       VK_OBJECT_TYPE_SURFACE_KHR=1000000000,
       VK_OBJECT_TYPE_SWAPCHAIN_KHR=1000001000,
       VK_OBJECT_TYPE_DISPLAY_KHR=1000002000,
       VK_OBJECT_TYPE_DISPLAY_MODE_KHR=1000002001,
       VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT=1000011000,
       VK_OBJECT_TYPE_VIDEO_SESSION_KHR=1000023000,
       VK_OBJECT_TYPE_VIDEO_SESSION_PARAMETERS_KHR=1000023001,
       VK_OBJECT_TYPE_CU_MODULE_NVX=1000029000,
       VK_OBJECT_TYPE_CU_FUNCTION_NVX=1000029001,
       VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE=1000085000,
       VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT=1000128000,
       VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR=1000150000,
       VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION=1000156000,
       VK_OBJECT_TYPE_VALIDATION_CACHE_EXT=1000160000,
       VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV=1000165000,
       VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL=1000210000,
       VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR=1000268000,
       VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV=1000277000,
       VK_OBJECT_TYPE_PRIVATE_DATA_SLOT=1000295000,
       VK_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA=1000366000,
       VK_OBJECT_TYPE_MICROMAP_EXT=1000396000,
       VK_OBJECT_TYPE_OPTICAL_FLOW_SESSION_NV=1000464000,
       VK_OBJECT_TYPE_SHADER_EXT=1000482000,
       VK_OBJECT_TYPE_SEMAPHORE_SCI_SYNC_POOL_NV=1000489000,
       VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR=VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE,
       VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT=VK_OBJECT_TYPE_PRIVATE_DATA_SLOT,
       VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR=VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION
      );

     PPVkRayTracingInvocationReorderModeNV=^PVkRayTracingInvocationReorderModeNV;
     PVkRayTracingInvocationReorderModeNV=^TVkRayTracingInvocationReorderModeNV;
     TVkRayTracingInvocationReorderModeNV=
      (
       VK_RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV=0,
       VK_RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV=1
      );

     PPVkDirectDriverLoadingModeLUNARG=^PVkDirectDriverLoadingModeLUNARG;
     PVkDirectDriverLoadingModeLUNARG=^TVkDirectDriverLoadingModeLUNARG;
     TVkDirectDriverLoadingModeLUNARG=
      (
       VK_DIRECT_DRIVER_LOADING_MODE_EXCLUSIVE_LUNARG=0,
       VK_DIRECT_DRIVER_LOADING_MODE_INCLUSIVE_LUNARG=1
      );

     PPVkQueueFlagBits=^PVkQueueFlagBits;
     PVkQueueFlagBits=^TVkQueueFlagBits;
     TVkQueueFlagBits=
      (
       VK_QUEUE_GRAPHICS_BIT=$00000001,                                          //< Queue supports graphics operations
       VK_QUEUE_COMPUTE_BIT=$00000002,                                           //< Queue supports compute operations
       VK_QUEUE_TRANSFER_BIT=$00000004,                                          //< Queue supports transfer operations
       VK_QUEUE_SPARSE_BINDING_BIT=$00000008,                                    //< Queue supports sparse resource memory management operations
       VK_QUEUE_PROTECTED_BIT=$00000010,
       VK_QUEUE_VIDEO_DECODE_BIT_KHR=$00000020,
       VK_QUEUE_VIDEO_ENCODE_BIT_KHR=$00000040,
       VK_QUEUE_RESERVED_7_BIT_QCOM=$00000080,
       VK_QUEUE_OPTICAL_FLOW_BIT_NV=$00000100,
       VK_QUEUE_RESERVED_9_BIT_EXT=$00000200,
       VK_QUEUE_RESERVED_10_BIT_EXT=$00000400,
       VK_QUEUE_RESERVED_11_BIT_ARM=$00000800
      );

     PPVkCullModeFlagBits=^PVkCullModeFlagBits;
     PVkCullModeFlagBits=^TVkCullModeFlagBits;
     TVkCullModeFlagBits=
      (
       VK_CULL_MODE_NONE=0,
       VK_CULL_MODE_FRONT_BIT=$00000001,
       VK_CULL_MODE_BACK_BIT=$00000002,
       VK_CULL_MODE_FRONT_AND_BACK=3
      );

     PPVkRenderPassCreateFlagBits=^PVkRenderPassCreateFlagBits;
     PVkRenderPassCreateFlagBits=^TVkRenderPassCreateFlagBits;
     TVkRenderPassCreateFlagBits=
      (
       VK_RENDER_PASS_CREATE_RESERVED_0_BIT_KHR=$00000001,
       VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM=$00000002
      );

     PPVkDeviceQueueCreateFlagBits=^PVkDeviceQueueCreateFlagBits;
     PVkDeviceQueueCreateFlagBits=^TVkDeviceQueueCreateFlagBits;
     TVkDeviceQueueCreateFlagBits=
      (
       VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT=$00000001,
       VK_DEVICE_QUEUE_CREATE_RESERVED_1_BIT_QCOM=$00000002
      );

     PPVkMemoryPropertyFlagBits=^PVkMemoryPropertyFlagBits;
     PVkMemoryPropertyFlagBits=^TVkMemoryPropertyFlagBits;
     TVkMemoryPropertyFlagBits=
      (
       VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT=$00000001,                            //< If otherwise stated, then allocate memory on device
       VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT=$00000002,                            //< Memory is mappable by host
       VK_MEMORY_PROPERTY_HOST_COHERENT_BIT=$00000004,                           //< Memory will have i/o coherency. If not set, application may need to use vkFlushMappedMemoryRanges and vkInvalidateMappedMemoryRanges to flush/invalidate host cache
       VK_MEMORY_PROPERTY_HOST_CACHED_BIT=$00000008,                             //< Memory will be cached by the host
       VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT=$00000010,                        //< Memory may be allocated by the driver when it is required
       VK_MEMORY_PROPERTY_PROTECTED_BIT=$00000020,
       VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD=$00000040,
       VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD=$00000080,
       VK_MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV=$00000100
      );

     PPVkMemoryHeapFlagBits=^PVkMemoryHeapFlagBits;
     PVkMemoryHeapFlagBits=^TVkMemoryHeapFlagBits;
     TVkMemoryHeapFlagBits=
      (
       VK_MEMORY_HEAP_DEVICE_LOCAL_BIT=$00000001,                                //< If set, heap represents device memory
       VK_MEMORY_HEAP_MULTI_INSTANCE_BIT=$00000002,
       VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR=VK_MEMORY_HEAP_MULTI_INSTANCE_BIT
      );

     PPVkAccessFlagBits=^PVkAccessFlagBits;
     PVkAccessFlagBits=^TVkAccessFlagBits;
     TVkAccessFlagBits=
      (
       VK_ACCESS_NONE=0,
       VK_ACCESS_INDIRECT_COMMAND_READ_BIT=$00000001,                            //< Controls coherency of indirect command reads
       VK_ACCESS_INDEX_READ_BIT=$00000002,                                       //< Controls coherency of index reads
       VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT=$00000004,                            //< Controls coherency of vertex attribute reads
       VK_ACCESS_UNIFORM_READ_BIT=$00000008,                                     //< Controls coherency of uniform buffer reads
       VK_ACCESS_INPUT_ATTACHMENT_READ_BIT=$00000010,                            //< Controls coherency of input attachment reads
       VK_ACCESS_SHADER_READ_BIT=$00000020,                                      //< Controls coherency of shader reads
       VK_ACCESS_SHADER_WRITE_BIT=$00000040,                                     //< Controls coherency of shader writes
       VK_ACCESS_COLOR_ATTACHMENT_READ_BIT=$00000080,                            //< Controls coherency of color attachment reads
       VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT=$00000100,                           //< Controls coherency of color attachment writes
       VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT=$00000200,                    //< Controls coherency of depth/stencil attachment reads
       VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT=$00000400,                   //< Controls coherency of depth/stencil attachment writes
       VK_ACCESS_TRANSFER_READ_BIT=$00000800,                                    //< Controls coherency of transfer reads
       VK_ACCESS_TRANSFER_WRITE_BIT=$00001000,                                   //< Controls coherency of transfer writes
       VK_ACCESS_HOST_READ_BIT=$00002000,                                        //< Controls coherency of host reads
       VK_ACCESS_HOST_WRITE_BIT=$00004000,                                       //< Controls coherency of host writes
       VK_ACCESS_MEMORY_READ_BIT=$00008000,                                      //< Controls coherency of memory reads
       VK_ACCESS_MEMORY_WRITE_BIT=$00010000,                                     //< Controls coherency of memory writes
       VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV=$00020000,
       VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV=$00040000,
       VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT=$00080000,
       VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT=$00100000,
       VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR=$00200000,
       VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR=$00400000,
       VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR=$00800000,
       VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT=$01000000,
       VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT=$02000000,
       VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT=$04000000,
       VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT=$08000000,
       VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV=VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR,
       VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV=VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR,
       VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV=VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR,
       VK_ACCESS_NONE_KHR=VK_ACCESS_NONE
      );

     PPVkBufferUsageFlagBits=^PVkBufferUsageFlagBits;
     PVkBufferUsageFlagBits=^TVkBufferUsageFlagBits;
     TVkBufferUsageFlagBits=
      (
       VK_BUFFER_USAGE_TRANSFER_SRC_BIT=$00000001,                               //< Can be used as a source of transfer operations
       VK_BUFFER_USAGE_TRANSFER_DST_BIT=$00000002,                               //< Can be used as a destination of transfer operations
       VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT=$00000004,                       //< Can be used as TBO
       VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT=$00000008,                       //< Can be used as IBO
       VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT=$00000010,                             //< Can be used as UBO
       VK_BUFFER_USAGE_STORAGE_BUFFER_BIT=$00000020,                             //< Can be used as SSBO
       VK_BUFFER_USAGE_INDEX_BUFFER_BIT=$00000040,                               //< Can be used as source of fixed-function index fetch (index buffer)
       VK_BUFFER_USAGE_VERTEX_BUFFER_BIT=$00000080,                              //< Can be used as source of fixed-function vertex fetch (VBO)
       VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT=$00000100,                            //< Can be the source of indirect parameters (e.g. indirect buffer, parameter buffer)
       VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT=$00000200,
       VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR=$00000400,
       VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT=$00000800,
       VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT=$00001000,
       VK_BUFFER_USAGE_VIDEO_DECODE_SRC_BIT_KHR=$00002000,
       VK_BUFFER_USAGE_VIDEO_DECODE_DST_BIT_KHR=$00004000,
       VK_BUFFER_USAGE_VIDEO_ENCODE_DST_BIT_KHR=$00008000,
       VK_BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR=$00010000,
       VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT=$00020000,
       VK_BUFFER_USAGE_RESERVED_18_BIT_QCOM=$00040000,
       VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR=$00080000,
       VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR=$00100000,
       VK_BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT=$00200000,
       VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT=$00400000,
       VK_BUFFER_USAGE_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT=$00800000,
       VK_BUFFER_USAGE_MICROMAP_STORAGE_BIT_EXT=$01000000,
       VK_BUFFER_USAGE_EXECUTION_GRAPH_SCRATCH_BIT_AMDX=$02000000,
       VK_BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT=$04000000,
       VK_BUFFER_USAGE_RESERVED_27_BIT_QCOM=$08000000,
       VK_BUFFER_USAGE_RAY_TRACING_BIT_NV=VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR,
       VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT=VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT,
       VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR=VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT
      );

     PPVkBufferUsageFlagBits2KHR=^PVkBufferUsageFlagBits2KHR;
     PVkBufferUsageFlagBits2KHR=^TVkBufferUsageFlagBits2KHR;
     TVkBufferUsageFlagBits2KHR=
      (
       VK_BUFFER_USAGE_2_TRANSFER_SRC_BIT_KHR=$00000001,
       VK_BUFFER_USAGE_2_TRANSFER_DST_BIT_KHR=$00000002,
       VK_BUFFER_USAGE_2_UNIFORM_TEXEL_BUFFER_BIT_KHR=$00000004,
       VK_BUFFER_USAGE_2_STORAGE_TEXEL_BUFFER_BIT_KHR=$00000008,
       VK_BUFFER_USAGE_2_UNIFORM_BUFFER_BIT_KHR=$00000010,
       VK_BUFFER_USAGE_2_STORAGE_BUFFER_BIT_KHR=$00000020,
       VK_BUFFER_USAGE_2_INDEX_BUFFER_BIT_KHR=$00000040,
       VK_BUFFER_USAGE_2_VERTEX_BUFFER_BIT_KHR=$00000080,
       VK_BUFFER_USAGE_2_INDIRECT_BUFFER_BIT_KHR=$00000100,
       VK_BUFFER_USAGE_2_CONDITIONAL_RENDERING_BIT_EXT=$00000200,
       VK_BUFFER_USAGE_2_SHADER_BINDING_TABLE_BIT_KHR=$00000400,
       VK_BUFFER_USAGE_2_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT=$00000800,
       VK_BUFFER_USAGE_2_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT=$00001000,
       VK_BUFFER_USAGE_2_VIDEO_DECODE_SRC_BIT_KHR=$00002000,
       VK_BUFFER_USAGE_2_VIDEO_DECODE_DST_BIT_KHR=$00004000,
       VK_BUFFER_USAGE_2_VIDEO_ENCODE_DST_BIT_KHR=$00008000,
       VK_BUFFER_USAGE_2_VIDEO_ENCODE_SRC_BIT_KHR=$00010000,
       VK_BUFFER_USAGE_2_SHADER_DEVICE_ADDRESS_BIT_KHR=$00020000,
       VK_BUFFER_USAGE_2_RESERVED_18_BIT_QCOM=$00040000,
       VK_BUFFER_USAGE_2_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR=$00080000,
       VK_BUFFER_USAGE_2_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR=$00100000,
       VK_BUFFER_USAGE_2_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT=$00200000,
       VK_BUFFER_USAGE_2_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT=$00400000,
       VK_BUFFER_USAGE_2_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT=$00800000,
       VK_BUFFER_USAGE_2_MICROMAP_STORAGE_BIT_EXT=$01000000,
       VK_BUFFER_USAGE_2_EXECUTION_GRAPH_SCRATCH_BIT_AMDX=$02000000,
       VK_BUFFER_USAGE_2_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT=$04000000,
       VK_BUFFER_USAGE_2_RAY_TRACING_BIT_NV=VK_BUFFER_USAGE_2_SHADER_BINDING_TABLE_BIT_KHR
      );

     PPVkBufferCreateFlagBits=^PVkBufferCreateFlagBits;
     PVkBufferCreateFlagBits=^TVkBufferCreateFlagBits;
     TVkBufferCreateFlagBits=
      (
       VK_BUFFER_CREATE_SPARSE_BINDING_BIT=$00000001,                            //< Buffer should support sparse backing
       VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT=$00000002,                          //< Buffer should support sparse backing with partial residency
       VK_BUFFER_CREATE_SPARSE_ALIASED_BIT=$00000004,                            //< Buffer should support constant data access to physical memory ranges mapped into multiple locations of sparse buffers
       VK_BUFFER_CREATE_PROTECTED_BIT=$00000008,
       VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT=$00000010,
       VK_BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT=$00000020,
       VK_BUFFER_CREATE_RESERVED_6_BIT_KHR=$00000040,
       VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT=VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT,
       VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR=VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT
      );

     PPVkShaderStageFlagBits=^PVkShaderStageFlagBits;
     PVkShaderStageFlagBits=^TVkShaderStageFlagBits;
     TVkShaderStageFlagBits=
      (
       VK_SHADER_STAGE_VERTEX_BIT=$00000001,
       VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT=$00000002,
       VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT=$00000004,
       VK_SHADER_STAGE_GEOMETRY_BIT=$00000008,
       VK_SHADER_STAGE_FRAGMENT_BIT=$00000010,
       VK_SHADER_STAGE_ALL_GRAPHICS=31,
       VK_SHADER_STAGE_COMPUTE_BIT=$00000020,
       VK_SHADER_STAGE_TASK_BIT_EXT=$00000040,
       VK_SHADER_STAGE_MESH_BIT_EXT=$00000080,
       VK_SHADER_STAGE_RAYGEN_BIT_KHR=$00000100,
       VK_SHADER_STAGE_ANY_HIT_BIT_KHR=$00000200,
       VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR=$00000400,
       VK_SHADER_STAGE_MISS_BIT_KHR=$00000800,
       VK_SHADER_STAGE_INTERSECTION_BIT_KHR=$00001000,
       VK_SHADER_STAGE_CALLABLE_BIT_KHR=$00002000,
       VK_SHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI=$00004000,
       VK_SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI=$00080000,
       VK_SHADER_STAGE_ALL=2147483647,
       VK_SHADER_STAGE_ANY_HIT_BIT_NV=VK_SHADER_STAGE_ANY_HIT_BIT_KHR,
       VK_SHADER_STAGE_CALLABLE_BIT_NV=VK_SHADER_STAGE_CALLABLE_BIT_KHR,
       VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV=VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR,
       VK_SHADER_STAGE_INTERSECTION_BIT_NV=VK_SHADER_STAGE_INTERSECTION_BIT_KHR,
       VK_SHADER_STAGE_MESH_BIT_NV=VK_SHADER_STAGE_MESH_BIT_EXT,
       VK_SHADER_STAGE_MISS_BIT_NV=VK_SHADER_STAGE_MISS_BIT_KHR,
       VK_SHADER_STAGE_RAYGEN_BIT_NV=VK_SHADER_STAGE_RAYGEN_BIT_KHR,
       VK_SHADER_STAGE_TASK_BIT_NV=VK_SHADER_STAGE_TASK_BIT_EXT
      );

     PPVkImageUsageFlagBits=^PVkImageUsageFlagBits;
     PVkImageUsageFlagBits=^TVkImageUsageFlagBits;
     TVkImageUsageFlagBits=
      (
       VK_IMAGE_USAGE_TRANSFER_SRC_BIT=$00000001,                                //< Can be used as a source of transfer operations
       VK_IMAGE_USAGE_TRANSFER_DST_BIT=$00000002,                                //< Can be used as a destination of transfer operations
       VK_IMAGE_USAGE_SAMPLED_BIT=$00000004,                                     //< Can be sampled from (SAMPLED_IMAGE and COMBINED_IMAGE_SAMPLER descriptor types)
       VK_IMAGE_USAGE_STORAGE_BIT=$00000008,                                     //< Can be used as storage image (STORAGE_IMAGE descriptor type)
       VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT=$00000010,                            //< Can be used as framebuffer color attachment
       VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT=$00000020,                    //< Can be used as framebuffer depth/stencil attachment
       VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT=$00000040,                        //< Image data not needed outside of rendering
       VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT=$00000080,                            //< Can be used as framebuffer input attachment
       VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR=$00000100,
       VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT=$00000200,
       VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR=$00000400,
       VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR=$00000800,
       VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR=$00001000,
       VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR=$00002000,
       VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR=$00004000,
       VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR=$00008000,
       VK_IMAGE_USAGE_RESERVED_16_BIT_QCOM=$00010000,
       VK_IMAGE_USAGE_RESERVED_17_BIT_QCOM=$00020000,
       VK_IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI=$00040000,
       VK_IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT=$00080000,
       VK_IMAGE_USAGE_SAMPLE_WEIGHT_BIT_QCOM=$00100000,
       VK_IMAGE_USAGE_SAMPLE_BLOCK_MATCH_BIT_QCOM=$00200000,
       VK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXT=$00400000,
       VK_IMAGE_USAGE_RESERVED_23_BIT_EXT=$00800000,
       VK_IMAGE_USAGE_RESERVED_24_BIT_COREAVI=$01000000,
       VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV=VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
      );

     PPVkImageCreateFlagBits=^PVkImageCreateFlagBits;
     PVkImageCreateFlagBits=^TVkImageCreateFlagBits;
     TVkImageCreateFlagBits=
      (
       VK_IMAGE_CREATE_SPARSE_BINDING_BIT=$00000001,                             //< Image should support sparse backing
       VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT=$00000002,                           //< Image should support sparse backing with partial residency
       VK_IMAGE_CREATE_SPARSE_ALIASED_BIT=$00000004,                             //< Image should support constant data access to physical memory ranges mapped into multiple locations of sparse images
       VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT=$00000008,                             //< Allows image views to have different format than the base image
       VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT=$00000010,                            //< Allows creating image views with cube type from the created image
       VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT=$00000020,
       VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT=$00000040,
       VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT=$00000080,
       VK_IMAGE_CREATE_EXTENDED_USAGE_BIT=$00000100,
       VK_IMAGE_CREATE_DISJOINT_BIT=$00000200,
       VK_IMAGE_CREATE_ALIAS_BIT=$00000400,
       VK_IMAGE_CREATE_PROTECTED_BIT=$00000800,
       VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT=$00001000,
       VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV=$00002000,
       VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT=$00004000,
       VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM=$00008000,
       VK_IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT=$00010000,
       VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT=$00020000,
       VK_IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT=$00040000,
       VK_IMAGE_CREATE_RESERVED_19_BIT_EXT=$00080000,
       VK_IMAGE_CREATE_RESERVED_20_BIT_KHR=$00100000,
       VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR=VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT,
       VK_IMAGE_CREATE_ALIAS_BIT_KHR=VK_IMAGE_CREATE_ALIAS_BIT,
       VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR=VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT,
       VK_IMAGE_CREATE_DISJOINT_BIT_KHR=VK_IMAGE_CREATE_DISJOINT_BIT,
       VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR=VK_IMAGE_CREATE_EXTENDED_USAGE_BIT,
       VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR=VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT
      );

     PPVkImageViewCreateFlagBits=^PVkImageViewCreateFlagBits;
     PVkImageViewCreateFlagBits=^TVkImageViewCreateFlagBits;
     TVkImageViewCreateFlagBits=
      (
       VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT=$00000001,
       VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT=$00000002,
       VK_IMAGE_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT=$00000004
      );

     PPVkSamplerCreateFlagBits=^PVkSamplerCreateFlagBits;
     PVkSamplerCreateFlagBits=^TVkSamplerCreateFlagBits;
     TVkSamplerCreateFlagBits=
      (
       VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT=$00000001,
       VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT=$00000002,
       VK_SAMPLER_CREATE_NON_SEAMLESS_CUBE_MAP_BIT_EXT=$00000004,
       VK_SAMPLER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT=$00000008,
       VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM=$00000010
      );

     PPVkPipelineCreateFlagBits=^PVkPipelineCreateFlagBits;
     PVkPipelineCreateFlagBits=^TVkPipelineCreateFlagBits;
     TVkPipelineCreateFlagBits=
      (
       VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT=$00000001,
       VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT=$00000002,
       VK_PIPELINE_CREATE_DERIVATIVE_BIT=$00000004,
       VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT=$00000008,
       VK_PIPELINE_CREATE_DISPATCH_BASE_BIT=$00000010,
       VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV=$00000020,
       VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR=$00000040,
       VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR=$00000080,
       VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT=$00000100,
       VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT=$00000200,
       VK_PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT=$00000400,
       VK_PIPELINE_CREATE_LIBRARY_BIT_KHR=$00000800,
       VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR=$00001000,
       VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR=$00002000,
       VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR=$00004000,
       VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR=$00008000,
       VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR=$00010000,
       VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR=$00020000,
       VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV=$00040000,
       VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR=$00080000,
       VK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV=$00100000,
       VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR=$00200000,
       VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT=$00400000,
       VK_PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT=$00800000,
       VK_PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT=$01000000,
       VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT=$02000000,
       VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT=$04000000,
       VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT=$08000000,
       VK_PIPELINE_CREATE_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV=$10000000,
       VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT=$20000000,
       VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT=$40000000,
       VK_PIPELINE_CREATE_DISPATCH_BASE=VK_PIPELINE_CREATE_DISPATCH_BASE_BIT,
       VK_PIPELINE_CREATE_DISPATCH_BASE_KHR=VK_PIPELINE_CREATE_DISPATCH_BASE,
       VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT=VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT,
       VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT=VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT,
       VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT=VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT,
       VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR=VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR,
       VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR=VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT
      );

     PPVkPipelineCreateFlagBits2KHR=^PVkPipelineCreateFlagBits2KHR;
     PVkPipelineCreateFlagBits2KHR=^TVkPipelineCreateFlagBits2KHR;
     TVkPipelineCreateFlagBits2KHR=
      (
       VK_PIPELINE_CREATE_2_RESERVED_31_BIT_KHR=TVkInt32($80000000),
       VK_PIPELINE_CREATE_2_DISABLE_OPTIMIZATION_BIT_KHR=$00000001,
       VK_PIPELINE_CREATE_2_ALLOW_DERIVATIVES_BIT_KHR=$00000002,
       VK_PIPELINE_CREATE_2_DERIVATIVE_BIT_KHR=$00000004,
       VK_PIPELINE_CREATE_2_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR=$00000008,
       VK_PIPELINE_CREATE_2_DISPATCH_BASE_BIT_KHR=$00000010,
       VK_PIPELINE_CREATE_2_DEFER_COMPILE_BIT_NV=$00000020,
       VK_PIPELINE_CREATE_2_CAPTURE_STATISTICS_BIT_KHR=$00000040,
       VK_PIPELINE_CREATE_2_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR=$00000080,
       VK_PIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_KHR=$00000100,
       VK_PIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT_KHR=$00000200,
       VK_PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT=$00000400,
       VK_PIPELINE_CREATE_2_LIBRARY_BIT_KHR=$00000800,
       VK_PIPELINE_CREATE_2_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR=$00001000,
       VK_PIPELINE_CREATE_2_RAY_TRACING_SKIP_AABBS_BIT_KHR=$00002000,
       VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR=$00004000,
       VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR=$00008000,
       VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR=$00010000,
       VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR=$00020000,
       VK_PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_NV=$00040000,
       VK_PIPELINE_CREATE_2_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR=$00080000,
       VK_PIPELINE_CREATE_2_RAY_TRACING_ALLOW_MOTION_BIT_NV=$00100000,
       VK_PIPELINE_CREATE_2_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR=$00200000,
       VK_PIPELINE_CREATE_2_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT=$00400000,
       VK_PIPELINE_CREATE_2_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT=$00800000,
       VK_PIPELINE_CREATE_2_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT=$01000000,
       VK_PIPELINE_CREATE_2_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT=$02000000,
       VK_PIPELINE_CREATE_2_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT=$04000000,
       VK_PIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT_EXT=$08000000,
       VK_PIPELINE_CREATE_2_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV=$10000000,
       VK_PIPELINE_CREATE_2_DESCRIPTOR_BUFFER_BIT_EXT=$20000000,
       VK_PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT_EXT=$40000000
      );

     PPVkPipelineShaderStageCreateFlagBits=^PVkPipelineShaderStageCreateFlagBits;
     PVkPipelineShaderStageCreateFlagBits=^TVkPipelineShaderStageCreateFlagBits;
     TVkPipelineShaderStageCreateFlagBits=
      (
       VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT=$00000001,
       VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT=$00000002,
       VK_PIPELINE_SHADER_STAGE_CREATE_RESERVED_3_BIT_KHR=$00000008,
       VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT=VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT,
       VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT=VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT
      );

     PPVkColorComponentFlagBits=^PVkColorComponentFlagBits;
     PVkColorComponentFlagBits=^TVkColorComponentFlagBits;
     TVkColorComponentFlagBits=
      (
       VK_COLOR_COMPONENT_R_BIT=$00000001,
       VK_COLOR_COMPONENT_G_BIT=$00000002,
       VK_COLOR_COMPONENT_B_BIT=$00000004,
       VK_COLOR_COMPONENT_A_BIT=$00000008
      );

     PPVkFenceCreateFlagBits=^PVkFenceCreateFlagBits;
     PVkFenceCreateFlagBits=^TVkFenceCreateFlagBits;
     TVkFenceCreateFlagBits=
      (
       VK_FENCE_CREATE_SIGNALED_BIT=$00000001
      );

     PPVkSemaphoreCreateFlagBits=^PVkSemaphoreCreateFlagBits;
     PVkSemaphoreCreateFlagBits=^TVkSemaphoreCreateFlagBits;
     TVkSemaphoreCreateFlagBits=
      (
       TVkSemaphoreCreateFlagBitsDummyValue=0
      );

     PPVkFormatFeatureFlagBits=^PVkFormatFeatureFlagBits;
     PVkFormatFeatureFlagBits=^TVkFormatFeatureFlagBits;
     TVkFormatFeatureFlagBits=
      (
       VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT=$00000001,                            //< Format can be used for sampled images (SAMPLED_IMAGE and COMBINED_IMAGE_SAMPLER descriptor types)
       VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT=$00000002,                            //< Format can be used for storage images (STORAGE_IMAGE descriptor type)
       VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT=$00000004,                     //< Format supports atomic operations in case it is used for storage images
       VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT=$00000008,                     //< Format can be used for uniform texel buffers (TBOs)
       VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT=$00000010,                     //< Format can be used for storage texel buffers (IBOs)
       VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT=$00000020,              //< Format supports atomic operations in case it is used for storage texel buffers
       VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT=$00000040,                            //< Format can be used for vertex buffers (VBOs)
       VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT=$00000080,                         //< Format can be used for color attachment images
       VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT=$00000100,                   //< Format supports blending in case it is used for color attachment images
       VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT=$00000200,                 //< Format can be used for depth/stencil attachment images
       VK_FORMAT_FEATURE_BLIT_SRC_BIT=$00000400,                                 //< Format can be used as the source image of blits with vkCmdBlitImage
       VK_FORMAT_FEATURE_BLIT_DST_BIT=$00000800,                                 //< Format can be used as the destination image of blits with vkCmdBlitImage
       VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT=$00001000,              //< Format can be filtered with VK_FILTER_LINEAR when being sampled
       VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT=$00002000,
       VK_FORMAT_FEATURE_TRANSFER_SRC_BIT=$00004000,
       VK_FORMAT_FEATURE_TRANSFER_DST_BIT=$00008000,
       VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT=$00010000,
       VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT=$00020000,
       VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT=$00040000,
       VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT=$00080000,
       VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT=$00100000,
       VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT=$00200000,
       VK_FORMAT_FEATURE_DISJOINT_BIT=$00400000,
       VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT=$00800000,
       VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT=$01000000,
       VK_FORMAT_FEATURE_VIDEO_DECODE_OUTPUT_BIT_KHR=$02000000,
       VK_FORMAT_FEATURE_VIDEO_DECODE_DPB_BIT_KHR=$04000000,
       VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR=$08000000,
       VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR=$10000000,
       VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR=$20000000,
       VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR=$40000000,
       VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR=VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT,
       VK_FORMAT_FEATURE_DISJOINT_BIT_KHR=VK_FORMAT_FEATURE_DISJOINT_BIT,
       VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR=VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT,
       VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG=VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT,
       VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT=VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT,
       VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR=VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT,
       VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR=VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT,
       VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR=VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT,
       VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR=VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT,
       VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR=VK_FORMAT_FEATURE_TRANSFER_DST_BIT,
       VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR=VK_FORMAT_FEATURE_TRANSFER_SRC_BIT
      );

     PPVkQueryControlFlagBits=^PVkQueryControlFlagBits;
     PVkQueryControlFlagBits=^TVkQueryControlFlagBits;
     TVkQueryControlFlagBits=
      (
       VK_QUERY_CONTROL_PRECISE_BIT=$00000001                                    //< Require precise results to be collected by the query
      );

     PPVkQueryResultFlagBits=^PVkQueryResultFlagBits;
     PVkQueryResultFlagBits=^TVkQueryResultFlagBits;
     TVkQueryResultFlagBits=
      (
       VK_QUERY_RESULT_64_BIT=$00000001,                                         //< Results of the queries are written to the destination buffer as 64-bit values
       VK_QUERY_RESULT_WAIT_BIT=$00000002,                                       //< Results of the queries are waited on before proceeding with the result copy
       VK_QUERY_RESULT_WITH_AVAILABILITY_BIT=$00000004,                          //< Besides the results of the query, the availability of the results is also written
       VK_QUERY_RESULT_PARTIAL_BIT=$00000008,                                    //< Copy the partial results of the query even if the final results are not available
       VK_QUERY_RESULT_WITH_STATUS_BIT_KHR=$00000010
      );

     PPVkCommandBufferUsageFlagBits=^PVkCommandBufferUsageFlagBits;
     PVkCommandBufferUsageFlagBits=^TVkCommandBufferUsageFlagBits;
     TVkCommandBufferUsageFlagBits=
      (
       VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT=$00000001,
       VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT=$00000002,
       VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT=$00000004                    //< Command buffer may be submitted/executed more than once simultaneously
      );

     PPVkQueryPipelineStatisticFlagBits=^PVkQueryPipelineStatisticFlagBits;
     PVkQueryPipelineStatisticFlagBits=^TVkQueryPipelineStatisticFlagBits;
     TVkQueryPipelineStatisticFlagBits=
      (
       VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT=$00000001,        //< Optional
       VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT=$00000002,      //< Optional
       VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT=$00000004,      //< Optional
       VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT=$00000008,    //< Optional
       VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT=$00000010,     //< Optional
       VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT=$00000020,           //< Optional
       VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT=$00000040,            //< Optional
       VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT=$00000080,    //< Optional
       VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT=$00000100, //< Optional
       VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT=$00000200, //< Optional
       VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT=$00000400,     //< Optional
       VK_QUERY_PIPELINE_STATISTIC_TASK_SHADER_INVOCATIONS_BIT_EXT=$00000800,
       VK_QUERY_PIPELINE_STATISTIC_MESH_SHADER_INVOCATIONS_BIT_EXT=$00001000,
       VK_QUERY_PIPELINE_STATISTIC_CLUSTER_CULLING_SHADER_INVOCATIONS_BIT_HUAWEI=$00002000
      );

     PPVkImageAspectFlagBits=^PVkImageAspectFlagBits;
     PVkImageAspectFlagBits=^TVkImageAspectFlagBits;
     TVkImageAspectFlagBits=
      (
       VK_IMAGE_ASPECT_NONE=0,
       VK_IMAGE_ASPECT_COLOR_BIT=$00000001,
       VK_IMAGE_ASPECT_DEPTH_BIT=$00000002,
       VK_IMAGE_ASPECT_STENCIL_BIT=$00000004,
       VK_IMAGE_ASPECT_METADATA_BIT=$00000008,
       VK_IMAGE_ASPECT_PLANE_0_BIT=$00000010,
       VK_IMAGE_ASPECT_PLANE_1_BIT=$00000020,
       VK_IMAGE_ASPECT_PLANE_2_BIT=$00000040,
       VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT=$00000080,
       VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT=$00000100,
       VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT=$00000200,
       VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT=$00000400,
       VK_IMAGE_ASPECT_NONE_KHR=VK_IMAGE_ASPECT_NONE,
       VK_IMAGE_ASPECT_PLANE_0_BIT_KHR=VK_IMAGE_ASPECT_PLANE_0_BIT,
       VK_IMAGE_ASPECT_PLANE_1_BIT_KHR=VK_IMAGE_ASPECT_PLANE_1_BIT,
       VK_IMAGE_ASPECT_PLANE_2_BIT_KHR=VK_IMAGE_ASPECT_PLANE_2_BIT
      );

     PPVkSparseImageFormatFlagBits=^PVkSparseImageFormatFlagBits;
     PVkSparseImageFormatFlagBits=^TVkSparseImageFormatFlagBits;
     TVkSparseImageFormatFlagBits=
      (
       VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT=$00000001,                      //< Image uses a single mip tail region for all array layers
       VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT=$00000002,                    //< Image requires mip level dimensions to be an integer multiple of the sparse image block dimensions for non-tail mip levels.
       VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT=$00000004               //< Image uses a non-standard sparse image block dimensions
      );

     PPVkSparseMemoryBindFlagBits=^PVkSparseMemoryBindFlagBits;
     PVkSparseMemoryBindFlagBits=^TVkSparseMemoryBindFlagBits;
     TVkSparseMemoryBindFlagBits=
      (
       VK_SPARSE_MEMORY_BIND_METADATA_BIT=$00000001                              //< Operation binds resource metadata to memory
      );

     PPVkPipelineStageFlagBits=^PVkPipelineStageFlagBits;
     PVkPipelineStageFlagBits=^TVkPipelineStageFlagBits;
     TVkPipelineStageFlagBits=
      (
       VK_PIPELINE_STAGE_NONE=0,
       VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT=$00000001,                              //< Before subsequent commands are processed
       VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT=$00000002,                            //< Draw/DispatchIndirect command fetch
       VK_PIPELINE_STAGE_VERTEX_INPUT_BIT=$00000004,                             //< Vertex/index fetch
       VK_PIPELINE_STAGE_VERTEX_SHADER_BIT=$00000008,                            //< Vertex shading
       VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT=$00000010,              //< Tessellation control shading
       VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT=$00000020,           //< Tessellation evaluation shading
       VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT=$00000040,                          //< Geometry shading
       VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT=$00000080,                          //< Fragment shading
       VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT=$00000100,                     //< Early fragment (depth and stencil) tests
       VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT=$00000200,                      //< Late fragment (depth and stencil) tests
       VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT=$00000400,                  //< Color attachment writes
       VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT=$00000800,                           //< Compute shading
       VK_PIPELINE_STAGE_TRANSFER_BIT=$00001000,                                 //< Transfer/copy operations
       VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT=$00002000,                           //< After previous commands have completed
       VK_PIPELINE_STAGE_HOST_BIT=$00004000,                                     //< Indicates host (CPU) is a source/sink of the dependency
       VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT=$00008000,                             //< All stages of the graphics pipeline
       VK_PIPELINE_STAGE_ALL_COMMANDS_BIT=$00010000,                             //< All stages supported on the queue
       VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV=$00020000,
       VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT=$00040000,
       VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT=$00080000,
       VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT=$00100000,
       VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR=$00200000,
       VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR=$00400000,
       VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT=$00800000,
       VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT=$01000000,
       VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR=$02000000,
       VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV=VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR,
       VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV=VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR,
       VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV=VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT,
       VK_PIPELINE_STAGE_NONE_KHR=VK_PIPELINE_STAGE_NONE,
       VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV=VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR,
       VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV=VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT
      );

     PPVkCommandPoolCreateFlagBits=^PVkCommandPoolCreateFlagBits;
     PVkCommandPoolCreateFlagBits=^TVkCommandPoolCreateFlagBits;
     TVkCommandPoolCreateFlagBits=
      (
       VK_COMMAND_POOL_CREATE_TRANSIENT_BIT=$00000001,                           //< Command buffers have a short lifetime
       VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT=$00000002,                //< Command buffers may release their memory individually
       VK_COMMAND_POOL_CREATE_PROTECTED_BIT=$00000004
      );

     PPVkCommandPoolResetFlagBits=^PVkCommandPoolResetFlagBits;
     PVkCommandPoolResetFlagBits=^TVkCommandPoolResetFlagBits;
     TVkCommandPoolResetFlagBits=
      (
       VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT=$00000001,                    //< Release resources owned by the pool
       VK_COMMAND_POOL_RESET_RESERVED_1_BIT_COREAVI=$00000002
      );

     PPVkCommandBufferResetFlagBits=^PVkCommandBufferResetFlagBits;
     PVkCommandBufferResetFlagBits=^TVkCommandBufferResetFlagBits;
     TVkCommandBufferResetFlagBits=
      (
       VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT=$00000001                   //< Release resources owned by the buffer
      );

     PPVkSampleCountFlagBits=^PVkSampleCountFlagBits;
     PVkSampleCountFlagBits=^TVkSampleCountFlagBits;
     TVkSampleCountFlagBits=
      (
       VK_SAMPLE_COUNT_1_BIT=$00000001,                                          //< Sample count 1 supported
       VK_SAMPLE_COUNT_2_BIT=$00000002,                                          //< Sample count 2 supported
       VK_SAMPLE_COUNT_4_BIT=$00000004,                                          //< Sample count 4 supported
       VK_SAMPLE_COUNT_8_BIT=$00000008,                                          //< Sample count 8 supported
       VK_SAMPLE_COUNT_16_BIT=$00000010,                                         //< Sample count 16 supported
       VK_SAMPLE_COUNT_32_BIT=$00000020,                                         //< Sample count 32 supported
       VK_SAMPLE_COUNT_64_BIT=$00000040                                          //< Sample count 64 supported
      );

     PPVkAttachmentDescriptionFlagBits=^PVkAttachmentDescriptionFlagBits;
     PVkAttachmentDescriptionFlagBits=^TVkAttachmentDescriptionFlagBits;
     TVkAttachmentDescriptionFlagBits=
      (
       VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT=$00000001                         //< The attachment may alias physical memory of another attachment in the same render pass
      );

     PPVkStencilFaceFlagBits=^PVkStencilFaceFlagBits;
     PVkStencilFaceFlagBits=^TVkStencilFaceFlagBits;
     TVkStencilFaceFlagBits=
      (
       VK_STENCIL_FACE_FRONT_BIT=$00000001,                                      //< Front face
       VK_STENCIL_FACE_BACK_BIT=$00000002,                                       //< Back face
       VK_STENCIL_FACE_FRONT_AND_BACK=3,                                         //< Front and back faces
       VK_STENCIL_FRONT_AND_BACK=VK_STENCIL_FACE_FRONT_AND_BACK
      );

     PPVkDescriptorPoolCreateFlagBits=^PVkDescriptorPoolCreateFlagBits;
     PVkDescriptorPoolCreateFlagBits=^TVkDescriptorPoolCreateFlagBits;
     TVkDescriptorPoolCreateFlagBits=
      (
       VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT=$00000001,              //< Descriptor sets may be freed individually
       VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT=$00000002,
       VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXT=$00000004,
       VK_DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_SETS_BIT_NV=$00000008,
       VK_DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_POOLS_BIT_NV=$00000010,
       VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE=VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXT,
       VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT=VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT
      );

     PPVkDependencyFlagBits=^PVkDependencyFlagBits;
     PVkDependencyFlagBits=^TVkDependencyFlagBits;
     TVkDependencyFlagBits=
      (
       VK_DEPENDENCY_BY_REGION_BIT=$00000001,                                    //< Dependency is per pixel region 
       VK_DEPENDENCY_VIEW_LOCAL_BIT=$00000002,
       VK_DEPENDENCY_DEVICE_GROUP_BIT=$00000004,
       VK_DEPENDENCY_FEEDBACK_LOOP_BIT_EXT=$00000008,
       VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR=VK_DEPENDENCY_DEVICE_GROUP_BIT,
       VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR=VK_DEPENDENCY_VIEW_LOCAL_BIT
      );

     PPVkSemaphoreType=^PVkSemaphoreType;
     PVkSemaphoreType=^TVkSemaphoreType;
     TVkSemaphoreType=
      (
       VK_SEMAPHORE_TYPE_BINARY=0,
       VK_SEMAPHORE_TYPE_TIMELINE=1,
       VK_SEMAPHORE_TYPE_BINARY_KHR=VK_SEMAPHORE_TYPE_BINARY,
       VK_SEMAPHORE_TYPE_TIMELINE_KHR=VK_SEMAPHORE_TYPE_TIMELINE
      );

     PPVkSemaphoreWaitFlagBits=^PVkSemaphoreWaitFlagBits;
     PVkSemaphoreWaitFlagBits=^TVkSemaphoreWaitFlagBits;
     TVkSemaphoreWaitFlagBits=
      (
       VK_SEMAPHORE_WAIT_ANY_BIT=$00000001,
       VK_SEMAPHORE_WAIT_ANY_BIT_KHR=VK_SEMAPHORE_WAIT_ANY_BIT
      );

     PPVkPresentModeKHR=^PVkPresentModeKHR;
     PVkPresentModeKHR=^TVkPresentModeKHR;
     TVkPresentModeKHR=
      (
       VK_PRESENT_MODE_IMMEDIATE_KHR=0,
       VK_PRESENT_MODE_MAILBOX_KHR=1,
       VK_PRESENT_MODE_FIFO_KHR=2,
       VK_PRESENT_MODE_FIFO_RELAXED_KHR=3,
       VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR=1000111000,
       VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR=1000111001
      );

     PPVkColorSpaceKHR=^PVkColorSpaceKHR;
     PVkColorSpaceKHR=^TVkColorSpaceKHR;
     TVkColorSpaceKHR=
      (
       VK_COLOR_SPACE_SRGB_NONLINEAR_KHR=0,
       VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT=1000104001,
       VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT=1000104002,
       VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT=1000104003,
       VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT=1000104004,
       VK_COLOR_SPACE_BT709_LINEAR_EXT=1000104005,
       VK_COLOR_SPACE_BT709_NONLINEAR_EXT=1000104006,
       VK_COLOR_SPACE_BT2020_LINEAR_EXT=1000104007,
       VK_COLOR_SPACE_HDR10_ST2084_EXT=1000104008,
       VK_COLOR_SPACE_DOLBYVISION_EXT=1000104009,
       VK_COLOR_SPACE_HDR10_HLG_EXT=1000104010,
       VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT=1000104011,
       VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT=1000104012,
       VK_COLOR_SPACE_PASS_THROUGH_EXT=1000104013,
       VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT=1000104014,
       VK_COLOR_SPACE_DISPLAY_NATIVE_AMD=1000213000,
       VK_COLOR_SPACE_DCI_P3_LINEAR_EXT=VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT,
       VK_COLORSPACE_SRGB_NONLINEAR_KHR=VK_COLOR_SPACE_SRGB_NONLINEAR_KHR
      );

     PPVkDisplayPlaneAlphaFlagBitsKHR=^PVkDisplayPlaneAlphaFlagBitsKHR;
     PVkDisplayPlaneAlphaFlagBitsKHR=^TVkDisplayPlaneAlphaFlagBitsKHR;
     TVkDisplayPlaneAlphaFlagBitsKHR=
      (
       VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR=$00000001,
       VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR=$00000002,
       VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR=$00000004,
       VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR=$00000008
      );

     PPVkCompositeAlphaFlagBitsKHR=^PVkCompositeAlphaFlagBitsKHR;
     PVkCompositeAlphaFlagBitsKHR=^TVkCompositeAlphaFlagBitsKHR;
     TVkCompositeAlphaFlagBitsKHR=
      (
       VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR=$00000001,
       VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR=$00000002,
       VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR=$00000004,
       VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR=$00000008
      );

     PPVkSurfaceTransformFlagBitsKHR=^PVkSurfaceTransformFlagBitsKHR;
     PVkSurfaceTransformFlagBitsKHR=^TVkSurfaceTransformFlagBitsKHR;
     TVkSurfaceTransformFlagBitsKHR=
      (
       VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR=$00000001,
       VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR=$00000002,
       VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR=$00000004,
       VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR=$00000008,
       VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR=$00000010,
       VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR=$00000020,
       VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR=$00000040,
       VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR=$00000080,
       VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR=$00000100
      );

     PPVkSwapchainImageUsageFlagBitsANDROID=^PVkSwapchainImageUsageFlagBitsANDROID;
     PVkSwapchainImageUsageFlagBitsANDROID=^TVkSwapchainImageUsageFlagBitsANDROID;
     TVkSwapchainImageUsageFlagBitsANDROID=
      (
       VK_SWAPCHAIN_IMAGE_USAGE_SHARED_BIT_ANDROID=$00000001
      );

     PPVkTimeDomainEXT=^PVkTimeDomainEXT;
     PVkTimeDomainEXT=^TVkTimeDomainEXT;
     TVkTimeDomainEXT=
      (
       VK_TIME_DOMAIN_DEVICE_EXT=0,
       VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT=1,
       VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT=2,
       VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT=3
      );

     PPVkDebugReportFlagBitsEXT=^PVkDebugReportFlagBitsEXT;
     PVkDebugReportFlagBitsEXT=^TVkDebugReportFlagBitsEXT;
     TVkDebugReportFlagBitsEXT=
      (
       VK_DEBUG_REPORT_INFORMATION_BIT_EXT=$00000001,
       VK_DEBUG_REPORT_WARNING_BIT_EXT=$00000002,
       VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT=$00000004,
       VK_DEBUG_REPORT_ERROR_BIT_EXT=$00000008,
       VK_DEBUG_REPORT_DEBUG_BIT_EXT=$00000010
      );

     PPVkDebugReportObjectTypeEXT=^PVkDebugReportObjectTypeEXT;
     PVkDebugReportObjectTypeEXT=^TVkDebugReportObjectTypeEXT;
     TVkDebugReportObjectTypeEXT=
      (
       VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT=0,
       VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT=1,
       VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT=2,
       VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT=3,
       VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT=4,
       VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT=5,
       VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT=6,
       VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT=7,
       VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT=8,
       VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT=9,
       VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT=10,
       VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT=11,
       VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT=12,
       VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT=13,
       VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT=14,
       VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT=15,
       VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT=16,
       VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT=17,
       VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT=18,
       VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT=19,
       VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT=20,
       VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT=21,
       VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT=22,
       VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT=23,
       VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT=24,
       VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT=25,
       VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT=26,
       VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT=27,
       VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT=28,
       VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT=29,
       VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT=30,
       VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT=33,
       VK_DEBUG_REPORT_OBJECT_TYPE_CU_MODULE_NVX_EXT=1000029000,
       VK_DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT=1000029001,
       VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT=1000085000,
       VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT=1000150000,
       VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT=1000156000,
       VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT=1000165000,
       VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA_EXT=1000366000,
       VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT=VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT,
       VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT=VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT,
       VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT=VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT,
       VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT=VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT
      );

     PPVkDeviceMemoryReportEventTypeEXT=^PVkDeviceMemoryReportEventTypeEXT;
     PVkDeviceMemoryReportEventTypeEXT=^TVkDeviceMemoryReportEventTypeEXT;
     TVkDeviceMemoryReportEventTypeEXT=
      (
       VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATE_EXT=0,
       VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_FREE_EXT=1,
       VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_IMPORT_EXT=2,
       VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_UNIMPORT_EXT=3,
       VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATION_FAILED_EXT=4
      );

     PPVkRasterizationOrderAMD=^PVkRasterizationOrderAMD;
     PVkRasterizationOrderAMD=^TVkRasterizationOrderAMD;
     TVkRasterizationOrderAMD=
      (
       VK_RASTERIZATION_ORDER_STRICT_AMD=0,
       VK_RASTERIZATION_ORDER_RELAXED_AMD=1
      );

     PPVkExternalMemoryHandleTypeFlagBitsNV=^PVkExternalMemoryHandleTypeFlagBitsNV;
     PVkExternalMemoryHandleTypeFlagBitsNV=^TVkExternalMemoryHandleTypeFlagBitsNV;
     TVkExternalMemoryHandleTypeFlagBitsNV=
      (
       VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV=$00000001,
       VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV=$00000002,
       VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV=$00000004,
       VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV=$00000008
      );

     PPVkExternalMemoryFeatureFlagBitsNV=^PVkExternalMemoryFeatureFlagBitsNV;
     PVkExternalMemoryFeatureFlagBitsNV=^TVkExternalMemoryFeatureFlagBitsNV;
     TVkExternalMemoryFeatureFlagBitsNV=
      (
       VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV=$00000001,
       VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV=$00000002,
       VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV=$00000004
      );

     PPVkValidationCheckEXT=^PVkValidationCheckEXT;
     PVkValidationCheckEXT=^TVkValidationCheckEXT;
     TVkValidationCheckEXT=
      (
       VK_VALIDATION_CHECK_ALL_EXT=0,
       VK_VALIDATION_CHECK_SHADERS_EXT=1
      );

     PPVkValidationFeatureEnableEXT=^PVkValidationFeatureEnableEXT;
     PVkValidationFeatureEnableEXT=^TVkValidationFeatureEnableEXT;
     TVkValidationFeatureEnableEXT=
      (
       VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT=0,
       VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT=1,
       VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT=2,
       VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT=3,
       VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT=4
      );

     PPVkValidationFeatureDisableEXT=^PVkValidationFeatureDisableEXT;
     PVkValidationFeatureDisableEXT=^TVkValidationFeatureDisableEXT;
     TVkValidationFeatureDisableEXT=
      (
       VK_VALIDATION_FEATURE_DISABLE_ALL_EXT=0,
       VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT=1,
       VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT=2,
       VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT=3,
       VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT=4,
       VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT=5,
       VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT=6,
       VK_VALIDATION_FEATURE_DISABLE_SHADER_VALIDATION_CACHE_EXT=7
      );

     PPVkSubgroupFeatureFlagBits=^PVkSubgroupFeatureFlagBits;
     PVkSubgroupFeatureFlagBits=^TVkSubgroupFeatureFlagBits;
     TVkSubgroupFeatureFlagBits=
      (
       VK_SUBGROUP_FEATURE_BASIC_BIT=$00000001,                                  //< Basic subgroup operations
       VK_SUBGROUP_FEATURE_VOTE_BIT=$00000002,                                   //< Vote subgroup operations
       VK_SUBGROUP_FEATURE_ARITHMETIC_BIT=$00000004,                             //< Arithmetic subgroup operations
       VK_SUBGROUP_FEATURE_BALLOT_BIT=$00000008,                                 //< Ballot subgroup operations
       VK_SUBGROUP_FEATURE_SHUFFLE_BIT=$00000010,                                //< Shuffle subgroup operations
       VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT=$00000020,                       //< Shuffle relative subgroup operations
       VK_SUBGROUP_FEATURE_CLUSTERED_BIT=$00000040,                              //< Clustered subgroup operations
       VK_SUBGROUP_FEATURE_QUAD_BIT=$00000080,                                   //< Quad subgroup operations
       VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV=$00000100
      );

     PPVkIndirectCommandsLayoutUsageFlagBitsNV=^PVkIndirectCommandsLayoutUsageFlagBitsNV;
     PVkIndirectCommandsLayoutUsageFlagBitsNV=^TVkIndirectCommandsLayoutUsageFlagBitsNV;
     TVkIndirectCommandsLayoutUsageFlagBitsNV=
      (
       VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV=$00000001,
       VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV=$00000002,
       VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV=$00000004
      );

     PPVkIndirectStateFlagBitsNV=^PVkIndirectStateFlagBitsNV;
     PVkIndirectStateFlagBitsNV=^TVkIndirectStateFlagBitsNV;
     TVkIndirectStateFlagBitsNV=
      (
       VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV=$00000001
      );

     PPVkIndirectCommandsTokenTypeNV=^PVkIndirectCommandsTokenTypeNV;
     PVkIndirectCommandsTokenTypeNV=^TVkIndirectCommandsTokenTypeNV;
     TVkIndirectCommandsTokenTypeNV=
      (
       VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV=0,
       VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV=1,
       VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV=2,
       VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV=3,
       VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV=4,
       VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV=5,
       VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV=6,
       VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV=7,
       VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV=1000328000,
       VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NV=1000428003,
       VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NV=1000428004
      );

     PPVkPrivateDataSlotCreateFlagBits=^PVkPrivateDataSlotCreateFlagBits;
     PVkPrivateDataSlotCreateFlagBits=^TVkPrivateDataSlotCreateFlagBits;
     TVkPrivateDataSlotCreateFlagBits=
      (
       VK_PRIVATE_DATA_SLOT_CREATE_RESERVED_0_BIT_NV=$00000001
      );

     PPVkDescriptorSetLayoutCreateFlagBits=^PVkDescriptorSetLayoutCreateFlagBits;
     PVkDescriptorSetLayoutCreateFlagBits=^TVkDescriptorSetLayoutCreateFlagBits;
     TVkDescriptorSetLayoutCreateFlagBits=
      (
       VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR=$00000001,
       VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT=$00000002,
       VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT=$00000004,
       VK_DESCRIPTOR_SET_LAYOUT_CREATE_RESERVED_3_BIT_AMD=$00000008,
       VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT=$00000010,
       VK_DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT=$00000020,
       VK_DESCRIPTOR_SET_LAYOUT_CREATE_RESERVED_6_BIT_EXT=$00000040,
       VK_DESCRIPTOR_SET_LAYOUT_CREATE_INDIRECT_BINDABLE_BIT_NV=$00000080,
       VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_VALVE=VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT,
       VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT=VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
      );

     PPVkExternalMemoryHandleTypeFlagBits=^PVkExternalMemoryHandleTypeFlagBits;
     PVkExternalMemoryHandleTypeFlagBits=^TVkExternalMemoryHandleTypeFlagBits;
     TVkExternalMemoryHandleTypeFlagBits=
      (
       VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT=$00000001,
       VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT=$00000002,
       VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT=$00000004,
       VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT=$00000008,
       VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT=$00000010,
       VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT=$00000020,
       VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT=$00000040,
       VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT=$00000080,
       VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT=$00000100,
       VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT=$00000200,
       VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID=$00000400,
       VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA=$00000800,
       VK_EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV=$00001000,
       VK_EXTERNAL_MEMORY_HANDLE_TYPE_SCI_BUF_BIT_NV=$00002000,
       VK_EXTERNAL_MEMORY_HANDLE_TYPE_SCREEN_BUFFER_BIT_QNX=$00004000,
       VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR=VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT,
       VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR=VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT,
       VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR=VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT,
       VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR=VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT,
       VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR=VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT,
       VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR=VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT,
       VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR=VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT
      );

     PPVkExternalMemoryFeatureFlagBits=^PVkExternalMemoryFeatureFlagBits;
     PVkExternalMemoryFeatureFlagBits=^TVkExternalMemoryFeatureFlagBits;
     TVkExternalMemoryFeatureFlagBits=
      (
       VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT=$00000001,
       VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT=$00000002,
       VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT=$00000004,
       VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR=VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT,
       VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR=VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT,
       VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR=VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT
      );

     PPVkExternalSemaphoreHandleTypeFlagBits=^PVkExternalSemaphoreHandleTypeFlagBits;
     PVkExternalSemaphoreHandleTypeFlagBits=^TVkExternalSemaphoreHandleTypeFlagBits;
     TVkExternalSemaphoreHandleTypeFlagBits=
      (
       VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT=$00000001,
       VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT=$00000002,
       VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT=$00000004,
       VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT=$00000008,
       VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT=$00000010,
       VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SCI_SYNC_OBJ_BIT_NV=$00000020,
       VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA=$00000080,
       VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE_BIT=VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT,
       VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR=VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT,
       VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR=VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT,
       VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR=VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT,
       VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR=VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,
       VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR=VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT
      );

     PPVkExternalSemaphoreFeatureFlagBits=^PVkExternalSemaphoreFeatureFlagBits;
     PVkExternalSemaphoreFeatureFlagBits=^TVkExternalSemaphoreFeatureFlagBits;
     TVkExternalSemaphoreFeatureFlagBits=
      (
       VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT=$00000001,
       VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT=$00000002,
       VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR=VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT,
       VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR=VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT
      );

     PPVkSemaphoreImportFlagBits=^PVkSemaphoreImportFlagBits;
     PVkSemaphoreImportFlagBits=^TVkSemaphoreImportFlagBits;
     TVkSemaphoreImportFlagBits=
      (
       VK_SEMAPHORE_IMPORT_TEMPORARY_BIT=$00000001,
       VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR=VK_SEMAPHORE_IMPORT_TEMPORARY_BIT
      );

     PPVkExternalFenceHandleTypeFlagBits=^PVkExternalFenceHandleTypeFlagBits;
     PVkExternalFenceHandleTypeFlagBits=^TVkExternalFenceHandleTypeFlagBits;
     TVkExternalFenceHandleTypeFlagBits=
      (
       VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT=$00000001,
       VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT=$00000002,
       VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT=$00000004,
       VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT=$00000008,
       VK_EXTERNAL_FENCE_HANDLE_TYPE_SCI_SYNC_OBJ_BIT_NV=$00000010,
       VK_EXTERNAL_FENCE_HANDLE_TYPE_SCI_SYNC_FENCE_BIT_NV=$00000020,
       VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR=VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT,
       VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR=VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT,
       VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR=VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,
       VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR=VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT
      );

     PPVkExternalFenceFeatureFlagBits=^PVkExternalFenceFeatureFlagBits;
     PVkExternalFenceFeatureFlagBits=^TVkExternalFenceFeatureFlagBits;
     TVkExternalFenceFeatureFlagBits=
      (
       VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT=$00000001,
       VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT=$00000002,
       VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR=VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT,
       VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR=VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT
      );

     PPVkFenceImportFlagBits=^PVkFenceImportFlagBits;
     PVkFenceImportFlagBits=^TVkFenceImportFlagBits;
     TVkFenceImportFlagBits=
      (
       VK_FENCE_IMPORT_TEMPORARY_BIT=$00000001,
       VK_FENCE_IMPORT_TEMPORARY_BIT_KHR=VK_FENCE_IMPORT_TEMPORARY_BIT
      );

     PPVkSurfaceCounterFlagBitsEXT=^PVkSurfaceCounterFlagBitsEXT;
     PVkSurfaceCounterFlagBitsEXT=^TVkSurfaceCounterFlagBitsEXT;
     TVkSurfaceCounterFlagBitsEXT=
      (
       VK_SURFACE_COUNTER_VBLANK_BIT_EXT=$00000001,
       VK_SURFACE_COUNTER_VBLANK_EXT=VK_SURFACE_COUNTER_VBLANK_BIT_EXT
      );

     PPVkDisplayPowerStateEXT=^PVkDisplayPowerStateEXT;
     PVkDisplayPowerStateEXT=^TVkDisplayPowerStateEXT;
     TVkDisplayPowerStateEXT=
      (
       VK_DISPLAY_POWER_STATE_OFF_EXT=0,
       VK_DISPLAY_POWER_STATE_SUSPEND_EXT=1,
       VK_DISPLAY_POWER_STATE_ON_EXT=2
      );

     PPVkDeviceEventTypeEXT=^PVkDeviceEventTypeEXT;
     PVkDeviceEventTypeEXT=^TVkDeviceEventTypeEXT;
     TVkDeviceEventTypeEXT=
      (
       VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT=0
      );

     PPVkDisplayEventTypeEXT=^PVkDisplayEventTypeEXT;
     PVkDisplayEventTypeEXT=^TVkDisplayEventTypeEXT;
     TVkDisplayEventTypeEXT=
      (
       VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT=0
      );

     PPVkPeerMemoryFeatureFlagBits=^PVkPeerMemoryFeatureFlagBits;
     PVkPeerMemoryFeatureFlagBits=^TVkPeerMemoryFeatureFlagBits;
     TVkPeerMemoryFeatureFlagBits=
      (
       VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT=$00000001,                            //< Can read with vkCmdCopy commands
       VK_PEER_MEMORY_FEATURE_COPY_DST_BIT=$00000002,                            //< Can write with vkCmdCopy commands
       VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT=$00000004,                         //< Can read with any access type/command
       VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT=$00000008,                         //< Can write with and access type/command
       VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR=VK_PEER_MEMORY_FEATURE_COPY_DST_BIT,
       VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR=VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT,
       VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR=VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT,
       VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR=VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT
      );

     PPVkMemoryAllocateFlagBits=^PVkMemoryAllocateFlagBits;
     PVkMemoryAllocateFlagBits=^TVkMemoryAllocateFlagBits;
     TVkMemoryAllocateFlagBits=
      (
       VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT=$00000001,                             //< Force allocation on specific devices
       VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT=$00000002,
       VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT=$00000004,
       VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR=VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT,
       VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR=VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT,
       VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR=VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT
      );

     PPVkDeviceGroupPresentModeFlagBitsKHR=^PVkDeviceGroupPresentModeFlagBitsKHR;
     PVkDeviceGroupPresentModeFlagBitsKHR=^TVkDeviceGroupPresentModeFlagBitsKHR;
     TVkDeviceGroupPresentModeFlagBitsKHR=
      (
       VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR=$00000001,                     //< Present from local memory
       VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR=$00000002,                    //< Present from remote memory
       VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR=$00000004,                       //< Present sum of local and/or remote memory
       VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR=$00000008         //< Each physical device presents from local memory
      );

     PPVkSwapchainCreateFlagBitsKHR=^PVkSwapchainCreateFlagBitsKHR;
     PVkSwapchainCreateFlagBitsKHR=^TVkSwapchainCreateFlagBitsKHR;
     TVkSwapchainCreateFlagBitsKHR=
      (
       VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR=$00000001,
       VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR=$00000002,
       VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR=$00000004,
       VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT=$00000008,
       VK_SWAPCHAIN_CREATE_RESERVED_4_BIT_EXT=$00000010
      );

     PPVkViewportCoordinateSwizzleNV=^PVkViewportCoordinateSwizzleNV;
     PVkViewportCoordinateSwizzleNV=^TVkViewportCoordinateSwizzleNV;
     TVkViewportCoordinateSwizzleNV=
      (
       VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV=0,
       VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV=1,
       VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV=2,
       VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV=3,
       VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV=4,
       VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV=5,
       VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV=6,
       VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV=7
      );

     PPVkDiscardRectangleModeEXT=^PVkDiscardRectangleModeEXT;
     PVkDiscardRectangleModeEXT=^TVkDiscardRectangleModeEXT;
     TVkDiscardRectangleModeEXT=
      (
       VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT=0,
       VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT=1
      );

     PPVkSubpassDescriptionFlagBits=^PVkSubpassDescriptionFlagBits;
     PVkSubpassDescriptionFlagBits=^TVkSubpassDescriptionFlagBits;
     TVkSubpassDescriptionFlagBits=
      (
       VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX=$00000001,
       VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX=$00000002,
       VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM=$00000004,
       VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM=$00000008,
       VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_EXT=$00000010,
       VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT=$00000020,
       VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT=$00000040,
       VK_SUBPASS_DESCRIPTION_ENABLE_LEGACY_DITHERING_BIT_EXT=$00000080,
       VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_ARM=VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_EXT,
       VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_ARM=VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT,
       VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_ARM=VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT
      );

     PPVkPointClippingBehavior=^PVkPointClippingBehavior;
     PVkPointClippingBehavior=^TVkPointClippingBehavior;
     TVkPointClippingBehavior=
      (
       VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES=0,
       VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY=1,
       VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR=VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES,
       VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR=VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY
      );

     PPVkSamplerReductionMode=^PVkSamplerReductionMode;
     PVkSamplerReductionMode=^TVkSamplerReductionMode;
     TVkSamplerReductionMode=
      (
       VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE=0,
       VK_SAMPLER_REDUCTION_MODE_MIN=1,
       VK_SAMPLER_REDUCTION_MODE_MAX=2,
       VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM=1000521000,
       VK_SAMPLER_REDUCTION_MODE_MAX_EXT=VK_SAMPLER_REDUCTION_MODE_MAX,
       VK_SAMPLER_REDUCTION_MODE_MIN_EXT=VK_SAMPLER_REDUCTION_MODE_MIN,
       VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT=VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE
      );

     PPVkTessellationDomainOrigin=^PVkTessellationDomainOrigin;
     PVkTessellationDomainOrigin=^TVkTessellationDomainOrigin;
     TVkTessellationDomainOrigin=
      (
       VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT=0,
       VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT=1,
       VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR=VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT,
       VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR=VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT
      );

     PPVkSamplerYcbcrModelConversion=^PVkSamplerYcbcrModelConversion;
     PVkSamplerYcbcrModelConversion=^TVkSamplerYcbcrModelConversion;
     TVkSamplerYcbcrModelConversion=
      (
       VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY=0,
       VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY=1,                       //< just range expansion
       VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709=2,                            //< aka HD YUV
       VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601=3,                            //< aka SD YUV
       VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020=4,                           //< aka UHD YUV
       VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR=VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY,
       VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR=VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020,
       VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR=VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601,
       VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR=VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709,
       VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR=VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY
      );

     PPVkSamplerYcbcrRange=^PVkSamplerYcbcrRange;
     PVkSamplerYcbcrRange=^TVkSamplerYcbcrRange;
     TVkSamplerYcbcrRange=
      (
       VK_SAMPLER_YCBCR_RANGE_ITU_FULL=0,                                        //< Luma 0..1 maps to 0..255, chroma -0.5..0.5 to 1..255 (clamped)
       VK_SAMPLER_YCBCR_RANGE_ITU_NARROW=1,                                      //< Luma 0..1 maps to 16..235, chroma -0.5..0.5 to 16..240
       VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR=VK_SAMPLER_YCBCR_RANGE_ITU_FULL,
       VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR=VK_SAMPLER_YCBCR_RANGE_ITU_NARROW
      );

     PPVkChromaLocation=^PVkChromaLocation;
     PVkChromaLocation=^TVkChromaLocation;
     TVkChromaLocation=
      (
       VK_CHROMA_LOCATION_COSITED_EVEN=0,
       VK_CHROMA_LOCATION_MIDPOINT=1,
       VK_CHROMA_LOCATION_COSITED_EVEN_KHR=VK_CHROMA_LOCATION_COSITED_EVEN,
       VK_CHROMA_LOCATION_MIDPOINT_KHR=VK_CHROMA_LOCATION_MIDPOINT
      );

     PPVkBlendOverlapEXT=^PVkBlendOverlapEXT;
     PVkBlendOverlapEXT=^TVkBlendOverlapEXT;
     TVkBlendOverlapEXT=
      (
       VK_BLEND_OVERLAP_UNCORRELATED_EXT=0,
       VK_BLEND_OVERLAP_DISJOINT_EXT=1,
       VK_BLEND_OVERLAP_CONJOINT_EXT=2
      );

     PPVkCoverageModulationModeNV=^PVkCoverageModulationModeNV;
     PVkCoverageModulationModeNV=^TVkCoverageModulationModeNV;
     TVkCoverageModulationModeNV=
      (
       VK_COVERAGE_MODULATION_MODE_NONE_NV=0,
       VK_COVERAGE_MODULATION_MODE_RGB_NV=1,
       VK_COVERAGE_MODULATION_MODE_ALPHA_NV=2,
       VK_COVERAGE_MODULATION_MODE_RGBA_NV=3
      );

     PPVkCoverageReductionModeNV=^PVkCoverageReductionModeNV;
     PVkCoverageReductionModeNV=^TVkCoverageReductionModeNV;
     TVkCoverageReductionModeNV=
      (
       VK_COVERAGE_REDUCTION_MODE_MERGE_NV=0,
       VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV=1
      );

     PPVkValidationCacheHeaderVersionEXT=^PVkValidationCacheHeaderVersionEXT;
     PVkValidationCacheHeaderVersionEXT=^TVkValidationCacheHeaderVersionEXT;
     TVkValidationCacheHeaderVersionEXT=
      (
       VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT=1
      );

     PPVkShaderInfoTypeAMD=^PVkShaderInfoTypeAMD;
     PVkShaderInfoTypeAMD=^TVkShaderInfoTypeAMD;
     TVkShaderInfoTypeAMD=
      (
       VK_SHADER_INFO_TYPE_STATISTICS_AMD=0,
       VK_SHADER_INFO_TYPE_BINARY_AMD=1,
       VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD=2
      );

     PPVkQueueGlobalPriorityKHR=^PVkQueueGlobalPriorityKHR;
     PVkQueueGlobalPriorityKHR=^TVkQueueGlobalPriorityKHR;
     TVkQueueGlobalPriorityKHR=
      (
       VK_QUEUE_GLOBAL_PRIORITY_LOW_KHR=128,
       VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR=256,
       VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR=512,
       VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR=1024,
       VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT=VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR,
       VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT=VK_QUEUE_GLOBAL_PRIORITY_LOW_KHR,
       VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT=VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR,
       VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT=VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR
      );

     PPVkDebugUtilsMessageSeverityFlagBitsEXT=^PVkDebugUtilsMessageSeverityFlagBitsEXT;
     PVkDebugUtilsMessageSeverityFlagBitsEXT=^TVkDebugUtilsMessageSeverityFlagBitsEXT;
     TVkDebugUtilsMessageSeverityFlagBitsEXT=
      (
       VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT=$00000001,
       VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT=$00000010,
       VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT=$00000100,
       VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT=$00001000
      );

     PPVkDebugUtilsMessageTypeFlagBitsEXT=^PVkDebugUtilsMessageTypeFlagBitsEXT;
     PVkDebugUtilsMessageTypeFlagBitsEXT=^TVkDebugUtilsMessageTypeFlagBitsEXT;
     TVkDebugUtilsMessageTypeFlagBitsEXT=
      (
       VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT=$00000001,
       VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT=$00000002,
       VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT=$00000004,
       VK_DEBUG_UTILS_MESSAGE_TYPE_DEVICE_ADDRESS_BINDING_BIT_EXT=$00000008
      );

     PPVkConservativeRasterizationModeEXT=^PVkConservativeRasterizationModeEXT;
     PVkConservativeRasterizationModeEXT=^TVkConservativeRasterizationModeEXT;
     TVkConservativeRasterizationModeEXT=
      (
       VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT=0,
       VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT=1,
       VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT=2
      );

     PPVkDescriptorBindingFlagBits=^PVkDescriptorBindingFlagBits;
     PVkDescriptorBindingFlagBits=^TVkDescriptorBindingFlagBits;
     TVkDescriptorBindingFlagBits=
      (
       VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT=$00000001,
       VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT=$00000002,
       VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT=$00000004,
       VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT=$00000008,
       VK_DESCRIPTOR_BINDING_RESERVED_4_BIT_QCOM=$00000010,
       VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT=VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT,
       VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT=VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT,
       VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT=VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT,
       VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT=VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT
      );

     PPVkVendorId=^PVkVendorId;
     PVkVendorId=^TVkVendorId;
     TVkVendorId=
      (
       VK_VENDOR_ID_RANGE_SIZE=8,                                                //< (VK_VENDOR_ID_UNUSED_START-VK_VENDOR_ID_VIV)+1
       VK_VENDOR_ID_VIV=65537,                                                   //< Vivante vendor ID
       VK_VENDOR_ID_BEGIN_RANGE=65537,                                           //< VK_VENDOR_ID_VIV
       VK_VENDOR_ID_VSI=65538,                                                   //< VeriSilicon vendor ID
       VK_VENDOR_ID_KAZAN=65539,                                                 //< Kazan Software Renderer
       VK_VENDOR_ID_CODEPLAY=65540,                                              //< Codeplay Software Ltd. vendor ID
       VK_VENDOR_ID_MESA=65541,                                                  //< Mesa vendor ID
       VK_VENDOR_ID_POCL=65542,                                                  //< PoCL vendor ID
       VK_VENDOR_ID_MOBILEYE=65543,                                              //< Mobileye vendor ID
       VK_VENDOR_ID_UNUSED_START=65544,                                          //< This is the next unused available Khronos vendor ID
       VK_VENDOR_ID_END_RANGE=65544,                                             //< VK_VENDOR_ID_UNUSED_START
       VK_VENDOR_ID_MAX_ENUM=$7fffffff
      );

     PPVkDriverId=^PVkDriverId;
     PVkDriverId=^TVkDriverId;
     TVkDriverId=
      (
       VK_DRIVER_ID_AMD_PROPRIETARY=1,                                           //< Advanced Micro Devices, Inc.
       VK_DRIVER_ID_AMD_OPEN_SOURCE=2,                                           //< Advanced Micro Devices, Inc.
       VK_DRIVER_ID_MESA_RADV=3,                                                 //< Mesa open source project
       VK_DRIVER_ID_NVIDIA_PROPRIETARY=4,                                        //< NVIDIA Corporation
       VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS=5,                                 //< Intel Corporation
       VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA=6,                                    //< Intel Corporation
       VK_DRIVER_ID_IMAGINATION_PROPRIETARY=7,                                   //< Imagination Technologies
       VK_DRIVER_ID_QUALCOMM_PROPRIETARY=8,                                      //< Qualcomm Technologies, Inc.
       VK_DRIVER_ID_ARM_PROPRIETARY=9,                                           //< Arm Limited
       VK_DRIVER_ID_GOOGLE_SWIFTSHADER=10,                                       //< Google LLC
       VK_DRIVER_ID_GGP_PROPRIETARY=11,                                          //< Google LLC
       VK_DRIVER_ID_BROADCOM_PROPRIETARY=12,                                     //< Broadcom Inc.
       VK_DRIVER_ID_MESA_LLVMPIPE=13,                                            //< Mesa
       VK_DRIVER_ID_MOLTENVK=14,                                                 //< MoltenVK
       VK_DRIVER_ID_COREAVI_PROPRIETARY=15,                                      //< Core Avionics & Industrial Inc.
       VK_DRIVER_ID_JUICE_PROPRIETARY=16,                                        //< Juice Technologies, Inc.
       VK_DRIVER_ID_VERISILICON_PROPRIETARY=17,                                  //< Verisilicon, Inc.
       VK_DRIVER_ID_MESA_TURNIP=18,                                              //< Mesa open source project
       VK_DRIVER_ID_MESA_V3DV=19,                                                //< Mesa open source project
       VK_DRIVER_ID_MESA_PANVK=20,                                               //< Mesa open source project
       VK_DRIVER_ID_SAMSUNG_PROPRIETARY=21,                                      //< Samsung Electronics Co., Ltd.
       VK_DRIVER_ID_MESA_VENUS=22,                                               //< Mesa open source project
       VK_DRIVER_ID_MESA_DOZEN=23,                                               //< Mesa open source project
       VK_DRIVER_ID_MESA_NVK=24,                                                 //< Mesa open source project
       VK_DRIVER_ID_IMAGINATION_OPEN_SOURCE_MESA=25,                             //< Imagination Technologies
       VK_DRIVER_ID_MESA_AGXV=26,                                                //< Mesa open source project
       VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR=VK_DRIVER_ID_AMD_OPEN_SOURCE,
       VK_DRIVER_ID_AMD_PROPRIETARY_KHR=VK_DRIVER_ID_AMD_PROPRIETARY,
       VK_DRIVER_ID_ARM_PROPRIETARY_KHR=VK_DRIVER_ID_ARM_PROPRIETARY,
       VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR=VK_DRIVER_ID_BROADCOM_PROPRIETARY,
       VK_DRIVER_ID_GGP_PROPRIETARY_KHR=VK_DRIVER_ID_GGP_PROPRIETARY,
       VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR=VK_DRIVER_ID_GOOGLE_SWIFTSHADER,
       VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR=VK_DRIVER_ID_IMAGINATION_PROPRIETARY,
       VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR=VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA,
       VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR=VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS,
       VK_DRIVER_ID_MESA_RADV_KHR=VK_DRIVER_ID_MESA_RADV,
       VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR=VK_DRIVER_ID_NVIDIA_PROPRIETARY,
       VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR=VK_DRIVER_ID_QUALCOMM_PROPRIETARY
      );

     PPVkConditionalRenderingFlagBitsEXT=^PVkConditionalRenderingFlagBitsEXT;
     PVkConditionalRenderingFlagBitsEXT=^TVkConditionalRenderingFlagBitsEXT;
     TVkConditionalRenderingFlagBitsEXT=
      (
       VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT=$00000001
      );

     PPVkResolveModeFlagBits=^PVkResolveModeFlagBits;
     PVkResolveModeFlagBits=^TVkResolveModeFlagBits;
     TVkResolveModeFlagBits=
      (
       VK_RESOLVE_MODE_NONE=0,
       VK_RESOLVE_MODE_SAMPLE_ZERO_BIT=$00000001,
       VK_RESOLVE_MODE_AVERAGE_BIT=$00000002,
       VK_RESOLVE_MODE_MIN_BIT=$00000004,
       VK_RESOLVE_MODE_MAX_BIT=$00000008,
       VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID=$00000010,
       VK_RESOLVE_MODE_AVERAGE_BIT_KHR=VK_RESOLVE_MODE_AVERAGE_BIT,
       VK_RESOLVE_MODE_MAX_BIT_KHR=VK_RESOLVE_MODE_MAX_BIT,
       VK_RESOLVE_MODE_MIN_BIT_KHR=VK_RESOLVE_MODE_MIN_BIT,
       VK_RESOLVE_MODE_NONE_KHR=VK_RESOLVE_MODE_NONE,
       VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR=VK_RESOLVE_MODE_SAMPLE_ZERO_BIT
      );

     PPVkShadingRatePaletteEntryNV=^PVkShadingRatePaletteEntryNV;
     PVkShadingRatePaletteEntryNV=^TVkShadingRatePaletteEntryNV;
     TVkShadingRatePaletteEntryNV=
      (
       VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV=0,
       VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV=1,
       VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV=2,
       VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV=3,
       VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV=4,
       VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV=5,
       VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV=6,
       VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV=7,
       VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV=8,
       VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV=9,
       VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV=10,
       VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV=11
      );

     PPVkCoarseSampleOrderTypeNV=^PVkCoarseSampleOrderTypeNV;
     PVkCoarseSampleOrderTypeNV=^TVkCoarseSampleOrderTypeNV;
     TVkCoarseSampleOrderTypeNV=
      (
       VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV=0,
       VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV=1,
       VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV=2,
       VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV=3
      );

     PPVkGeometryInstanceFlagBitsKHR=^PVkGeometryInstanceFlagBitsKHR;
     PVkGeometryInstanceFlagBitsKHR=^TVkGeometryInstanceFlagBitsKHR;
     TVkGeometryInstanceFlagBitsKHR=
      (
       VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR=$00000001,
       VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR=$00000002,
       VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR=$00000004,
       VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR=$00000008,
       VK_GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_EXT=$00000010,
       VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT=$00000020,
       VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV=VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR,
       VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV=VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR,
       VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV=VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR,
       VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR=VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR,
       VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV=VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR
      );

     PPVkGeometryFlagBitsKHR=^PVkGeometryFlagBitsKHR;
     PVkGeometryFlagBitsKHR=^TVkGeometryFlagBitsKHR;
     TVkGeometryFlagBitsKHR=
      (
       VK_GEOMETRY_OPAQUE_BIT_KHR=$00000001,
       VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR=$00000002,
       VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV=VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR,
       VK_GEOMETRY_OPAQUE_BIT_NV=VK_GEOMETRY_OPAQUE_BIT_KHR
      );

     PPVkBuildAccelerationStructureFlagBitsKHR=^PVkBuildAccelerationStructureFlagBitsKHR;
     PVkBuildAccelerationStructureFlagBitsKHR=^TVkBuildAccelerationStructureFlagBitsKHR;
     TVkBuildAccelerationStructureFlagBitsKHR=
      (
       VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR=$00000001,
       VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR=$00000002,
       VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR=$00000004,
       VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR=$00000008,
       VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR=$00000010,
       VK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV=$00000020,
       VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_EXT=$00000040,
       VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT=$00000080,
       VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT=$00000100,
       VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISPLACEMENT_MICROMAP_UPDATE_NV=$00000200,
       VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_KHR=$00000800,
       VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV=VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR,
       VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV=VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR,
       VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV=VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR,
       VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV=VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR,
       VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV=VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR
      );

     PPVkAccelerationStructureCreateFlagBitsKHR=^PVkAccelerationStructureCreateFlagBitsKHR;
     PVkAccelerationStructureCreateFlagBitsKHR=^TVkAccelerationStructureCreateFlagBitsKHR;
     TVkAccelerationStructureCreateFlagBitsKHR=
      (
       VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR=$00000001,
       VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV=$00000004,
       VK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT=$00000008
      );

     PPVkCopyAccelerationStructureModeKHR=^PVkCopyAccelerationStructureModeKHR;
     PVkCopyAccelerationStructureModeKHR=^TVkCopyAccelerationStructureModeKHR;
     TVkCopyAccelerationStructureModeKHR=
      (
       VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR=0,
       VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR=1,
       VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR=2,
       VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR=3,
       VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV=VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR,
       VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV=VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR
      );

     PPVkBuildAccelerationStructureModeKHR=^PVkBuildAccelerationStructureModeKHR;
     PVkBuildAccelerationStructureModeKHR=^TVkBuildAccelerationStructureModeKHR;
     TVkBuildAccelerationStructureModeKHR=
      (
       VK_BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR=0,
       VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR=1
      );

     PPVkAccelerationStructureTypeKHR=^PVkAccelerationStructureTypeKHR;
     PVkAccelerationStructureTypeKHR=^TVkAccelerationStructureTypeKHR;
     TVkAccelerationStructureTypeKHR=
      (
       VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR=0,
       VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR=1,
       VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR=2,
       VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV=VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR,
       VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV=VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR
      );

     PPVkGeometryTypeKHR=^PVkGeometryTypeKHR;
     PVkGeometryTypeKHR=^TVkGeometryTypeKHR;
     TVkGeometryTypeKHR=
      (
       VK_GEOMETRY_TYPE_TRIANGLES_KHR=0,
       VK_GEOMETRY_TYPE_AABBS_KHR=1,
       VK_GEOMETRY_TYPE_INSTANCES_KHR=2,
       VK_GEOMETRY_TYPE_AABBS_NV=VK_GEOMETRY_TYPE_AABBS_KHR,
       VK_GEOMETRY_TYPE_TRIANGLES_NV=VK_GEOMETRY_TYPE_TRIANGLES_KHR
      );

     PPVkAccelerationStructureMemoryRequirementsTypeNV=^PVkAccelerationStructureMemoryRequirementsTypeNV;
     PVkAccelerationStructureMemoryRequirementsTypeNV=^TVkAccelerationStructureMemoryRequirementsTypeNV;
     TVkAccelerationStructureMemoryRequirementsTypeNV=
      (
       VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV=0,
       VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV=1,
       VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV=2
      );

     PPVkAccelerationStructureBuildTypeKHR=^PVkAccelerationStructureBuildTypeKHR;
     PVkAccelerationStructureBuildTypeKHR=^TVkAccelerationStructureBuildTypeKHR;
     TVkAccelerationStructureBuildTypeKHR=
      (
       VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR=0,
       VK_ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR=1,
       VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR=2
      );

     PPVkRayTracingShaderGroupTypeKHR=^PVkRayTracingShaderGroupTypeKHR;
     PVkRayTracingShaderGroupTypeKHR=^TVkRayTracingShaderGroupTypeKHR;
     TVkRayTracingShaderGroupTypeKHR=
      (
       VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR=0,
       VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR=1,
       VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR=2,
       VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV=VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR,
       VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV=VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR,
       VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV=VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR
      );

     PPVkAccelerationStructureCompatibilityKHR=^PVkAccelerationStructureCompatibilityKHR;
     PVkAccelerationStructureCompatibilityKHR=^TVkAccelerationStructureCompatibilityKHR;
     TVkAccelerationStructureCompatibilityKHR=
      (
       VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR=0,
       VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR=1
      );

     PPVkShaderGroupShaderKHR=^PVkShaderGroupShaderKHR;
     PVkShaderGroupShaderKHR=^TVkShaderGroupShaderKHR;
     TVkShaderGroupShaderKHR=
      (
       VK_SHADER_GROUP_SHADER_GENERAL_KHR=0,
       VK_SHADER_GROUP_SHADER_CLOSEST_HIT_KHR=1,
       VK_SHADER_GROUP_SHADER_ANY_HIT_KHR=2,
       VK_SHADER_GROUP_SHADER_INTERSECTION_KHR=3
      );

     PPVkMemoryOverallocationBehaviorAMD=^PVkMemoryOverallocationBehaviorAMD;
     PVkMemoryOverallocationBehaviorAMD=^TVkMemoryOverallocationBehaviorAMD;
     TVkMemoryOverallocationBehaviorAMD=
      (
       VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD=0,
       VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD=1,
       VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD=2
      );

     PPVkFramebufferCreateFlagBits=^PVkFramebufferCreateFlagBits;
     PVkFramebufferCreateFlagBits=^TVkFramebufferCreateFlagBits;
     TVkFramebufferCreateFlagBits=
      (
       VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT=$00000001,
       VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR=VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT
      );

     PPVkDeviceDiagnosticsConfigFlagBitsNV=^PVkDeviceDiagnosticsConfigFlagBitsNV;
     PVkDeviceDiagnosticsConfigFlagBitsNV=^TVkDeviceDiagnosticsConfigFlagBitsNV;
     TVkDeviceDiagnosticsConfigFlagBitsNV=
      (
       VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV=$00000001,
       VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV=$00000002,
       VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV=$00000004,
       VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_ERROR_REPORTING_BIT_NV=$00000008
      );

     PPVkPipelineCreationFeedbackFlagBits=^PVkPipelineCreationFeedbackFlagBits;
     PVkPipelineCreationFeedbackFlagBits=^TVkPipelineCreationFeedbackFlagBits;
     TVkPipelineCreationFeedbackFlagBits=
      (
       VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT=$00000001,
       VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT=$00000002,
       VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT=$00000004,
       VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT=VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT,
       VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT=VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT,
       VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT=VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT
      );

     PPVkFullScreenExclusiveEXT=^PVkFullScreenExclusiveEXT;
     PVkFullScreenExclusiveEXT=^TVkFullScreenExclusiveEXT;
     TVkFullScreenExclusiveEXT=
      (
       VK_FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT=0,
       VK_FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT=1,
       VK_FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT=2,
       VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT=3
      );

     PPVkPerformanceCounterScopeKHR=^PVkPerformanceCounterScopeKHR;
     PVkPerformanceCounterScopeKHR=^TVkPerformanceCounterScopeKHR;
     TVkPerformanceCounterScopeKHR=
      (
       VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR=0,
       VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR=1,
       VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR=2,
       VK_QUERY_SCOPE_COMMAND_BUFFER_KHR=VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR,
       VK_QUERY_SCOPE_COMMAND_KHR=VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR,
       VK_QUERY_SCOPE_RENDER_PASS_KHR=VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR
      );

     PPVkMemoryDecompressionMethodFlagBitsNV=^PVkMemoryDecompressionMethodFlagBitsNV;
     PVkMemoryDecompressionMethodFlagBitsNV=^TVkMemoryDecompressionMethodFlagBitsNV;
     TVkMemoryDecompressionMethodFlagBitsNV=
      (
       VK_MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_NV=$00000001
      );

     PPVkPerformanceCounterUnitKHR=^PVkPerformanceCounterUnitKHR;
     PVkPerformanceCounterUnitKHR=^TVkPerformanceCounterUnitKHR;
     TVkPerformanceCounterUnitKHR=
      (
       VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR=0,
       VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR=1,
       VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR=2,
       VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR=3,
       VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR=4,
       VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR=5,
       VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR=6,
       VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR=7,
       VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR=8,
       VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR=9,
       VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR=10
      );

     PPVkPerformanceCounterStorageKHR=^PVkPerformanceCounterStorageKHR;
     PVkPerformanceCounterStorageKHR=^TVkPerformanceCounterStorageKHR;
     TVkPerformanceCounterStorageKHR=
      (
       VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR=0,
       VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR=1,
       VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR=2,
       VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR=3,
       VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR=4,
       VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR=5
      );

     PPVkPerformanceCounterDescriptionFlagBitsKHR=^PVkPerformanceCounterDescriptionFlagBitsKHR;
     PVkPerformanceCounterDescriptionFlagBitsKHR=^TVkPerformanceCounterDescriptionFlagBitsKHR;
     TVkPerformanceCounterDescriptionFlagBitsKHR=
      (
       VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR=$00000001,
       VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR=$00000002,
       VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR=VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR,
       VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR=VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR
      );

     PPVkAcquireProfilingLockFlagBitsKHR=^PVkAcquireProfilingLockFlagBitsKHR;
     PVkAcquireProfilingLockFlagBitsKHR=^TVkAcquireProfilingLockFlagBitsKHR;
     TVkAcquireProfilingLockFlagBitsKHR=
      (
       TVkAcquireProfilingLockFlagBitsKHRDummyValue=0
      );

     PPVkShaderCorePropertiesFlagBitsAMD=^PVkShaderCorePropertiesFlagBitsAMD;
     PVkShaderCorePropertiesFlagBitsAMD=^TVkShaderCorePropertiesFlagBitsAMD;
     TVkShaderCorePropertiesFlagBitsAMD=
      (
       TVkShaderCorePropertiesFlagBitsAMDDummyValue=0
      );

     PPVkRefreshObjectFlagBitsKHR=^PVkRefreshObjectFlagBitsKHR;
     PVkRefreshObjectFlagBitsKHR=^TVkRefreshObjectFlagBitsKHR;
     TVkRefreshObjectFlagBitsKHR=
      (
       TVkRefreshObjectFlagBitsKHRDummyValue=0
      );

     PPVkPerformanceConfigurationTypeINTEL=^PVkPerformanceConfigurationTypeINTEL;
     PVkPerformanceConfigurationTypeINTEL=^TVkPerformanceConfigurationTypeINTEL;
     TVkPerformanceConfigurationTypeINTEL=
      (
       VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL=0
      );

     PPVkQueryPoolSamplingModeINTEL=^PVkQueryPoolSamplingModeINTEL;
     PVkQueryPoolSamplingModeINTEL=^TVkQueryPoolSamplingModeINTEL;
     TVkQueryPoolSamplingModeINTEL=
      (
       VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL=0
      );

     PPVkPerformanceOverrideTypeINTEL=^PVkPerformanceOverrideTypeINTEL;
     PVkPerformanceOverrideTypeINTEL=^TVkPerformanceOverrideTypeINTEL;
     TVkPerformanceOverrideTypeINTEL=
      (
       VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL=0,
       VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL=1
      );

     PPVkPerformanceParameterTypeINTEL=^PVkPerformanceParameterTypeINTEL;
     PVkPerformanceParameterTypeINTEL=^TVkPerformanceParameterTypeINTEL;
     TVkPerformanceParameterTypeINTEL=
      (
       VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL=0,
       VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL=1
      );

     PPVkPerformanceValueTypeINTEL=^PVkPerformanceValueTypeINTEL;
     PVkPerformanceValueTypeINTEL=^TVkPerformanceValueTypeINTEL;
     TVkPerformanceValueTypeINTEL=
      (
       VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL=0,
       VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL=1,
       VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL=2,
       VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL=3,
       VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL=4
      );

     PPVkShaderFloatControlsIndependence=^PVkShaderFloatControlsIndependence;
     PVkShaderFloatControlsIndependence=^TVkShaderFloatControlsIndependence;
     TVkShaderFloatControlsIndependence=
      (
       VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY=0,
       VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL=1,
       VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE=2,
       VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR=VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY,
       VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR=VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL,
       VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR=VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE
      );

     PPVkPipelineExecutableStatisticFormatKHR=^PVkPipelineExecutableStatisticFormatKHR;
     PVkPipelineExecutableStatisticFormatKHR=^TVkPipelineExecutableStatisticFormatKHR;
     TVkPipelineExecutableStatisticFormatKHR=
      (
       VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR=0,
       VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR=1,
       VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR=2,
       VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR=3
      );

     PPVkLineRasterizationModeEXT=^PVkLineRasterizationModeEXT;
     PVkLineRasterizationModeEXT=^TVkLineRasterizationModeEXT;
     TVkLineRasterizationModeEXT=
      (
       VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT=0,
       VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT=1,
       VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT=2,
       VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT=3
      );

     PPVkShaderModuleCreateFlagBits=^PVkShaderModuleCreateFlagBits;
     PVkShaderModuleCreateFlagBits=^TVkShaderModuleCreateFlagBits;
     TVkShaderModuleCreateFlagBits=
      (
       TVkShaderModuleCreateFlagBitsDummyValue=0
      );

     PPVkPipelineCompilerControlFlagBitsAMD=^PVkPipelineCompilerControlFlagBitsAMD;
     PVkPipelineCompilerControlFlagBitsAMD=^TVkPipelineCompilerControlFlagBitsAMD;
     TVkPipelineCompilerControlFlagBitsAMD=
      (
       TVkPipelineCompilerControlFlagBitsAMDDummyValue=0
      );

     PPVkFaultLevel=^PVkFaultLevel;
     PVkFaultLevel=^TVkFaultLevel;
     TVkFaultLevel=
      (
       VK_FAULT_LEVEL_UNASSIGNED=0,
       VK_FAULT_LEVEL_CRITICAL=1,
       VK_FAULT_LEVEL_RECOVERABLE=2,
       VK_FAULT_LEVEL_WARNING=3
      );

     PPVkFaultType=^PVkFaultType;
     PVkFaultType=^TVkFaultType;
     TVkFaultType=
      (
       VK_FAULT_TYPE_INVALID=0,
       VK_FAULT_TYPE_UNASSIGNED=1,
       VK_FAULT_TYPE_IMPLEMENTATION=2,
       VK_FAULT_TYPE_SYSTEM=3,
       VK_FAULT_TYPE_PHYSICAL_DEVICE=4,
       VK_FAULT_TYPE_COMMAND_BUFFER_FULL=5,
       VK_FAULT_TYPE_INVALID_API_USAGE=6
      );

     PPVkFaultQueryBehavior=^PVkFaultQueryBehavior;
     PVkFaultQueryBehavior=^TVkFaultQueryBehavior;
     TVkFaultQueryBehavior=
      (
       VK_FAULT_QUERY_BEHAVIOR_GET_AND_CLEAR_ALL_FAULTS=0
      );

     PPVkToolPurposeFlagBits=^PVkToolPurposeFlagBits;
     PVkToolPurposeFlagBits=^TVkToolPurposeFlagBits;
     TVkToolPurposeFlagBits=
      (
       VK_TOOL_PURPOSE_VALIDATION_BIT=$00000001,
       VK_TOOL_PURPOSE_PROFILING_BIT=$00000002,
       VK_TOOL_PURPOSE_TRACING_BIT=$00000004,
       VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT=$00000008,
       VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT=$00000010,
       VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT=$00000020,
       VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT=$00000040,
       VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT=VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT,
       VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT=VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT,
       VK_TOOL_PURPOSE_PROFILING_BIT_EXT=VK_TOOL_PURPOSE_PROFILING_BIT,
       VK_TOOL_PURPOSE_TRACING_BIT_EXT=VK_TOOL_PURPOSE_TRACING_BIT,
       VK_TOOL_PURPOSE_VALIDATION_BIT_EXT=VK_TOOL_PURPOSE_VALIDATION_BIT
      );

     PPVkPipelineMatchControl=^PVkPipelineMatchControl;
     PVkPipelineMatchControl=^TVkPipelineMatchControl;
     TVkPipelineMatchControl=
      (
       VK_PIPELINE_MATCH_CONTROL_APPLICATION_UUID_EXACT_MATCH=0
      );

     PPVkFragmentShadingRateCombinerOpKHR=^PVkFragmentShadingRateCombinerOpKHR;
     PVkFragmentShadingRateCombinerOpKHR=^TVkFragmentShadingRateCombinerOpKHR;
     TVkFragmentShadingRateCombinerOpKHR=
      (
       VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR=0,
       VK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR=1,
       VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHR=2,
       VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHR=3,
       VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR=4
      );

     PPVkFragmentShadingRateNV=^PVkFragmentShadingRateNV;
     PVkFragmentShadingRateNV=^TVkFragmentShadingRateNV;
     TVkFragmentShadingRateNV=
      (
       VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV=0,
       VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV=1,
       VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV=4,
       VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV=5,
       VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV=6,
       VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV=9,
       VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV=10,
       VK_FRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV=11,
       VK_FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV=12,
       VK_FRAGMENT_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV=13,
       VK_FRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV=14,
       VK_FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV=15
      );

     PPVkFragmentShadingRateTypeNV=^PVkFragmentShadingRateTypeNV;
     PVkFragmentShadingRateTypeNV=^TVkFragmentShadingRateTypeNV;
     TVkFragmentShadingRateTypeNV=
      (
       VK_FRAGMENT_SHADING_RATE_TYPE_FRAGMENT_SIZE_NV=0,
       VK_FRAGMENT_SHADING_RATE_TYPE_ENUMS_NV=1
      );

     PPVkSubpassMergeStatusEXT=^PVkSubpassMergeStatusEXT;
     PVkSubpassMergeStatusEXT=^TVkSubpassMergeStatusEXT;
     TVkSubpassMergeStatusEXT=
      (
       VK_SUBPASS_MERGE_STATUS_MERGED_EXT=0,
       VK_SUBPASS_MERGE_STATUS_DISALLOWED_EXT=1,
       VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SIDE_EFFECTS_EXT=2,
       VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SAMPLES_MISMATCH_EXT=3,
       VK_SUBPASS_MERGE_STATUS_NOT_MERGED_VIEWS_MISMATCH_EXT=4,
       VK_SUBPASS_MERGE_STATUS_NOT_MERGED_ALIASING_EXT=5,
       VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPENDENCIES_EXT=6,
       VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INCOMPATIBLE_INPUT_ATTACHMENT_EXT=7,
       VK_SUBPASS_MERGE_STATUS_NOT_MERGED_TOO_MANY_ATTACHMENTS_EXT=8,
       VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INSUFFICIENT_STORAGE_EXT=9,
       VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPTH_STENCIL_COUNT_EXT=10,
       VK_SUBPASS_MERGE_STATUS_NOT_MERGED_RESOLVE_ATTACHMENT_REUSE_EXT=11,
       VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SINGLE_SUBPASS_EXT=12,
       VK_SUBPASS_MERGE_STATUS_NOT_MERGED_UNSPECIFIED_EXT=13
      );

     PPVkAccessFlagBits2=^PVkAccessFlagBits2;
     PVkAccessFlagBits2=^TVkAccessFlagBits2;
     TVkAccessFlagBits2=
      (
       VK_ACCESS_2_NONE=0,
       VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT=$00000001,
       VK_ACCESS_2_SHADER_SAMPLED_READ_BIT=$00000001,
       VK_ACCESS_2_INDEX_READ_BIT=$00000002,
       VK_ACCESS_2_SHADER_STORAGE_READ_BIT=$00000002,
       VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT=$00000004,
       VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT=$00000004,
       VK_ACCESS_2_UNIFORM_READ_BIT=$00000008,
       VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR=$00000008,
       VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT=$00000010,
       VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR=$00000010,
       VK_ACCESS_2_SHADER_READ_BIT=$00000020,
       VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR=$00000020,
       VK_ACCESS_2_SHADER_WRITE_BIT=$00000040,
       VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR=$00000040,
       VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT=$00000080,
       VK_ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI=$00000080,
       VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT=$00000100,
       VK_ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR=$00000100,
       VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT=$00000200,
       VK_ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT=$00000200,
       VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT=$00000400,
       VK_ACCESS_2_OPTICAL_FLOW_READ_BIT_NV=$00000400,
       VK_ACCESS_2_TRANSFER_READ_BIT=$00000800,
       VK_ACCESS_2_OPTICAL_FLOW_WRITE_BIT_NV=$00000800,
       VK_ACCESS_2_TRANSFER_WRITE_BIT=$00001000,
       VK_ACCESS_2_MICROMAP_READ_BIT_EXT=$00001000,
       VK_ACCESS_2_HOST_READ_BIT=$00002000,
       VK_ACCESS_2_MICROMAP_WRITE_BIT_EXT=$00002000,
       VK_ACCESS_2_HOST_WRITE_BIT=$00004000,
       VK_ACCESS_2_RESERVED_46_BIT_INTEL=$00004000,
       VK_ACCESS_2_MEMORY_READ_BIT=$00008000,
       VK_ACCESS_2_RESERVED_47_BIT_EXT=$00008000,
       VK_ACCESS_2_MEMORY_WRITE_BIT=$00010000,
       VK_ACCESS_2_RESERVED_48_BIT_EXT=$00010000,
       VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV=$00020000,
       VK_ACCESS_2_RESERVED_49_BIT_ARM=$00020000,
       VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV=$00040000,
       VK_ACCESS_2_RESERVED_50_BIT_ARM=$00040000,
       VK_ACCESS_2_RESERVED_51_BIT_QCOM=$00080000,
       VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT=$00080000,
       VK_ACCESS_2_RESERVED_52_BIT_QCOM=$00100000,
       VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT=$00100000,
       VK_ACCESS_2_RESERVED_53_BIT_QCOM=$00200000,
       VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR=$00200000,
       VK_ACCESS_2_RESERVED_54_BIT_QCOM=$00400000,
       VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR=$00400000,
       VK_ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR=$00800000,
       VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT=$01000000,
       VK_ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT=$02000000,
       VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT=$04000000,
       VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT=$08000000,
       VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_NV=VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR,
       VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_NV=VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR,
       VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT_KHR=VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT,
       VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR=VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT,
       VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR=VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT,
       VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR=VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT,
       VK_ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV=VK_ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR,
       VK_ACCESS_2_HOST_READ_BIT_KHR=VK_ACCESS_2_HOST_READ_BIT,
       VK_ACCESS_2_HOST_WRITE_BIT_KHR=VK_ACCESS_2_HOST_WRITE_BIT,
       VK_ACCESS_2_INDEX_READ_BIT_KHR=VK_ACCESS_2_INDEX_READ_BIT,
       VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR=VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT,
       VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR=VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT,
       VK_ACCESS_2_MEMORY_READ_BIT_KHR=VK_ACCESS_2_MEMORY_READ_BIT,
       VK_ACCESS_2_MEMORY_WRITE_BIT_KHR=VK_ACCESS_2_MEMORY_WRITE_BIT,
       VK_ACCESS_2_NONE_KHR=VK_ACCESS_2_NONE,
       VK_ACCESS_2_SHADER_READ_BIT_KHR=VK_ACCESS_2_SHADER_READ_BIT,
       VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR=VK_ACCESS_2_SHADER_SAMPLED_READ_BIT,
       VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR=VK_ACCESS_2_SHADER_STORAGE_READ_BIT,
       VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR=VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT,
       VK_ACCESS_2_SHADER_WRITE_BIT_KHR=VK_ACCESS_2_SHADER_WRITE_BIT,
       VK_ACCESS_2_TRANSFER_READ_BIT_KHR=VK_ACCESS_2_TRANSFER_READ_BIT,
       VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR=VK_ACCESS_2_TRANSFER_WRITE_BIT,
       VK_ACCESS_2_UNIFORM_READ_BIT_KHR=VK_ACCESS_2_UNIFORM_READ_BIT,
       VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT_KHR=VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT
      );

     PPVkPipelineStageFlagBits2=^PVkPipelineStageFlagBits2;
     PVkPipelineStageFlagBits2=^TVkPipelineStageFlagBits2;
     TVkPipelineStageFlagBits2=
      (
       VK_PIPELINE_STAGE_2_NONE=0,
       VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT=$00000001,
       VK_PIPELINE_STAGE_2_COPY_BIT=$00000001,
       VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT=$00000002,
       VK_PIPELINE_STAGE_2_RESOLVE_BIT=$00000002,
       VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT=$00000004,
       VK_PIPELINE_STAGE_2_BLIT_BIT=$00000004,
       VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT=$00000008,
       VK_PIPELINE_STAGE_2_CLEAR_BIT=$00000008,
       VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT=$00000010,
       VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT=$00000010,
       VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT=$00000020,
       VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT=$00000020,
       VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT=$00000040,
       VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT=$00000040,
       VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT=$00000080,
       VK_PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI=$00000080,
       VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT=$00000100,
       VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI=$00000100,
       VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT=$00000200,
       VK_PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI=$00000200,
       VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT=$00000400,
       VK_PIPELINE_STAGE_2_RESERVED_42_BIT_EXT=$00000400,
       VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT=$00000800,
       VK_PIPELINE_STAGE_2_RESERVED_43_BIT_ARM=$00000800,
       VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT=$00001000,
       VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT=$00002000,
       VK_PIPELINE_STAGE_2_HOST_BIT=$00004000,
       VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT=$00008000,
       VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT=$00010000,
       VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV=$00020000,
       VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT=$00040000,
       VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT=$00080000,
       VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT=$00100000,
       VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR=$00200000,
       VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR=$00400000,
       VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT=$00800000,
       VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT=$01000000,
       VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR=$02000000,
       VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR=$04000000,
       VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR=$08000000,
       VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR=$10000000,
       VK_PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV=$20000000,
       VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT=$40000000,
       VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_NV=VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR,
       VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR=VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT,
       VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR=VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT,
       VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR=VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT,
       VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR=VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT,
       VK_PIPELINE_STAGE_2_TRANSFER_BIT=VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR,
       VK_PIPELINE_STAGE_2_BLIT_BIT_KHR=VK_PIPELINE_STAGE_2_BLIT_BIT,
       VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR=VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT,
       VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR=VK_PIPELINE_STAGE_2_CLEAR_BIT,
       VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR=VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT,
       VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR=VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT,
       VK_PIPELINE_STAGE_2_COPY_BIT_KHR=VK_PIPELINE_STAGE_2_COPY_BIT,
       VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR=VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT,
       VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR=VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT,
       VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR=VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT,
       VK_PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV=VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR,
       VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR=VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT,
       VK_PIPELINE_STAGE_2_HOST_BIT_KHR=VK_PIPELINE_STAGE_2_HOST_BIT,
       VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR=VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT,
       VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR=VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT,
       VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV=VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT,
       VK_PIPELINE_STAGE_2_NONE_KHR=VK_PIPELINE_STAGE_2_NONE,
       VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT_KHR=VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT,
       VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_NV=VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR,
       VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR=VK_PIPELINE_STAGE_2_RESOLVE_BIT,
       VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI=VK_PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI,
       VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV=VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT,
       VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR=VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT,
       VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR=VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT,
       VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR=VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT,
       VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR=VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT,
       VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT_KHR=VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT,
       VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR=VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT
      );

     PPVkSubmitFlagBits=^PVkSubmitFlagBits;
     PVkSubmitFlagBits=^TVkSubmitFlagBits;
     TVkSubmitFlagBits=
      (
       VK_SUBMIT_PROTECTED_BIT=$00000001,
       VK_SUBMIT_PROTECTED_BIT_KHR=VK_SUBMIT_PROTECTED_BIT
      );

     PPVkEventCreateFlagBits=^PVkEventCreateFlagBits;
     PVkEventCreateFlagBits=^TVkEventCreateFlagBits;
     TVkEventCreateFlagBits=
      (
       VK_EVENT_CREATE_DEVICE_ONLY_BIT=$00000001,
       VK_EVENT_CREATE_DEVICE_ONLY_BIT_KHR=VK_EVENT_CREATE_DEVICE_ONLY_BIT
      );

     PPVkPipelineLayoutCreateFlagBits=^PVkPipelineLayoutCreateFlagBits;
     PVkPipelineLayoutCreateFlagBits=^TVkPipelineLayoutCreateFlagBits;
     TVkPipelineLayoutCreateFlagBits=
      (
       VK_PIPELINE_LAYOUT_CREATE_RESERVED_0_BIT_AMD=$00000001,
       VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT=$00000002
      );

     PPVkSciSyncClientTypeNV=^PVkSciSyncClientTypeNV;
     PVkSciSyncClientTypeNV=^TVkSciSyncClientTypeNV;
     TVkSciSyncClientTypeNV=
      (
       VK_SCI_SYNC_CLIENT_TYPE_SIGNALER_NV=0,
       VK_SCI_SYNC_CLIENT_TYPE_WAITER_NV=1,
       VK_SCI_SYNC_CLIENT_TYPE_SIGNALER_WAITER_NV=2
      );

     PPVkSciSyncPrimitiveTypeNV=^PVkSciSyncPrimitiveTypeNV;
     PVkSciSyncPrimitiveTypeNV=^TVkSciSyncPrimitiveTypeNV;
     TVkSciSyncPrimitiveTypeNV=
      (
       VK_SCI_SYNC_PRIMITIVE_TYPE_FENCE_NV=0,
       VK_SCI_SYNC_PRIMITIVE_TYPE_SEMAPHORE_NV=1
      );

     PPVkProvokingVertexModeEXT=^PVkProvokingVertexModeEXT;
     PVkProvokingVertexModeEXT=^TVkProvokingVertexModeEXT;
     TVkProvokingVertexModeEXT=
      (
       VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT=0,
       VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT=1
      );

     PPVkPipelineCacheValidationVersion=^PVkPipelineCacheValidationVersion;
     PVkPipelineCacheValidationVersion=^TVkPipelineCacheValidationVersion;
     TVkPipelineCacheValidationVersion=
      (
       VK_PIPELINE_CACHE_VALIDATION_VERSION_SAFETY_CRITICAL_ONE=1
      );

     PPVkAccelerationStructureMotionInstanceTypeNV=^PVkAccelerationStructureMotionInstanceTypeNV;
     PVkAccelerationStructureMotionInstanceTypeNV=^TVkAccelerationStructureMotionInstanceTypeNV;
     TVkAccelerationStructureMotionInstanceTypeNV=
      (
       VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV=0,
       VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV=1,
       VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV=2
      );

     PPVkPipelineColorBlendStateCreateFlagBits=^PVkPipelineColorBlendStateCreateFlagBits;
     PVkPipelineColorBlendStateCreateFlagBits=^TVkPipelineColorBlendStateCreateFlagBits;
     TVkPipelineColorBlendStateCreateFlagBits=
      (
       VK_PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_EXT=$00000001,
       VK_PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_ARM=VK_PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_EXT
      );

     PPVkPipelineDepthStencilStateCreateFlagBits=^PVkPipelineDepthStencilStateCreateFlagBits;
     PVkPipelineDepthStencilStateCreateFlagBits=^TVkPipelineDepthStencilStateCreateFlagBits;
     TVkPipelineDepthStencilStateCreateFlagBits=
      (
       VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT=$00000001,
       VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT=$00000002,
       VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_ARM=VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT,
       VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_ARM=VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT
      );

     PPVkGraphicsPipelineLibraryFlagBitsEXT=^PVkGraphicsPipelineLibraryFlagBitsEXT;
     PVkGraphicsPipelineLibraryFlagBitsEXT=^TVkGraphicsPipelineLibraryFlagBitsEXT;
     TVkGraphicsPipelineLibraryFlagBitsEXT=
      (
       VK_GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT=$00000001,
       VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT=$00000002,
       VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT=$00000004,
       VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT=$00000008
      );

     PPVkDeviceAddressBindingFlagBitsEXT=^PVkDeviceAddressBindingFlagBitsEXT;
     PVkDeviceAddressBindingFlagBitsEXT=^TVkDeviceAddressBindingFlagBitsEXT;
     TVkDeviceAddressBindingFlagBitsEXT=
      (
       VK_DEVICE_ADDRESS_BINDING_INTERNAL_OBJECT_BIT_EXT=$00000001
      );

     PPVkDeviceAddressBindingTypeEXT=^PVkDeviceAddressBindingTypeEXT;
     PVkDeviceAddressBindingTypeEXT=^TVkDeviceAddressBindingTypeEXT;
     TVkDeviceAddressBindingTypeEXT=
      (
       VK_DEVICE_ADDRESS_BINDING_TYPE_BIND_EXT=0,
       VK_DEVICE_ADDRESS_BINDING_TYPE_UNBIND_EXT=1
      );

     PPVkFrameBoundaryFlagBitsEXT=^PVkFrameBoundaryFlagBitsEXT;
     PVkFrameBoundaryFlagBitsEXT=^TVkFrameBoundaryFlagBitsEXT;
     TVkFrameBoundaryFlagBitsEXT=
      (
       VK_FRAME_BOUNDARY_FRAME_END_BIT_EXT=$00000001
      );

     PPVkPresentScalingFlagBitsEXT=^PVkPresentScalingFlagBitsEXT;
     PVkPresentScalingFlagBitsEXT=^TVkPresentScalingFlagBitsEXT;
     TVkPresentScalingFlagBitsEXT=
      (
       VK_PRESENT_SCALING_ONE_TO_ONE_BIT_EXT=$00000001,
       VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT=$00000002,
       VK_PRESENT_SCALING_STRETCH_BIT_EXT=$00000004
      );

     PPVkPresentGravityFlagBitsEXT=^PVkPresentGravityFlagBitsEXT;
     PVkPresentGravityFlagBitsEXT=^TVkPresentGravityFlagBitsEXT;
     TVkPresentGravityFlagBitsEXT=
      (
       VK_PRESENT_GRAVITY_MIN_BIT_EXT=$00000001,
       VK_PRESENT_GRAVITY_MAX_BIT_EXT=$00000002,
       VK_PRESENT_GRAVITY_CENTERED_BIT_EXT=$00000004
      );

     PPVkVideoCodecOperationFlagBitsKHR=^PVkVideoCodecOperationFlagBitsKHR;
     PVkVideoCodecOperationFlagBitsKHR=^TVkVideoCodecOperationFlagBitsKHR;
     TVkVideoCodecOperationFlagBitsKHR=
      (
       VK_VIDEO_CODEC_OPERATION_NONE_KHR=0,
       VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR=$00000001,
       VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR=$00000002,
       VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT=$00010000,
       VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT=$00020000
      );

     PPVkVideoChromaSubsamplingFlagBitsKHR=^PVkVideoChromaSubsamplingFlagBitsKHR;
     PVkVideoChromaSubsamplingFlagBitsKHR=^TVkVideoChromaSubsamplingFlagBitsKHR;
     TVkVideoChromaSubsamplingFlagBitsKHR=
      (
       VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_KHR=0,
       VK_VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR=$00000001,
       VK_VIDEO_CHROMA_SUBSAMPLING_420_BIT_KHR=$00000002,
       VK_VIDEO_CHROMA_SUBSAMPLING_422_BIT_KHR=$00000004,
       VK_VIDEO_CHROMA_SUBSAMPLING_444_BIT_KHR=$00000008
      );

     PPVkVideoComponentBitDepthFlagBitsKHR=^PVkVideoComponentBitDepthFlagBitsKHR;
     PVkVideoComponentBitDepthFlagBitsKHR=^TVkVideoComponentBitDepthFlagBitsKHR;
     TVkVideoComponentBitDepthFlagBitsKHR=
      (
       VK_VIDEO_COMPONENT_BIT_DEPTH_INVALID_KHR=0,
       VK_VIDEO_COMPONENT_BIT_DEPTH_8_BIT_KHR=$00000001,
       VK_VIDEO_COMPONENT_BIT_DEPTH_10_BIT_KHR=$00000004,
       VK_VIDEO_COMPONENT_BIT_DEPTH_12_BIT_KHR=$00000010
      );

     PPVkVideoCapabilityFlagBitsKHR=^PVkVideoCapabilityFlagBitsKHR;
     PVkVideoCapabilityFlagBitsKHR=^TVkVideoCapabilityFlagBitsKHR;
     TVkVideoCapabilityFlagBitsKHR=
      (
       VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR=$00000001,
       VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR=$00000002
      );

     PPVkVideoSessionCreateFlagBitsKHR=^PVkVideoSessionCreateFlagBitsKHR;
     PVkVideoSessionCreateFlagBitsKHR=^TVkVideoSessionCreateFlagBitsKHR;
     TVkVideoSessionCreateFlagBitsKHR=
      (
       VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR=$00000001,
       VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_PARAMETER_OPTIMIZATIONS_BIT_KHR=$00000002
      );

     PPVkVideoDecodeH264PictureLayoutFlagBitsKHR=^PVkVideoDecodeH264PictureLayoutFlagBitsKHR;
     PVkVideoDecodeH264PictureLayoutFlagBitsKHR=^TVkVideoDecodeH264PictureLayoutFlagBitsKHR;
     TVkVideoDecodeH264PictureLayoutFlagBitsKHR=
      (
       VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR=0,
       VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR=$00000001,
       VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR=$00000002
      );

     PPVkVideoCodingControlFlagBitsKHR=^PVkVideoCodingControlFlagBitsKHR;
     PVkVideoCodingControlFlagBitsKHR=^TVkVideoCodingControlFlagBitsKHR;
     TVkVideoCodingControlFlagBitsKHR=
      (
       VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR=$00000001,
       VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR=$00000002,
       VK_VIDEO_CODING_CONTROL_ENCODE_QUALITY_LEVEL_BIT_KHR=$00000004
      );

     PPVkQueryResultStatusKHR=^PVkQueryResultStatusKHR;
     PVkQueryResultStatusKHR=^TVkQueryResultStatusKHR;
     TVkQueryResultStatusKHR=
      (
       VK_QUERY_RESULT_STATUS_INSUFFICIENT_BITSTREAM_BUFFER_RANGE_KHR=-1000299000,
       VK_QUERY_RESULT_STATUS_ERROR_KHR=-1,
       VK_QUERY_RESULT_STATUS_NOT_READY_KHR=0,
       VK_QUERY_RESULT_STATUS_COMPLETE_KHR=1
      );

     PPVkVideoDecodeUsageFlagBitsKHR=^PVkVideoDecodeUsageFlagBitsKHR;
     PVkVideoDecodeUsageFlagBitsKHR=^TVkVideoDecodeUsageFlagBitsKHR;
     TVkVideoDecodeUsageFlagBitsKHR=
      (
       VK_VIDEO_DECODE_USAGE_DEFAULT_KHR=0,
       VK_VIDEO_DECODE_USAGE_TRANSCODING_BIT_KHR=$00000001,
       VK_VIDEO_DECODE_USAGE_OFFLINE_BIT_KHR=$00000002,
       VK_VIDEO_DECODE_USAGE_STREAMING_BIT_KHR=$00000004
      );

     PPVkVideoDecodeCapabilityFlagBitsKHR=^PVkVideoDecodeCapabilityFlagBitsKHR;
     PVkVideoDecodeCapabilityFlagBitsKHR=^TVkVideoDecodeCapabilityFlagBitsKHR;
     TVkVideoDecodeCapabilityFlagBitsKHR=
      (
       VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR=$00000001,
       VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR=$00000002
      );

     PPVkVideoEncodeUsageFlagBitsKHR=^PVkVideoEncodeUsageFlagBitsKHR;
     PVkVideoEncodeUsageFlagBitsKHR=^TVkVideoEncodeUsageFlagBitsKHR;
     TVkVideoEncodeUsageFlagBitsKHR=
      (
       VK_VIDEO_ENCODE_USAGE_DEFAULT_KHR=0,
       VK_VIDEO_ENCODE_USAGE_TRANSCODING_BIT_KHR=$00000001,
       VK_VIDEO_ENCODE_USAGE_STREAMING_BIT_KHR=$00000002,
       VK_VIDEO_ENCODE_USAGE_RECORDING_BIT_KHR=$00000004,
       VK_VIDEO_ENCODE_USAGE_CONFERENCING_BIT_KHR=$00000008
      );

     PPVkVideoEncodeContentFlagBitsKHR=^PVkVideoEncodeContentFlagBitsKHR;
     PVkVideoEncodeContentFlagBitsKHR=^TVkVideoEncodeContentFlagBitsKHR;
     TVkVideoEncodeContentFlagBitsKHR=
      (
       VK_VIDEO_ENCODE_CONTENT_DEFAULT_KHR=0,
       VK_VIDEO_ENCODE_CONTENT_CAMERA_BIT_KHR=$00000001,
       VK_VIDEO_ENCODE_CONTENT_DESKTOP_BIT_KHR=$00000002,
       VK_VIDEO_ENCODE_CONTENT_RENDERED_BIT_KHR=$00000004
      );

     PPVkVideoEncodeTuningModeKHR=^PVkVideoEncodeTuningModeKHR;
     PVkVideoEncodeTuningModeKHR=^TVkVideoEncodeTuningModeKHR;
     TVkVideoEncodeTuningModeKHR=
      (
       VK_VIDEO_ENCODE_TUNING_MODE_DEFAULT_KHR=0,
       VK_VIDEO_ENCODE_TUNING_MODE_HIGH_QUALITY_KHR=1,
       VK_VIDEO_ENCODE_TUNING_MODE_LOW_LATENCY_KHR=2,
       VK_VIDEO_ENCODE_TUNING_MODE_ULTRA_LOW_LATENCY_KHR=3,
       VK_VIDEO_ENCODE_TUNING_MODE_LOSSLESS_KHR=4
      );

     PPVkVideoEncodeCapabilityFlagBitsKHR=^PVkVideoEncodeCapabilityFlagBitsKHR;
     PVkVideoEncodeCapabilityFlagBitsKHR=^TVkVideoEncodeCapabilityFlagBitsKHR;
     TVkVideoEncodeCapabilityFlagBitsKHR=
      (
       VK_VIDEO_ENCODE_CAPABILITY_PRECEDING_EXTERNALLY_ENCODED_BYTES_BIT_KHR=$00000001,
       VK_VIDEO_ENCODE_CAPABILITY_INSUFFICIENT_BITSTREAM_BUFFER_RANGE_DETECTION_BIT_KHR=$00000002
      );

     PPVkVideoEncodeFeedbackFlagBitsKHR=^PVkVideoEncodeFeedbackFlagBitsKHR;
     PVkVideoEncodeFeedbackFlagBitsKHR=^TVkVideoEncodeFeedbackFlagBitsKHR;
     TVkVideoEncodeFeedbackFlagBitsKHR=
      (
       VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BUFFER_OFFSET_BIT_KHR=$00000001,
       VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BYTES_WRITTEN_BIT_KHR=$00000002,
       VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_HAS_OVERRIDES_BIT_KHR=$00000004
      );

     PPVkVideoEncodeRateControlModeFlagBitsKHR=^PVkVideoEncodeRateControlModeFlagBitsKHR;
     PVkVideoEncodeRateControlModeFlagBitsKHR=^TVkVideoEncodeRateControlModeFlagBitsKHR;
     TVkVideoEncodeRateControlModeFlagBitsKHR=
      (
       VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DEFAULT_KHR=0,
       VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DISABLED_BIT_KHR=$00000001,
       VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR=$00000002,
       VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR=$00000004
      );

     PPVkVideoEncodeH264CapabilityFlagBitsEXT=^PVkVideoEncodeH264CapabilityFlagBitsEXT;
     PVkVideoEncodeH264CapabilityFlagBitsEXT=^TVkVideoEncodeH264CapabilityFlagBitsEXT;
     TVkVideoEncodeH264CapabilityFlagBitsEXT=
      (
       VK_VIDEO_ENCODE_H264_CAPABILITY_HRD_COMPLIANCE_BIT_EXT=$00000001,
       VK_VIDEO_ENCODE_H264_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_EXT=$00000002,
       VK_VIDEO_ENCODE_H264_CAPABILITY_ROW_UNALIGNED_SLICE_BIT_EXT=$00000004,
       VK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_EXT=$00000008,
       VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_EXT=$00000010,
       VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_EXT=$00000020,
       VK_VIDEO_ENCODE_H264_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_EXT=$00000040,
       VK_VIDEO_ENCODE_H264_CAPABILITY_PER_SLICE_CONSTANT_QP_BIT_EXT=$00000080,
       VK_VIDEO_ENCODE_H264_CAPABILITY_GENERATE_PREFIX_NALU_BIT_EXT=$00000100
      );

     PPVkVideoEncodeH264StdFlagBitsEXT=^PVkVideoEncodeH264StdFlagBitsEXT;
     PVkVideoEncodeH264StdFlagBitsEXT=^TVkVideoEncodeH264StdFlagBitsEXT;
     TVkVideoEncodeH264StdFlagBitsEXT=
      (
       VK_VIDEO_ENCODE_H264_STD_SEPARATE_COLOR_PLANE_FLAG_SET_BIT_EXT=$00000001,
       VK_VIDEO_ENCODE_H264_STD_QPPRIME_Y_ZERO_TRANSFORM_BYPASS_FLAG_SET_BIT_EXT=$00000002,
       VK_VIDEO_ENCODE_H264_STD_SCALING_MATRIX_PRESENT_FLAG_SET_BIT_EXT=$00000004,
       VK_VIDEO_ENCODE_H264_STD_CHROMA_QP_INDEX_OFFSET_BIT_EXT=$00000008,
       VK_VIDEO_ENCODE_H264_STD_SECOND_CHROMA_QP_INDEX_OFFSET_BIT_EXT=$00000010,
       VK_VIDEO_ENCODE_H264_STD_PIC_INIT_QP_MINUS26_BIT_EXT=$00000020,
       VK_VIDEO_ENCODE_H264_STD_WEIGHTED_PRED_FLAG_SET_BIT_EXT=$00000040,
       VK_VIDEO_ENCODE_H264_STD_WEIGHTED_BIPRED_IDC_EXPLICIT_BIT_EXT=$00000080,
       VK_VIDEO_ENCODE_H264_STD_WEIGHTED_BIPRED_IDC_IMPLICIT_BIT_EXT=$00000100,
       VK_VIDEO_ENCODE_H264_STD_TRANSFORM_8X8_MODE_FLAG_SET_BIT_EXT=$00000200,
       VK_VIDEO_ENCODE_H264_STD_DIRECT_SPATIAL_MV_PRED_FLAG_UNSET_BIT_EXT=$00000400,
       VK_VIDEO_ENCODE_H264_STD_ENTROPY_CODING_MODE_FLAG_UNSET_BIT_EXT=$00000800,
       VK_VIDEO_ENCODE_H264_STD_ENTROPY_CODING_MODE_FLAG_SET_BIT_EXT=$00001000,
       VK_VIDEO_ENCODE_H264_STD_DIRECT_8X8_INFERENCE_FLAG_UNSET_BIT_EXT=$00002000,
       VK_VIDEO_ENCODE_H264_STD_CONSTRAINED_INTRA_PRED_FLAG_SET_BIT_EXT=$00004000,
       VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_DISABLED_BIT_EXT=$00008000,
       VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_ENABLED_BIT_EXT=$00010000,
       VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_PARTIAL_BIT_EXT=$00020000,
       VK_VIDEO_ENCODE_H264_STD_SLICE_QP_DELTA_BIT_EXT=$00080000,
       VK_VIDEO_ENCODE_H264_STD_DIFFERENT_SLICE_QP_DELTA_BIT_EXT=$00100000
      );

     PPVkVideoEncodeH264RateControlFlagBitsEXT=^PVkVideoEncodeH264RateControlFlagBitsEXT;
     PVkVideoEncodeH264RateControlFlagBitsEXT=^TVkVideoEncodeH264RateControlFlagBitsEXT;
     TVkVideoEncodeH264RateControlFlagBitsEXT=
      (
       VK_VIDEO_ENCODE_H264_RATE_CONTROL_ATTEMPT_HRD_COMPLIANCE_BIT_EXT=$00000001,
       VK_VIDEO_ENCODE_H264_RATE_CONTROL_REGULAR_GOP_BIT_EXT=$00000002,
       VK_VIDEO_ENCODE_H264_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_EXT=$00000004,
       VK_VIDEO_ENCODE_H264_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_EXT=$00000008,
       VK_VIDEO_ENCODE_H264_RATE_CONTROL_TEMPORAL_LAYER_PATTERN_DYADIC_BIT_EXT=$00000010
      );

     PPVkHostImageCopyFlagBitsEXT=^PVkHostImageCopyFlagBitsEXT;
     PVkHostImageCopyFlagBitsEXT=^TVkHostImageCopyFlagBitsEXT;
     TVkHostImageCopyFlagBitsEXT=
      (
       VK_HOST_IMAGE_COPY_MEMCPY_EXT=$00000001
      );

     PPVkImageFormatConstraintsFlagBitsFUCHSIA=^PVkImageFormatConstraintsFlagBitsFUCHSIA;
     PVkImageFormatConstraintsFlagBitsFUCHSIA=^TVkImageFormatConstraintsFlagBitsFUCHSIA;
     TVkImageFormatConstraintsFlagBitsFUCHSIA=
      (
       TVkImageFormatConstraintsFlagBitsFUCHSIADummyValue=0
      );

     PPVkImageConstraintsInfoFlagBitsFUCHSIA=^PVkImageConstraintsInfoFlagBitsFUCHSIA;
     PVkImageConstraintsInfoFlagBitsFUCHSIA=^TVkImageConstraintsInfoFlagBitsFUCHSIA;
     TVkImageConstraintsInfoFlagBitsFUCHSIA=
      (
       VK_IMAGE_CONSTRAINTS_INFO_CPU_READ_RARELY_FUCHSIA=$00000001,
       VK_IMAGE_CONSTRAINTS_INFO_CPU_READ_OFTEN_FUCHSIA=$00000002,
       VK_IMAGE_CONSTRAINTS_INFO_CPU_WRITE_RARELY_FUCHSIA=$00000004,
       VK_IMAGE_CONSTRAINTS_INFO_CPU_WRITE_OFTEN_FUCHSIA=$00000008,
       VK_IMAGE_CONSTRAINTS_INFO_PROTECTED_OPTIONAL_FUCHSIA=$00000010
      );

     PPVkFormatFeatureFlagBits2=^PVkFormatFeatureFlagBits2;
     PVkFormatFeatureFlagBits2=^TVkFormatFeatureFlagBits2;
     TVkFormatFeatureFlagBits2=
      (
       VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT=$80000000,
       VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT=$00000001,
       VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT=$00000001,
       VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT=$00000002,
       VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT=$00000002,
       VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT=$00000004,
       VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM=$00000004,
       VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT=$00000008,
       VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM=$00000008,
       VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT=$00000010,
       VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM=$00000010,
       VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT=$00000020,
       VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM=$00000020,
       VK_FORMAT_FEATURE_2_VERTEX_BUFFER_BIT=$00000040,
       VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV=$00000040,
       VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT=$00000080,
       VK_FORMAT_FEATURE_2_RESERVED_39_BIT_EXT=$00000080,
       VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT=$00000100,
       VK_FORMAT_FEATURE_2_OPTICAL_FLOW_IMAGE_BIT_NV=$00000100,
       VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT=$00000200,
       VK_FORMAT_FEATURE_2_OPTICAL_FLOW_VECTOR_BIT_NV=$00000200,
       VK_FORMAT_FEATURE_2_BLIT_SRC_BIT=$00000400,
       VK_FORMAT_FEATURE_2_OPTICAL_FLOW_COST_BIT_NV=$00000400,
       VK_FORMAT_FEATURE_2_BLIT_DST_BIT=$00000800,
       VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT=$00001000,
       VK_FORMAT_FEATURE_2_RESERVED_44_BIT_EXT=$00001000,
       VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT=$00002000,
       VK_FORMAT_FEATURE_2_RESERVED_45_BIT_EXT=$00002000,
       VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT=$00004000,
       VK_FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT_EXT=$00004000,
       VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT=$00008000,
       VK_FORMAT_FEATURE_2_RESERVED_47_BIT_ARM=$00008000,
       VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT=$00010000,
       VK_FORMAT_FEATURE_2_RESERVED_48_BIT_EXT=$00010000,
       VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT=$00020000,
       VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT=$00040000,
       VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT=$00080000,
       VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT=$00100000,
       VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT=$00200000,
       VK_FORMAT_FEATURE_2_DISJOINT_BIT=$00400000,
       VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT=$00800000,
       VK_FORMAT_FEATURE_2_FRAGMENT_DENSITY_MAP_BIT_EXT=$01000000,
       VK_FORMAT_FEATURE_2_VIDEO_DECODE_OUTPUT_BIT_KHR=$02000000,
       VK_FORMAT_FEATURE_2_VIDEO_DECODE_DPB_BIT_KHR=$04000000,
       VK_FORMAT_FEATURE_2_VIDEO_ENCODE_INPUT_BIT_KHR=$08000000,
       VK_FORMAT_FEATURE_2_VIDEO_ENCODE_DPB_BIT_KHR=$10000000,
       VK_FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR=$20000000,
       VK_FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR=$40000000,
       VK_FORMAT_FEATURE_2_BLIT_DST_BIT_KHR=VK_FORMAT_FEATURE_2_BLIT_DST_BIT,
       VK_FORMAT_FEATURE_2_BLIT_SRC_BIT_KHR=VK_FORMAT_FEATURE_2_BLIT_SRC_BIT,
       VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT_KHR=VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT,
       VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT_KHR=VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT,
       VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT_KHR=VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT,
       VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT_KHR=VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT,
       VK_FORMAT_FEATURE_2_DISJOINT_BIT_KHR=VK_FORMAT_FEATURE_2_DISJOINT_BIT,
       VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT_KHR=VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT,
       VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT_KHR=VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT,
       VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR=VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT,
       VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT=VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT,
       VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT_KHR=VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT,
       VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT_KHR=VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT,
       VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR=VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT,
       VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR=VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT,
       VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR=VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT,
       VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR=VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT,
       VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT_KHR=VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT,
       VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT_KHR=VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT,
       VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR=VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT,
       VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT_KHR=VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT,
       VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT_KHR=VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT,
       VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR=VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT,
       VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT_KHR=VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT,
       VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT_KHR=VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT,
       VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT_KHR=VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT,
       VK_FORMAT_FEATURE_2_VERTEX_BUFFER_BIT_KHR=VK_FORMAT_FEATURE_2_VERTEX_BUFFER_BIT
      );

     PPVkRenderingFlagBits=^PVkRenderingFlagBits;
     PVkRenderingFlagBits=^TVkRenderingFlagBits;
     TVkRenderingFlagBits=
      (
       VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT=$00000001,
       VK_RENDERING_SUSPENDING_BIT=$00000002,
       VK_RENDERING_RESUMING_BIT=$00000004,
       VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT=$00000008,
       VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR=VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT,
       VK_RENDERING_RESUMING_BIT_KHR=VK_RENDERING_RESUMING_BIT,
       VK_RENDERING_SUSPENDING_BIT_KHR=VK_RENDERING_SUSPENDING_BIT
      );

     PPVkVideoEncodeH265CapabilityFlagBitsEXT=^PVkVideoEncodeH265CapabilityFlagBitsEXT;
     PVkVideoEncodeH265CapabilityFlagBitsEXT=^TVkVideoEncodeH265CapabilityFlagBitsEXT;
     TVkVideoEncodeH265CapabilityFlagBitsEXT=
      (
       VK_VIDEO_ENCODE_H265_CAPABILITY_HRD_COMPLIANCE_BIT_EXT=$00000001,
       VK_VIDEO_ENCODE_H265_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_EXT=$00000002,
       VK_VIDEO_ENCODE_H265_CAPABILITY_ROW_UNALIGNED_SLICE_SEGMENT_BIT_EXT=$00000004,
       VK_VIDEO_ENCODE_H265_CAPABILITY_DIFFERENT_SLICE_SEGMENT_TYPE_BIT_EXT=$00000008,
       VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_EXT=$00000010,
       VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_EXT=$00000020,
       VK_VIDEO_ENCODE_H265_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_EXT=$00000040,
       VK_VIDEO_ENCODE_H265_CAPABILITY_PER_SLICE_SEGMENT_CONSTANT_QP_BIT_EXT=$00000080,
       VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILES_PER_SLICE_SEGMENT_BIT_EXT=$00000100,
       VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_SLICE_SEGMENTS_PER_TILE_BIT_EXT=$00000200
      );

     PPVkVideoEncodeH265StdFlagBitsEXT=^PVkVideoEncodeH265StdFlagBitsEXT;
     PVkVideoEncodeH265StdFlagBitsEXT=^TVkVideoEncodeH265StdFlagBitsEXT;
     TVkVideoEncodeH265StdFlagBitsEXT=
      (
       VK_VIDEO_ENCODE_H265_STD_SEPARATE_COLOR_PLANE_FLAG_SET_BIT_EXT=$00000001,
       VK_VIDEO_ENCODE_H265_STD_SAMPLE_ADAPTIVE_OFFSET_ENABLED_FLAG_SET_BIT_EXT=$00000002,
       VK_VIDEO_ENCODE_H265_STD_SCALING_LIST_DATA_PRESENT_FLAG_SET_BIT_EXT=$00000004,
       VK_VIDEO_ENCODE_H265_STD_PCM_ENABLED_FLAG_SET_BIT_EXT=$00000008,
       VK_VIDEO_ENCODE_H265_STD_SPS_TEMPORAL_MVP_ENABLED_FLAG_SET_BIT_EXT=$00000010,
       VK_VIDEO_ENCODE_H265_STD_INIT_QP_MINUS26_BIT_EXT=$00000020,
       VK_VIDEO_ENCODE_H265_STD_WEIGHTED_PRED_FLAG_SET_BIT_EXT=$00000040,
       VK_VIDEO_ENCODE_H265_STD_WEIGHTED_BIPRED_FLAG_SET_BIT_EXT=$00000080,
       VK_VIDEO_ENCODE_H265_STD_LOG2_PARALLEL_MERGE_LEVEL_MINUS2_BIT_EXT=$00000100,
       VK_VIDEO_ENCODE_H265_STD_SIGN_DATA_HIDING_ENABLED_FLAG_SET_BIT_EXT=$00000200,
       VK_VIDEO_ENCODE_H265_STD_TRANSFORM_SKIP_ENABLED_FLAG_SET_BIT_EXT=$00000400,
       VK_VIDEO_ENCODE_H265_STD_TRANSFORM_SKIP_ENABLED_FLAG_UNSET_BIT_EXT=$00000800,
       VK_VIDEO_ENCODE_H265_STD_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT_FLAG_SET_BIT_EXT=$00001000,
       VK_VIDEO_ENCODE_H265_STD_TRANSQUANT_BYPASS_ENABLED_FLAG_SET_BIT_EXT=$00002000,
       VK_VIDEO_ENCODE_H265_STD_CONSTRAINED_INTRA_PRED_FLAG_SET_BIT_EXT=$00004000,
       VK_VIDEO_ENCODE_H265_STD_ENTROPY_CODING_SYNC_ENABLED_FLAG_SET_BIT_EXT=$00008000,
       VK_VIDEO_ENCODE_H265_STD_DEBLOCKING_FILTER_OVERRIDE_ENABLED_FLAG_SET_BIT_EXT=$00010000,
       VK_VIDEO_ENCODE_H265_STD_DEPENDENT_SLICE_SEGMENTS_ENABLED_FLAG_SET_BIT_EXT=$00020000,
       VK_VIDEO_ENCODE_H265_STD_DEPENDENT_SLICE_SEGMENT_FLAG_SET_BIT_EXT=$00040000,
       VK_VIDEO_ENCODE_H265_STD_SLICE_QP_DELTA_BIT_EXT=$00080000,
       VK_VIDEO_ENCODE_H265_STD_DIFFERENT_SLICE_QP_DELTA_BIT_EXT=$00100000
      );

     PPVkVideoEncodeH265RateControlFlagBitsEXT=^PVkVideoEncodeH265RateControlFlagBitsEXT;
     PVkVideoEncodeH265RateControlFlagBitsEXT=^TVkVideoEncodeH265RateControlFlagBitsEXT;
     TVkVideoEncodeH265RateControlFlagBitsEXT=
      (
       VK_VIDEO_ENCODE_H265_RATE_CONTROL_ATTEMPT_HRD_COMPLIANCE_BIT_EXT=$00000001,
       VK_VIDEO_ENCODE_H265_RATE_CONTROL_REGULAR_GOP_BIT_EXT=$00000002,
       VK_VIDEO_ENCODE_H265_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_EXT=$00000004,
       VK_VIDEO_ENCODE_H265_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_EXT=$00000008,
       VK_VIDEO_ENCODE_H265_RATE_CONTROL_TEMPORAL_SUB_LAYER_PATTERN_DYADIC_BIT_EXT=$00000010
      );

     PPVkVideoEncodeH265CtbSizeFlagBitsEXT=^PVkVideoEncodeH265CtbSizeFlagBitsEXT;
     PVkVideoEncodeH265CtbSizeFlagBitsEXT=^TVkVideoEncodeH265CtbSizeFlagBitsEXT;
     TVkVideoEncodeH265CtbSizeFlagBitsEXT=
      (
       VK_VIDEO_ENCODE_H265_CTB_SIZE_16_BIT_EXT=$00000001,
       VK_VIDEO_ENCODE_H265_CTB_SIZE_32_BIT_EXT=$00000002,
       VK_VIDEO_ENCODE_H265_CTB_SIZE_64_BIT_EXT=$00000004
      );

     PPVkVideoEncodeH265TransformBlockSizeFlagBitsEXT=^PVkVideoEncodeH265TransformBlockSizeFlagBitsEXT;
     PVkVideoEncodeH265TransformBlockSizeFlagBitsEXT=^TVkVideoEncodeH265TransformBlockSizeFlagBitsEXT;
     TVkVideoEncodeH265TransformBlockSizeFlagBitsEXT=
      (
       VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_4_BIT_EXT=$00000001,
       VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_8_BIT_EXT=$00000002,
       VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_16_BIT_EXT=$00000004,
       VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_32_BIT_EXT=$00000008
      );

     PPVkExportMetalObjectTypeFlagBitsEXT=^PVkExportMetalObjectTypeFlagBitsEXT;
     PVkExportMetalObjectTypeFlagBitsEXT=^TVkExportMetalObjectTypeFlagBitsEXT;
     TVkExportMetalObjectTypeFlagBitsEXT=
      (
       VK_EXPORT_METAL_OBJECT_TYPE_METAL_DEVICE_BIT_EXT=$00000001,
       VK_EXPORT_METAL_OBJECT_TYPE_METAL_COMMAND_QUEUE_BIT_EXT=$00000002,
       VK_EXPORT_METAL_OBJECT_TYPE_METAL_BUFFER_BIT_EXT=$00000004,
       VK_EXPORT_METAL_OBJECT_TYPE_METAL_TEXTURE_BIT_EXT=$00000008,
       VK_EXPORT_METAL_OBJECT_TYPE_METAL_IOSURFACE_BIT_EXT=$00000010,
       VK_EXPORT_METAL_OBJECT_TYPE_METAL_SHARED_EVENT_BIT_EXT=$00000020
      );

     PPVkInstanceCreateFlagBits=^PVkInstanceCreateFlagBits;
     PVkInstanceCreateFlagBits=^TVkInstanceCreateFlagBits;
     TVkInstanceCreateFlagBits=
      (
       VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR=$00000001
      );

     PPVkImageCompressionFlagBitsEXT=^PVkImageCompressionFlagBitsEXT;
     PVkImageCompressionFlagBitsEXT=^TVkImageCompressionFlagBitsEXT;
     TVkImageCompressionFlagBitsEXT=
      (
       VK_IMAGE_COMPRESSION_DEFAULT_EXT=0,
       VK_IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT=$00000001,
       VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT=$00000002,
       VK_IMAGE_COMPRESSION_DISABLED_EXT=$00000004
      );

     PPVkImageCompressionFixedRateFlagBitsEXT=^PVkImageCompressionFixedRateFlagBitsEXT;
     PVkImageCompressionFixedRateFlagBitsEXT=^TVkImageCompressionFixedRateFlagBitsEXT;
     TVkImageCompressionFixedRateFlagBitsEXT=
      (
       VK_IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT=0,
       VK_IMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT=$00000001,
       VK_IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT=$00000002,
       VK_IMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT=$00000004,
       VK_IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT=$00000008,
       VK_IMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT=$00000010,
       VK_IMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT=$00000020,
       VK_IMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT=$00000040,
       VK_IMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT=$00000080,
       VK_IMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT=$00000100,
       VK_IMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT=$00000200,
       VK_IMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT=$00000400,
       VK_IMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT=$00000800,
       VK_IMAGE_COMPRESSION_FIXED_RATE_13BPC_BIT_EXT=$00001000,
       VK_IMAGE_COMPRESSION_FIXED_RATE_14BPC_BIT_EXT=$00002000,
       VK_IMAGE_COMPRESSION_FIXED_RATE_15BPC_BIT_EXT=$00004000,
       VK_IMAGE_COMPRESSION_FIXED_RATE_16BPC_BIT_EXT=$00008000,
       VK_IMAGE_COMPRESSION_FIXED_RATE_17BPC_BIT_EXT=$00010000,
       VK_IMAGE_COMPRESSION_FIXED_RATE_18BPC_BIT_EXT=$00020000,
       VK_IMAGE_COMPRESSION_FIXED_RATE_19BPC_BIT_EXT=$00040000,
       VK_IMAGE_COMPRESSION_FIXED_RATE_20BPC_BIT_EXT=$00080000,
       VK_IMAGE_COMPRESSION_FIXED_RATE_21BPC_BIT_EXT=$00100000,
       VK_IMAGE_COMPRESSION_FIXED_RATE_22BPC_BIT_EXT=$00200000,
       VK_IMAGE_COMPRESSION_FIXED_RATE_23BPC_BIT_EXT=$00400000,
       VK_IMAGE_COMPRESSION_FIXED_RATE_24BPC_BIT_EXT=$00800000
      );

     PPVkPipelineRobustnessBufferBehaviorEXT=^PVkPipelineRobustnessBufferBehaviorEXT;
     PVkPipelineRobustnessBufferBehaviorEXT=^TVkPipelineRobustnessBufferBehaviorEXT;
     TVkPipelineRobustnessBufferBehaviorEXT=
      (
       VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT=0,
       VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT=1,
       VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT=2,
       VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT=3
      );

     PPVkPipelineRobustnessImageBehaviorEXT=^PVkPipelineRobustnessImageBehaviorEXT;
     PVkPipelineRobustnessImageBehaviorEXT=^TVkPipelineRobustnessImageBehaviorEXT;
     TVkPipelineRobustnessImageBehaviorEXT=
      (
       VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT=0,
       VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT=1,
       VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT=2,
       VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT=3
      );

     PPVkOpticalFlowGridSizeFlagBitsNV=^PVkOpticalFlowGridSizeFlagBitsNV;
     PVkOpticalFlowGridSizeFlagBitsNV=^TVkOpticalFlowGridSizeFlagBitsNV;
     TVkOpticalFlowGridSizeFlagBitsNV=
      (
       VK_OPTICAL_FLOW_GRID_SIZE_UNKNOWN_NV=0,
       VK_OPTICAL_FLOW_GRID_SIZE_1X1_BIT_NV=$00000001,
       VK_OPTICAL_FLOW_GRID_SIZE_2X2_BIT_NV=$00000002,
       VK_OPTICAL_FLOW_GRID_SIZE_4X4_BIT_NV=$00000004,
       VK_OPTICAL_FLOW_GRID_SIZE_8X8_BIT_NV=$00000008
      );

     PPVkOpticalFlowUsageFlagBitsNV=^PVkOpticalFlowUsageFlagBitsNV;
     PVkOpticalFlowUsageFlagBitsNV=^TVkOpticalFlowUsageFlagBitsNV;
     TVkOpticalFlowUsageFlagBitsNV=
      (
       VK_OPTICAL_FLOW_USAGE_UNKNOWN_NV=0,
       VK_OPTICAL_FLOW_USAGE_INPUT_BIT_NV=$00000001,
       VK_OPTICAL_FLOW_USAGE_OUTPUT_BIT_NV=$00000002,
       VK_OPTICAL_FLOW_USAGE_HINT_BIT_NV=$00000004,
       VK_OPTICAL_FLOW_USAGE_COST_BIT_NV=$00000008,
       VK_OPTICAL_FLOW_USAGE_GLOBAL_FLOW_BIT_NV=$00000010
      );

     PPVkOpticalFlowPerformanceLevelNV=^PVkOpticalFlowPerformanceLevelNV;
     PVkOpticalFlowPerformanceLevelNV=^TVkOpticalFlowPerformanceLevelNV;
     TVkOpticalFlowPerformanceLevelNV=
      (
       VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_UNKNOWN_NV=0,
       VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_SLOW_NV=1,
       VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MEDIUM_NV=2,
       VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_FAST_NV=3
      );

     PPVkOpticalFlowSessionBindingPointNV=^PVkOpticalFlowSessionBindingPointNV;
     PVkOpticalFlowSessionBindingPointNV=^TVkOpticalFlowSessionBindingPointNV;
     TVkOpticalFlowSessionBindingPointNV=
      (
       VK_OPTICAL_FLOW_SESSION_BINDING_POINT_UNKNOWN_NV=0,
       VK_OPTICAL_FLOW_SESSION_BINDING_POINT_INPUT_NV=1,
       VK_OPTICAL_FLOW_SESSION_BINDING_POINT_REFERENCE_NV=2,
       VK_OPTICAL_FLOW_SESSION_BINDING_POINT_HINT_NV=3,
       VK_OPTICAL_FLOW_SESSION_BINDING_POINT_FLOW_VECTOR_NV=4,
       VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_FLOW_VECTOR_NV=5,
       VK_OPTICAL_FLOW_SESSION_BINDING_POINT_COST_NV=6,
       VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_COST_NV=7,
       VK_OPTICAL_FLOW_SESSION_BINDING_POINT_GLOBAL_FLOW_NV=8
      );

     PPVkOpticalFlowSessionCreateFlagBitsNV=^PVkOpticalFlowSessionCreateFlagBitsNV;
     PVkOpticalFlowSessionCreateFlagBitsNV=^TVkOpticalFlowSessionCreateFlagBitsNV;
     TVkOpticalFlowSessionCreateFlagBitsNV=
      (
       VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_HINT_BIT_NV=$00000001,
       VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_COST_BIT_NV=$00000002,
       VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_GLOBAL_FLOW_BIT_NV=$00000004,
       VK_OPTICAL_FLOW_SESSION_CREATE_ALLOW_REGIONS_BIT_NV=$00000008,
       VK_OPTICAL_FLOW_SESSION_CREATE_BOTH_DIRECTIONS_BIT_NV=$00000010
      );

     PPVkOpticalFlowExecuteFlagBitsNV=^PVkOpticalFlowExecuteFlagBitsNV;
     PVkOpticalFlowExecuteFlagBitsNV=^TVkOpticalFlowExecuteFlagBitsNV;
     TVkOpticalFlowExecuteFlagBitsNV=
      (
       VK_OPTICAL_FLOW_EXECUTE_DISABLE_TEMPORAL_HINTS_BIT_NV=$00000001
      );

     PPVkMicromapTypeEXT=^PVkMicromapTypeEXT;
     PVkMicromapTypeEXT=^TVkMicromapTypeEXT;
     TVkMicromapTypeEXT=
      (
       VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT=0,
       VK_MICROMAP_TYPE_DISPLACEMENT_MICROMAP_NV=1000397000
      );

     PPVkBuildMicromapFlagBitsEXT=^PVkBuildMicromapFlagBitsEXT;
     PVkBuildMicromapFlagBitsEXT=^TVkBuildMicromapFlagBitsEXT;
     TVkBuildMicromapFlagBitsEXT=
      (
       VK_BUILD_MICROMAP_PREFER_FAST_TRACE_BIT_EXT=$00000001,
       VK_BUILD_MICROMAP_PREFER_FAST_BUILD_BIT_EXT=$00000002,
       VK_BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT=$00000004
      );

     PPVkMicromapCreateFlagBitsEXT=^PVkMicromapCreateFlagBitsEXT;
     PVkMicromapCreateFlagBitsEXT=^TVkMicromapCreateFlagBitsEXT;
     TVkMicromapCreateFlagBitsEXT=
      (
       VK_MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT=$00000001
      );

     PPVkCopyMicromapModeEXT=^PVkCopyMicromapModeEXT;
     PVkCopyMicromapModeEXT=^TVkCopyMicromapModeEXT;
     TVkCopyMicromapModeEXT=
      (
       VK_COPY_MICROMAP_MODE_CLONE_EXT=0,
       VK_COPY_MICROMAP_MODE_SERIALIZE_EXT=1,
       VK_COPY_MICROMAP_MODE_DESERIALIZE_EXT=2,
       VK_COPY_MICROMAP_MODE_COMPACT_EXT=3
      );

     PPVkBuildMicromapModeEXT=^PVkBuildMicromapModeEXT;
     PVkBuildMicromapModeEXT=^TVkBuildMicromapModeEXT;
     TVkBuildMicromapModeEXT=
      (
       VK_BUILD_MICROMAP_MODE_BUILD_EXT=0
      );

     PPVkOpacityMicromapFormatEXT=^PVkOpacityMicromapFormatEXT;
     PVkOpacityMicromapFormatEXT=^TVkOpacityMicromapFormatEXT;
     TVkOpacityMicromapFormatEXT=
      (
       VK_OPACITY_MICROMAP_FORMAT_2_STATE_EXT=1,
       VK_OPACITY_MICROMAP_FORMAT_4_STATE_EXT=2
      );

     PPVkOpacityMicromapSpecialIndexEXT=^PVkOpacityMicromapSpecialIndexEXT;
     PVkOpacityMicromapSpecialIndexEXT=^TVkOpacityMicromapSpecialIndexEXT;
     TVkOpacityMicromapSpecialIndexEXT=
      (
       VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_EXT=-4,
       VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_EXT=-3,
       VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_EXT=-2,
       VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_EXT=-1
      );

     PPVkDepthBiasRepresentationEXT=^PVkDepthBiasRepresentationEXT;
     PVkDepthBiasRepresentationEXT=^TVkDepthBiasRepresentationEXT;
     TVkDepthBiasRepresentationEXT=
      (
       VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORMAT_EXT=0,
       VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORCE_UNORM_EXT=1,
       VK_DEPTH_BIAS_REPRESENTATION_FLOAT_EXT=2
      );

     PPVkDeviceFaultAddressTypeEXT=^PVkDeviceFaultAddressTypeEXT;
     PVkDeviceFaultAddressTypeEXT=^TVkDeviceFaultAddressTypeEXT;
     TVkDeviceFaultAddressTypeEXT=
      (
       VK_DEVICE_FAULT_ADDRESS_TYPE_NONE_EXT=0,                                  //< Currently unused
       VK_DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXT=1,
       VK_DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXT=2,
       VK_DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXT=3,
       VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXT=4,
       VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXT=5,
       VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXT=6
      );

     PPVkDeviceFaultVendorBinaryHeaderVersionEXT=^PVkDeviceFaultVendorBinaryHeaderVersionEXT;
     PVkDeviceFaultVendorBinaryHeaderVersionEXT=^TVkDeviceFaultVendorBinaryHeaderVersionEXT;
     TVkDeviceFaultVendorBinaryHeaderVersionEXT=
      (
       VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT=1
      );

     PPVkDisplacementMicromapFormatNV=^PVkDisplacementMicromapFormatNV;
     PVkDisplacementMicromapFormatNV=^TVkDisplacementMicromapFormatNV;
     TVkDisplacementMicromapFormatNV=
      (
       VK_DISPLACEMENT_MICROMAP_FORMAT_64_TRIANGLES_64_BYTES_NV=1,
       VK_DISPLACEMENT_MICROMAP_FORMAT_256_TRIANGLES_128_BYTES_NV=2,
       VK_DISPLACEMENT_MICROMAP_FORMAT_1024_TRIANGLES_128_BYTES_NV=3
      );

     PPVkShaderCreateFlagBitsEXT=^PVkShaderCreateFlagBitsEXT;
     PVkShaderCreateFlagBitsEXT=^TVkShaderCreateFlagBitsEXT;
     TVkShaderCreateFlagBitsEXT=
      (
       VK_SHADER_CREATE_LINK_STAGE_BIT_EXT=$00000001,
       VK_SHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT=$00000002,
       VK_SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT=$00000004,
       VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT=$00000008,
       VK_SHADER_CREATE_DISPATCH_BASE_BIT_EXT=$00000010,
       VK_SHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT=$00000020,
       VK_SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT=$00000040
      );

     PPVkShaderCodeTypeEXT=^PVkShaderCodeTypeEXT;
     PVkShaderCodeTypeEXT=^TVkShaderCodeTypeEXT;
     TVkShaderCodeTypeEXT=
      (
       VK_SHADER_CODE_TYPE_BINARY_EXT=0,
       VK_SHADER_CODE_TYPE_SPIRV_EXT=1
      );

     PPVkScopeKHR=^PVkScopeKHR;
     PVkScopeKHR=^TVkScopeKHR;
     TVkScopeKHR=
      (
       VK_SCOPE_DEVICE_KHR=1,
       VK_SCOPE_WORKGROUP_KHR=2,
       VK_SCOPE_SUBGROUP_KHR=3,
       VK_SCOPE_QUEUE_FAMILY_KHR=5,
       VK_SCOPE_DEVICE_NV=VK_SCOPE_DEVICE_KHR,
       VK_SCOPE_QUEUE_FAMILY_NV=VK_SCOPE_QUEUE_FAMILY_KHR,
       VK_SCOPE_SUBGROUP_NV=VK_SCOPE_SUBGROUP_KHR,
       VK_SCOPE_WORKGROUP_NV=VK_SCOPE_WORKGROUP_KHR
      );

     PPVkComponentTypeKHR=^PVkComponentTypeKHR;
     PVkComponentTypeKHR=^TVkComponentTypeKHR;
     TVkComponentTypeKHR=
      (
       VK_COMPONENT_TYPE_FLOAT16_KHR=0,
       VK_COMPONENT_TYPE_FLOAT32_KHR=1,
       VK_COMPONENT_TYPE_FLOAT64_KHR=2,
       VK_COMPONENT_TYPE_SINT8_KHR=3,
       VK_COMPONENT_TYPE_SINT16_KHR=4,
       VK_COMPONENT_TYPE_SINT32_KHR=5,
       VK_COMPONENT_TYPE_SINT64_KHR=6,
       VK_COMPONENT_TYPE_UINT8_KHR=7,
       VK_COMPONENT_TYPE_UINT16_KHR=8,
       VK_COMPONENT_TYPE_UINT32_KHR=9,
       VK_COMPONENT_TYPE_UINT64_KHR=10,
       VK_COMPONENT_TYPE_FLOAT16_NV=VK_COMPONENT_TYPE_FLOAT16_KHR,
       VK_COMPONENT_TYPE_FLOAT32_NV=VK_COMPONENT_TYPE_FLOAT32_KHR,
       VK_COMPONENT_TYPE_FLOAT64_NV=VK_COMPONENT_TYPE_FLOAT64_KHR,
       VK_COMPONENT_TYPE_SINT16_NV=VK_COMPONENT_TYPE_SINT16_KHR,
       VK_COMPONENT_TYPE_SINT32_NV=VK_COMPONENT_TYPE_SINT32_KHR,
       VK_COMPONENT_TYPE_SINT64_NV=VK_COMPONENT_TYPE_SINT64_KHR,
       VK_COMPONENT_TYPE_SINT8_NV=VK_COMPONENT_TYPE_SINT8_KHR,
       VK_COMPONENT_TYPE_UINT16_NV=VK_COMPONENT_TYPE_UINT16_KHR,
       VK_COMPONENT_TYPE_UINT32_NV=VK_COMPONENT_TYPE_UINT32_KHR,
       VK_COMPONENT_TYPE_UINT64_NV=VK_COMPONENT_TYPE_UINT64_KHR,
       VK_COMPONENT_TYPE_UINT8_NV=VK_COMPONENT_TYPE_UINT8_KHR
      );

     PPVkCubicFilterWeightsQCOM=^PVkCubicFilterWeightsQCOM;
     PVkCubicFilterWeightsQCOM=^TVkCubicFilterWeightsQCOM;
     TVkCubicFilterWeightsQCOM=
      (
       VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM=0,
       VK_CUBIC_FILTER_WEIGHTS_ZERO_TANGENT_CARDINAL_QCOM=1,
       VK_CUBIC_FILTER_WEIGHTS_B_SPLINE_QCOM=2,
       VK_CUBIC_FILTER_WEIGHTS_MITCHELL_NETRAVALI_QCOM=3
      );

     PPVkBlockMatchWindowCompareModeQCOM=^PVkBlockMatchWindowCompareModeQCOM;
     PVkBlockMatchWindowCompareModeQCOM=^TVkBlockMatchWindowCompareModeQCOM;
     TVkBlockMatchWindowCompareModeQCOM=
      (
       VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MIN_QCOM=0,
       VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MAX_QCOM=1
      );

     PPVkLayeredDriverUnderlyingApiMSFT=^PVkLayeredDriverUnderlyingApiMSFT;
     PVkLayeredDriverUnderlyingApiMSFT=^TVkLayeredDriverUnderlyingApiMSFT;
     TVkLayeredDriverUnderlyingApiMSFT=
      (
       VK_LAYERED_DRIVER_UNDERLYING_API_NONE_MSFT=0,
       VK_LAYERED_DRIVER_UNDERLYING_API_D3D12_MSFT=1
      );

     PPVkLatencyMarkerNV=^PVkLatencyMarkerNV;
     PVkLatencyMarkerNV=^TVkLatencyMarkerNV;
     TVkLatencyMarkerNV=
      (
       VK_LATENCY_MARKER_SIMULATION_START_NV=0,
       VK_LATENCY_MARKER_SIMULATION_END_NV=1,
       VK_LATENCY_MARKER_RENDERSUBMIT_START_NV=2,
       VK_LATENCY_MARKER_RENDERSUBMIT_END_NV=3,
       VK_LATENCY_MARKER_PRESENT_START_NV=4,
       VK_LATENCY_MARKER_PRESENT_END_NV=5,
       VK_LATENCY_MARKER_INPUT_SAMPLE_NV=6,
       VK_LATENCY_MARKER_TRIGGER_FLASH_NV=7,
       VK_LATENCY_MARKER_OUT_OF_BAND_RENDERSUBMIT_START_NV=8,
       VK_LATENCY_MARKER_OUT_OF_BAND_RENDERSUBMIT_END_NV=9,
       VK_LATENCY_MARKER_OUT_OF_BAND_PRESENT_START_NV=10,
       VK_LATENCY_MARKER_OUT_OF_BAND_PRESENT_END_NV=11
      );

     PPVkOutOfBandQueueTypeNV=^PVkOutOfBandQueueTypeNV;
     PVkOutOfBandQueueTypeNV=^TVkOutOfBandQueueTypeNV;
     TVkOutOfBandQueueTypeNV=
      (
       VK_OUT_OF_BAND_QUEUE_TYPE_RENDER_NV=0,
       VK_OUT_OF_BAND_QUEUE_TYPE_PRESENT_NV=1
      );

     PPVkPrivateDataSlotCreateFlagBitsEXT=PPVkPrivateDataSlotCreateFlagBits;
     PVkPrivateDataSlotCreateFlagBitsEXT=PVkPrivateDataSlotCreateFlagBits;
     TVkPrivateDataSlotCreateFlagBitsEXT=TVkPrivateDataSlotCreateFlagBits;

     PPVkDescriptorUpdateTemplateTypeKHR=PPVkDescriptorUpdateTemplateType;
     PVkDescriptorUpdateTemplateTypeKHR=PVkDescriptorUpdateTemplateType;
     TVkDescriptorUpdateTemplateTypeKHR=TVkDescriptorUpdateTemplateType;

     PPVkPointClippingBehaviorKHR=PPVkPointClippingBehavior;
     PVkPointClippingBehaviorKHR=PVkPointClippingBehavior;
     TVkPointClippingBehaviorKHR=TVkPointClippingBehavior;

     PPVkQueueGlobalPriorityEXT=PPVkQueueGlobalPriorityKHR;
     PVkQueueGlobalPriorityEXT=PVkQueueGlobalPriorityKHR;
     TVkQueueGlobalPriorityEXT=TVkQueueGlobalPriorityKHR;

     PPVkResolveModeFlagBitsKHR=PPVkResolveModeFlagBits;
     PVkResolveModeFlagBitsKHR=PVkResolveModeFlagBits;
     TVkResolveModeFlagBitsKHR=TVkResolveModeFlagBits;

     PPVkDescriptorBindingFlagBitsEXT=PPVkDescriptorBindingFlagBits;
     PVkDescriptorBindingFlagBitsEXT=PVkDescriptorBindingFlagBits;
     TVkDescriptorBindingFlagBitsEXT=TVkDescriptorBindingFlagBits;

     PPVkSemaphoreTypeKHR=PPVkSemaphoreType;
     PVkSemaphoreTypeKHR=PVkSemaphoreType;
     TVkSemaphoreTypeKHR=TVkSemaphoreType;

     PPVkGeometryFlagBitsNV=PPVkGeometryFlagBitsKHR;
     PVkGeometryFlagBitsNV=PVkGeometryFlagBitsKHR;
     TVkGeometryFlagBitsNV=TVkGeometryFlagBitsKHR;

     PPVkGeometryInstanceFlagBitsNV=PPVkGeometryInstanceFlagBitsKHR;
     PVkGeometryInstanceFlagBitsNV=PVkGeometryInstanceFlagBitsKHR;
     TVkGeometryInstanceFlagBitsNV=TVkGeometryInstanceFlagBitsKHR;

     PPVkBuildAccelerationStructureFlagBitsNV=PPVkBuildAccelerationStructureFlagBitsKHR;
     PVkBuildAccelerationStructureFlagBitsNV=PVkBuildAccelerationStructureFlagBitsKHR;
     TVkBuildAccelerationStructureFlagBitsNV=TVkBuildAccelerationStructureFlagBitsKHR;

     PPVkCopyAccelerationStructureModeNV=PPVkCopyAccelerationStructureModeKHR;
     PVkCopyAccelerationStructureModeNV=PVkCopyAccelerationStructureModeKHR;
     TVkCopyAccelerationStructureModeNV=TVkCopyAccelerationStructureModeKHR;

     PPVkAccelerationStructureTypeNV=PPVkAccelerationStructureTypeKHR;
     PVkAccelerationStructureTypeNV=PVkAccelerationStructureTypeKHR;
     TVkAccelerationStructureTypeNV=TVkAccelerationStructureTypeKHR;

     PPVkGeometryTypeNV=PPVkGeometryTypeKHR;
     PVkGeometryTypeNV=PVkGeometryTypeKHR;
     TVkGeometryTypeNV=TVkGeometryTypeKHR;

     PPVkRayTracingShaderGroupTypeNV=PPVkRayTracingShaderGroupTypeKHR;
     PVkRayTracingShaderGroupTypeNV=PVkRayTracingShaderGroupTypeKHR;
     TVkRayTracingShaderGroupTypeNV=TVkRayTracingShaderGroupTypeKHR;

     PPVkPipelineCreationFeedbackFlagBitsEXT=PPVkPipelineCreationFeedbackFlagBits;
     PVkPipelineCreationFeedbackFlagBitsEXT=PVkPipelineCreationFeedbackFlagBits;
     TVkPipelineCreationFeedbackFlagBitsEXT=TVkPipelineCreationFeedbackFlagBits;

     PPVkSemaphoreWaitFlagBitsKHR=PPVkSemaphoreWaitFlagBits;
     PVkSemaphoreWaitFlagBitsKHR=PVkSemaphoreWaitFlagBits;
     TVkSemaphoreWaitFlagBitsKHR=TVkSemaphoreWaitFlagBits;

     PPVkToolPurposeFlagBitsEXT=PPVkToolPurposeFlagBits;
     PVkToolPurposeFlagBitsEXT=PVkToolPurposeFlagBits;
     TVkToolPurposeFlagBitsEXT=TVkToolPurposeFlagBits;

     PPVkAccessFlagBits2KHR=PPVkAccessFlagBits2;
     PVkAccessFlagBits2KHR=PVkAccessFlagBits2;
     TVkAccessFlagBits2KHR=TVkAccessFlagBits2;

     PPVkPipelineStageFlagBits2KHR=PPVkPipelineStageFlagBits2;
     PVkPipelineStageFlagBits2KHR=PVkPipelineStageFlagBits2;
     TVkPipelineStageFlagBits2KHR=TVkPipelineStageFlagBits2;

     PPVkFormatFeatureFlagBits2KHR=PPVkFormatFeatureFlagBits2;
     PVkFormatFeatureFlagBits2KHR=PVkFormatFeatureFlagBits2;
     TVkFormatFeatureFlagBits2KHR=TVkFormatFeatureFlagBits2;

     PPVkRenderingFlagBitsKHR=PPVkRenderingFlagBits;
     PVkRenderingFlagBitsKHR=PVkRenderingFlagBits;
     TVkRenderingFlagBitsKHR=TVkRenderingFlagBits;

     PPVkScopeNV=PPVkScopeKHR;
     PVkScopeNV=PVkScopeKHR;
     TVkScopeNV=TVkScopeKHR;

     PPVkComponentTypeNV=PPVkComponentTypeKHR;
     PVkComponentTypeNV=PVkComponentTypeKHR;
     TVkComponentTypeNV=TVkComponentTypeKHR;

     PPVkExternalMemoryHandleTypeFlagBitsKHR=PPVkExternalMemoryHandleTypeFlagBits;
     PVkExternalMemoryHandleTypeFlagBitsKHR=PVkExternalMemoryHandleTypeFlagBits;
     TVkExternalMemoryHandleTypeFlagBitsKHR=TVkExternalMemoryHandleTypeFlagBits;

     PPVkExternalMemoryFeatureFlagBitsKHR=PPVkExternalMemoryFeatureFlagBits;
     PVkExternalMemoryFeatureFlagBitsKHR=PVkExternalMemoryFeatureFlagBits;
     TVkExternalMemoryFeatureFlagBitsKHR=TVkExternalMemoryFeatureFlagBits;

     PPVkExternalSemaphoreHandleTypeFlagBitsKHR=PPVkExternalSemaphoreHandleTypeFlagBits;
     PVkExternalSemaphoreHandleTypeFlagBitsKHR=PVkExternalSemaphoreHandleTypeFlagBits;
     TVkExternalSemaphoreHandleTypeFlagBitsKHR=TVkExternalSemaphoreHandleTypeFlagBits;

     PPVkExternalSemaphoreFeatureFlagBitsKHR=PPVkExternalSemaphoreFeatureFlagBits;
     PVkExternalSemaphoreFeatureFlagBitsKHR=PVkExternalSemaphoreFeatureFlagBits;
     TVkExternalSemaphoreFeatureFlagBitsKHR=TVkExternalSemaphoreFeatureFlagBits;

     PPVkSemaphoreImportFlagBitsKHR=PPVkSemaphoreImportFlagBits;
     PVkSemaphoreImportFlagBitsKHR=PVkSemaphoreImportFlagBits;
     TVkSemaphoreImportFlagBitsKHR=TVkSemaphoreImportFlagBits;

     PPVkExternalFenceHandleTypeFlagBitsKHR=PPVkExternalFenceHandleTypeFlagBits;
     PVkExternalFenceHandleTypeFlagBitsKHR=PVkExternalFenceHandleTypeFlagBits;
     TVkExternalFenceHandleTypeFlagBitsKHR=TVkExternalFenceHandleTypeFlagBits;

     PPVkExternalFenceFeatureFlagBitsKHR=PPVkExternalFenceFeatureFlagBits;
     PVkExternalFenceFeatureFlagBitsKHR=PVkExternalFenceFeatureFlagBits;
     TVkExternalFenceFeatureFlagBitsKHR=TVkExternalFenceFeatureFlagBits;

     PPVkFenceImportFlagBitsKHR=PPVkFenceImportFlagBits;
     PVkFenceImportFlagBitsKHR=PVkFenceImportFlagBits;
     TVkFenceImportFlagBitsKHR=TVkFenceImportFlagBits;

     PPVkPeerMemoryFeatureFlagBitsKHR=PPVkPeerMemoryFeatureFlagBits;
     PVkPeerMemoryFeatureFlagBitsKHR=PVkPeerMemoryFeatureFlagBits;
     TVkPeerMemoryFeatureFlagBitsKHR=TVkPeerMemoryFeatureFlagBits;

     PPVkMemoryAllocateFlagBitsKHR=PPVkMemoryAllocateFlagBits;
     PVkMemoryAllocateFlagBitsKHR=PVkMemoryAllocateFlagBits;
     TVkMemoryAllocateFlagBitsKHR=TVkMemoryAllocateFlagBits;

     PPVkTessellationDomainOriginKHR=PPVkTessellationDomainOrigin;
     PVkTessellationDomainOriginKHR=PVkTessellationDomainOrigin;
     TVkTessellationDomainOriginKHR=TVkTessellationDomainOrigin;

     PPVkSamplerYcbcrModelConversionKHR=PPVkSamplerYcbcrModelConversion;
     PVkSamplerYcbcrModelConversionKHR=PVkSamplerYcbcrModelConversion;
     TVkSamplerYcbcrModelConversionKHR=TVkSamplerYcbcrModelConversion;

     PPVkSamplerYcbcrRangeKHR=PPVkSamplerYcbcrRange;
     PVkSamplerYcbcrRangeKHR=PVkSamplerYcbcrRange;
     TVkSamplerYcbcrRangeKHR=TVkSamplerYcbcrRange;

     PPVkChromaLocationKHR=PPVkChromaLocation;
     PVkChromaLocationKHR=PVkChromaLocation;
     TVkChromaLocationKHR=TVkChromaLocation;

     PPVkSamplerReductionModeEXT=PPVkSamplerReductionMode;
     PVkSamplerReductionModeEXT=PVkSamplerReductionMode;
     TVkSamplerReductionModeEXT=TVkSamplerReductionMode;

     PPVkShaderFloatControlsIndependenceKHR=PPVkShaderFloatControlsIndependence;
     PVkShaderFloatControlsIndependenceKHR=PVkShaderFloatControlsIndependence;
     TVkShaderFloatControlsIndependenceKHR=TVkShaderFloatControlsIndependence;

     PPVkSubmitFlagBitsKHR=PPVkSubmitFlagBits;
     PVkSubmitFlagBitsKHR=PVkSubmitFlagBits;
     TVkSubmitFlagBitsKHR=TVkSubmitFlagBits;

     PPVkDriverIdKHR=PPVkDriverId;
     PVkDriverIdKHR=PVkDriverId;
     TVkDriverIdKHR=TVkDriverId;

     PPPFN_vkInternalAllocationNotification=^PPFN_vkInternalAllocationNotification;
     PPFN_vkInternalAllocationNotification=^TPFN_vkInternalAllocationNotification;
     TPFN_vkInternalAllocationNotification=procedure(pUserData:PVkVoid;size:TVkSize;allocationType:TVkInternalAllocationType;allocationScope:TVkSystemAllocationScope); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     PPPFN_vkInternalFreeNotification=^PPFN_vkInternalFreeNotification;
     PPFN_vkInternalFreeNotification=^TPFN_vkInternalFreeNotification;
     TPFN_vkInternalFreeNotification=procedure(pUserData:PVkVoid;size:TVkSize;allocationType:TVkInternalAllocationType;allocationScope:TVkSystemAllocationScope); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     PPPFN_vkReallocationFunction=^PPFN_vkReallocationFunction;
     PPFN_vkReallocationFunction=^TPFN_vkReallocationFunction;
     TPFN_vkReallocationFunction=function(pUserData:PVkVoid;pOriginal:PVkVoid;size:TVkSize;alignment:TVkSize;allocationScope:TVkSystemAllocationScope):PVkVoid; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     PPPFN_vkAllocationFunction=^PPFN_vkAllocationFunction;
     PPFN_vkAllocationFunction=^TPFN_vkAllocationFunction;
     TPFN_vkAllocationFunction=function(pUserData:PVkVoid;size:TVkSize;alignment:TVkSize;allocationScope:TVkSystemAllocationScope):PVkVoid; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     PPPFN_vkFreeFunction=^PPFN_vkFreeFunction;
     PPFN_vkFreeFunction=^TPFN_vkFreeFunction;
     TPFN_vkFreeFunction=procedure(pUserData:PVkVoid;pMemory:PVkVoid); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     PPPFN_vkVoidFunction=^PPFN_vkVoidFunction;
     PPFN_vkVoidFunction=^TPFN_vkVoidFunction;
     TPFN_vkVoidFunction=procedure(); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     PPPFN_vkDebugReportCallbackEXT=^PPFN_vkDebugReportCallbackEXT;
     PPFN_vkDebugReportCallbackEXT=^TPFN_vkDebugReportCallbackEXT;
     TPFN_vkDebugReportCallbackEXT=function(flags:TVkDebugReportFlagsEXT;objectType:TVkDebugReportObjectTypeEXT;object_:TVkUInt64;location:TVkSize;messageCode:TVkInt32;const pLayerPrefix:PVkChar;const pMessage:PVkChar;pUserData:PVkVoid):TVkBool32; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     PPVkDebugUtilsObjectNameInfoEXT=^PVkDebugUtilsObjectNameInfoEXT;
     PVkDebugUtilsObjectNameInfoEXT=^TVkDebugUtilsObjectNameInfoEXT;
     TVkDebugUtilsObjectNameInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT
       pNext:PVkVoid;
       objectType:TVkObjectType;
       objectHandle:TVkUInt64;
       pObjectName:PVkChar;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aObjectType:TVkObjectType;
                          const aObjectHandle:TVkUInt64;
                          const aPObjectName:PVkChar);
{$endif}
     end;

{$ifdef VulkanSC}
     PPVkFaultData=^PVkFaultData;
     PVkFaultData=^TVkFaultData;
     TVkFaultData=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_FAULT_DATA
       pNext:PVkVoid;
       faultLevel:TVkFaultLevel;
       faultType:TVkFaultType;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFaultLevel:TVkFaultLevel;
                          const aFaultType:TVkFaultType);
{$endif}
     end;
{$endif}

     PPVkDeviceMemoryReportCallbackDataEXT=^PVkDeviceMemoryReportCallbackDataEXT;
     PVkDeviceMemoryReportCallbackDataEXT=^TVkDeviceMemoryReportCallbackDataEXT;
     TVkDeviceMemoryReportCallbackDataEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT
       pNext:PVkVoid;
       flags:TVkDeviceMemoryReportFlagsEXT;
       type_:TVkDeviceMemoryReportEventTypeEXT;
       memoryObjectId:TVkUInt64;
       size:TVkDeviceSize;
       objectType:TVkObjectType;
       objectHandle:TVkUInt64;
       heapIndex:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkDeviceMemoryReportFlagsEXT;
                          const aType_:TVkDeviceMemoryReportEventTypeEXT;
                          const aMemoryObjectId:TVkUInt64;
                          const aSize:TVkDeviceSize;
                          const aObjectType:TVkObjectType;
                          const aObjectHandle:TVkUInt64;
                          const aHeapIndex:TVkUInt32);
{$endif}
     end;

     PPPFN_vkGetInstanceProcAddrLUNARG=^PPFN_vkGetInstanceProcAddrLUNARG;
     PPFN_vkGetInstanceProcAddrLUNARG=^TPFN_vkGetInstanceProcAddrLUNARG;
     TPFN_vkGetInstanceProcAddrLUNARG=function(instance:TVkInstance;const pName:PVkChar):TPFN_vkVoidFunction; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     PPVkBaseOutStructure=^PVkBaseOutStructure;
     PVkBaseOutStructure=^TVkBaseOutStructure;
     TVkBaseOutStructure=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType;
       pNext:PVkBaseOutStructure;
{$ifdef HAS_ADVANCED_RECORDS}
{$endif}
     end;

     PPVkBaseInStructure=^PVkBaseInStructure;
     PVkBaseInStructure=^TVkBaseInStructure;
     TVkBaseInStructure=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType;
       pNext:PVkBaseInStructure;
{$ifdef HAS_ADVANCED_RECORDS}
{$endif}
     end;

     PPVkOffset2D=^PVkOffset2D;
     PVkOffset2D=^TVkOffset2D;
     TVkOffset2D=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       x:TVkInt32;
       y:TVkInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aX:TVkInt32;
                          const aY:TVkInt32);
{$endif}
     end;

     PPVkOffset3D=^PVkOffset3D;
     PVkOffset3D=^TVkOffset3D;
     TVkOffset3D=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       x:TVkInt32;
       y:TVkInt32;
       z:TVkInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aX:TVkInt32;
                          const aY:TVkInt32;
                          const aZ:TVkInt32);
{$endif}
     end;

     PPVkExtent2D=^PVkExtent2D;
     PVkExtent2D=^TVkExtent2D;
     TVkExtent2D=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       width:TVkUInt32;
       height:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aWidth:TVkUInt32;
                          const aHeight:TVkUInt32);
{$endif}
     end;

     PPVkExtent3D=^PVkExtent3D;
     PVkExtent3D=^TVkExtent3D;
     TVkExtent3D=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       width:TVkUInt32;
       height:TVkUInt32;
       depth:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aWidth:TVkUInt32;
                          const aHeight:TVkUInt32;
                          const aDepth:TVkUInt32);
{$endif}
     end;

     PPVkViewport=^PVkViewport;
     PVkViewport=^TVkViewport;
     TVkViewport=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       x:TVkFloat;
       y:TVkFloat;
       width:TVkFloat;
       height:TVkFloat;
       minDepth:TVkFloat;
       maxDepth:TVkFloat;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aX:TVkFloat;
                          const aY:TVkFloat;
                          const aWidth:TVkFloat;
                          const aHeight:TVkFloat;
                          const aMinDepth:TVkFloat;
                          const aMaxDepth:TVkFloat);
{$endif}
     end;

     PPVkRect2D=^PVkRect2D;
     PVkRect2D=^TVkRect2D;
     TVkRect2D=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       offset:TVkOffset2D;
       extent:TVkExtent2D;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aOffset:TVkOffset2D;
                          const aExtent:TVkExtent2D);
{$endif}
     end;

     PPVkClearRect=^PVkClearRect;
     PVkClearRect=^TVkClearRect;
     TVkClearRect=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       rect:TVkRect2D;
       baseArrayLayer:TVkUInt32;
       layerCount:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aRect:TVkRect2D;
                          const aBaseArrayLayer:TVkUInt32;
                          const aLayerCount:TVkUInt32);
{$endif}
     end;

     PPVkComponentMapping=^PVkComponentMapping;
     PVkComponentMapping=^TVkComponentMapping;
     TVkComponentMapping=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       r:TVkComponentSwizzle;
       g:TVkComponentSwizzle;
       b:TVkComponentSwizzle;
       a:TVkComponentSwizzle;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aR:TVkComponentSwizzle;
                          const aG:TVkComponentSwizzle;
                          const aB:TVkComponentSwizzle;
                          const aA:TVkComponentSwizzle);
{$endif}
     end;

     PPVkPhysicalDeviceSparseProperties=^PVkPhysicalDeviceSparseProperties;
     PVkPhysicalDeviceSparseProperties=^TVkPhysicalDeviceSparseProperties;
     TVkPhysicalDeviceSparseProperties=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       residencyStandard2DBlockShape:TVkBool32;
       residencyStandard2DMultisampleBlockShape:TVkBool32;
       residencyStandard3DBlockShape:TVkBool32;
       residencyAlignedMipSize:TVkBool32;
       residencyNonResidentStrict:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aResidencyStandard2DBlockShape:TVkBool32;
                          const aResidencyStandard2DMultisampleBlockShape:TVkBool32;
                          const aResidencyStandard3DBlockShape:TVkBool32;
                          const aResidencyAlignedMipSize:TVkBool32;
                          const aResidencyNonResidentStrict:TVkBool32);
{$endif}
     end;

     PPVkExtensionProperties=^PVkExtensionProperties;
     PVkExtensionProperties=^TVkExtensionProperties;
     TVkExtensionProperties=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       extensionName:array[0..VK_MAX_EXTENSION_NAME_SIZE-1] of TVkChar;
       specVersion:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aExtensionName:TVkCharString;
                          const aSpecVersion:TVkUInt32);
{$endif}
     end;

     PPVkLayerProperties=^PVkLayerProperties;
     PVkLayerProperties=^TVkLayerProperties;
     TVkLayerProperties=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       layerName:array[0..VK_MAX_EXTENSION_NAME_SIZE-1] of TVkChar;
       specVersion:TVkUInt32;
       implementationVersion:TVkUInt32;
       description:array[0..VK_MAX_DESCRIPTION_SIZE-1] of TVkChar;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aLayerName:TVkCharString;
                          const aSpecVersion:TVkUInt32;
                          const aImplementationVersion:TVkUInt32;
                          const aDescription:TVkCharString);
{$endif}
     end;

     PPVkApplicationInfo=^PVkApplicationInfo;
     PVkApplicationInfo=^TVkApplicationInfo;
     TVkApplicationInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_APPLICATION_INFO
       pNext:PVkVoid;
       pApplicationName:PVkChar;
       applicationVersion:TVkUInt32;
       pEngineName:PVkChar;
       engineVersion:TVkUInt32;
       apiVersion:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPApplicationName:PVkChar;
                          const aApplicationVersion:TVkUInt32;
                          const aPEngineName:PVkChar;
                          const aEngineVersion:TVkUInt32;
                          const aApiVersion:TVkUInt32);
{$endif}
     end;

     PPVkAllocationCallbacks=^PVkAllocationCallbacks;
     PVkAllocationCallbacks=^TVkAllocationCallbacks;
     TVkAllocationCallbacks=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       pUserData:PVkVoid;
       pfnAllocation:TPFN_vkAllocationFunction;
       pfnReallocation:TPFN_vkReallocationFunction;
       pfnFree:TPFN_vkFreeFunction;
       pfnInternalAllocation:TPFN_vkInternalAllocationNotification;
       pfnInternalFree:TPFN_vkInternalFreeNotification;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPUserData:PVkVoid;
                          const aPfnAllocation:TPFN_vkAllocationFunction;
                          const aPfnReallocation:TPFN_vkReallocationFunction;
                          const aPfnFree:TPFN_vkFreeFunction;
                          const aPfnInternalAllocation:TPFN_vkInternalAllocationNotification;
                          const aPfnInternalFree:TPFN_vkInternalFreeNotification);
{$endif}
     end;

     PPVkDeviceQueueCreateInfo=^PVkDeviceQueueCreateInfo;
     PVkDeviceQueueCreateInfo=^TVkDeviceQueueCreateInfo;
     TVkDeviceQueueCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO
       pNext:PVkVoid;
       flags:TVkDeviceQueueCreateFlags;
       queueFamilyIndex:TVkUInt32;
       queueCount:TVkUInt32;
       pQueuePriorities:PVkFloat;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkDeviceQueueCreateFlags;
                          const aQueueFamilyIndex:TVkUInt32;
                          const aQueueCount:TVkUInt32;
                          const aPQueuePriorities:PVkFloat);
{$endif}
     end;

     PPVkPhysicalDeviceFeatures=^PVkPhysicalDeviceFeatures;
     PVkPhysicalDeviceFeatures=^TVkPhysicalDeviceFeatures;
     TVkPhysicalDeviceFeatures=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       robustBufferAccess:TVkBool32;
       fullDrawIndexUint32:TVkBool32;
       imageCubeArray:TVkBool32;
       independentBlend:TVkBool32;
       geometryShader:TVkBool32;
       tessellationShader:TVkBool32;
       sampleRateShading:TVkBool32;
       dualSrcBlend:TVkBool32;
       logicOp:TVkBool32;
       multiDrawIndirect:TVkBool32;
       drawIndirectFirstInstance:TVkBool32;
       depthClamp:TVkBool32;
       depthBiasClamp:TVkBool32;
       fillModeNonSolid:TVkBool32;
       depthBounds:TVkBool32;
       wideLines:TVkBool32;
       largePoints:TVkBool32;
       alphaToOne:TVkBool32;
       multiViewport:TVkBool32;
       samplerAnisotropy:TVkBool32;
       textureCompressionETC2:TVkBool32;
       textureCompressionASTC_LDR:TVkBool32;
       textureCompressionBC:TVkBool32;
       occlusionQueryPrecise:TVkBool32;
       pipelineStatisticsQuery:TVkBool32;
       vertexPipelineStoresAndAtomics:TVkBool32;
       fragmentStoresAndAtomics:TVkBool32;
       shaderTessellationAndGeometryPointSize:TVkBool32;
       shaderImageGatherExtended:TVkBool32;
       shaderStorageImageExtendedFormats:TVkBool32;
       shaderStorageImageMultisample:TVkBool32;
       shaderStorageImageReadWithoutFormat:TVkBool32;
       shaderStorageImageWriteWithoutFormat:TVkBool32;
       shaderUniformBufferArrayDynamicIndexing:TVkBool32;
       shaderSampledImageArrayDynamicIndexing:TVkBool32;
       shaderStorageBufferArrayDynamicIndexing:TVkBool32;
       shaderStorageImageArrayDynamicIndexing:TVkBool32;
       shaderClipDistance:TVkBool32;
       shaderCullDistance:TVkBool32;
       shaderFloat64:TVkBool32;
       shaderInt64:TVkBool32;
       shaderInt16:TVkBool32;
       shaderResourceResidency:TVkBool32;
       shaderResourceMinLod:TVkBool32;
       sparseBinding:TVkBool32;
       sparseResidencyBuffer:TVkBool32;
       sparseResidencyImage2D:TVkBool32;
       sparseResidencyImage3D:TVkBool32;
       sparseResidency2Samples:TVkBool32;
       sparseResidency4Samples:TVkBool32;
       sparseResidency8Samples:TVkBool32;
       sparseResidency16Samples:TVkBool32;
       sparseResidencyAliased:TVkBool32;
       variableMultisampleRate:TVkBool32;
       inheritedQueries:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aRobustBufferAccess:TVkBool32;
                          const aFullDrawIndexUint32:TVkBool32;
                          const aImageCubeArray:TVkBool32;
                          const aIndependentBlend:TVkBool32;
                          const aGeometryShader:TVkBool32;
                          const aTessellationShader:TVkBool32;
                          const aSampleRateShading:TVkBool32;
                          const aDualSrcBlend:TVkBool32;
                          const aLogicOp:TVkBool32;
                          const aMultiDrawIndirect:TVkBool32;
                          const aDrawIndirectFirstInstance:TVkBool32;
                          const aDepthClamp:TVkBool32;
                          const aDepthBiasClamp:TVkBool32;
                          const aFillModeNonSolid:TVkBool32;
                          const aDepthBounds:TVkBool32;
                          const aWideLines:TVkBool32;
                          const aLargePoints:TVkBool32;
                          const aAlphaToOne:TVkBool32;
                          const aMultiViewport:TVkBool32;
                          const aSamplerAnisotropy:TVkBool32;
                          const aTextureCompressionETC2:TVkBool32;
                          const aTextureCompressionASTC_LDR:TVkBool32;
                          const aTextureCompressionBC:TVkBool32;
                          const aOcclusionQueryPrecise:TVkBool32;
                          const aPipelineStatisticsQuery:TVkBool32;
                          const aVertexPipelineStoresAndAtomics:TVkBool32;
                          const aFragmentStoresAndAtomics:TVkBool32;
                          const aShaderTessellationAndGeometryPointSize:TVkBool32;
                          const aShaderImageGatherExtended:TVkBool32;
                          const aShaderStorageImageExtendedFormats:TVkBool32;
                          const aShaderStorageImageMultisample:TVkBool32;
                          const aShaderStorageImageReadWithoutFormat:TVkBool32;
                          const aShaderStorageImageWriteWithoutFormat:TVkBool32;
                          const aShaderUniformBufferArrayDynamicIndexing:TVkBool32;
                          const aShaderSampledImageArrayDynamicIndexing:TVkBool32;
                          const aShaderStorageBufferArrayDynamicIndexing:TVkBool32;
                          const aShaderStorageImageArrayDynamicIndexing:TVkBool32;
                          const aShaderClipDistance:TVkBool32;
                          const aShaderCullDistance:TVkBool32;
                          const aShaderFloat64:TVkBool32;
                          const aShaderInt64:TVkBool32;
                          const aShaderInt16:TVkBool32;
                          const aShaderResourceResidency:TVkBool32;
                          const aShaderResourceMinLod:TVkBool32;
                          const aSparseBinding:TVkBool32;
                          const aSparseResidencyBuffer:TVkBool32;
                          const aSparseResidencyImage2D:TVkBool32;
                          const aSparseResidencyImage3D:TVkBool32;
                          const aSparseResidency2Samples:TVkBool32;
                          const aSparseResidency4Samples:TVkBool32;
                          const aSparseResidency8Samples:TVkBool32;
                          const aSparseResidency16Samples:TVkBool32;
                          const aSparseResidencyAliased:TVkBool32;
                          const aVariableMultisampleRate:TVkBool32;
                          const aInheritedQueries:TVkBool32);
{$endif}
     end;

     PPVkInstanceCreateInfo=^PVkInstanceCreateInfo;
     PVkInstanceCreateInfo=^TVkInstanceCreateInfo;
     TVkInstanceCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO
       pNext:PVkVoid;
       flags:TVkInstanceCreateFlags;
       pApplicationInfo:PVkApplicationInfo;
       enabledLayerCount:TVkUInt32;
       ppEnabledLayerNames:PPVkChar;
       enabledExtensionCount:TVkUInt32;
       ppEnabledExtensionNames:PPVkChar;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkInstanceCreateFlags;
                          const aPApplicationInfo:PVkApplicationInfo;
                          const aEnabledLayerCount:TVkUInt32;
                          const aPpEnabledLayerNames:PPVkChar;
                          const aEnabledExtensionCount:TVkUInt32;
                          const aPpEnabledExtensionNames:PPVkChar);
{$endif}
     end;

     PPVkQueueFamilyProperties=^PVkQueueFamilyProperties;
     PVkQueueFamilyProperties=^TVkQueueFamilyProperties;
     TVkQueueFamilyProperties=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       queueFlags:TVkQueueFlags;
       queueCount:TVkUInt32;
       timestampValidBits:TVkUInt32;
       minImageTransferGranularity:TVkExtent3D;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aQueueFlags:TVkQueueFlags;
                          const aQueueCount:TVkUInt32;
                          const aTimestampValidBits:TVkUInt32;
                          const aMinImageTransferGranularity:TVkExtent3D);
{$endif}
     end;

     PPVkMemoryType=^PVkMemoryType;
     PVkMemoryType=^TVkMemoryType;
     TVkMemoryType=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       propertyFlags:TVkMemoryPropertyFlags;
       heapIndex:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPropertyFlags:TVkMemoryPropertyFlags;
                          const aHeapIndex:TVkUInt32);
{$endif}
     end;

     PPVkMemoryAllocateInfo=^PVkMemoryAllocateInfo;
     PVkMemoryAllocateInfo=^TVkMemoryAllocateInfo;
     TVkMemoryAllocateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO
       pNext:PVkVoid;
       allocationSize:TVkDeviceSize;
       memoryTypeIndex:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aAllocationSize:TVkDeviceSize;
                          const aMemoryTypeIndex:TVkUInt32);
{$endif}
     end;

     PPVkMemoryRequirements=^PVkMemoryRequirements;
     PVkMemoryRequirements=^TVkMemoryRequirements;
     TVkMemoryRequirements=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       size:TVkDeviceSize;
       alignment:TVkDeviceSize;
       memoryTypeBits:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSize:TVkDeviceSize;
                          const aAlignment:TVkDeviceSize;
                          const aMemoryTypeBits:TVkUInt32);
{$endif}
     end;

     PPVkSparseImageFormatProperties=^PVkSparseImageFormatProperties;
     PVkSparseImageFormatProperties=^TVkSparseImageFormatProperties;
     TVkSparseImageFormatProperties=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       aspectMask:TVkImageAspectFlags;
       imageGranularity:TVkExtent3D;
       flags:TVkSparseImageFormatFlags;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aAspectMask:TVkImageAspectFlags;
                          const aImageGranularity:TVkExtent3D;
                          const aFlags:TVkSparseImageFormatFlags);
{$endif}
     end;

     PPVkSparseImageMemoryRequirements=^PVkSparseImageMemoryRequirements;
     PVkSparseImageMemoryRequirements=^TVkSparseImageMemoryRequirements;
     TVkSparseImageMemoryRequirements=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       formatProperties:TVkSparseImageFormatProperties;
       imageMipTailFirstLod:TVkUInt32;
       imageMipTailSize:TVkDeviceSize;
       imageMipTailOffset:TVkDeviceSize;
       imageMipTailStride:TVkDeviceSize;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFormatProperties:TVkSparseImageFormatProperties;
                          const aImageMipTailFirstLod:TVkUInt32;
                          const aImageMipTailSize:TVkDeviceSize;
                          const aImageMipTailOffset:TVkDeviceSize;
                          const aImageMipTailStride:TVkDeviceSize);
{$endif}
     end;

     PPVkMemoryHeap=^PVkMemoryHeap;
     PVkMemoryHeap=^TVkMemoryHeap;
     TVkMemoryHeap=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       size:TVkDeviceSize;
       flags:TVkMemoryHeapFlags;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSize:TVkDeviceSize;
                          const aFlags:TVkMemoryHeapFlags);
{$endif}
     end;

     PPVkPhysicalDeviceMemoryProperties=^PVkPhysicalDeviceMemoryProperties;
     PVkPhysicalDeviceMemoryProperties=^TVkPhysicalDeviceMemoryProperties;
     TVkPhysicalDeviceMemoryProperties=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       memoryTypeCount:TVkUInt32;
       memoryTypes:array[0..VK_MAX_MEMORY_TYPES-1] of TVkMemoryType;
       memoryHeapCount:TVkUInt32;
       memoryHeaps:array[0..VK_MAX_MEMORY_HEAPS-1] of TVkMemoryHeap;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMemoryTypeCount:TVkUInt32;
                          const aMemoryTypes:array of TVkMemoryType;
                          const aMemoryHeapCount:TVkUInt32;
                          const aMemoryHeaps:array of TVkMemoryHeap);
{$endif}
     end;

     PPVkMappedMemoryRange=^PVkMappedMemoryRange;
     PVkMappedMemoryRange=^TVkMappedMemoryRange;
     TVkMappedMemoryRange=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE
       pNext:PVkVoid;
       memory:TVkDeviceMemory;
       offset:TVkDeviceSize;
       size:TVkDeviceSize;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMemory:TVkDeviceMemory;
                          const aOffset:TVkDeviceSize;
                          const aSize:TVkDeviceSize);
{$endif}
     end;

     PPVkFormatProperties=^PVkFormatProperties;
     PVkFormatProperties=^TVkFormatProperties;
     TVkFormatProperties=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       linearTilingFeatures:TVkFormatFeatureFlags;
       optimalTilingFeatures:TVkFormatFeatureFlags;
       bufferFeatures:TVkFormatFeatureFlags;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aLinearTilingFeatures:TVkFormatFeatureFlags;
                          const aOptimalTilingFeatures:TVkFormatFeatureFlags;
                          const aBufferFeatures:TVkFormatFeatureFlags);
{$endif}
     end;

     PPVkImageFormatProperties=^PVkImageFormatProperties;
     PVkImageFormatProperties=^TVkImageFormatProperties;
     TVkImageFormatProperties=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       maxExtent:TVkExtent3D;
       maxMipLevels:TVkUInt32;
       maxArrayLayers:TVkUInt32;
       sampleCounts:TVkSampleCountFlags;
       maxResourceSize:TVkDeviceSize;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMaxExtent:TVkExtent3D;
                          const aMaxMipLevels:TVkUInt32;
                          const aMaxArrayLayers:TVkUInt32;
                          const aSampleCounts:TVkSampleCountFlags;
                          const aMaxResourceSize:TVkDeviceSize);
{$endif}
     end;

     PPVkDescriptorBufferInfo=^PVkDescriptorBufferInfo;
     PVkDescriptorBufferInfo=^TVkDescriptorBufferInfo;
     TVkDescriptorBufferInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       buffer:TVkBuffer;
       offset:TVkDeviceSize;
       range:TVkDeviceSize;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aBuffer:TVkBuffer;
                          const aOffset:TVkDeviceSize;
                          const aRange:TVkDeviceSize);
{$endif}
     end;

     PPVkDescriptorImageInfo=^PVkDescriptorImageInfo;
     PVkDescriptorImageInfo=^TVkDescriptorImageInfo;
     TVkDescriptorImageInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sampler:TVkSampler;
       imageView:TVkImageView;
       imageLayout:TVkImageLayout;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSampler:TVkSampler;
                          const aImageView:TVkImageView;
                          const aImageLayout:TVkImageLayout);
{$endif}
     end;

     PPVkWriteDescriptorSet=^PVkWriteDescriptorSet;
     PVkWriteDescriptorSet=^TVkWriteDescriptorSet;
     TVkWriteDescriptorSet=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET
       pNext:PVkVoid;
       dstSet:TVkDescriptorSet;
       dstBinding:TVkUInt32;
       dstArrayElement:TVkUInt32;
       descriptorCount:TVkUInt32;
       descriptorType:TVkDescriptorType;
       pImageInfo:PVkDescriptorImageInfo;
       pBufferInfo:PVkDescriptorBufferInfo;
       pTexelBufferView:PVkBufferView;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDstSet:TVkDescriptorSet;
                          const aDstBinding:TVkUInt32;
                          const aDstArrayElement:TVkUInt32;
                          const aDescriptorCount:TVkUInt32;
                          const aDescriptorType:TVkDescriptorType;
                          const aPImageInfo:PVkDescriptorImageInfo;
                          const aPBufferInfo:PVkDescriptorBufferInfo;
                          const aPTexelBufferView:PVkBufferView);
{$endif}
     end;

     PPVkCopyDescriptorSet=^PVkCopyDescriptorSet;
     PVkCopyDescriptorSet=^TVkCopyDescriptorSet;
     TVkCopyDescriptorSet=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET
       pNext:PVkVoid;
       srcSet:TVkDescriptorSet;
       srcBinding:TVkUInt32;
       srcArrayElement:TVkUInt32;
       dstSet:TVkDescriptorSet;
       dstBinding:TVkUInt32;
       dstArrayElement:TVkUInt32;
       descriptorCount:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSrcSet:TVkDescriptorSet;
                          const aSrcBinding:TVkUInt32;
                          const aSrcArrayElement:TVkUInt32;
                          const aDstSet:TVkDescriptorSet;
                          const aDstBinding:TVkUInt32;
                          const aDstArrayElement:TVkUInt32;
                          const aDescriptorCount:TVkUInt32);
{$endif}
     end;

     PPVkBufferUsageFlags2CreateInfoKHR=^PVkBufferUsageFlags2CreateInfoKHR;
     PVkBufferUsageFlags2CreateInfoKHR=^TVkBufferUsageFlags2CreateInfoKHR;
     TVkBufferUsageFlags2CreateInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR
       pNext:PVkVoid;
       usage:TVkBufferUsageFlags2KHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aUsage:TVkBufferUsageFlags2KHR);
{$endif}
     end;

     PPVkBufferCreateInfo=^PVkBufferCreateInfo;
     PVkBufferCreateInfo=^TVkBufferCreateInfo;
     TVkBufferCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO
       pNext:PVkVoid;
       flags:TVkBufferCreateFlags;
       size:TVkDeviceSize;
       usage:TVkBufferUsageFlags;
       sharingMode:TVkSharingMode;
       queueFamilyIndexCount:TVkUInt32;
       pQueueFamilyIndices:PVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkBufferCreateFlags;
                          const aSize:TVkDeviceSize;
                          const aUsage:TVkBufferUsageFlags;
                          const aSharingMode:TVkSharingMode;
                          const aQueueFamilyIndexCount:TVkUInt32;
                          const aPQueueFamilyIndices:PVkUInt32);
{$endif}
     end;

     PPVkBufferViewCreateInfo=^PVkBufferViewCreateInfo;
     PVkBufferViewCreateInfo=^TVkBufferViewCreateInfo;
     TVkBufferViewCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO
       pNext:PVkVoid;
       flags:TVkBufferViewCreateFlags;
       buffer:TVkBuffer;
       format:TVkFormat;
       offset:TVkDeviceSize;
       range:TVkDeviceSize;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkBufferViewCreateFlags;
                          const aBuffer:TVkBuffer;
                          const aFormat:TVkFormat;
                          const aOffset:TVkDeviceSize;
                          const aRange:TVkDeviceSize);
{$endif}
     end;

     PPVkImageSubresource=^PVkImageSubresource;
     PVkImageSubresource=^TVkImageSubresource;
     TVkImageSubresource=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       aspectMask:TVkImageAspectFlags;
       mipLevel:TVkUInt32;
       arrayLayer:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aAspectMask:TVkImageAspectFlags;
                          const aMipLevel:TVkUInt32;
                          const aArrayLayer:TVkUInt32);
{$endif}
     end;

     PPVkImageSubresourceLayers=^PVkImageSubresourceLayers;
     PVkImageSubresourceLayers=^TVkImageSubresourceLayers;
     TVkImageSubresourceLayers=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       aspectMask:TVkImageAspectFlags;
       mipLevel:TVkUInt32;
       baseArrayLayer:TVkUInt32;
       layerCount:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aAspectMask:TVkImageAspectFlags;
                          const aMipLevel:TVkUInt32;
                          const aBaseArrayLayer:TVkUInt32;
                          const aLayerCount:TVkUInt32);
{$endif}
     end;

     PPVkImageSubresourceRange=^PVkImageSubresourceRange;
     PVkImageSubresourceRange=^TVkImageSubresourceRange;
     TVkImageSubresourceRange=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       aspectMask:TVkImageAspectFlags;
       baseMipLevel:TVkUInt32;
       levelCount:TVkUInt32;
       baseArrayLayer:TVkUInt32;
       layerCount:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aAspectMask:TVkImageAspectFlags;
                          const aBaseMipLevel:TVkUInt32;
                          const aLevelCount:TVkUInt32;
                          const aBaseArrayLayer:TVkUInt32;
                          const aLayerCount:TVkUInt32);
{$endif}
     end;

     PPVkMemoryBarrier=^PVkMemoryBarrier;
     PVkMemoryBarrier=^TVkMemoryBarrier;
     TVkMemoryBarrier=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_MEMORY_BARRIER
       pNext:PVkVoid;
       srcAccessMask:TVkAccessFlags;
       dstAccessMask:TVkAccessFlags;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSrcAccessMask:TVkAccessFlags;
                          const aDstAccessMask:TVkAccessFlags);
{$endif}
     end;

     PPVkBufferMemoryBarrier=^PVkBufferMemoryBarrier;
     PVkBufferMemoryBarrier=^TVkBufferMemoryBarrier;
     TVkBufferMemoryBarrier=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER
       pNext:PVkVoid;
       srcAccessMask:TVkAccessFlags;
       dstAccessMask:TVkAccessFlags;
       srcQueueFamilyIndex:TVkUInt32;
       dstQueueFamilyIndex:TVkUInt32;
       buffer:TVkBuffer;
       offset:TVkDeviceSize;
       size:TVkDeviceSize;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSrcAccessMask:TVkAccessFlags;
                          const aDstAccessMask:TVkAccessFlags;
                          const aSrcQueueFamilyIndex:TVkUInt32;
                          const aDstQueueFamilyIndex:TVkUInt32;
                          const aBuffer:TVkBuffer;
                          const aOffset:TVkDeviceSize;
                          const aSize:TVkDeviceSize);
{$endif}
     end;

     PPVkImageMemoryBarrier=^PVkImageMemoryBarrier;
     PVkImageMemoryBarrier=^TVkImageMemoryBarrier;
     TVkImageMemoryBarrier=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER
       pNext:PVkVoid;
       srcAccessMask:TVkAccessFlags;
       dstAccessMask:TVkAccessFlags;
       oldLayout:TVkImageLayout;
       newLayout:TVkImageLayout;
       srcQueueFamilyIndex:TVkUInt32;
       dstQueueFamilyIndex:TVkUInt32;
       image:TVkImage;
       subresourceRange:TVkImageSubresourceRange;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSrcAccessMask:TVkAccessFlags;
                          const aDstAccessMask:TVkAccessFlags;
                          const aOldLayout:TVkImageLayout;
                          const aNewLayout:TVkImageLayout;
                          const aSrcQueueFamilyIndex:TVkUInt32;
                          const aDstQueueFamilyIndex:TVkUInt32;
                          const aImage:TVkImage;
                          const aSubresourceRange:TVkImageSubresourceRange);
{$endif}
     end;

     PPVkImageCreateInfo=^PVkImageCreateInfo;
     PVkImageCreateInfo=^TVkImageCreateInfo;
     TVkImageCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO
       pNext:PVkVoid;
       flags:TVkImageCreateFlags;
       imageType:TVkImageType;
       format:TVkFormat;
       extent:TVkExtent3D;
       mipLevels:TVkUInt32;
       arrayLayers:TVkUInt32;
       samples:TVkSampleCountFlagBits;
       tiling:TVkImageTiling;
       usage:TVkImageUsageFlags;
       sharingMode:TVkSharingMode;
       queueFamilyIndexCount:TVkUInt32;
       pQueueFamilyIndices:PVkUInt32;
       initialLayout:TVkImageLayout;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkImageCreateFlags;
                          const aImageType:TVkImageType;
                          const aFormat:TVkFormat;
                          const aExtent:TVkExtent3D;
                          const aMipLevels:TVkUInt32;
                          const aArrayLayers:TVkUInt32;
                          const aSamples:TVkSampleCountFlagBits;
                          const aTiling:TVkImageTiling;
                          const aUsage:TVkImageUsageFlags;
                          const aSharingMode:TVkSharingMode;
                          const aQueueFamilyIndexCount:TVkUInt32;
                          const aPQueueFamilyIndices:PVkUInt32;
                          const aInitialLayout:TVkImageLayout);
{$endif}
     end;

     PPVkSubresourceLayout=^PVkSubresourceLayout;
     PVkSubresourceLayout=^TVkSubresourceLayout;
     TVkSubresourceLayout=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       offset:TVkDeviceSize;
       size:TVkDeviceSize;
       rowPitch:TVkDeviceSize;
       arrayPitch:TVkDeviceSize;
       depthPitch:TVkDeviceSize;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aOffset:TVkDeviceSize;
                          const aSize:TVkDeviceSize;
                          const aRowPitch:TVkDeviceSize;
                          const aArrayPitch:TVkDeviceSize;
                          const aDepthPitch:TVkDeviceSize);
{$endif}
     end;

     PPVkImageViewCreateInfo=^PVkImageViewCreateInfo;
     PVkImageViewCreateInfo=^TVkImageViewCreateInfo;
     TVkImageViewCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO
       pNext:PVkVoid;
       flags:TVkImageViewCreateFlags;
       image:TVkImage;
       viewType:TVkImageViewType;
       format:TVkFormat;
       components:TVkComponentMapping;
       subresourceRange:TVkImageSubresourceRange;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkImageViewCreateFlags;
                          const aImage:TVkImage;
                          const aViewType:TVkImageViewType;
                          const aFormat:TVkFormat;
                          const aComponents:TVkComponentMapping;
                          const aSubresourceRange:TVkImageSubresourceRange);
{$endif}
     end;

     PPVkBufferCopy=^PVkBufferCopy;
     PVkBufferCopy=^TVkBufferCopy;
     TVkBufferCopy=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       srcOffset:TVkDeviceSize;
       dstOffset:TVkDeviceSize;
       size:TVkDeviceSize;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSrcOffset:TVkDeviceSize;
                          const aDstOffset:TVkDeviceSize;
                          const aSize:TVkDeviceSize);
{$endif}
     end;

     PPVkSparseMemoryBind=^PVkSparseMemoryBind;
     PVkSparseMemoryBind=^TVkSparseMemoryBind;
     TVkSparseMemoryBind=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       resourceOffset:TVkDeviceSize;
       size:TVkDeviceSize;
       memory:TVkDeviceMemory;
       memoryOffset:TVkDeviceSize;
       flags:TVkSparseMemoryBindFlags;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aResourceOffset:TVkDeviceSize;
                          const aSize:TVkDeviceSize;
                          const aMemory:TVkDeviceMemory;
                          const aMemoryOffset:TVkDeviceSize;
                          const aFlags:TVkSparseMemoryBindFlags);
{$endif}
     end;

     PPVkSparseImageMemoryBind=^PVkSparseImageMemoryBind;
     PVkSparseImageMemoryBind=^TVkSparseImageMemoryBind;
     TVkSparseImageMemoryBind=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       subresource:TVkImageSubresource;
       offset:TVkOffset3D;
       extent:TVkExtent3D;
       memory:TVkDeviceMemory;
       memoryOffset:TVkDeviceSize;
       flags:TVkSparseMemoryBindFlags;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSubresource:TVkImageSubresource;
                          const aOffset:TVkOffset3D;
                          const aExtent:TVkExtent3D;
                          const aMemory:TVkDeviceMemory;
                          const aMemoryOffset:TVkDeviceSize;
                          const aFlags:TVkSparseMemoryBindFlags);
{$endif}
     end;

     PPVkSparseBufferMemoryBindInfo=^PVkSparseBufferMemoryBindInfo;
     PVkSparseBufferMemoryBindInfo=^TVkSparseBufferMemoryBindInfo;
     TVkSparseBufferMemoryBindInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       buffer:TVkBuffer;
       bindCount:TVkUInt32;
       pBinds:PVkSparseMemoryBind;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aBuffer:TVkBuffer;
                          const aBindCount:TVkUInt32;
                          const aPBinds:PVkSparseMemoryBind);
{$endif}
     end;

     PPVkSparseImageOpaqueMemoryBindInfo=^PVkSparseImageOpaqueMemoryBindInfo;
     PVkSparseImageOpaqueMemoryBindInfo=^TVkSparseImageOpaqueMemoryBindInfo;
     TVkSparseImageOpaqueMemoryBindInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       image:TVkImage;
       bindCount:TVkUInt32;
       pBinds:PVkSparseMemoryBind;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aImage:TVkImage;
                          const aBindCount:TVkUInt32;
                          const aPBinds:PVkSparseMemoryBind);
{$endif}
     end;

     PPVkSparseImageMemoryBindInfo=^PVkSparseImageMemoryBindInfo;
     PVkSparseImageMemoryBindInfo=^TVkSparseImageMemoryBindInfo;
     TVkSparseImageMemoryBindInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       image:TVkImage;
       bindCount:TVkUInt32;
       pBinds:PVkSparseImageMemoryBind;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aImage:TVkImage;
                          const aBindCount:TVkUInt32;
                          const aPBinds:PVkSparseImageMemoryBind);
{$endif}
     end;

     PPVkBindSparseInfo=^PVkBindSparseInfo;
     PVkBindSparseInfo=^TVkBindSparseInfo;
     TVkBindSparseInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_BIND_SPARSE_INFO
       pNext:PVkVoid;
       waitSemaphoreCount:TVkUInt32;
       pWaitSemaphores:PVkSemaphore;
       bufferBindCount:TVkUInt32;
       pBufferBinds:PVkSparseBufferMemoryBindInfo;
       imageOpaqueBindCount:TVkUInt32;
       pImageOpaqueBinds:PVkSparseImageOpaqueMemoryBindInfo;
       imageBindCount:TVkUInt32;
       pImageBinds:PVkSparseImageMemoryBindInfo;
       signalSemaphoreCount:TVkUInt32;
       pSignalSemaphores:PVkSemaphore;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aWaitSemaphoreCount:TVkUInt32;
                          const aPWaitSemaphores:PVkSemaphore;
                          const aBufferBindCount:TVkUInt32;
                          const aPBufferBinds:PVkSparseBufferMemoryBindInfo;
                          const aImageOpaqueBindCount:TVkUInt32;
                          const aPImageOpaqueBinds:PVkSparseImageOpaqueMemoryBindInfo;
                          const aImageBindCount:TVkUInt32;
                          const aPImageBinds:PVkSparseImageMemoryBindInfo;
                          const aSignalSemaphoreCount:TVkUInt32;
                          const aPSignalSemaphores:PVkSemaphore);
{$endif}
     end;

     PPVkImageCopy=^PVkImageCopy;
     PVkImageCopy=^TVkImageCopy;
     TVkImageCopy=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       srcSubresource:TVkImageSubresourceLayers;
       srcOffset:TVkOffset3D;
       dstSubresource:TVkImageSubresourceLayers;
       dstOffset:TVkOffset3D;
       extent:TVkExtent3D;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSrcSubresource:TVkImageSubresourceLayers;
                          const aSrcOffset:TVkOffset3D;
                          const aDstSubresource:TVkImageSubresourceLayers;
                          const aDstOffset:TVkOffset3D;
                          const aExtent:TVkExtent3D);
{$endif}
     end;

     PPVkImageBlit=^PVkImageBlit;
     PVkImageBlit=^TVkImageBlit;
     TVkImageBlit=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       srcSubresource:TVkImageSubresourceLayers;
       srcOffsets:array[0..1] of TVkOffset3D;
       dstSubresource:TVkImageSubresourceLayers;
       dstOffsets:array[0..1] of TVkOffset3D;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSrcSubresource:TVkImageSubresourceLayers;
                          const aSrcOffsets:array of TVkOffset3D;
                          const aDstSubresource:TVkImageSubresourceLayers;
                          const aDstOffsets:array of TVkOffset3D);
{$endif}
     end;

     PPVkBufferImageCopy=^PVkBufferImageCopy;
     PVkBufferImageCopy=^TVkBufferImageCopy;
     TVkBufferImageCopy=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       bufferOffset:TVkDeviceSize;
       bufferRowLength:TVkUInt32;
       bufferImageHeight:TVkUInt32;
       imageSubresource:TVkImageSubresourceLayers;
       imageOffset:TVkOffset3D;
       imageExtent:TVkExtent3D;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aBufferOffset:TVkDeviceSize;
                          const aBufferRowLength:TVkUInt32;
                          const aBufferImageHeight:TVkUInt32;
                          const aImageSubresource:TVkImageSubresourceLayers;
                          const aImageOffset:TVkOffset3D;
                          const aImageExtent:TVkExtent3D);
{$endif}
     end;

     PPVkCopyMemoryIndirectCommandNV=^PVkCopyMemoryIndirectCommandNV;
     PVkCopyMemoryIndirectCommandNV=^TVkCopyMemoryIndirectCommandNV;
     TVkCopyMemoryIndirectCommandNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       srcAddress:TVkDeviceAddress;
       dstAddress:TVkDeviceAddress;
       size:TVkDeviceSize;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSrcAddress:TVkDeviceAddress;
                          const aDstAddress:TVkDeviceAddress;
                          const aSize:TVkDeviceSize);
{$endif}
     end;

     PPVkCopyMemoryToImageIndirectCommandNV=^PVkCopyMemoryToImageIndirectCommandNV;
     PVkCopyMemoryToImageIndirectCommandNV=^TVkCopyMemoryToImageIndirectCommandNV;
     TVkCopyMemoryToImageIndirectCommandNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       srcAddress:TVkDeviceAddress;
       bufferRowLength:TVkUInt32;
       bufferImageHeight:TVkUInt32;
       imageSubresource:TVkImageSubresourceLayers;
       imageOffset:TVkOffset3D;
       imageExtent:TVkExtent3D;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSrcAddress:TVkDeviceAddress;
                          const aBufferRowLength:TVkUInt32;
                          const aBufferImageHeight:TVkUInt32;
                          const aImageSubresource:TVkImageSubresourceLayers;
                          const aImageOffset:TVkOffset3D;
                          const aImageExtent:TVkExtent3D);
{$endif}
     end;

     PPVkImageResolve=^PVkImageResolve;
     PVkImageResolve=^TVkImageResolve;
     TVkImageResolve=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       srcSubresource:TVkImageSubresourceLayers;
       srcOffset:TVkOffset3D;
       dstSubresource:TVkImageSubresourceLayers;
       dstOffset:TVkOffset3D;
       extent:TVkExtent3D;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSrcSubresource:TVkImageSubresourceLayers;
                          const aSrcOffset:TVkOffset3D;
                          const aDstSubresource:TVkImageSubresourceLayers;
                          const aDstOffset:TVkOffset3D;
                          const aExtent:TVkExtent3D);
{$endif}
     end;

     PPVkShaderModuleCreateInfo=^PVkShaderModuleCreateInfo;
     PVkShaderModuleCreateInfo=^TVkShaderModuleCreateInfo;
     TVkShaderModuleCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO
       pNext:PVkVoid;
       flags:TVkShaderModuleCreateFlags;
       codeSize:TVkSize;
       pCode:PVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkShaderModuleCreateFlags;
                          const aCodeSize:TVkSize;
                          const aPCode:PVkUInt32);
{$endif}
     end;

     PPVkDescriptorSetLayoutBinding=^PVkDescriptorSetLayoutBinding;
     PVkDescriptorSetLayoutBinding=^TVkDescriptorSetLayoutBinding;
     TVkDescriptorSetLayoutBinding=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       binding:TVkUInt32;
       descriptorType:TVkDescriptorType;
       descriptorCount:TVkUInt32;
       stageFlags:TVkShaderStageFlags;
       pImmutableSamplers:PVkSampler;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aBinding:TVkUInt32;
                          const aDescriptorType:TVkDescriptorType;
                          const aDescriptorCount:TVkUInt32;
                          const aStageFlags:TVkShaderStageFlags;
                          const aPImmutableSamplers:PVkSampler);
{$endif}
     end;

     PPVkDescriptorSetLayoutCreateInfo=^PVkDescriptorSetLayoutCreateInfo;
     PVkDescriptorSetLayoutCreateInfo=^TVkDescriptorSetLayoutCreateInfo;
     TVkDescriptorSetLayoutCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO
       pNext:PVkVoid;
       flags:TVkDescriptorSetLayoutCreateFlags;
       bindingCount:TVkUInt32;
       pBindings:PVkDescriptorSetLayoutBinding;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkDescriptorSetLayoutCreateFlags;
                          const aBindingCount:TVkUInt32;
                          const aPBindings:PVkDescriptorSetLayoutBinding);
{$endif}
     end;

     PPVkDescriptorPoolSize=^PVkDescriptorPoolSize;
     PVkDescriptorPoolSize=^TVkDescriptorPoolSize;
     TVkDescriptorPoolSize=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       type_:TVkDescriptorType;
       descriptorCount:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aType_:TVkDescriptorType;
                          const aDescriptorCount:TVkUInt32);
{$endif}
     end;

     PPVkDescriptorPoolCreateInfo=^PVkDescriptorPoolCreateInfo;
     PVkDescriptorPoolCreateInfo=^TVkDescriptorPoolCreateInfo;
     TVkDescriptorPoolCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO
       pNext:PVkVoid;
       flags:TVkDescriptorPoolCreateFlags;
       maxSets:TVkUInt32;
       poolSizeCount:TVkUInt32;
       pPoolSizes:PVkDescriptorPoolSize;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkDescriptorPoolCreateFlags;
                          const aMaxSets:TVkUInt32;
                          const aPoolSizeCount:TVkUInt32;
                          const aPPoolSizes:PVkDescriptorPoolSize);
{$endif}
     end;

     PPVkDescriptorSetAllocateInfo=^PVkDescriptorSetAllocateInfo;
     PVkDescriptorSetAllocateInfo=^TVkDescriptorSetAllocateInfo;
     TVkDescriptorSetAllocateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO
       pNext:PVkVoid;
       descriptorPool:TVkDescriptorPool;
       descriptorSetCount:TVkUInt32;
       pSetLayouts:PVkDescriptorSetLayout;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDescriptorPool:TVkDescriptorPool;
                          const aDescriptorSetCount:TVkUInt32;
                          const aPSetLayouts:PVkDescriptorSetLayout);
{$endif}
     end;

     PPVkSpecializationMapEntry=^PVkSpecializationMapEntry;
     PVkSpecializationMapEntry=^TVkSpecializationMapEntry;
     TVkSpecializationMapEntry=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       constantID:TVkUInt32;
       offset:TVkUInt32;
       size:TVkSize;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aConstantID:TVkUInt32;
                          const aOffset:TVkUInt32;
                          const aSize:TVkSize);
{$endif}
     end;

     PPVkSpecializationInfo=^PVkSpecializationInfo;
     PVkSpecializationInfo=^TVkSpecializationInfo;
     TVkSpecializationInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       mapEntryCount:TVkUInt32;
       pMapEntries:PVkSpecializationMapEntry;
       dataSize:TVkSize;
       pData:PVkVoid;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMapEntryCount:TVkUInt32;
                          const aPMapEntries:PVkSpecializationMapEntry;
                          const aDataSize:TVkSize;
                          const aPData:PVkVoid);
{$endif}
     end;

     PPVkPipelineShaderStageCreateInfo=^PVkPipelineShaderStageCreateInfo;
     PVkPipelineShaderStageCreateInfo=^TVkPipelineShaderStageCreateInfo;
     TVkPipelineShaderStageCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO
       pNext:PVkVoid;
       flags:TVkPipelineShaderStageCreateFlags;
       stage:TVkShaderStageFlagBits;
       module:TVkShaderModule;
       pName:PVkChar;
       pSpecializationInfo:PVkSpecializationInfo;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkPipelineShaderStageCreateFlags;
                          const aStage:TVkShaderStageFlagBits;
                          const aModule:TVkShaderModule;
                          const aPName:PVkChar;
                          const aPSpecializationInfo:PVkSpecializationInfo);
{$endif}
     end;

     PPVkComputePipelineCreateInfo=^PVkComputePipelineCreateInfo;
     PVkComputePipelineCreateInfo=^TVkComputePipelineCreateInfo;
     TVkComputePipelineCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO
       pNext:PVkVoid;
       flags:TVkPipelineCreateFlags;
       stage:TVkPipelineShaderStageCreateInfo;
       layout:TVkPipelineLayout;
       basePipelineHandle:TVkPipeline;
       basePipelineIndex:TVkInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkPipelineCreateFlags;
                          const aStage:TVkPipelineShaderStageCreateInfo;
                          const aLayout:TVkPipelineLayout;
                          const aBasePipelineHandle:TVkPipeline;
                          const aBasePipelineIndex:TVkInt32);
{$endif}
     end;

     PPVkComputePipelineIndirectBufferInfoNV=^PVkComputePipelineIndirectBufferInfoNV;
     PVkComputePipelineIndirectBufferInfoNV=^TVkComputePipelineIndirectBufferInfoNV;
     TVkComputePipelineIndirectBufferInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV
       pNext:PVkVoid;
       deviceAddress:TVkDeviceAddress;
       size:TVkDeviceSize;
       pipelineDeviceAddressCaptureReplay:TVkDeviceAddress;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDeviceAddress:TVkDeviceAddress;
                          const aSize:TVkDeviceSize;
                          const aPipelineDeviceAddressCaptureReplay:TVkDeviceAddress);
{$endif}
     end;

     PPVkPipelineCreateFlags2CreateInfoKHR=^PVkPipelineCreateFlags2CreateInfoKHR;
     PVkPipelineCreateFlags2CreateInfoKHR=^TVkPipelineCreateFlags2CreateInfoKHR;
     TVkPipelineCreateFlags2CreateInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR
       pNext:PVkVoid;
       flags:TVkPipelineCreateFlags2KHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkPipelineCreateFlags2KHR);
{$endif}
     end;

     PPVkVertexInputBindingDescription=^PVkVertexInputBindingDescription;
     PVkVertexInputBindingDescription=^TVkVertexInputBindingDescription;
     TVkVertexInputBindingDescription=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       binding:TVkUInt32;
       stride:TVkUInt32;
       inputRate:TVkVertexInputRate;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aBinding:TVkUInt32;
                          const aStride:TVkUInt32;
                          const aInputRate:TVkVertexInputRate);
{$endif}
     end;

     PPVkVertexInputAttributeDescription=^PVkVertexInputAttributeDescription;
     PVkVertexInputAttributeDescription=^TVkVertexInputAttributeDescription;
     TVkVertexInputAttributeDescription=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       location:TVkUInt32;
       binding:TVkUInt32;
       format:TVkFormat;
       offset:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aLocation:TVkUInt32;
                          const aBinding:TVkUInt32;
                          const aFormat:TVkFormat;
                          const aOffset:TVkUInt32);
{$endif}
     end;

     PPVkPipelineVertexInputStateCreateInfo=^PVkPipelineVertexInputStateCreateInfo;
     PVkPipelineVertexInputStateCreateInfo=^TVkPipelineVertexInputStateCreateInfo;
     TVkPipelineVertexInputStateCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO
       pNext:PVkVoid;
       flags:TVkPipelineVertexInputStateCreateFlags;
       vertexBindingDescriptionCount:TVkUInt32;
       pVertexBindingDescriptions:PVkVertexInputBindingDescription;
       vertexAttributeDescriptionCount:TVkUInt32;
       pVertexAttributeDescriptions:PVkVertexInputAttributeDescription;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkPipelineVertexInputStateCreateFlags;
                          const aVertexBindingDescriptionCount:TVkUInt32;
                          const aPVertexBindingDescriptions:PVkVertexInputBindingDescription;
                          const aVertexAttributeDescriptionCount:TVkUInt32;
                          const aPVertexAttributeDescriptions:PVkVertexInputAttributeDescription);
{$endif}
     end;

     PPVkPipelineInputAssemblyStateCreateInfo=^PVkPipelineInputAssemblyStateCreateInfo;
     PVkPipelineInputAssemblyStateCreateInfo=^TVkPipelineInputAssemblyStateCreateInfo;
     TVkPipelineInputAssemblyStateCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO
       pNext:PVkVoid;
       flags:TVkPipelineInputAssemblyStateCreateFlags;
       topology:TVkPrimitiveTopology;
       primitiveRestartEnable:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkPipelineInputAssemblyStateCreateFlags;
                          const aTopology:TVkPrimitiveTopology;
                          const aPrimitiveRestartEnable:TVkBool32);
{$endif}
     end;

     PPVkPipelineTessellationStateCreateInfo=^PVkPipelineTessellationStateCreateInfo;
     PVkPipelineTessellationStateCreateInfo=^TVkPipelineTessellationStateCreateInfo;
     TVkPipelineTessellationStateCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO
       pNext:PVkVoid;
       flags:TVkPipelineTessellationStateCreateFlags;
       patchControlPoints:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkPipelineTessellationStateCreateFlags;
                          const aPatchControlPoints:TVkUInt32);
{$endif}
     end;

     PPVkPipelineViewportStateCreateInfo=^PVkPipelineViewportStateCreateInfo;
     PVkPipelineViewportStateCreateInfo=^TVkPipelineViewportStateCreateInfo;
     TVkPipelineViewportStateCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO
       pNext:PVkVoid;
       flags:TVkPipelineViewportStateCreateFlags;
       viewportCount:TVkUInt32;
       pViewports:PVkViewport;
       scissorCount:TVkUInt32;
       pScissors:PVkRect2D;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkPipelineViewportStateCreateFlags;
                          const aViewportCount:TVkUInt32;
                          const aPViewports:PVkViewport;
                          const aScissorCount:TVkUInt32;
                          const aPScissors:PVkRect2D);
{$endif}
     end;

     PPVkPipelineRasterizationStateCreateInfo=^PVkPipelineRasterizationStateCreateInfo;
     PVkPipelineRasterizationStateCreateInfo=^TVkPipelineRasterizationStateCreateInfo;
     TVkPipelineRasterizationStateCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO
       pNext:PVkVoid;
       flags:TVkPipelineRasterizationStateCreateFlags;
       depthClampEnable:TVkBool32;
       rasterizerDiscardEnable:TVkBool32;
       polygonMode:TVkPolygonMode;
       cullMode:TVkCullModeFlags;
       frontFace:TVkFrontFace;
       depthBiasEnable:TVkBool32;
       depthBiasConstantFactor:TVkFloat;
       depthBiasClamp:TVkFloat;
       depthBiasSlopeFactor:TVkFloat;
       lineWidth:TVkFloat;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkPipelineRasterizationStateCreateFlags;
                          const aDepthClampEnable:TVkBool32;
                          const aRasterizerDiscardEnable:TVkBool32;
                          const aPolygonMode:TVkPolygonMode;
                          const aCullMode:TVkCullModeFlags;
                          const aFrontFace:TVkFrontFace;
                          const aDepthBiasEnable:TVkBool32;
                          const aDepthBiasConstantFactor:TVkFloat;
                          const aDepthBiasClamp:TVkFloat;
                          const aDepthBiasSlopeFactor:TVkFloat;
                          const aLineWidth:TVkFloat);
{$endif}
     end;

     PPVkPipelineMultisampleStateCreateInfo=^PVkPipelineMultisampleStateCreateInfo;
     PVkPipelineMultisampleStateCreateInfo=^TVkPipelineMultisampleStateCreateInfo;
     TVkPipelineMultisampleStateCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO
       pNext:PVkVoid;
       flags:TVkPipelineMultisampleStateCreateFlags;
       rasterizationSamples:TVkSampleCountFlagBits;
       sampleShadingEnable:TVkBool32;
       minSampleShading:TVkFloat;
       pSampleMask:PVkSampleMask;
       alphaToCoverageEnable:TVkBool32;
       alphaToOneEnable:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkPipelineMultisampleStateCreateFlags;
                          const aRasterizationSamples:TVkSampleCountFlagBits;
                          const aSampleShadingEnable:TVkBool32;
                          const aMinSampleShading:TVkFloat;
                          const aPSampleMask:PVkSampleMask;
                          const aAlphaToCoverageEnable:TVkBool32;
                          const aAlphaToOneEnable:TVkBool32);
{$endif}
     end;

     PPVkPipelineColorBlendAttachmentState=^PVkPipelineColorBlendAttachmentState;
     PVkPipelineColorBlendAttachmentState=^TVkPipelineColorBlendAttachmentState;
     TVkPipelineColorBlendAttachmentState=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       blendEnable:TVkBool32;
       srcColorBlendFactor:TVkBlendFactor;
       dstColorBlendFactor:TVkBlendFactor;
       colorBlendOp:TVkBlendOp;
       srcAlphaBlendFactor:TVkBlendFactor;
       dstAlphaBlendFactor:TVkBlendFactor;
       alphaBlendOp:TVkBlendOp;
       colorWriteMask:TVkColorComponentFlags;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aBlendEnable:TVkBool32;
                          const aSrcColorBlendFactor:TVkBlendFactor;
                          const aDstColorBlendFactor:TVkBlendFactor;
                          const aColorBlendOp:TVkBlendOp;
                          const aSrcAlphaBlendFactor:TVkBlendFactor;
                          const aDstAlphaBlendFactor:TVkBlendFactor;
                          const aAlphaBlendOp:TVkBlendOp;
                          const aColorWriteMask:TVkColorComponentFlags);
{$endif}
     end;

     PPVkPipelineColorBlendStateCreateInfo=^PVkPipelineColorBlendStateCreateInfo;
     PVkPipelineColorBlendStateCreateInfo=^TVkPipelineColorBlendStateCreateInfo;
     TVkPipelineColorBlendStateCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO
       pNext:PVkVoid;
       flags:TVkPipelineColorBlendStateCreateFlags;
       logicOpEnable:TVkBool32;
       logicOp:TVkLogicOp;
       attachmentCount:TVkUInt32;
       pAttachments:PVkPipelineColorBlendAttachmentState;
       blendConstants:array[0..3] of TVkFloat;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkPipelineColorBlendStateCreateFlags;
                          const aLogicOpEnable:TVkBool32;
                          const aLogicOp:TVkLogicOp;
                          const aAttachmentCount:TVkUInt32;
                          const aPAttachments:PVkPipelineColorBlendAttachmentState;
                          const aBlendConstants:array of TVkFloat);
{$endif}
     end;

     PPVkPipelineDynamicStateCreateInfo=^PVkPipelineDynamicStateCreateInfo;
     PVkPipelineDynamicStateCreateInfo=^TVkPipelineDynamicStateCreateInfo;
     TVkPipelineDynamicStateCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO
       pNext:PVkVoid;
       flags:TVkPipelineDynamicStateCreateFlags;
       dynamicStateCount:TVkUInt32;
       pDynamicStates:PVkDynamicState;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkPipelineDynamicStateCreateFlags;
                          const aDynamicStateCount:TVkUInt32;
                          const aPDynamicStates:PVkDynamicState);
{$endif}
     end;

     PPVkStencilOpState=^PVkStencilOpState;
     PVkStencilOpState=^TVkStencilOpState;
     TVkStencilOpState=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       failOp:TVkStencilOp;
       passOp:TVkStencilOp;
       depthFailOp:TVkStencilOp;
       compareOp:TVkCompareOp;
       compareMask:TVkUInt32;
       writeMask:TVkUInt32;
       reference:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFailOp:TVkStencilOp;
                          const aPassOp:TVkStencilOp;
                          const aDepthFailOp:TVkStencilOp;
                          const aCompareOp:TVkCompareOp;
                          const aCompareMask:TVkUInt32;
                          const aWriteMask:TVkUInt32;
                          const aReference:TVkUInt32);
{$endif}
     end;

     PPVkPipelineDepthStencilStateCreateInfo=^PVkPipelineDepthStencilStateCreateInfo;
     PVkPipelineDepthStencilStateCreateInfo=^TVkPipelineDepthStencilStateCreateInfo;
     TVkPipelineDepthStencilStateCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO
       pNext:PVkVoid;
       flags:TVkPipelineDepthStencilStateCreateFlags;
       depthTestEnable:TVkBool32;
       depthWriteEnable:TVkBool32;
       depthCompareOp:TVkCompareOp;
       depthBoundsTestEnable:TVkBool32;
       stencilTestEnable:TVkBool32;
       front:TVkStencilOpState;
       back:TVkStencilOpState;
       minDepthBounds:TVkFloat;
       maxDepthBounds:TVkFloat;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkPipelineDepthStencilStateCreateFlags;
                          const aDepthTestEnable:TVkBool32;
                          const aDepthWriteEnable:TVkBool32;
                          const aDepthCompareOp:TVkCompareOp;
                          const aDepthBoundsTestEnable:TVkBool32;
                          const aStencilTestEnable:TVkBool32;
                          const aFront:TVkStencilOpState;
                          const aBack:TVkStencilOpState;
                          const aMinDepthBounds:TVkFloat;
                          const aMaxDepthBounds:TVkFloat);
{$endif}
     end;

     PPVkGraphicsPipelineCreateInfo=^PVkGraphicsPipelineCreateInfo;
     PVkGraphicsPipelineCreateInfo=^TVkGraphicsPipelineCreateInfo;
     TVkGraphicsPipelineCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO
       pNext:PVkVoid;
       flags:TVkPipelineCreateFlags;
       stageCount:TVkUInt32;
       pStages:PVkPipelineShaderStageCreateInfo;
       pVertexInputState:PVkPipelineVertexInputStateCreateInfo;
       pInputAssemblyState:PVkPipelineInputAssemblyStateCreateInfo;
       pTessellationState:PVkPipelineTessellationStateCreateInfo;
       pViewportState:PVkPipelineViewportStateCreateInfo;
       pRasterizationState:PVkPipelineRasterizationStateCreateInfo;
       pMultisampleState:PVkPipelineMultisampleStateCreateInfo;
       pDepthStencilState:PVkPipelineDepthStencilStateCreateInfo;
       pColorBlendState:PVkPipelineColorBlendStateCreateInfo;
       pDynamicState:PVkPipelineDynamicStateCreateInfo;
       layout:TVkPipelineLayout;
       renderPass:TVkRenderPass;
       subpass:TVkUInt32;
       basePipelineHandle:TVkPipeline;
       basePipelineIndex:TVkInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkPipelineCreateFlags;
                          const aStageCount:TVkUInt32;
                          const aPStages:PVkPipelineShaderStageCreateInfo;
                          const aPVertexInputState:PVkPipelineVertexInputStateCreateInfo;
                          const aPInputAssemblyState:PVkPipelineInputAssemblyStateCreateInfo;
                          const aPTessellationState:PVkPipelineTessellationStateCreateInfo;
                          const aPViewportState:PVkPipelineViewportStateCreateInfo;
                          const aPRasterizationState:PVkPipelineRasterizationStateCreateInfo;
                          const aPMultisampleState:PVkPipelineMultisampleStateCreateInfo;
                          const aPDepthStencilState:PVkPipelineDepthStencilStateCreateInfo;
                          const aPColorBlendState:PVkPipelineColorBlendStateCreateInfo;
                          const aPDynamicState:PVkPipelineDynamicStateCreateInfo;
                          const aLayout:TVkPipelineLayout;
                          const aRenderPass:TVkRenderPass;
                          const aSubpass:TVkUInt32;
                          const aBasePipelineHandle:TVkPipeline;
                          const aBasePipelineIndex:TVkInt32);
{$endif}
     end;

     PPVkPipelineCacheCreateInfo=^PVkPipelineCacheCreateInfo;
     PVkPipelineCacheCreateInfo=^TVkPipelineCacheCreateInfo;
     TVkPipelineCacheCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO
       pNext:PVkVoid;
       flags:TVkPipelineCacheCreateFlags;
       initialDataSize:TVkSize;
       pInitialData:PVkVoid;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkPipelineCacheCreateFlags;
                          const aInitialDataSize:TVkSize;
                          const aPInitialData:PVkVoid);
{$endif}
     end;

     PPVkPipelineCacheHeaderVersionOne=^PVkPipelineCacheHeaderVersionOne;
     PVkPipelineCacheHeaderVersionOne=^TVkPipelineCacheHeaderVersionOne;
     TVkPipelineCacheHeaderVersionOne=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       headerSize:TVkUInt32;
       headerVersion:TVkPipelineCacheHeaderVersion;
       vendorID:TVkUInt32;
       deviceID:TVkUInt32;
       pipelineCacheUUID:array[0..VK_UUID_SIZE-1] of TVkUInt8;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aHeaderSize:TVkUInt32;
                          const aHeaderVersion:TVkPipelineCacheHeaderVersion;
                          const aVendorID:TVkUInt32;
                          const aDeviceID:TVkUInt32;
                          const aPipelineCacheUUID:array of TVkUInt8);
{$endif}
     end;

     PPVkPipelineCacheStageValidationIndexEntry=^PVkPipelineCacheStageValidationIndexEntry;
     PVkPipelineCacheStageValidationIndexEntry=^TVkPipelineCacheStageValidationIndexEntry;
     TVkPipelineCacheStageValidationIndexEntry=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       codeSize:TVkUInt64;
       codeOffset:TVkUInt64;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aCodeSize:TVkUInt64;
                          const aCodeOffset:TVkUInt64);
{$endif}
     end;

     PPVkPipelineCacheSafetyCriticalIndexEntry=^PVkPipelineCacheSafetyCriticalIndexEntry;
     PVkPipelineCacheSafetyCriticalIndexEntry=^TVkPipelineCacheSafetyCriticalIndexEntry;
     TVkPipelineCacheSafetyCriticalIndexEntry=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       pipelineIdentifier:array[0..VK_UUID_SIZE-1] of TVkUInt8;
       pipelineMemorySize:TVkUInt64;
       jsonSize:TVkUInt64;
       jsonOffset:TVkUInt64;
       stageIndexCount:TVkUInt32;
       stageIndexStride:TVkUInt32;
       stageIndexOffset:TVkUInt64;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPipelineIdentifier:array of TVkUInt8;
                          const aPipelineMemorySize:TVkUInt64;
                          const aJsonSize:TVkUInt64;
                          const aJsonOffset:TVkUInt64;
                          const aStageIndexCount:TVkUInt32;
                          const aStageIndexStride:TVkUInt32;
                          const aStageIndexOffset:TVkUInt64);
{$endif}
     end;

     PPVkPipelineCacheHeaderVersionSafetyCriticalOne=^PVkPipelineCacheHeaderVersionSafetyCriticalOne;
     PVkPipelineCacheHeaderVersionSafetyCriticalOne=^TVkPipelineCacheHeaderVersionSafetyCriticalOne;
     TVkPipelineCacheHeaderVersionSafetyCriticalOne=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       headerVersionOne:TVkPipelineCacheHeaderVersionOne;
       validationVersion:TVkPipelineCacheValidationVersion;
       implementationData:TVkUInt32;
       pipelineIndexCount:TVkUInt32;
       pipelineIndexStride:TVkUInt32;
       pipelineIndexOffset:TVkUInt64;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aHeaderVersionOne:TVkPipelineCacheHeaderVersionOne;
                          const aValidationVersion:TVkPipelineCacheValidationVersion;
                          const aImplementationData:TVkUInt32;
                          const aPipelineIndexCount:TVkUInt32;
                          const aPipelineIndexStride:TVkUInt32;
                          const aPipelineIndexOffset:TVkUInt64);
{$endif}
     end;

     PPVkPushConstantRange=^PVkPushConstantRange;
     PVkPushConstantRange=^TVkPushConstantRange;
     TVkPushConstantRange=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       stageFlags:TVkShaderStageFlags;
       offset:TVkUInt32;
       size:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aStageFlags:TVkShaderStageFlags;
                          const aOffset:TVkUInt32;
                          const aSize:TVkUInt32);
{$endif}
     end;

     PPVkPipelineLayoutCreateInfo=^PVkPipelineLayoutCreateInfo;
     PVkPipelineLayoutCreateInfo=^TVkPipelineLayoutCreateInfo;
     TVkPipelineLayoutCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO
       pNext:PVkVoid;
       flags:TVkPipelineLayoutCreateFlags;
       setLayoutCount:TVkUInt32;
       pSetLayouts:PVkDescriptorSetLayout;
       pushConstantRangeCount:TVkUInt32;
       pPushConstantRanges:PVkPushConstantRange;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkPipelineLayoutCreateFlags;
                          const aSetLayoutCount:TVkUInt32;
                          const aPSetLayouts:PVkDescriptorSetLayout;
                          const aPushConstantRangeCount:TVkUInt32;
                          const aPPushConstantRanges:PVkPushConstantRange);
{$endif}
     end;

     PPVkSamplerCreateInfo=^PVkSamplerCreateInfo;
     PVkSamplerCreateInfo=^TVkSamplerCreateInfo;
     TVkSamplerCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO
       pNext:PVkVoid;
       flags:TVkSamplerCreateFlags;
       magFilter:TVkFilter;
       minFilter:TVkFilter;
       mipmapMode:TVkSamplerMipmapMode;
       addressModeU:TVkSamplerAddressMode;
       addressModeV:TVkSamplerAddressMode;
       addressModeW:TVkSamplerAddressMode;
       mipLodBias:TVkFloat;
       anisotropyEnable:TVkBool32;
       maxAnisotropy:TVkFloat;
       compareEnable:TVkBool32;
       compareOp:TVkCompareOp;
       minLod:TVkFloat;
       maxLod:TVkFloat;
       borderColor:TVkBorderColor;
       unnormalizedCoordinates:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkSamplerCreateFlags;
                          const aMagFilter:TVkFilter;
                          const aMinFilter:TVkFilter;
                          const aMipmapMode:TVkSamplerMipmapMode;
                          const aAddressModeU:TVkSamplerAddressMode;
                          const aAddressModeV:TVkSamplerAddressMode;
                          const aAddressModeW:TVkSamplerAddressMode;
                          const aMipLodBias:TVkFloat;
                          const aAnisotropyEnable:TVkBool32;
                          const aMaxAnisotropy:TVkFloat;
                          const aCompareEnable:TVkBool32;
                          const aCompareOp:TVkCompareOp;
                          const aMinLod:TVkFloat;
                          const aMaxLod:TVkFloat;
                          const aBorderColor:TVkBorderColor;
                          const aUnnormalizedCoordinates:TVkBool32);
{$endif}
     end;

     PPVkCommandPoolCreateInfo=^PVkCommandPoolCreateInfo;
     PVkCommandPoolCreateInfo=^TVkCommandPoolCreateInfo;
     TVkCommandPoolCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO
       pNext:PVkVoid;
       flags:TVkCommandPoolCreateFlags;
       queueFamilyIndex:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkCommandPoolCreateFlags;
                          const aQueueFamilyIndex:TVkUInt32);
{$endif}
     end;

     PPVkCommandBufferAllocateInfo=^PVkCommandBufferAllocateInfo;
     PVkCommandBufferAllocateInfo=^TVkCommandBufferAllocateInfo;
     TVkCommandBufferAllocateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO
       pNext:PVkVoid;
       commandPool:TVkCommandPool;
       level:TVkCommandBufferLevel;
       commandBufferCount:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aCommandPool:TVkCommandPool;
                          const aLevel:TVkCommandBufferLevel;
                          const aCommandBufferCount:TVkUInt32);
{$endif}
     end;

     PPVkCommandBufferInheritanceInfo=^PVkCommandBufferInheritanceInfo;
     PVkCommandBufferInheritanceInfo=^TVkCommandBufferInheritanceInfo;
     TVkCommandBufferInheritanceInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO
       pNext:PVkVoid;
       renderPass:TVkRenderPass;
       subpass:TVkUInt32;
       framebuffer:TVkFramebuffer;
       occlusionQueryEnable:TVkBool32;
       queryFlags:TVkQueryControlFlags;
       pipelineStatistics:TVkQueryPipelineStatisticFlags;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aRenderPass:TVkRenderPass;
                          const aSubpass:TVkUInt32;
                          const aFramebuffer:TVkFramebuffer;
                          const aOcclusionQueryEnable:TVkBool32;
                          const aQueryFlags:TVkQueryControlFlags;
                          const aPipelineStatistics:TVkQueryPipelineStatisticFlags);
{$endif}
     end;

     PPVkCommandBufferBeginInfo=^PVkCommandBufferBeginInfo;
     PVkCommandBufferBeginInfo=^TVkCommandBufferBeginInfo;
     TVkCommandBufferBeginInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO
       pNext:PVkVoid;
       flags:TVkCommandBufferUsageFlags;
       pInheritanceInfo:PVkCommandBufferInheritanceInfo;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkCommandBufferUsageFlags;
                          const aPInheritanceInfo:PVkCommandBufferInheritanceInfo);
{$endif}
     end;

     PPVkClearColorValue=^PVkClearColorValue;
     PVkClearColorValue=^TVkClearColorValue;
     TVkClearColorValue=record
      case longint of
       0:(
        float32:array[0..3] of TVkFloat;
       );
       1:(
        int32:array[0..3] of TVkInt32;
       );
       2:(
        uint32:array[0..3] of TVkUInt32;
       );
     end;

     PPVkClearDepthStencilValue=^PVkClearDepthStencilValue;
     PVkClearDepthStencilValue=^TVkClearDepthStencilValue;
     TVkClearDepthStencilValue=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       depth:TVkFloat;
       stencil:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDepth:TVkFloat;
                          const aStencil:TVkUInt32);
{$endif}
     end;

     PPVkClearValue=^PVkClearValue;
     PVkClearValue=^TVkClearValue;
     TVkClearValue=record
      case longint of
       0:(
        color:TVkClearColorValue;
       );
       1:(
        depthStencil:TVkClearDepthStencilValue;
       );
     end;

     PPVkRenderPassBeginInfo=^PVkRenderPassBeginInfo;
     PVkRenderPassBeginInfo=^TVkRenderPassBeginInfo;
     TVkRenderPassBeginInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO
       pNext:PVkVoid;
       renderPass:TVkRenderPass;
       framebuffer:TVkFramebuffer;
       renderArea:TVkRect2D;
       clearValueCount:TVkUInt32;
       pClearValues:PVkClearValue;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aRenderPass:TVkRenderPass;
                          const aFramebuffer:TVkFramebuffer;
                          const aRenderArea:TVkRect2D;
                          const aClearValueCount:TVkUInt32;
                          const aPClearValues:PVkClearValue);
{$endif}
     end;

     PPVkClearAttachment=^PVkClearAttachment;
     PVkClearAttachment=^TVkClearAttachment;
     TVkClearAttachment=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       aspectMask:TVkImageAspectFlags;
       colorAttachment:TVkUInt32;
       clearValue:TVkClearValue;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aAspectMask:TVkImageAspectFlags;
                          const aColorAttachment:TVkUInt32;
                          const aClearValue:TVkClearValue);
{$endif}
     end;

     PPVkAttachmentDescription=^PVkAttachmentDescription;
     PVkAttachmentDescription=^TVkAttachmentDescription;
     TVkAttachmentDescription=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       flags:TVkAttachmentDescriptionFlags;
       format:TVkFormat;
       samples:TVkSampleCountFlagBits;
       loadOp:TVkAttachmentLoadOp;
       storeOp:TVkAttachmentStoreOp;
       stencilLoadOp:TVkAttachmentLoadOp;
       stencilStoreOp:TVkAttachmentStoreOp;
       initialLayout:TVkImageLayout;
       finalLayout:TVkImageLayout;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkAttachmentDescriptionFlags;
                          const aFormat:TVkFormat;
                          const aSamples:TVkSampleCountFlagBits;
                          const aLoadOp:TVkAttachmentLoadOp;
                          const aStoreOp:TVkAttachmentStoreOp;
                          const aStencilLoadOp:TVkAttachmentLoadOp;
                          const aStencilStoreOp:TVkAttachmentStoreOp;
                          const aInitialLayout:TVkImageLayout;
                          const aFinalLayout:TVkImageLayout);
{$endif}
     end;

     PPVkAttachmentReference=^PVkAttachmentReference;
     PVkAttachmentReference=^TVkAttachmentReference;
     TVkAttachmentReference=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       attachment:TVkUInt32;
       layout:TVkImageLayout;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aAttachment:TVkUInt32;
                          const aLayout:TVkImageLayout);
{$endif}
     end;

     PPVkSubpassDescription=^PVkSubpassDescription;
     PVkSubpassDescription=^TVkSubpassDescription;
     TVkSubpassDescription=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       flags:TVkSubpassDescriptionFlags;
       pipelineBindPoint:TVkPipelineBindPoint;
       inputAttachmentCount:TVkUInt32;
       pInputAttachments:PVkAttachmentReference;
       colorAttachmentCount:TVkUInt32;
       pColorAttachments:PVkAttachmentReference;
       pResolveAttachments:PVkAttachmentReference;
       pDepthStencilAttachment:PVkAttachmentReference;
       preserveAttachmentCount:TVkUInt32;
       pPreserveAttachments:PVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkSubpassDescriptionFlags;
                          const aPipelineBindPoint:TVkPipelineBindPoint;
                          const aInputAttachmentCount:TVkUInt32;
                          const aPInputAttachments:PVkAttachmentReference;
                          const aColorAttachmentCount:TVkUInt32;
                          const aPColorAttachments:PVkAttachmentReference;
                          const aPResolveAttachments:PVkAttachmentReference;
                          const aPDepthStencilAttachment:PVkAttachmentReference;
                          const aPreserveAttachmentCount:TVkUInt32;
                          const aPPreserveAttachments:PVkUInt32);
{$endif}
     end;

     PPVkSubpassDependency=^PVkSubpassDependency;
     PVkSubpassDependency=^TVkSubpassDependency;
     TVkSubpassDependency=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       srcSubpass:TVkUInt32;
       dstSubpass:TVkUInt32;
       srcStageMask:TVkPipelineStageFlags;
       dstStageMask:TVkPipelineStageFlags;
       srcAccessMask:TVkAccessFlags;
       dstAccessMask:TVkAccessFlags;
       dependencyFlags:TVkDependencyFlags;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSrcSubpass:TVkUInt32;
                          const aDstSubpass:TVkUInt32;
                          const aSrcStageMask:TVkPipelineStageFlags;
                          const aDstStageMask:TVkPipelineStageFlags;
                          const aSrcAccessMask:TVkAccessFlags;
                          const aDstAccessMask:TVkAccessFlags;
                          const aDependencyFlags:TVkDependencyFlags);
{$endif}
     end;

     PPVkRenderPassCreateInfo=^PVkRenderPassCreateInfo;
     PVkRenderPassCreateInfo=^TVkRenderPassCreateInfo;
     TVkRenderPassCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO
       pNext:PVkVoid;
       flags:TVkRenderPassCreateFlags;
       attachmentCount:TVkUInt32;
       pAttachments:PVkAttachmentDescription;
       subpassCount:TVkUInt32;
       pSubpasses:PVkSubpassDescription;
       dependencyCount:TVkUInt32;
       pDependencies:PVkSubpassDependency;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkRenderPassCreateFlags;
                          const aAttachmentCount:TVkUInt32;
                          const aPAttachments:PVkAttachmentDescription;
                          const aSubpassCount:TVkUInt32;
                          const aPSubpasses:PVkSubpassDescription;
                          const aDependencyCount:TVkUInt32;
                          const aPDependencies:PVkSubpassDependency);
{$endif}
     end;

     PPVkEventCreateInfo=^PVkEventCreateInfo;
     PVkEventCreateInfo=^TVkEventCreateInfo;
     TVkEventCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_EVENT_CREATE_INFO
       pNext:PVkVoid;
       flags:TVkEventCreateFlags;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkEventCreateFlags);
{$endif}
     end;

     PPVkFenceCreateInfo=^PVkFenceCreateInfo;
     PVkFenceCreateInfo=^TVkFenceCreateInfo;
     TVkFenceCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_FENCE_CREATE_INFO
       pNext:PVkVoid;
       flags:TVkFenceCreateFlags;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkFenceCreateFlags);
{$endif}
     end;

     PPVkDeviceCreateInfo=^PVkDeviceCreateInfo;
     PVkDeviceCreateInfo=^TVkDeviceCreateInfo;
     TVkDeviceCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO
       pNext:PVkVoid;
       flags:TVkDeviceCreateFlags;
       queueCreateInfoCount:TVkUInt32;
       pQueueCreateInfos:PVkDeviceQueueCreateInfo;
       enabledLayerCount:TVkUInt32;
       ppEnabledLayerNames:PPVkChar;
       enabledExtensionCount:TVkUInt32;
       ppEnabledExtensionNames:PPVkChar;
       pEnabledFeatures:PVkPhysicalDeviceFeatures;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkDeviceCreateFlags;
                          const aQueueCreateInfoCount:TVkUInt32;
                          const aPQueueCreateInfos:PVkDeviceQueueCreateInfo;
                          const aEnabledLayerCount:TVkUInt32;
                          const aPpEnabledLayerNames:PPVkChar;
                          const aEnabledExtensionCount:TVkUInt32;
                          const aPpEnabledExtensionNames:PPVkChar;
                          const aPEnabledFeatures:PVkPhysicalDeviceFeatures);
{$endif}
     end;

     PPVkPhysicalDeviceLimits=^PVkPhysicalDeviceLimits;
     PVkPhysicalDeviceLimits=^TVkPhysicalDeviceLimits;
     TVkPhysicalDeviceLimits=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       maxImageDimension1D:TVkUInt32;
       maxImageDimension2D:TVkUInt32;
       maxImageDimension3D:TVkUInt32;
       maxImageDimensionCube:TVkUInt32;
       maxImageArrayLayers:TVkUInt32;
       maxTexelBufferElements:TVkUInt32;
       maxUniformBufferRange:TVkUInt32;
       maxStorageBufferRange:TVkUInt32;
       maxPushConstantsSize:TVkUInt32;
       maxMemoryAllocationCount:TVkUInt32;
       maxSamplerAllocationCount:TVkUInt32;
       bufferImageGranularity:TVkDeviceSize;
       sparseAddressSpaceSize:TVkDeviceSize;
       maxBoundDescriptorSets:TVkUInt32;
       maxPerStageDescriptorSamplers:TVkUInt32;
       maxPerStageDescriptorUniformBuffers:TVkUInt32;
       maxPerStageDescriptorStorageBuffers:TVkUInt32;
       maxPerStageDescriptorSampledImages:TVkUInt32;
       maxPerStageDescriptorStorageImages:TVkUInt32;
       maxPerStageDescriptorInputAttachments:TVkUInt32;
       maxPerStageResources:TVkUInt32;
       maxDescriptorSetSamplers:TVkUInt32;
       maxDescriptorSetUniformBuffers:TVkUInt32;
       maxDescriptorSetUniformBuffersDynamic:TVkUInt32;
       maxDescriptorSetStorageBuffers:TVkUInt32;
       maxDescriptorSetStorageBuffersDynamic:TVkUInt32;
       maxDescriptorSetSampledImages:TVkUInt32;
       maxDescriptorSetStorageImages:TVkUInt32;
       maxDescriptorSetInputAttachments:TVkUInt32;
       maxVertexInputAttributes:TVkUInt32;
       maxVertexInputBindings:TVkUInt32;
       maxVertexInputAttributeOffset:TVkUInt32;
       maxVertexInputBindingStride:TVkUInt32;
       maxVertexOutputComponents:TVkUInt32;
       maxTessellationGenerationLevel:TVkUInt32;
       maxTessellationPatchSize:TVkUInt32;
       maxTessellationControlPerVertexInputComponents:TVkUInt32;
       maxTessellationControlPerVertexOutputComponents:TVkUInt32;
       maxTessellationControlPerPatchOutputComponents:TVkUInt32;
       maxTessellationControlTotalOutputComponents:TVkUInt32;
       maxTessellationEvaluationInputComponents:TVkUInt32;
       maxTessellationEvaluationOutputComponents:TVkUInt32;
       maxGeometryShaderInvocations:TVkUInt32;
       maxGeometryInputComponents:TVkUInt32;
       maxGeometryOutputComponents:TVkUInt32;
       maxGeometryOutputVertices:TVkUInt32;
       maxGeometryTotalOutputComponents:TVkUInt32;
       maxFragmentInputComponents:TVkUInt32;
       maxFragmentOutputAttachments:TVkUInt32;
       maxFragmentDualSrcAttachments:TVkUInt32;
       maxFragmentCombinedOutputResources:TVkUInt32;
       maxComputeSharedMemorySize:TVkUInt32;
       maxComputeWorkGroupCount:array[0..2] of TVkUInt32;
       maxComputeWorkGroupInvocations:TVkUInt32;
       maxComputeWorkGroupSize:array[0..2] of TVkUInt32;
       subPixelPrecisionBits:TVkUInt32;
       subTexelPrecisionBits:TVkUInt32;
       mipmapPrecisionBits:TVkUInt32;
       maxDrawIndexedIndexValue:TVkUInt32;
       maxDrawIndirectCount:TVkUInt32;
       maxSamplerLodBias:TVkFloat;
       maxSamplerAnisotropy:TVkFloat;
       maxViewports:TVkUInt32;
       maxViewportDimensions:array[0..1] of TVkUInt32;
       viewportBoundsRange:array[0..1] of TVkFloat;
       viewportSubPixelBits:TVkUInt32;
       minMemoryMapAlignment:TVkSize;
       minTexelBufferOffsetAlignment:TVkDeviceSize;
       minUniformBufferOffsetAlignment:TVkDeviceSize;
       minStorageBufferOffsetAlignment:TVkDeviceSize;
       minTexelOffset:TVkInt32;
       maxTexelOffset:TVkUInt32;
       minTexelGatherOffset:TVkInt32;
       maxTexelGatherOffset:TVkUInt32;
       minInterpolationOffset:TVkFloat;
       maxInterpolationOffset:TVkFloat;
       subPixelInterpolationOffsetBits:TVkUInt32;
       maxFramebufferWidth:TVkUInt32;
       maxFramebufferHeight:TVkUInt32;
       maxFramebufferLayers:TVkUInt32;
       framebufferColorSampleCounts:TVkSampleCountFlags;
       framebufferDepthSampleCounts:TVkSampleCountFlags;
       framebufferStencilSampleCounts:TVkSampleCountFlags;
       framebufferNoAttachmentsSampleCounts:TVkSampleCountFlags;
       maxColorAttachments:TVkUInt32;
       sampledImageColorSampleCounts:TVkSampleCountFlags;
       sampledImageIntegerSampleCounts:TVkSampleCountFlags;
       sampledImageDepthSampleCounts:TVkSampleCountFlags;
       sampledImageStencilSampleCounts:TVkSampleCountFlags;
       storageImageSampleCounts:TVkSampleCountFlags;
       maxSampleMaskWords:TVkUInt32;
       timestampComputeAndGraphics:TVkBool32;
       timestampPeriod:TVkFloat;
       maxClipDistances:TVkUInt32;
       maxCullDistances:TVkUInt32;
       maxCombinedClipAndCullDistances:TVkUInt32;
       discreteQueuePriorities:TVkUInt32;
       pointSizeRange:array[0..1] of TVkFloat;
       lineWidthRange:array[0..1] of TVkFloat;
       pointSizeGranularity:TVkFloat;
       lineWidthGranularity:TVkFloat;
       strictLines:TVkBool32;
       standardSampleLocations:TVkBool32;
       optimalBufferCopyOffsetAlignment:TVkDeviceSize;
       optimalBufferCopyRowPitchAlignment:TVkDeviceSize;
       nonCoherentAtomSize:TVkDeviceSize;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMaxImageDimension1D:TVkUInt32;
                          const aMaxImageDimension2D:TVkUInt32;
                          const aMaxImageDimension3D:TVkUInt32;
                          const aMaxImageDimensionCube:TVkUInt32;
                          const aMaxImageArrayLayers:TVkUInt32;
                          const aMaxTexelBufferElements:TVkUInt32;
                          const aMaxUniformBufferRange:TVkUInt32;
                          const aMaxStorageBufferRange:TVkUInt32;
                          const aMaxPushConstantsSize:TVkUInt32;
                          const aMaxMemoryAllocationCount:TVkUInt32;
                          const aMaxSamplerAllocationCount:TVkUInt32;
                          const aBufferImageGranularity:TVkDeviceSize;
                          const aSparseAddressSpaceSize:TVkDeviceSize;
                          const aMaxBoundDescriptorSets:TVkUInt32;
                          const aMaxPerStageDescriptorSamplers:TVkUInt32;
                          const aMaxPerStageDescriptorUniformBuffers:TVkUInt32;
                          const aMaxPerStageDescriptorStorageBuffers:TVkUInt32;
                          const aMaxPerStageDescriptorSampledImages:TVkUInt32;
                          const aMaxPerStageDescriptorStorageImages:TVkUInt32;
                          const aMaxPerStageDescriptorInputAttachments:TVkUInt32;
                          const aMaxPerStageResources:TVkUInt32;
                          const aMaxDescriptorSetSamplers:TVkUInt32;
                          const aMaxDescriptorSetUniformBuffers:TVkUInt32;
                          const aMaxDescriptorSetUniformBuffersDynamic:TVkUInt32;
                          const aMaxDescriptorSetStorageBuffers:TVkUInt32;
                          const aMaxDescriptorSetStorageBuffersDynamic:TVkUInt32;
                          const aMaxDescriptorSetSampledImages:TVkUInt32;
                          const aMaxDescriptorSetStorageImages:TVkUInt32;
                          const aMaxDescriptorSetInputAttachments:TVkUInt32;
                          const aMaxVertexInputAttributes:TVkUInt32;
                          const aMaxVertexInputBindings:TVkUInt32;
                          const aMaxVertexInputAttributeOffset:TVkUInt32;
                          const aMaxVertexInputBindingStride:TVkUInt32;
                          const aMaxVertexOutputComponents:TVkUInt32;
                          const aMaxTessellationGenerationLevel:TVkUInt32;
                          const aMaxTessellationPatchSize:TVkUInt32;
                          const aMaxTessellationControlPerVertexInputComponents:TVkUInt32;
                          const aMaxTessellationControlPerVertexOutputComponents:TVkUInt32;
                          const aMaxTessellationControlPerPatchOutputComponents:TVkUInt32;
                          const aMaxTessellationControlTotalOutputComponents:TVkUInt32;
                          const aMaxTessellationEvaluationInputComponents:TVkUInt32;
                          const aMaxTessellationEvaluationOutputComponents:TVkUInt32;
                          const aMaxGeometryShaderInvocations:TVkUInt32;
                          const aMaxGeometryInputComponents:TVkUInt32;
                          const aMaxGeometryOutputComponents:TVkUInt32;
                          const aMaxGeometryOutputVertices:TVkUInt32;
                          const aMaxGeometryTotalOutputComponents:TVkUInt32;
                          const aMaxFragmentInputComponents:TVkUInt32;
                          const aMaxFragmentOutputAttachments:TVkUInt32;
                          const aMaxFragmentDualSrcAttachments:TVkUInt32;
                          const aMaxFragmentCombinedOutputResources:TVkUInt32;
                          const aMaxComputeSharedMemorySize:TVkUInt32;
                          const aMaxComputeWorkGroupCount:array of TVkUInt32;
                          const aMaxComputeWorkGroupInvocations:TVkUInt32;
                          const aMaxComputeWorkGroupSize:array of TVkUInt32;
                          const aSubPixelPrecisionBits:TVkUInt32;
                          const aSubTexelPrecisionBits:TVkUInt32;
                          const aMipmapPrecisionBits:TVkUInt32;
                          const aMaxDrawIndexedIndexValue:TVkUInt32;
                          const aMaxDrawIndirectCount:TVkUInt32;
                          const aMaxSamplerLodBias:TVkFloat;
                          const aMaxSamplerAnisotropy:TVkFloat;
                          const aMaxViewports:TVkUInt32;
                          const aMaxViewportDimensions:array of TVkUInt32;
                          const aViewportBoundsRange:array of TVkFloat;
                          const aViewportSubPixelBits:TVkUInt32;
                          const aMinMemoryMapAlignment:TVkSize;
                          const aMinTexelBufferOffsetAlignment:TVkDeviceSize;
                          const aMinUniformBufferOffsetAlignment:TVkDeviceSize;
                          const aMinStorageBufferOffsetAlignment:TVkDeviceSize;
                          const aMinTexelOffset:TVkInt32;
                          const aMaxTexelOffset:TVkUInt32;
                          const aMinTexelGatherOffset:TVkInt32;
                          const aMaxTexelGatherOffset:TVkUInt32;
                          const aMinInterpolationOffset:TVkFloat;
                          const aMaxInterpolationOffset:TVkFloat;
                          const aSubPixelInterpolationOffsetBits:TVkUInt32;
                          const aMaxFramebufferWidth:TVkUInt32;
                          const aMaxFramebufferHeight:TVkUInt32;
                          const aMaxFramebufferLayers:TVkUInt32;
                          const aFramebufferColorSampleCounts:TVkSampleCountFlags;
                          const aFramebufferDepthSampleCounts:TVkSampleCountFlags;
                          const aFramebufferStencilSampleCounts:TVkSampleCountFlags;
                          const aFramebufferNoAttachmentsSampleCounts:TVkSampleCountFlags;
                          const aMaxColorAttachments:TVkUInt32;
                          const aSampledImageColorSampleCounts:TVkSampleCountFlags;
                          const aSampledImageIntegerSampleCounts:TVkSampleCountFlags;
                          const aSampledImageDepthSampleCounts:TVkSampleCountFlags;
                          const aSampledImageStencilSampleCounts:TVkSampleCountFlags;
                          const aStorageImageSampleCounts:TVkSampleCountFlags;
                          const aMaxSampleMaskWords:TVkUInt32;
                          const aTimestampComputeAndGraphics:TVkBool32;
                          const aTimestampPeriod:TVkFloat;
                          const aMaxClipDistances:TVkUInt32;
                          const aMaxCullDistances:TVkUInt32;
                          const aMaxCombinedClipAndCullDistances:TVkUInt32;
                          const aDiscreteQueuePriorities:TVkUInt32;
                          const aPointSizeRange:array of TVkFloat;
                          const aLineWidthRange:array of TVkFloat;
                          const aPointSizeGranularity:TVkFloat;
                          const aLineWidthGranularity:TVkFloat;
                          const aStrictLines:TVkBool32;
                          const aStandardSampleLocations:TVkBool32;
                          const aOptimalBufferCopyOffsetAlignment:TVkDeviceSize;
                          const aOptimalBufferCopyRowPitchAlignment:TVkDeviceSize;
                          const aNonCoherentAtomSize:TVkDeviceSize);
{$endif}
     end;

     PPVkPhysicalDeviceProperties=^PVkPhysicalDeviceProperties;
     PVkPhysicalDeviceProperties=^TVkPhysicalDeviceProperties;
     TVkPhysicalDeviceProperties=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       apiVersion:TVkUInt32;
       driverVersion:TVkUInt32;
       vendorID:TVkUInt32;
       deviceID:TVkUInt32;
       deviceType:TVkPhysicalDeviceType;
       deviceName:array[0..VK_MAX_PHYSICAL_DEVICE_NAME_SIZE-1] of TVkChar;
       pipelineCacheUUID:array[0..VK_UUID_SIZE-1] of TVkUInt8;
       limits:TVkPhysicalDeviceLimits;
       sparseProperties:TVkPhysicalDeviceSparseProperties;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aApiVersion:TVkUInt32;
                          const aDriverVersion:TVkUInt32;
                          const aVendorID:TVkUInt32;
                          const aDeviceID:TVkUInt32;
                          const aDeviceType:TVkPhysicalDeviceType;
                          const aDeviceName:TVkCharString;
                          const aPipelineCacheUUID:array of TVkUInt8;
                          const aLimits:TVkPhysicalDeviceLimits;
                          const aSparseProperties:TVkPhysicalDeviceSparseProperties);
{$endif}
     end;

     PPVkSemaphoreCreateInfo=^PVkSemaphoreCreateInfo;
     PVkSemaphoreCreateInfo=^TVkSemaphoreCreateInfo;
     TVkSemaphoreCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO
       pNext:PVkVoid;
       flags:TVkSemaphoreCreateFlags;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkSemaphoreCreateFlags);
{$endif}
     end;

     PPVkQueryPoolCreateInfo=^PVkQueryPoolCreateInfo;
     PVkQueryPoolCreateInfo=^TVkQueryPoolCreateInfo;
     TVkQueryPoolCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO
       pNext:PVkVoid;
       flags:TVkQueryPoolCreateFlags;
       queryType:TVkQueryType;
       queryCount:TVkUInt32;
       pipelineStatistics:TVkQueryPipelineStatisticFlags;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkQueryPoolCreateFlags;
                          const aQueryType:TVkQueryType;
                          const aQueryCount:TVkUInt32;
                          const aPipelineStatistics:TVkQueryPipelineStatisticFlags);
{$endif}
     end;

     PPVkFramebufferCreateInfo=^PVkFramebufferCreateInfo;
     PVkFramebufferCreateInfo=^TVkFramebufferCreateInfo;
     TVkFramebufferCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO
       pNext:PVkVoid;
       flags:TVkFramebufferCreateFlags;
       renderPass:TVkRenderPass;
       attachmentCount:TVkUInt32;
       pAttachments:PVkImageView;
       width:TVkUInt32;
       height:TVkUInt32;
       layers:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkFramebufferCreateFlags;
                          const aRenderPass:TVkRenderPass;
                          const aAttachmentCount:TVkUInt32;
                          const aPAttachments:PVkImageView;
                          const aWidth:TVkUInt32;
                          const aHeight:TVkUInt32;
                          const aLayers:TVkUInt32);
{$endif}
     end;

     PPVkDrawIndirectCommand=^PVkDrawIndirectCommand;
     PVkDrawIndirectCommand=^TVkDrawIndirectCommand;
     TVkDrawIndirectCommand=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       vertexCount:TVkUInt32;
       instanceCount:TVkUInt32;
       firstVertex:TVkUInt32;
       firstInstance:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aVertexCount:TVkUInt32;
                          const aInstanceCount:TVkUInt32;
                          const aFirstVertex:TVkUInt32;
                          const aFirstInstance:TVkUInt32);
{$endif}
     end;

     PPVkDrawIndexedIndirectCommand=^PVkDrawIndexedIndirectCommand;
     PVkDrawIndexedIndirectCommand=^TVkDrawIndexedIndirectCommand;
     TVkDrawIndexedIndirectCommand=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       indexCount:TVkUInt32;
       instanceCount:TVkUInt32;
       firstIndex:TVkUInt32;
       vertexOffset:TVkInt32;
       firstInstance:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aIndexCount:TVkUInt32;
                          const aInstanceCount:TVkUInt32;
                          const aFirstIndex:TVkUInt32;
                          const aVertexOffset:TVkInt32;
                          const aFirstInstance:TVkUInt32);
{$endif}
     end;

     PPVkDispatchIndirectCommand=^PVkDispatchIndirectCommand;
     PVkDispatchIndirectCommand=^TVkDispatchIndirectCommand;
     TVkDispatchIndirectCommand=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       x:TVkUInt32;
       y:TVkUInt32;
       z:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aX:TVkUInt32;
                          const aY:TVkUInt32;
                          const aZ:TVkUInt32);
{$endif}
     end;

     PPVkMultiDrawInfoEXT=^PVkMultiDrawInfoEXT;
     PVkMultiDrawInfoEXT=^TVkMultiDrawInfoEXT;
     TVkMultiDrawInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       firstVertex:TVkUInt32;
       vertexCount:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFirstVertex:TVkUInt32;
                          const aVertexCount:TVkUInt32);
{$endif}
     end;

     PPVkMultiDrawIndexedInfoEXT=^PVkMultiDrawIndexedInfoEXT;
     PVkMultiDrawIndexedInfoEXT=^TVkMultiDrawIndexedInfoEXT;
     TVkMultiDrawIndexedInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       firstIndex:TVkUInt32;
       indexCount:TVkUInt32;
       vertexOffset:TVkInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFirstIndex:TVkUInt32;
                          const aIndexCount:TVkUInt32;
                          const aVertexOffset:TVkInt32);
{$endif}
     end;

     PPVkSubmitInfo=^PVkSubmitInfo;
     PVkSubmitInfo=^TVkSubmitInfo;
     TVkSubmitInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SUBMIT_INFO
       pNext:PVkVoid;
       waitSemaphoreCount:TVkUInt32;
       pWaitSemaphores:PVkSemaphore;
       pWaitDstStageMask:PVkPipelineStageFlags;
       commandBufferCount:TVkUInt32;
       pCommandBuffers:PVkCommandBuffer;
       signalSemaphoreCount:TVkUInt32;
       pSignalSemaphores:PVkSemaphore;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aWaitSemaphoreCount:TVkUInt32;
                          const aPWaitSemaphores:PVkSemaphore;
                          const aPWaitDstStageMask:PVkPipelineStageFlags;
                          const aCommandBufferCount:TVkUInt32;
                          const aPCommandBuffers:PVkCommandBuffer;
                          const aSignalSemaphoreCount:TVkUInt32;
                          const aPSignalSemaphores:PVkSemaphore);
{$endif}
     end;

     PPVkDisplayPropertiesKHR=^PVkDisplayPropertiesKHR;
     PVkDisplayPropertiesKHR=^TVkDisplayPropertiesKHR;
     TVkDisplayPropertiesKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       display:TVkDisplayKHR;
       displayName:PVkChar;
       physicalDimensions:TVkExtent2D;
       physicalResolution:TVkExtent2D;
       supportedTransforms:TVkSurfaceTransformFlagsKHR;
       planeReorderPossible:TVkBool32;
       persistentContent:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDisplay:TVkDisplayKHR;
                          const aDisplayName:PVkChar;
                          const aPhysicalDimensions:TVkExtent2D;
                          const aPhysicalResolution:TVkExtent2D;
                          const aSupportedTransforms:TVkSurfaceTransformFlagsKHR;
                          const aPlaneReorderPossible:TVkBool32;
                          const aPersistentContent:TVkBool32);
{$endif}
     end;

     PPVkDisplayPlanePropertiesKHR=^PVkDisplayPlanePropertiesKHR;
     PVkDisplayPlanePropertiesKHR=^TVkDisplayPlanePropertiesKHR;
     TVkDisplayPlanePropertiesKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       currentDisplay:TVkDisplayKHR;
       currentStackIndex:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aCurrentDisplay:TVkDisplayKHR;
                          const aCurrentStackIndex:TVkUInt32);
{$endif}
     end;

     PPVkDisplayModeParametersKHR=^PVkDisplayModeParametersKHR;
     PVkDisplayModeParametersKHR=^TVkDisplayModeParametersKHR;
     TVkDisplayModeParametersKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       visibleRegion:TVkExtent2D;
       refreshRate:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aVisibleRegion:TVkExtent2D;
                          const aRefreshRate:TVkUInt32);
{$endif}
     end;

     PPVkDisplayModePropertiesKHR=^PVkDisplayModePropertiesKHR;
     PVkDisplayModePropertiesKHR=^TVkDisplayModePropertiesKHR;
     TVkDisplayModePropertiesKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       displayMode:TVkDisplayModeKHR;
       parameters:TVkDisplayModeParametersKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDisplayMode:TVkDisplayModeKHR;
                          const aParameters:TVkDisplayModeParametersKHR);
{$endif}
     end;

     PPVkDisplayModeCreateInfoKHR=^PVkDisplayModeCreateInfoKHR;
     PVkDisplayModeCreateInfoKHR=^TVkDisplayModeCreateInfoKHR;
     TVkDisplayModeCreateInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR
       pNext:PVkVoid;
       flags:TVkDisplayModeCreateFlagsKHR;
       parameters:TVkDisplayModeParametersKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkDisplayModeCreateFlagsKHR;
                          const aParameters:TVkDisplayModeParametersKHR);
{$endif}
     end;

     PPVkDisplayPlaneCapabilitiesKHR=^PVkDisplayPlaneCapabilitiesKHR;
     PVkDisplayPlaneCapabilitiesKHR=^TVkDisplayPlaneCapabilitiesKHR;
     TVkDisplayPlaneCapabilitiesKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       supportedAlpha:TVkDisplayPlaneAlphaFlagsKHR;
       minSrcPosition:TVkOffset2D;
       maxSrcPosition:TVkOffset2D;
       minSrcExtent:TVkExtent2D;
       maxSrcExtent:TVkExtent2D;
       minDstPosition:TVkOffset2D;
       maxDstPosition:TVkOffset2D;
       minDstExtent:TVkExtent2D;
       maxDstExtent:TVkExtent2D;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSupportedAlpha:TVkDisplayPlaneAlphaFlagsKHR;
                          const aMinSrcPosition:TVkOffset2D;
                          const aMaxSrcPosition:TVkOffset2D;
                          const aMinSrcExtent:TVkExtent2D;
                          const aMaxSrcExtent:TVkExtent2D;
                          const aMinDstPosition:TVkOffset2D;
                          const aMaxDstPosition:TVkOffset2D;
                          const aMinDstExtent:TVkExtent2D;
                          const aMaxDstExtent:TVkExtent2D);
{$endif}
     end;

     PPVkDisplaySurfaceCreateInfoKHR=^PVkDisplaySurfaceCreateInfoKHR;
     PVkDisplaySurfaceCreateInfoKHR=^TVkDisplaySurfaceCreateInfoKHR;
     TVkDisplaySurfaceCreateInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR
       pNext:PVkVoid;
       flags:TVkDisplaySurfaceCreateFlagsKHR;
       displayMode:TVkDisplayModeKHR;
       planeIndex:TVkUInt32;
       planeStackIndex:TVkUInt32;
       transform:TVkSurfaceTransformFlagBitsKHR;
       globalAlpha:TVkFloat;
       alphaMode:TVkDisplayPlaneAlphaFlagBitsKHR;
       imageExtent:TVkExtent2D;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkDisplaySurfaceCreateFlagsKHR;
                          const aDisplayMode:TVkDisplayModeKHR;
                          const aPlaneIndex:TVkUInt32;
                          const aPlaneStackIndex:TVkUInt32;
                          const aTransform:TVkSurfaceTransformFlagBitsKHR;
                          const aGlobalAlpha:TVkFloat;
                          const aAlphaMode:TVkDisplayPlaneAlphaFlagBitsKHR;
                          const aImageExtent:TVkExtent2D);
{$endif}
     end;

     PPVkDisplayPresentInfoKHR=^PVkDisplayPresentInfoKHR;
     PVkDisplayPresentInfoKHR=^TVkDisplayPresentInfoKHR;
     TVkDisplayPresentInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR
       pNext:PVkVoid;
       srcRect:TVkRect2D;
       dstRect:TVkRect2D;
       persistent:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSrcRect:TVkRect2D;
                          const aDstRect:TVkRect2D;
                          const aPersistent:TVkBool32);
{$endif}
     end;

     PPVkSurfaceCapabilitiesKHR=^PVkSurfaceCapabilitiesKHR;
     PVkSurfaceCapabilitiesKHR=^TVkSurfaceCapabilitiesKHR;
     TVkSurfaceCapabilitiesKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       minImageCount:TVkUInt32;
       maxImageCount:TVkUInt32;
       currentExtent:TVkExtent2D;
       minImageExtent:TVkExtent2D;
       maxImageExtent:TVkExtent2D;
       maxImageArrayLayers:TVkUInt32;
       supportedTransforms:TVkSurfaceTransformFlagsKHR;
       currentTransform:TVkSurfaceTransformFlagBitsKHR;
       supportedCompositeAlpha:TVkCompositeAlphaFlagsKHR;
       supportedUsageFlags:TVkImageUsageFlags;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMinImageCount:TVkUInt32;
                          const aMaxImageCount:TVkUInt32;
                          const aCurrentExtent:TVkExtent2D;
                          const aMinImageExtent:TVkExtent2D;
                          const aMaxImageExtent:TVkExtent2D;
                          const aMaxImageArrayLayers:TVkUInt32;
                          const aSupportedTransforms:TVkSurfaceTransformFlagsKHR;
                          const aCurrentTransform:TVkSurfaceTransformFlagBitsKHR;
                          const aSupportedCompositeAlpha:TVkCompositeAlphaFlagsKHR;
                          const aSupportedUsageFlags:TVkImageUsageFlags);
{$endif}
     end;

{$ifdef Android}
     PPVkAndroidSurfaceCreateInfoKHR=^PVkAndroidSurfaceCreateInfoKHR;
     PVkAndroidSurfaceCreateInfoKHR=^TVkAndroidSurfaceCreateInfoKHR;
     TVkAndroidSurfaceCreateInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR
       pNext:PVkVoid;
       flags:TVkAndroidSurfaceCreateFlagsKHR;
       window:PVkAndroidANativeWindow;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkAndroidSurfaceCreateFlagsKHR;
                          const aWindow:PVkAndroidANativeWindow);
{$endif}
     end;
{$endif}

     PPVkViSurfaceCreateInfoNN=^PVkViSurfaceCreateInfoNN;
     PVkViSurfaceCreateInfoNN=^TVkViSurfaceCreateInfoNN;
     TVkViSurfaceCreateInfoNN=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN
       pNext:PVkVoid;
       flags:TVkViSurfaceCreateFlagsNN;
       window:PVkVoid;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkViSurfaceCreateFlagsNN;
                          const aWindow:PVkVoid);
{$endif}
     end;

{$ifdef Wayland}
     PPVkWaylandSurfaceCreateInfoKHR=^PVkWaylandSurfaceCreateInfoKHR;
     PVkWaylandSurfaceCreateInfoKHR=^TVkWaylandSurfaceCreateInfoKHR;
     TVkWaylandSurfaceCreateInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR
       pNext:PVkVoid;
       flags:TVkWaylandSurfaceCreateFlagsKHR;
       display:PVkWaylandDisplay;
       surface:PVkWaylandSurface;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkWaylandSurfaceCreateFlagsKHR;
                          const aDisplay:PVkWaylandDisplay;
                          const aSurface:PVkWaylandSurface);
{$endif}
     end;
{$endif}

{$ifdef Windows}
     PPVkWin32SurfaceCreateInfoKHR=^PVkWin32SurfaceCreateInfoKHR;
     PVkWin32SurfaceCreateInfoKHR=^TVkWin32SurfaceCreateInfoKHR;
     TVkWin32SurfaceCreateInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR
       pNext:PVkVoid;
       flags:TVkWin32SurfaceCreateFlagsKHR;
       hinstance_:TVkHINSTANCE;
       hwnd_:TVkHWND;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkWin32SurfaceCreateFlagsKHR;
                          const aHinstance_:TVkHINSTANCE;
                          const aHwnd_:TVkHWND);
{$endif}
     end;
{$endif}

{$ifdef XLIB}
     PPVkXlibSurfaceCreateInfoKHR=^PVkXlibSurfaceCreateInfoKHR;
     PVkXlibSurfaceCreateInfoKHR=^TVkXlibSurfaceCreateInfoKHR;
     TVkXlibSurfaceCreateInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR
       pNext:PVkVoid;
       flags:TVkXlibSurfaceCreateFlagsKHR;
       dpy:PVkXLIBDisplay;
       window:TVkXLIBWindow;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkXlibSurfaceCreateFlagsKHR;
                          const aDpy:PVkXLIBDisplay;
                          const aWindow:TVkXLIBWindow);
{$endif}
     end;
{$endif}

{$ifdef XCB}
     PPVkXcbSurfaceCreateInfoKHR=^PVkXcbSurfaceCreateInfoKHR;
     PVkXcbSurfaceCreateInfoKHR=^TVkXcbSurfaceCreateInfoKHR;
     TVkXcbSurfaceCreateInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR
       pNext:PVkVoid;
       flags:TVkXcbSurfaceCreateFlagsKHR;
       connection:PVkXCBConnection;
       window:TVkXCBWindow;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkXcbSurfaceCreateFlagsKHR;
                          const aConnection:PVkXCBConnection;
                          const aWindow:TVkXCBWindow);
{$endif}
     end;
{$endif}

{$ifdef DirectFB}
     PPVkDirectFBSurfaceCreateInfoEXT=^PVkDirectFBSurfaceCreateInfoEXT;
     PVkDirectFBSurfaceCreateInfoEXT=^TVkDirectFBSurfaceCreateInfoEXT;
     TVkDirectFBSurfaceCreateInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT
       pNext:PVkVoid;
       flags:TVkDirectFBSurfaceCreateFlagsEXT;
       dfb:PVkDirectFBIDirectFB;
       surface:PVkDirectFBIDirectFBSurface;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkDirectFBSurfaceCreateFlagsEXT;
                          const aDfb:PVkDirectFBIDirectFB;
                          const aSurface:PVkDirectFBIDirectFBSurface);
{$endif}
     end;
{$endif}

{$ifdef Fuchsia}
     PPVkImagePipeSurfaceCreateInfoFUCHSIA=^PVkImagePipeSurfaceCreateInfoFUCHSIA;
     PVkImagePipeSurfaceCreateInfoFUCHSIA=^TVkImagePipeSurfaceCreateInfoFUCHSIA;
     TVkImagePipeSurfaceCreateInfoFUCHSIA=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA
       pNext:PVkVoid;
       flags:TVkImagePipeSurfaceCreateFlagsFUCHSIA;
       imagePipeHandle:TVkFuchsiaZXHandle;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkImagePipeSurfaceCreateFlagsFUCHSIA;
                          const aImagePipeHandle:TVkFuchsiaZXHandle);
{$endif}
     end;
{$endif}

     PPVkStreamDescriptorSurfaceCreateInfoGGP=^PVkStreamDescriptorSurfaceCreateInfoGGP;
     PVkStreamDescriptorSurfaceCreateInfoGGP=^TVkStreamDescriptorSurfaceCreateInfoGGP;
     TVkStreamDescriptorSurfaceCreateInfoGGP=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP
       pNext:PVkVoid;
       flags:TVkStreamDescriptorSurfaceCreateFlagsGGP;
       streamDescriptor:TVkGgpStreamDescriptor;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkStreamDescriptorSurfaceCreateFlagsGGP;
                          const aStreamDescriptor:TVkGgpStreamDescriptor);
{$endif}
     end;

{$ifdef QNX}
     PPVkScreenSurfaceCreateInfoQNX=^PVkScreenSurfaceCreateInfoQNX;
     PVkScreenSurfaceCreateInfoQNX=^TVkScreenSurfaceCreateInfoQNX;
     TVkScreenSurfaceCreateInfoQNX=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX
       pNext:PVkVoid;
       flags:TVkScreenSurfaceCreateFlagsQNX;
       context:PVkQNXScreenContext;
       window:PVkQNXScreenWindow;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkScreenSurfaceCreateFlagsQNX;
                          const aContext:PVkQNXScreenContext;
                          const aWindow:PVkQNXScreenWindow);
{$endif}
     end;
{$endif}

     PPVkSurfaceFormatKHR=^PVkSurfaceFormatKHR;
     PVkSurfaceFormatKHR=^TVkSurfaceFormatKHR;
     TVkSurfaceFormatKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       format:TVkFormat;
       colorSpace:TVkColorSpaceKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFormat:TVkFormat;
                          const aColorSpace:TVkColorSpaceKHR);
{$endif}
     end;

     PPVkSwapchainCreateInfoKHR=^PVkSwapchainCreateInfoKHR;
     PVkSwapchainCreateInfoKHR=^TVkSwapchainCreateInfoKHR;
     TVkSwapchainCreateInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR
       pNext:PVkVoid;
       flags:TVkSwapchainCreateFlagsKHR;
       surface:TVkSurfaceKHR;
       minImageCount:TVkUInt32;
       imageFormat:TVkFormat;
       imageColorSpace:TVkColorSpaceKHR;
       imageExtent:TVkExtent2D;
       imageArrayLayers:TVkUInt32;
       imageUsage:TVkImageUsageFlags;
       imageSharingMode:TVkSharingMode;
       queueFamilyIndexCount:TVkUInt32;
       pQueueFamilyIndices:PVkUInt32;
       preTransform:TVkSurfaceTransformFlagBitsKHR;
       compositeAlpha:TVkCompositeAlphaFlagBitsKHR;
       presentMode:TVkPresentModeKHR;
       clipped:TVkBool32;
       oldSwapchain:TVkSwapchainKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkSwapchainCreateFlagsKHR;
                          const aSurface:TVkSurfaceKHR;
                          const aMinImageCount:TVkUInt32;
                          const aImageFormat:TVkFormat;
                          const aImageColorSpace:TVkColorSpaceKHR;
                          const aImageExtent:TVkExtent2D;
                          const aImageArrayLayers:TVkUInt32;
                          const aImageUsage:TVkImageUsageFlags;
                          const aImageSharingMode:TVkSharingMode;
                          const aQueueFamilyIndexCount:TVkUInt32;
                          const aPQueueFamilyIndices:PVkUInt32;
                          const aPreTransform:TVkSurfaceTransformFlagBitsKHR;
                          const aCompositeAlpha:TVkCompositeAlphaFlagBitsKHR;
                          const aPresentMode:TVkPresentModeKHR;
                          const aClipped:TVkBool32;
                          const aOldSwapchain:TVkSwapchainKHR);
{$endif}
     end;

     PPVkPresentInfoKHR=^PVkPresentInfoKHR;
     PVkPresentInfoKHR=^TVkPresentInfoKHR;
     TVkPresentInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PRESENT_INFO_KHR
       pNext:PVkVoid;
       waitSemaphoreCount:TVkUInt32;
       pWaitSemaphores:PVkSemaphore;
       swapchainCount:TVkUInt32;
       pSwapchains:PVkSwapchainKHR;
       pImageIndices:PVkUInt32;
       pResults:PVkResult;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aWaitSemaphoreCount:TVkUInt32;
                          const aPWaitSemaphores:PVkSemaphore;
                          const aSwapchainCount:TVkUInt32;
                          const aPSwapchains:PVkSwapchainKHR;
                          const aPImageIndices:PVkUInt32;
                          const aPResults:PVkResult);
{$endif}
     end;

     PPVkDebugReportCallbackCreateInfoEXT=^PVkDebugReportCallbackCreateInfoEXT;
     PVkDebugReportCallbackCreateInfoEXT=^TVkDebugReportCallbackCreateInfoEXT;
     TVkDebugReportCallbackCreateInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT
       pNext:PVkVoid;
       flags:TVkDebugReportFlagsEXT;
       pfnCallback:TPFN_vkDebugReportCallbackEXT;
       pUserData:PVkVoid;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkDebugReportFlagsEXT;
                          const aPfnCallback:TPFN_vkDebugReportCallbackEXT;
                          const aPUserData:PVkVoid);
{$endif}
     end;

     PPVkValidationFlagsEXT=^PVkValidationFlagsEXT;
     PVkValidationFlagsEXT=^TVkValidationFlagsEXT;
     TVkValidationFlagsEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT
       pNext:PVkVoid;
       disabledValidationCheckCount:TVkUInt32;
       pDisabledValidationChecks:PVkValidationCheckEXT;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDisabledValidationCheckCount:TVkUInt32;
                          const aPDisabledValidationChecks:PVkValidationCheckEXT);
{$endif}
     end;

     PPVkValidationFeaturesEXT=^PVkValidationFeaturesEXT;
     PVkValidationFeaturesEXT=^TVkValidationFeaturesEXT;
     TVkValidationFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT
       pNext:PVkVoid;
       enabledValidationFeatureCount:TVkUInt32;
       pEnabledValidationFeatures:PVkValidationFeatureEnableEXT;
       disabledValidationFeatureCount:TVkUInt32;
       pDisabledValidationFeatures:PVkValidationFeatureDisableEXT;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aEnabledValidationFeatureCount:TVkUInt32;
                          const aPEnabledValidationFeatures:PVkValidationFeatureEnableEXT;
                          const aDisabledValidationFeatureCount:TVkUInt32;
                          const aPDisabledValidationFeatures:PVkValidationFeatureDisableEXT);
{$endif}
     end;

     PPVkApplicationParametersEXT=^PVkApplicationParametersEXT;
     PVkApplicationParametersEXT=^TVkApplicationParametersEXT;
     TVkApplicationParametersEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_APPLICATION_PARAMETERS_EXT
       pNext:PVkVoid;
       vendorID:TVkUInt32;
       deviceID:TVkUInt32;
       key:TVkUInt32;
       value:TVkUInt64;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aVendorID:TVkUInt32;
                          const aDeviceID:TVkUInt32;
                          const aKey:TVkUInt32;
                          const aValue:TVkUInt64);
{$endif}
     end;

     PPVkPipelineRasterizationStateRasterizationOrderAMD=^PVkPipelineRasterizationStateRasterizationOrderAMD;
     PVkPipelineRasterizationStateRasterizationOrderAMD=^TVkPipelineRasterizationStateRasterizationOrderAMD;
     TVkPipelineRasterizationStateRasterizationOrderAMD=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD
       pNext:PVkVoid;
       rasterizationOrder:TVkRasterizationOrderAMD;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aRasterizationOrder:TVkRasterizationOrderAMD);
{$endif}
     end;

     PPVkDebugMarkerObjectNameInfoEXT=^PVkDebugMarkerObjectNameInfoEXT;
     PVkDebugMarkerObjectNameInfoEXT=^TVkDebugMarkerObjectNameInfoEXT;
     TVkDebugMarkerObjectNameInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT
       pNext:PVkVoid;
       objectType:TVkDebugReportObjectTypeEXT;
       object_:TVkUInt64;
       pObjectName:PVkChar;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aObjectType:TVkDebugReportObjectTypeEXT;
                          const aObject_:TVkUInt64;
                          const aPObjectName:PVkChar);
{$endif}
     end;

     PPVkDebugMarkerObjectTagInfoEXT=^PVkDebugMarkerObjectTagInfoEXT;
     PVkDebugMarkerObjectTagInfoEXT=^TVkDebugMarkerObjectTagInfoEXT;
     TVkDebugMarkerObjectTagInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT
       pNext:PVkVoid;
       objectType:TVkDebugReportObjectTypeEXT;
       object_:TVkUInt64;
       tagName:TVkUInt64;
       tagSize:TVkSize;
       pTag:PVkVoid;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aObjectType:TVkDebugReportObjectTypeEXT;
                          const aObject_:TVkUInt64;
                          const aTagName:TVkUInt64;
                          const aTagSize:TVkSize;
                          const aPTag:PVkVoid);
{$endif}
     end;

     PPVkDebugMarkerMarkerInfoEXT=^PVkDebugMarkerMarkerInfoEXT;
     PVkDebugMarkerMarkerInfoEXT=^TVkDebugMarkerMarkerInfoEXT;
     TVkDebugMarkerMarkerInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT
       pNext:PVkVoid;
       pMarkerName:PVkChar;
       color:array[0..3] of TVkFloat;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPMarkerName:PVkChar;
                          const aColor:array of TVkFloat);
{$endif}
     end;

     PPVkDedicatedAllocationImageCreateInfoNV=^PVkDedicatedAllocationImageCreateInfoNV;
     PVkDedicatedAllocationImageCreateInfoNV=^TVkDedicatedAllocationImageCreateInfoNV;
     TVkDedicatedAllocationImageCreateInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV
       pNext:PVkVoid;
       dedicatedAllocation:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDedicatedAllocation:TVkBool32);
{$endif}
     end;

     PPVkDedicatedAllocationBufferCreateInfoNV=^PVkDedicatedAllocationBufferCreateInfoNV;
     PVkDedicatedAllocationBufferCreateInfoNV=^TVkDedicatedAllocationBufferCreateInfoNV;
     TVkDedicatedAllocationBufferCreateInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV
       pNext:PVkVoid;
       dedicatedAllocation:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDedicatedAllocation:TVkBool32);
{$endif}
     end;

     PPVkDedicatedAllocationMemoryAllocateInfoNV=^PVkDedicatedAllocationMemoryAllocateInfoNV;
     PVkDedicatedAllocationMemoryAllocateInfoNV=^TVkDedicatedAllocationMemoryAllocateInfoNV;
     TVkDedicatedAllocationMemoryAllocateInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV
       pNext:PVkVoid;
       image:TVkImage;
       buffer:TVkBuffer;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aImage:TVkImage;
                          const aBuffer:TVkBuffer);
{$endif}
     end;

     PPVkExternalImageFormatPropertiesNV=^PVkExternalImageFormatPropertiesNV;
     PVkExternalImageFormatPropertiesNV=^TVkExternalImageFormatPropertiesNV;
     TVkExternalImageFormatPropertiesNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       imageFormatProperties:TVkImageFormatProperties;
       externalMemoryFeatures:TVkExternalMemoryFeatureFlagsNV;
       exportFromImportedHandleTypes:TVkExternalMemoryHandleTypeFlagsNV;
       compatibleHandleTypes:TVkExternalMemoryHandleTypeFlagsNV;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aImageFormatProperties:TVkImageFormatProperties;
                          const aExternalMemoryFeatures:TVkExternalMemoryFeatureFlagsNV;
                          const aExportFromImportedHandleTypes:TVkExternalMemoryHandleTypeFlagsNV;
                          const aCompatibleHandleTypes:TVkExternalMemoryHandleTypeFlagsNV);
{$endif}
     end;

     PPVkExternalMemoryImageCreateInfoNV=^PVkExternalMemoryImageCreateInfoNV;
     PVkExternalMemoryImageCreateInfoNV=^TVkExternalMemoryImageCreateInfoNV;
     TVkExternalMemoryImageCreateInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV
       pNext:PVkVoid;
       handleTypes:TVkExternalMemoryHandleTypeFlagsNV;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aHandleTypes:TVkExternalMemoryHandleTypeFlagsNV);
{$endif}
     end;

     PPVkExportMemoryAllocateInfoNV=^PVkExportMemoryAllocateInfoNV;
     PVkExportMemoryAllocateInfoNV=^TVkExportMemoryAllocateInfoNV;
     TVkExportMemoryAllocateInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV
       pNext:PVkVoid;
       handleTypes:TVkExternalMemoryHandleTypeFlagsNV;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aHandleTypes:TVkExternalMemoryHandleTypeFlagsNV);
{$endif}
     end;

     PPVkImportMemoryWin32HandleInfoNV=^PVkImportMemoryWin32HandleInfoNV;
     PVkImportMemoryWin32HandleInfoNV=^TVkImportMemoryWin32HandleInfoNV;
     TVkImportMemoryWin32HandleInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV
       pNext:PVkVoid;
       handleType:TVkExternalMemoryHandleTypeFlagsNV;
       handle:THANDLE;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aHandleType:TVkExternalMemoryHandleTypeFlagsNV;
                          const aHandle:THANDLE);
{$endif}
     end;

{$ifdef Windows}
     PPVkExportMemoryWin32HandleInfoNV=^PVkExportMemoryWin32HandleInfoNV;
     PVkExportMemoryWin32HandleInfoNV=^TVkExportMemoryWin32HandleInfoNV;
     TVkExportMemoryWin32HandleInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV
       pNext:PVkVoid;
       pAttributes:PSecurityAttributes;
       dwAccess:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPAttributes:PSecurityAttributes;
                          const aDwAccess:TVkUInt32);
{$endif}
     end;
{$endif}

{$ifdef NvSci}
     PPVkExportMemorySciBufInfoNV=^PVkExportMemorySciBufInfoNV;
     PVkExportMemorySciBufInfoNV=^TVkExportMemorySciBufInfoNV;
     TVkExportMemorySciBufInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_EXPORT_MEMORY_SCI_BUF_INFO_NV
       pNext:PVkVoid;
       pAttributes:TNvSciBufAttrList;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPAttributes:TNvSciBufAttrList);
{$endif}
     end;
{$endif}

{$ifdef NvSci}
     PPVkImportMemorySciBufInfoNV=^PVkImportMemorySciBufInfoNV;
     PVkImportMemorySciBufInfoNV=^TVkImportMemorySciBufInfoNV;
     TVkImportMemorySciBufInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_IMPORT_MEMORY_SCI_BUF_INFO_NV
       pNext:PVkVoid;
       handleType:TVkExternalMemoryHandleTypeFlagBits;
       handle:TNvSciBufObj;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aHandleType:TVkExternalMemoryHandleTypeFlagBits;
                          const aHandle:TNvSciBufObj);
{$endif}
     end;
{$endif}

{$ifdef NvSci}
     PPVkMemoryGetSciBufInfoNV=^PVkMemoryGetSciBufInfoNV;
     PVkMemoryGetSciBufInfoNV=^TVkMemoryGetSciBufInfoNV;
     TVkMemoryGetSciBufInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_MEMORY_GET_SCI_BUF_INFO_NV
       pNext:PVkVoid;
       memory:TVkDeviceMemory;
       handleType:TVkExternalMemoryHandleTypeFlagBits;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMemory:TVkDeviceMemory;
                          const aHandleType:TVkExternalMemoryHandleTypeFlagBits);
{$endif}
     end;
{$endif}

{$ifdef NvSci}
     PPVkMemorySciBufPropertiesNV=^PVkMemorySciBufPropertiesNV;
     PVkMemorySciBufPropertiesNV=^TVkMemorySciBufPropertiesNV;
     TVkMemorySciBufPropertiesNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_MEMORY_SCI_BUF_PROPERTIES_NV
       pNext:PVkVoid;
       memoryTypeBits:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMemoryTypeBits:TVkUInt32);
{$endif}
     end;
{$endif}

{$ifdef NvSci}
     PPVkPhysicalDeviceExternalMemorySciBufFeaturesNV=^PVkPhysicalDeviceExternalMemorySciBufFeaturesNV;
     PVkPhysicalDeviceExternalMemorySciBufFeaturesNV=^TVkPhysicalDeviceExternalMemorySciBufFeaturesNV;
     TVkPhysicalDeviceExternalMemorySciBufFeaturesNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCI_BUF_FEATURES_NV
       pNext:PVkVoid;
       sciBufImport:TVkBool32;
       sciBufExport:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSciBufImport:TVkBool32;
                          const aSciBufExport:TVkBool32);
{$endif}
     end;
{$endif}

{$ifdef NvSci}
     PPVkPhysicalDeviceExternalSciBufFeaturesNV=^PVkPhysicalDeviceExternalSciBufFeaturesNV;
     PVkPhysicalDeviceExternalSciBufFeaturesNV=^TVkPhysicalDeviceExternalSciBufFeaturesNV;
     TVkPhysicalDeviceExternalSciBufFeaturesNV=TVkPhysicalDeviceExternalMemorySciBufFeaturesNV;
{$endif}

     PPVkWin32KeyedMutexAcquireReleaseInfoNV=^PVkWin32KeyedMutexAcquireReleaseInfoNV;
     PVkWin32KeyedMutexAcquireReleaseInfoNV=^TVkWin32KeyedMutexAcquireReleaseInfoNV;
     TVkWin32KeyedMutexAcquireReleaseInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV
       pNext:PVkVoid;
       acquireCount:TVkUInt32;
       pAcquireSyncs:PVkDeviceMemory;
       pAcquireKeys:PVkUInt64;
       pAcquireTimeoutMilliseconds:PVkUInt32;
       releaseCount:TVkUInt32;
       pReleaseSyncs:PVkDeviceMemory;
       pReleaseKeys:PVkUInt64;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aAcquireCount:TVkUInt32;
                          const aPAcquireSyncs:PVkDeviceMemory;
                          const aPAcquireKeys:PVkUInt64;
                          const aPAcquireTimeoutMilliseconds:PVkUInt32;
                          const aReleaseCount:TVkUInt32;
                          const aPReleaseSyncs:PVkDeviceMemory;
                          const aPReleaseKeys:PVkUInt64);
{$endif}
     end;

     PPVkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV=^PVkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV;
     PVkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV=^TVkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV;
     TVkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV
       pNext:PVkVoid;
       deviceGeneratedCommands:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDeviceGeneratedCommands:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV=^PVkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV;
     PVkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV=^TVkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV;
     TVkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV
       pNext:PVkVoid;
       deviceGeneratedCompute:TVkBool32;
       deviceGeneratedComputePipelines:TVkBool32;
       deviceGeneratedComputeCaptureReplay:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDeviceGeneratedCompute:TVkBool32;
                          const aDeviceGeneratedComputePipelines:TVkBool32;
                          const aDeviceGeneratedComputeCaptureReplay:TVkBool32);
{$endif}
     end;

     PPVkDevicePrivateDataCreateInfo=^PVkDevicePrivateDataCreateInfo;
     PVkDevicePrivateDataCreateInfo=^TVkDevicePrivateDataCreateInfo;
     TVkDevicePrivateDataCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO
       pNext:PVkVoid;
       privateDataSlotRequestCount:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPrivateDataSlotRequestCount:TVkUInt32);
{$endif}
     end;

     PPVkDevicePrivateDataCreateInfoEXT=^PVkDevicePrivateDataCreateInfoEXT;
     PVkDevicePrivateDataCreateInfoEXT=^TVkDevicePrivateDataCreateInfoEXT;
     TVkDevicePrivateDataCreateInfoEXT=TVkDevicePrivateDataCreateInfo;

     PPVkPrivateDataSlotCreateInfo=^PVkPrivateDataSlotCreateInfo;
     PVkPrivateDataSlotCreateInfo=^TVkPrivateDataSlotCreateInfo;
     TVkPrivateDataSlotCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO
       pNext:PVkVoid;
       flags:TVkPrivateDataSlotCreateFlags;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkPrivateDataSlotCreateFlags);
{$endif}
     end;

     PPVkPrivateDataSlotCreateInfoEXT=^PVkPrivateDataSlotCreateInfoEXT;
     PVkPrivateDataSlotCreateInfoEXT=^TVkPrivateDataSlotCreateInfoEXT;
     TVkPrivateDataSlotCreateInfoEXT=TVkPrivateDataSlotCreateInfo;

     PPVkPhysicalDevicePrivateDataFeatures=^PVkPhysicalDevicePrivateDataFeatures;
     PVkPhysicalDevicePrivateDataFeatures=^TVkPhysicalDevicePrivateDataFeatures;
     TVkPhysicalDevicePrivateDataFeatures=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES
       pNext:PVkVoid;
       privateData:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPrivateData:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDevicePrivateDataFeaturesEXT=^PVkPhysicalDevicePrivateDataFeaturesEXT;
     PVkPhysicalDevicePrivateDataFeaturesEXT=^TVkPhysicalDevicePrivateDataFeaturesEXT;
     TVkPhysicalDevicePrivateDataFeaturesEXT=TVkPhysicalDevicePrivateDataFeatures;

     PPVkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV=^PVkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV;
     PVkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV=^TVkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV;
     TVkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV
       pNext:PVkVoid;
       maxGraphicsShaderGroupCount:TVkUInt32;
       maxIndirectSequenceCount:TVkUInt32;
       maxIndirectCommandsTokenCount:TVkUInt32;
       maxIndirectCommandsStreamCount:TVkUInt32;
       maxIndirectCommandsTokenOffset:TVkUInt32;
       maxIndirectCommandsStreamStride:TVkUInt32;
       minSequencesCountBufferOffsetAlignment:TVkUInt32;
       minSequencesIndexBufferOffsetAlignment:TVkUInt32;
       minIndirectCommandsBufferOffsetAlignment:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMaxGraphicsShaderGroupCount:TVkUInt32;
                          const aMaxIndirectSequenceCount:TVkUInt32;
                          const aMaxIndirectCommandsTokenCount:TVkUInt32;
                          const aMaxIndirectCommandsStreamCount:TVkUInt32;
                          const aMaxIndirectCommandsTokenOffset:TVkUInt32;
                          const aMaxIndirectCommandsStreamStride:TVkUInt32;
                          const aMinSequencesCountBufferOffsetAlignment:TVkUInt32;
                          const aMinSequencesIndexBufferOffsetAlignment:TVkUInt32;
                          const aMinIndirectCommandsBufferOffsetAlignment:TVkUInt32);
{$endif}
     end;

     PPVkPhysicalDeviceMultiDrawPropertiesEXT=^PVkPhysicalDeviceMultiDrawPropertiesEXT;
     PVkPhysicalDeviceMultiDrawPropertiesEXT=^TVkPhysicalDeviceMultiDrawPropertiesEXT;
     TVkPhysicalDeviceMultiDrawPropertiesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT
       pNext:PVkVoid;
       maxMultiDrawCount:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMaxMultiDrawCount:TVkUInt32);
{$endif}
     end;

     PPVkGraphicsShaderGroupCreateInfoNV=^PVkGraphicsShaderGroupCreateInfoNV;
     PVkGraphicsShaderGroupCreateInfoNV=^TVkGraphicsShaderGroupCreateInfoNV;
     TVkGraphicsShaderGroupCreateInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV
       pNext:PVkVoid;
       stageCount:TVkUInt32;
       pStages:PVkPipelineShaderStageCreateInfo;
       pVertexInputState:PVkPipelineVertexInputStateCreateInfo;
       pTessellationState:PVkPipelineTessellationStateCreateInfo;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aStageCount:TVkUInt32;
                          const aPStages:PVkPipelineShaderStageCreateInfo;
                          const aPVertexInputState:PVkPipelineVertexInputStateCreateInfo;
                          const aPTessellationState:PVkPipelineTessellationStateCreateInfo);
{$endif}
     end;

     PPVkGraphicsPipelineShaderGroupsCreateInfoNV=^PVkGraphicsPipelineShaderGroupsCreateInfoNV;
     PVkGraphicsPipelineShaderGroupsCreateInfoNV=^TVkGraphicsPipelineShaderGroupsCreateInfoNV;
     TVkGraphicsPipelineShaderGroupsCreateInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV
       pNext:PVkVoid;
       groupCount:TVkUInt32;
       pGroups:PVkGraphicsShaderGroupCreateInfoNV;
       pipelineCount:TVkUInt32;
       pPipelines:PVkPipeline;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aGroupCount:TVkUInt32;
                          const aPGroups:PVkGraphicsShaderGroupCreateInfoNV;
                          const aPipelineCount:TVkUInt32;
                          const aPPipelines:PVkPipeline);
{$endif}
     end;

     PPVkBindShaderGroupIndirectCommandNV=^PVkBindShaderGroupIndirectCommandNV;
     PVkBindShaderGroupIndirectCommandNV=^TVkBindShaderGroupIndirectCommandNV;
     TVkBindShaderGroupIndirectCommandNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       groupIndex:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aGroupIndex:TVkUInt32);
{$endif}
     end;

     PPVkBindIndexBufferIndirectCommandNV=^PVkBindIndexBufferIndirectCommandNV;
     PVkBindIndexBufferIndirectCommandNV=^TVkBindIndexBufferIndirectCommandNV;
     TVkBindIndexBufferIndirectCommandNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       bufferAddress:TVkDeviceAddress;
       size:TVkUInt32;
       indexType:TVkIndexType;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aBufferAddress:TVkDeviceAddress;
                          const aSize:TVkUInt32;
                          const aIndexType:TVkIndexType);
{$endif}
     end;

     PPVkBindVertexBufferIndirectCommandNV=^PVkBindVertexBufferIndirectCommandNV;
     PVkBindVertexBufferIndirectCommandNV=^TVkBindVertexBufferIndirectCommandNV;
     TVkBindVertexBufferIndirectCommandNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       bufferAddress:TVkDeviceAddress;
       size:TVkUInt32;
       stride:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aBufferAddress:TVkDeviceAddress;
                          const aSize:TVkUInt32;
                          const aStride:TVkUInt32);
{$endif}
     end;

     PPVkSetStateFlagsIndirectCommandNV=^PVkSetStateFlagsIndirectCommandNV;
     PVkSetStateFlagsIndirectCommandNV=^TVkSetStateFlagsIndirectCommandNV;
     TVkSetStateFlagsIndirectCommandNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       data:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aData:TVkUInt32);
{$endif}
     end;

     PPVkIndirectCommandsStreamNV=^PVkIndirectCommandsStreamNV;
     PVkIndirectCommandsStreamNV=^TVkIndirectCommandsStreamNV;
     TVkIndirectCommandsStreamNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       buffer:TVkBuffer;
       offset:TVkDeviceSize;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aBuffer:TVkBuffer;
                          const aOffset:TVkDeviceSize);
{$endif}
     end;

     PPVkIndirectCommandsLayoutTokenNV=^PVkIndirectCommandsLayoutTokenNV;
     PVkIndirectCommandsLayoutTokenNV=^TVkIndirectCommandsLayoutTokenNV;
     TVkIndirectCommandsLayoutTokenNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV
       pNext:PVkVoid;
       tokenType:TVkIndirectCommandsTokenTypeNV;
       stream:TVkUInt32;
       offset:TVkUInt32;
       vertexBindingUnit:TVkUInt32;
       vertexDynamicStride:TVkBool32;
       pushconstantPipelineLayout:TVkPipelineLayout;
       pushconstantShaderStageFlags:TVkShaderStageFlags;
       pushconstantOffset:TVkUInt32;
       pushconstantSize:TVkUInt32;
       indirectStateFlags:TVkIndirectStateFlagsNV;
       indexTypeCount:TVkUInt32;
       pIndexTypes:PVkIndexType;
       pIndexTypeValues:PVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aTokenType:TVkIndirectCommandsTokenTypeNV;
                          const aStream:TVkUInt32;
                          const aOffset:TVkUInt32;
                          const aVertexBindingUnit:TVkUInt32;
                          const aVertexDynamicStride:TVkBool32;
                          const aPushconstantPipelineLayout:TVkPipelineLayout;
                          const aPushconstantShaderStageFlags:TVkShaderStageFlags;
                          const aPushconstantOffset:TVkUInt32;
                          const aPushconstantSize:TVkUInt32;
                          const aIndirectStateFlags:TVkIndirectStateFlagsNV;
                          const aIndexTypeCount:TVkUInt32;
                          const aPIndexTypes:PVkIndexType;
                          const aPIndexTypeValues:PVkUInt32);
{$endif}
     end;

     PPVkIndirectCommandsLayoutCreateInfoNV=^PVkIndirectCommandsLayoutCreateInfoNV;
     PVkIndirectCommandsLayoutCreateInfoNV=^TVkIndirectCommandsLayoutCreateInfoNV;
     TVkIndirectCommandsLayoutCreateInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV
       pNext:PVkVoid;
       flags:TVkIndirectCommandsLayoutUsageFlagsNV;
       pipelineBindPoint:TVkPipelineBindPoint;
       tokenCount:TVkUInt32;
       pTokens:PVkIndirectCommandsLayoutTokenNV;
       streamCount:TVkUInt32;
       pStreamStrides:PVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkIndirectCommandsLayoutUsageFlagsNV;
                          const aPipelineBindPoint:TVkPipelineBindPoint;
                          const aTokenCount:TVkUInt32;
                          const aPTokens:PVkIndirectCommandsLayoutTokenNV;
                          const aStreamCount:TVkUInt32;
                          const aPStreamStrides:PVkUInt32);
{$endif}
     end;

     PPVkGeneratedCommandsInfoNV=^PVkGeneratedCommandsInfoNV;
     PVkGeneratedCommandsInfoNV=^TVkGeneratedCommandsInfoNV;
     TVkGeneratedCommandsInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV
       pNext:PVkVoid;
       pipelineBindPoint:TVkPipelineBindPoint;
       pipeline:TVkPipeline;
       indirectCommandsLayout:TVkIndirectCommandsLayoutNV;
       streamCount:TVkUInt32;
       pStreams:PVkIndirectCommandsStreamNV;
       sequencesCount:TVkUInt32;
       preprocessBuffer:TVkBuffer;
       preprocessOffset:TVkDeviceSize;
       preprocessSize:TVkDeviceSize;
       sequencesCountBuffer:TVkBuffer;
       sequencesCountOffset:TVkDeviceSize;
       sequencesIndexBuffer:TVkBuffer;
       sequencesIndexOffset:TVkDeviceSize;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPipelineBindPoint:TVkPipelineBindPoint;
                          const aPipeline:TVkPipeline;
                          const aIndirectCommandsLayout:TVkIndirectCommandsLayoutNV;
                          const aStreamCount:TVkUInt32;
                          const aPStreams:PVkIndirectCommandsStreamNV;
                          const aSequencesCount:TVkUInt32;
                          const aPreprocessBuffer:TVkBuffer;
                          const aPreprocessOffset:TVkDeviceSize;
                          const aPreprocessSize:TVkDeviceSize;
                          const aSequencesCountBuffer:TVkBuffer;
                          const aSequencesCountOffset:TVkDeviceSize;
                          const aSequencesIndexBuffer:TVkBuffer;
                          const aSequencesIndexOffset:TVkDeviceSize);
{$endif}
     end;

     PPVkGeneratedCommandsMemoryRequirementsInfoNV=^PVkGeneratedCommandsMemoryRequirementsInfoNV;
     PVkGeneratedCommandsMemoryRequirementsInfoNV=^TVkGeneratedCommandsMemoryRequirementsInfoNV;
     TVkGeneratedCommandsMemoryRequirementsInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV
       pNext:PVkVoid;
       pipelineBindPoint:TVkPipelineBindPoint;
       pipeline:TVkPipeline;
       indirectCommandsLayout:TVkIndirectCommandsLayoutNV;
       maxSequencesCount:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPipelineBindPoint:TVkPipelineBindPoint;
                          const aPipeline:TVkPipeline;
                          const aIndirectCommandsLayout:TVkIndirectCommandsLayoutNV;
                          const aMaxSequencesCount:TVkUInt32);
{$endif}
     end;

     PPVkPipelineIndirectDeviceAddressInfoNV=^PVkPipelineIndirectDeviceAddressInfoNV;
     PVkPipelineIndirectDeviceAddressInfoNV=^TVkPipelineIndirectDeviceAddressInfoNV;
     TVkPipelineIndirectDeviceAddressInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PIPELINE_INDIRECT_DEVICE_ADDRESS_INFO_NV
       pNext:PVkVoid;
       pipelineBindPoint:TVkPipelineBindPoint;
       pipeline:TVkPipeline;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPipelineBindPoint:TVkPipelineBindPoint;
                          const aPipeline:TVkPipeline);
{$endif}
     end;

     PPVkBindPipelineIndirectCommandNV=^PVkBindPipelineIndirectCommandNV;
     PVkBindPipelineIndirectCommandNV=^TVkBindPipelineIndirectCommandNV;
     TVkBindPipelineIndirectCommandNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       pipelineAddress:TVkDeviceAddress;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPipelineAddress:TVkDeviceAddress);
{$endif}
     end;

     PPVkPhysicalDeviceFeatures2=^PVkPhysicalDeviceFeatures2;
     PVkPhysicalDeviceFeatures2=^TVkPhysicalDeviceFeatures2;
     TVkPhysicalDeviceFeatures2=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2
       pNext:PVkVoid;
       features:TVkPhysicalDeviceFeatures;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFeatures:TVkPhysicalDeviceFeatures);
{$endif}
     end;

     PPVkPhysicalDeviceFeatures2KHR=^PVkPhysicalDeviceFeatures2KHR;
     PVkPhysicalDeviceFeatures2KHR=^TVkPhysicalDeviceFeatures2KHR;
     TVkPhysicalDeviceFeatures2KHR=TVkPhysicalDeviceFeatures2;

     PPVkPhysicalDeviceProperties2=^PVkPhysicalDeviceProperties2;
     PVkPhysicalDeviceProperties2=^TVkPhysicalDeviceProperties2;
     TVkPhysicalDeviceProperties2=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2
       pNext:PVkVoid;
       properties:TVkPhysicalDeviceProperties;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aProperties:TVkPhysicalDeviceProperties);
{$endif}
     end;

     PPVkPhysicalDeviceProperties2KHR=^PVkPhysicalDeviceProperties2KHR;
     PVkPhysicalDeviceProperties2KHR=^TVkPhysicalDeviceProperties2KHR;
     TVkPhysicalDeviceProperties2KHR=TVkPhysicalDeviceProperties2;

     PPVkFormatProperties2=^PVkFormatProperties2;
     PVkFormatProperties2=^TVkFormatProperties2;
     TVkFormatProperties2=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2
       pNext:PVkVoid;
       formatProperties:TVkFormatProperties;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFormatProperties:TVkFormatProperties);
{$endif}
     end;

     PPVkFormatProperties2KHR=^PVkFormatProperties2KHR;
     PVkFormatProperties2KHR=^TVkFormatProperties2KHR;
     TVkFormatProperties2KHR=TVkFormatProperties2;

     PPVkImageFormatProperties2=^PVkImageFormatProperties2;
     PVkImageFormatProperties2=^TVkImageFormatProperties2;
     TVkImageFormatProperties2=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2
       pNext:PVkVoid;
       imageFormatProperties:TVkImageFormatProperties;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aImageFormatProperties:TVkImageFormatProperties);
{$endif}
     end;

     PPVkImageFormatProperties2KHR=^PVkImageFormatProperties2KHR;
     PVkImageFormatProperties2KHR=^TVkImageFormatProperties2KHR;
     TVkImageFormatProperties2KHR=TVkImageFormatProperties2;

     PPVkPhysicalDeviceImageFormatInfo2=^PVkPhysicalDeviceImageFormatInfo2;
     PVkPhysicalDeviceImageFormatInfo2=^TVkPhysicalDeviceImageFormatInfo2;
     TVkPhysicalDeviceImageFormatInfo2=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2
       pNext:PVkVoid;
       format:TVkFormat;
       type_:TVkImageType;
       tiling:TVkImageTiling;
       usage:TVkImageUsageFlags;
       flags:TVkImageCreateFlags;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFormat:TVkFormat;
                          const aType_:TVkImageType;
                          const aTiling:TVkImageTiling;
                          const aUsage:TVkImageUsageFlags;
                          const aFlags:TVkImageCreateFlags);
{$endif}
     end;

     PPVkPhysicalDeviceImageFormatInfo2KHR=^PVkPhysicalDeviceImageFormatInfo2KHR;
     PVkPhysicalDeviceImageFormatInfo2KHR=^TVkPhysicalDeviceImageFormatInfo2KHR;
     TVkPhysicalDeviceImageFormatInfo2KHR=TVkPhysicalDeviceImageFormatInfo2;

     PPVkQueueFamilyProperties2=^PVkQueueFamilyProperties2;
     PVkQueueFamilyProperties2=^TVkQueueFamilyProperties2;
     TVkQueueFamilyProperties2=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2
       pNext:PVkVoid;
       queueFamilyProperties:TVkQueueFamilyProperties;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aQueueFamilyProperties:TVkQueueFamilyProperties);
{$endif}
     end;

     PPVkQueueFamilyProperties2KHR=^PVkQueueFamilyProperties2KHR;
     PVkQueueFamilyProperties2KHR=^TVkQueueFamilyProperties2KHR;
     TVkQueueFamilyProperties2KHR=TVkQueueFamilyProperties2;

     PPVkPhysicalDeviceMemoryProperties2=^PVkPhysicalDeviceMemoryProperties2;
     PVkPhysicalDeviceMemoryProperties2=^TVkPhysicalDeviceMemoryProperties2;
     TVkPhysicalDeviceMemoryProperties2=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2
       pNext:PVkVoid;
       memoryProperties:TVkPhysicalDeviceMemoryProperties;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMemoryProperties:TVkPhysicalDeviceMemoryProperties);
{$endif}
     end;

     PPVkPhysicalDeviceMemoryProperties2KHR=^PVkPhysicalDeviceMemoryProperties2KHR;
     PVkPhysicalDeviceMemoryProperties2KHR=^TVkPhysicalDeviceMemoryProperties2KHR;
     TVkPhysicalDeviceMemoryProperties2KHR=TVkPhysicalDeviceMemoryProperties2;

     PPVkSparseImageFormatProperties2=^PVkSparseImageFormatProperties2;
     PVkSparseImageFormatProperties2=^TVkSparseImageFormatProperties2;
     TVkSparseImageFormatProperties2=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2
       pNext:PVkVoid;
       properties:TVkSparseImageFormatProperties;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aProperties:TVkSparseImageFormatProperties);
{$endif}
     end;

     PPVkSparseImageFormatProperties2KHR=^PVkSparseImageFormatProperties2KHR;
     PVkSparseImageFormatProperties2KHR=^TVkSparseImageFormatProperties2KHR;
     TVkSparseImageFormatProperties2KHR=TVkSparseImageFormatProperties2;

     PPVkPhysicalDeviceSparseImageFormatInfo2=^PVkPhysicalDeviceSparseImageFormatInfo2;
     PVkPhysicalDeviceSparseImageFormatInfo2=^TVkPhysicalDeviceSparseImageFormatInfo2;
     TVkPhysicalDeviceSparseImageFormatInfo2=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2
       pNext:PVkVoid;
       format:TVkFormat;
       type_:TVkImageType;
       samples:TVkSampleCountFlagBits;
       usage:TVkImageUsageFlags;
       tiling:TVkImageTiling;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFormat:TVkFormat;
                          const aType_:TVkImageType;
                          const aSamples:TVkSampleCountFlagBits;
                          const aUsage:TVkImageUsageFlags;
                          const aTiling:TVkImageTiling);
{$endif}
     end;

     PPVkPhysicalDeviceSparseImageFormatInfo2KHR=^PVkPhysicalDeviceSparseImageFormatInfo2KHR;
     PVkPhysicalDeviceSparseImageFormatInfo2KHR=^TVkPhysicalDeviceSparseImageFormatInfo2KHR;
     TVkPhysicalDeviceSparseImageFormatInfo2KHR=TVkPhysicalDeviceSparseImageFormatInfo2;

     PPVkPhysicalDevicePushDescriptorPropertiesKHR=^PVkPhysicalDevicePushDescriptorPropertiesKHR;
     PVkPhysicalDevicePushDescriptorPropertiesKHR=^TVkPhysicalDevicePushDescriptorPropertiesKHR;
     TVkPhysicalDevicePushDescriptorPropertiesKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR
       pNext:PVkVoid;
       maxPushDescriptors:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMaxPushDescriptors:TVkUInt32);
{$endif}
     end;

     PPVkConformanceVersion=^PVkConformanceVersion;
     PVkConformanceVersion=^TVkConformanceVersion;
     TVkConformanceVersion=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       major:TVkUInt8;
       minor:TVkUInt8;
       subminor:TVkUInt8;
       patch:TVkUInt8;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMajor:TVkUInt8;
                          const aMinor:TVkUInt8;
                          const aSubminor:TVkUInt8;
                          const aPatch:TVkUInt8);
{$endif}
     end;

     PPVkConformanceVersionKHR=^PVkConformanceVersionKHR;
     PVkConformanceVersionKHR=^TVkConformanceVersionKHR;
     TVkConformanceVersionKHR=TVkConformanceVersion;

     PPVkPhysicalDeviceDriverProperties=^PVkPhysicalDeviceDriverProperties;
     PVkPhysicalDeviceDriverProperties=^TVkPhysicalDeviceDriverProperties;
     TVkPhysicalDeviceDriverProperties=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES
       pNext:PVkVoid;
       driverID:TVkDriverId;
       driverName:array[0..VK_MAX_DRIVER_NAME_SIZE-1] of TVkChar;
       driverInfo:array[0..VK_MAX_DRIVER_INFO_SIZE-1] of TVkChar;
       conformanceVersion:TVkConformanceVersion;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDriverID:TVkDriverId;
                          const aDriverName:TVkCharString;
                          const aDriverInfo:TVkCharString;
                          const aConformanceVersion:TVkConformanceVersion);
{$endif}
     end;

     PPVkPhysicalDeviceDriverPropertiesKHR=^PVkPhysicalDeviceDriverPropertiesKHR;
     PVkPhysicalDeviceDriverPropertiesKHR=^TVkPhysicalDeviceDriverPropertiesKHR;
     TVkPhysicalDeviceDriverPropertiesKHR=TVkPhysicalDeviceDriverProperties;

     PPVkRectLayerKHR=^PVkRectLayerKHR;
     PVkRectLayerKHR=^TVkRectLayerKHR;
     TVkRectLayerKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       offset:TVkOffset2D;
       extent:TVkExtent2D;
       layer:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aOffset:TVkOffset2D;
                          const aExtent:TVkExtent2D;
                          const aLayer:TVkUInt32);
{$endif}
     end;

     PPVkPresentRegionKHR=^PVkPresentRegionKHR;
     PVkPresentRegionKHR=^TVkPresentRegionKHR;
     TVkPresentRegionKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       rectangleCount:TVkUInt32;
       pRectangles:PVkRectLayerKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aRectangleCount:TVkUInt32;
                          const aPRectangles:PVkRectLayerKHR);
{$endif}
     end;

     PPVkPresentRegionsKHR=^PVkPresentRegionsKHR;
     PVkPresentRegionsKHR=^TVkPresentRegionsKHR;
     TVkPresentRegionsKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR
       pNext:PVkVoid;
       swapchainCount:TVkUInt32;
       pRegions:PVkPresentRegionKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSwapchainCount:TVkUInt32;
                          const aPRegions:PVkPresentRegionKHR);
{$endif}
     end;

     PPVkPhysicalDeviceVariablePointersFeatures=^PVkPhysicalDeviceVariablePointersFeatures;
     PVkPhysicalDeviceVariablePointersFeatures=^TVkPhysicalDeviceVariablePointersFeatures;
     TVkPhysicalDeviceVariablePointersFeatures=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES
       pNext:PVkVoid;
       variablePointersStorageBuffer:TVkBool32;
       variablePointers:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aVariablePointersStorageBuffer:TVkBool32;
                          const aVariablePointers:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceVariablePointersFeaturesKHR=^PVkPhysicalDeviceVariablePointersFeaturesKHR;
     PVkPhysicalDeviceVariablePointersFeaturesKHR=^TVkPhysicalDeviceVariablePointersFeaturesKHR;
     TVkPhysicalDeviceVariablePointersFeaturesKHR=TVkPhysicalDeviceVariablePointersFeatures;

     PPVkPhysicalDeviceVariablePointerFeaturesKHR=^PVkPhysicalDeviceVariablePointerFeaturesKHR;
     PVkPhysicalDeviceVariablePointerFeaturesKHR=^TVkPhysicalDeviceVariablePointerFeaturesKHR;
     TVkPhysicalDeviceVariablePointerFeaturesKHR=TVkPhysicalDeviceVariablePointersFeatures;

     PPVkPhysicalDeviceVariablePointerFeatures=^PVkPhysicalDeviceVariablePointerFeatures;
     PVkPhysicalDeviceVariablePointerFeatures=^TVkPhysicalDeviceVariablePointerFeatures;
     TVkPhysicalDeviceVariablePointerFeatures=TVkPhysicalDeviceVariablePointersFeatures;

     PPVkExternalMemoryProperties=^PVkExternalMemoryProperties;
     PVkExternalMemoryProperties=^TVkExternalMemoryProperties;
     TVkExternalMemoryProperties=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       externalMemoryFeatures:TVkExternalMemoryFeatureFlags;
       exportFromImportedHandleTypes:TVkExternalMemoryHandleTypeFlags;
       compatibleHandleTypes:TVkExternalMemoryHandleTypeFlags;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aExternalMemoryFeatures:TVkExternalMemoryFeatureFlags;
                          const aExportFromImportedHandleTypes:TVkExternalMemoryHandleTypeFlags;
                          const aCompatibleHandleTypes:TVkExternalMemoryHandleTypeFlags);
{$endif}
     end;

     PPVkExternalMemoryPropertiesKHR=^PVkExternalMemoryPropertiesKHR;
     PVkExternalMemoryPropertiesKHR=^TVkExternalMemoryPropertiesKHR;
     TVkExternalMemoryPropertiesKHR=TVkExternalMemoryProperties;

     PPVkPhysicalDeviceExternalImageFormatInfo=^PVkPhysicalDeviceExternalImageFormatInfo;
     PVkPhysicalDeviceExternalImageFormatInfo=^TVkPhysicalDeviceExternalImageFormatInfo;
     TVkPhysicalDeviceExternalImageFormatInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO
       pNext:PVkVoid;
       handleType:TVkExternalMemoryHandleTypeFlagBits;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aHandleType:TVkExternalMemoryHandleTypeFlagBits);
{$endif}
     end;

     PPVkPhysicalDeviceExternalImageFormatInfoKHR=^PVkPhysicalDeviceExternalImageFormatInfoKHR;
     PVkPhysicalDeviceExternalImageFormatInfoKHR=^TVkPhysicalDeviceExternalImageFormatInfoKHR;
     TVkPhysicalDeviceExternalImageFormatInfoKHR=TVkPhysicalDeviceExternalImageFormatInfo;

     PPVkExternalImageFormatProperties=^PVkExternalImageFormatProperties;
     PVkExternalImageFormatProperties=^TVkExternalImageFormatProperties;
     TVkExternalImageFormatProperties=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES
       pNext:PVkVoid;
       externalMemoryProperties:TVkExternalMemoryProperties;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aExternalMemoryProperties:TVkExternalMemoryProperties);
{$endif}
     end;

     PPVkExternalImageFormatPropertiesKHR=^PVkExternalImageFormatPropertiesKHR;
     PVkExternalImageFormatPropertiesKHR=^TVkExternalImageFormatPropertiesKHR;
     TVkExternalImageFormatPropertiesKHR=TVkExternalImageFormatProperties;

     PPVkPhysicalDeviceExternalBufferInfo=^PVkPhysicalDeviceExternalBufferInfo;
     PVkPhysicalDeviceExternalBufferInfo=^TVkPhysicalDeviceExternalBufferInfo;
     TVkPhysicalDeviceExternalBufferInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO
       pNext:PVkVoid;
       flags:TVkBufferCreateFlags;
       usage:TVkBufferUsageFlags;
       handleType:TVkExternalMemoryHandleTypeFlagBits;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkBufferCreateFlags;
                          const aUsage:TVkBufferUsageFlags;
                          const aHandleType:TVkExternalMemoryHandleTypeFlagBits);
{$endif}
     end;

     PPVkPhysicalDeviceExternalBufferInfoKHR=^PVkPhysicalDeviceExternalBufferInfoKHR;
     PVkPhysicalDeviceExternalBufferInfoKHR=^TVkPhysicalDeviceExternalBufferInfoKHR;
     TVkPhysicalDeviceExternalBufferInfoKHR=TVkPhysicalDeviceExternalBufferInfo;

     PPVkExternalBufferProperties=^PVkExternalBufferProperties;
     PVkExternalBufferProperties=^TVkExternalBufferProperties;
     TVkExternalBufferProperties=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES
       pNext:PVkVoid;
       externalMemoryProperties:TVkExternalMemoryProperties;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aExternalMemoryProperties:TVkExternalMemoryProperties);
{$endif}
     end;

     PPVkExternalBufferPropertiesKHR=^PVkExternalBufferPropertiesKHR;
     PVkExternalBufferPropertiesKHR=^TVkExternalBufferPropertiesKHR;
     TVkExternalBufferPropertiesKHR=TVkExternalBufferProperties;

     PPVkPhysicalDeviceIDProperties=^PVkPhysicalDeviceIDProperties;
     PVkPhysicalDeviceIDProperties=^TVkPhysicalDeviceIDProperties;
     TVkPhysicalDeviceIDProperties=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES
       pNext:PVkVoid;
       deviceUUID:array[0..VK_UUID_SIZE-1] of TVkUInt8;
       driverUUID:array[0..VK_UUID_SIZE-1] of TVkUInt8;
       deviceLUID:array[0..VK_LUID_SIZE-1] of TVkUInt8;
       deviceNodeMask:TVkUInt32;
       deviceLUIDValid:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDeviceUUID:array of TVkUInt8;
                          const aDriverUUID:array of TVkUInt8;
                          const aDeviceLUID:array of TVkUInt8;
                          const aDeviceNodeMask:TVkUInt32;
                          const aDeviceLUIDValid:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceIDPropertiesKHR=^PVkPhysicalDeviceIDPropertiesKHR;
     PVkPhysicalDeviceIDPropertiesKHR=^TVkPhysicalDeviceIDPropertiesKHR;
     TVkPhysicalDeviceIDPropertiesKHR=TVkPhysicalDeviceIDProperties;

     PPVkExternalMemoryImageCreateInfo=^PVkExternalMemoryImageCreateInfo;
     PVkExternalMemoryImageCreateInfo=^TVkExternalMemoryImageCreateInfo;
     TVkExternalMemoryImageCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO
       pNext:PVkVoid;
       handleTypes:TVkExternalMemoryHandleTypeFlags;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aHandleTypes:TVkExternalMemoryHandleTypeFlags);
{$endif}
     end;

     PPVkExternalMemoryImageCreateInfoKHR=^PVkExternalMemoryImageCreateInfoKHR;
     PVkExternalMemoryImageCreateInfoKHR=^TVkExternalMemoryImageCreateInfoKHR;
     TVkExternalMemoryImageCreateInfoKHR=TVkExternalMemoryImageCreateInfo;

     PPVkExternalMemoryBufferCreateInfo=^PVkExternalMemoryBufferCreateInfo;
     PVkExternalMemoryBufferCreateInfo=^TVkExternalMemoryBufferCreateInfo;
     TVkExternalMemoryBufferCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO
       pNext:PVkVoid;
       handleTypes:TVkExternalMemoryHandleTypeFlags;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aHandleTypes:TVkExternalMemoryHandleTypeFlags);
{$endif}
     end;

     PPVkExternalMemoryBufferCreateInfoKHR=^PVkExternalMemoryBufferCreateInfoKHR;
     PVkExternalMemoryBufferCreateInfoKHR=^TVkExternalMemoryBufferCreateInfoKHR;
     TVkExternalMemoryBufferCreateInfoKHR=TVkExternalMemoryBufferCreateInfo;

     PPVkExportMemoryAllocateInfo=^PVkExportMemoryAllocateInfo;
     PVkExportMemoryAllocateInfo=^TVkExportMemoryAllocateInfo;
     TVkExportMemoryAllocateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO
       pNext:PVkVoid;
       handleTypes:TVkExternalMemoryHandleTypeFlags;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aHandleTypes:TVkExternalMemoryHandleTypeFlags);
{$endif}
     end;

     PPVkExportMemoryAllocateInfoKHR=^PVkExportMemoryAllocateInfoKHR;
     PVkExportMemoryAllocateInfoKHR=^TVkExportMemoryAllocateInfoKHR;
     TVkExportMemoryAllocateInfoKHR=TVkExportMemoryAllocateInfo;

     PPVkImportMemoryWin32HandleInfoKHR=^PVkImportMemoryWin32HandleInfoKHR;
     PVkImportMemoryWin32HandleInfoKHR=^TVkImportMemoryWin32HandleInfoKHR;
     TVkImportMemoryWin32HandleInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR
       pNext:PVkVoid;
       handleType:TVkExternalMemoryHandleTypeFlagBits;
       handle:THANDLE;
       name:PWideChar;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aHandleType:TVkExternalMemoryHandleTypeFlagBits;
                          const aHandle:THANDLE;
                          const aName:PWideChar);
{$endif}
     end;

{$ifdef Windows}
     PPVkExportMemoryWin32HandleInfoKHR=^PVkExportMemoryWin32HandleInfoKHR;
     PVkExportMemoryWin32HandleInfoKHR=^TVkExportMemoryWin32HandleInfoKHR;
     TVkExportMemoryWin32HandleInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR
       pNext:PVkVoid;
       pAttributes:PSecurityAttributes;
       dwAccess:TVkUInt32;
       name:PWideChar;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPAttributes:PSecurityAttributes;
                          const aDwAccess:TVkUInt32;
                          const aName:PWideChar);
{$endif}
     end;
{$endif}

{$ifdef Fuchsia}
     PPVkImportMemoryZirconHandleInfoFUCHSIA=^PVkImportMemoryZirconHandleInfoFUCHSIA;
     PVkImportMemoryZirconHandleInfoFUCHSIA=^TVkImportMemoryZirconHandleInfoFUCHSIA;
     TVkImportMemoryZirconHandleInfoFUCHSIA=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA
       pNext:PVkVoid;
       handleType:TVkExternalMemoryHandleTypeFlagBits;
       handle:TVkFuchsiaZXHandle;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aHandleType:TVkExternalMemoryHandleTypeFlagBits;
                          const aHandle:TVkFuchsiaZXHandle);
{$endif}
     end;
{$endif}

     PPVkMemoryZirconHandlePropertiesFUCHSIA=^PVkMemoryZirconHandlePropertiesFUCHSIA;
     PVkMemoryZirconHandlePropertiesFUCHSIA=^TVkMemoryZirconHandlePropertiesFUCHSIA;
     TVkMemoryZirconHandlePropertiesFUCHSIA=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA
       pNext:PVkVoid;
       memoryTypeBits:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMemoryTypeBits:TVkUInt32);
{$endif}
     end;

     PPVkMemoryGetZirconHandleInfoFUCHSIA=^PVkMemoryGetZirconHandleInfoFUCHSIA;
     PVkMemoryGetZirconHandleInfoFUCHSIA=^TVkMemoryGetZirconHandleInfoFUCHSIA;
     TVkMemoryGetZirconHandleInfoFUCHSIA=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA
       pNext:PVkVoid;
       memory:TVkDeviceMemory;
       handleType:TVkExternalMemoryHandleTypeFlagBits;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMemory:TVkDeviceMemory;
                          const aHandleType:TVkExternalMemoryHandleTypeFlagBits);
{$endif}
     end;

     PPVkMemoryWin32HandlePropertiesKHR=^PVkMemoryWin32HandlePropertiesKHR;
     PVkMemoryWin32HandlePropertiesKHR=^TVkMemoryWin32HandlePropertiesKHR;
     TVkMemoryWin32HandlePropertiesKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR
       pNext:PVkVoid;
       memoryTypeBits:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMemoryTypeBits:TVkUInt32);
{$endif}
     end;

     PPVkMemoryGetWin32HandleInfoKHR=^PVkMemoryGetWin32HandleInfoKHR;
     PVkMemoryGetWin32HandleInfoKHR=^TVkMemoryGetWin32HandleInfoKHR;
     TVkMemoryGetWin32HandleInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR
       pNext:PVkVoid;
       memory:TVkDeviceMemory;
       handleType:TVkExternalMemoryHandleTypeFlagBits;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMemory:TVkDeviceMemory;
                          const aHandleType:TVkExternalMemoryHandleTypeFlagBits);
{$endif}
     end;

     PPVkImportMemoryFdInfoKHR=^PVkImportMemoryFdInfoKHR;
     PVkImportMemoryFdInfoKHR=^TVkImportMemoryFdInfoKHR;
     TVkImportMemoryFdInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR
       pNext:PVkVoid;
       handleType:TVkExternalMemoryHandleTypeFlagBits;
       fd:TVkInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aHandleType:TVkExternalMemoryHandleTypeFlagBits;
                          const aFd:TVkInt32);
{$endif}
     end;

     PPVkMemoryFdPropertiesKHR=^PVkMemoryFdPropertiesKHR;
     PVkMemoryFdPropertiesKHR=^TVkMemoryFdPropertiesKHR;
     TVkMemoryFdPropertiesKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR
       pNext:PVkVoid;
       memoryTypeBits:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMemoryTypeBits:TVkUInt32);
{$endif}
     end;

     PPVkMemoryGetFdInfoKHR=^PVkMemoryGetFdInfoKHR;
     PVkMemoryGetFdInfoKHR=^TVkMemoryGetFdInfoKHR;
     TVkMemoryGetFdInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR
       pNext:PVkVoid;
       memory:TVkDeviceMemory;
       handleType:TVkExternalMemoryHandleTypeFlagBits;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMemory:TVkDeviceMemory;
                          const aHandleType:TVkExternalMemoryHandleTypeFlagBits);
{$endif}
     end;

     PPVkWin32KeyedMutexAcquireReleaseInfoKHR=^PVkWin32KeyedMutexAcquireReleaseInfoKHR;
     PVkWin32KeyedMutexAcquireReleaseInfoKHR=^TVkWin32KeyedMutexAcquireReleaseInfoKHR;
     TVkWin32KeyedMutexAcquireReleaseInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR
       pNext:PVkVoid;
       acquireCount:TVkUInt32;
       pAcquireSyncs:PVkDeviceMemory;
       pAcquireKeys:PVkUInt64;
       pAcquireTimeouts:PVkUInt32;
       releaseCount:TVkUInt32;
       pReleaseSyncs:PVkDeviceMemory;
       pReleaseKeys:PVkUInt64;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aAcquireCount:TVkUInt32;
                          const aPAcquireSyncs:PVkDeviceMemory;
                          const aPAcquireKeys:PVkUInt64;
                          const aPAcquireTimeouts:PVkUInt32;
                          const aReleaseCount:TVkUInt32;
                          const aPReleaseSyncs:PVkDeviceMemory;
                          const aPReleaseKeys:PVkUInt64);
{$endif}
     end;

     PPVkPhysicalDeviceExternalSemaphoreInfo=^PVkPhysicalDeviceExternalSemaphoreInfo;
     PVkPhysicalDeviceExternalSemaphoreInfo=^TVkPhysicalDeviceExternalSemaphoreInfo;
     TVkPhysicalDeviceExternalSemaphoreInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO
       pNext:PVkVoid;
       handleType:TVkExternalSemaphoreHandleTypeFlagBits;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aHandleType:TVkExternalSemaphoreHandleTypeFlagBits);
{$endif}
     end;

     PPVkPhysicalDeviceExternalSemaphoreInfoKHR=^PVkPhysicalDeviceExternalSemaphoreInfoKHR;
     PVkPhysicalDeviceExternalSemaphoreInfoKHR=^TVkPhysicalDeviceExternalSemaphoreInfoKHR;
     TVkPhysicalDeviceExternalSemaphoreInfoKHR=TVkPhysicalDeviceExternalSemaphoreInfo;

     PPVkExternalSemaphoreProperties=^PVkExternalSemaphoreProperties;
     PVkExternalSemaphoreProperties=^TVkExternalSemaphoreProperties;
     TVkExternalSemaphoreProperties=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES
       pNext:PVkVoid;
       exportFromImportedHandleTypes:TVkExternalSemaphoreHandleTypeFlags;
       compatibleHandleTypes:TVkExternalSemaphoreHandleTypeFlags;
       externalSemaphoreFeatures:TVkExternalSemaphoreFeatureFlags;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aExportFromImportedHandleTypes:TVkExternalSemaphoreHandleTypeFlags;
                          const aCompatibleHandleTypes:TVkExternalSemaphoreHandleTypeFlags;
                          const aExternalSemaphoreFeatures:TVkExternalSemaphoreFeatureFlags);
{$endif}
     end;

     PPVkExternalSemaphorePropertiesKHR=^PVkExternalSemaphorePropertiesKHR;
     PVkExternalSemaphorePropertiesKHR=^TVkExternalSemaphorePropertiesKHR;
     TVkExternalSemaphorePropertiesKHR=TVkExternalSemaphoreProperties;

     PPVkExportSemaphoreCreateInfo=^PVkExportSemaphoreCreateInfo;
     PVkExportSemaphoreCreateInfo=^TVkExportSemaphoreCreateInfo;
     TVkExportSemaphoreCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO
       pNext:PVkVoid;
       handleTypes:TVkExternalSemaphoreHandleTypeFlags;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aHandleTypes:TVkExternalSemaphoreHandleTypeFlags);
{$endif}
     end;

     PPVkExportSemaphoreCreateInfoKHR=^PVkExportSemaphoreCreateInfoKHR;
     PVkExportSemaphoreCreateInfoKHR=^TVkExportSemaphoreCreateInfoKHR;
     TVkExportSemaphoreCreateInfoKHR=TVkExportSemaphoreCreateInfo;

     PPVkImportSemaphoreWin32HandleInfoKHR=^PVkImportSemaphoreWin32HandleInfoKHR;
     PVkImportSemaphoreWin32HandleInfoKHR=^TVkImportSemaphoreWin32HandleInfoKHR;
     TVkImportSemaphoreWin32HandleInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR
       pNext:PVkVoid;
       semaphore:TVkSemaphore;
       flags:TVkSemaphoreImportFlags;
       handleType:TVkExternalSemaphoreHandleTypeFlagBits;
       handle:THANDLE;
       name:PWideChar;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSemaphore:TVkSemaphore;
                          const aFlags:TVkSemaphoreImportFlags;
                          const aHandleType:TVkExternalSemaphoreHandleTypeFlagBits;
                          const aHandle:THANDLE;
                          const aName:PWideChar);
{$endif}
     end;

{$ifdef Windows}
     PPVkExportSemaphoreWin32HandleInfoKHR=^PVkExportSemaphoreWin32HandleInfoKHR;
     PVkExportSemaphoreWin32HandleInfoKHR=^TVkExportSemaphoreWin32HandleInfoKHR;
     TVkExportSemaphoreWin32HandleInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR
       pNext:PVkVoid;
       pAttributes:PSecurityAttributes;
       dwAccess:TVkUInt32;
       name:PWideChar;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPAttributes:PSecurityAttributes;
                          const aDwAccess:TVkUInt32;
                          const aName:PWideChar);
{$endif}
     end;
{$endif}

     PPVkD3D12FenceSubmitInfoKHR=^PVkD3D12FenceSubmitInfoKHR;
     PVkD3D12FenceSubmitInfoKHR=^TVkD3D12FenceSubmitInfoKHR;
     TVkD3D12FenceSubmitInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR
       pNext:PVkVoid;
       waitSemaphoreValuesCount:TVkUInt32;
       pWaitSemaphoreValues:PVkUInt64;
       signalSemaphoreValuesCount:TVkUInt32;
       pSignalSemaphoreValues:PVkUInt64;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aWaitSemaphoreValuesCount:TVkUInt32;
                          const aPWaitSemaphoreValues:PVkUInt64;
                          const aSignalSemaphoreValuesCount:TVkUInt32;
                          const aPSignalSemaphoreValues:PVkUInt64);
{$endif}
     end;

     PPVkSemaphoreGetWin32HandleInfoKHR=^PVkSemaphoreGetWin32HandleInfoKHR;
     PVkSemaphoreGetWin32HandleInfoKHR=^TVkSemaphoreGetWin32HandleInfoKHR;
     TVkSemaphoreGetWin32HandleInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR
       pNext:PVkVoid;
       semaphore:TVkSemaphore;
       handleType:TVkExternalSemaphoreHandleTypeFlagBits;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSemaphore:TVkSemaphore;
                          const aHandleType:TVkExternalSemaphoreHandleTypeFlagBits);
{$endif}
     end;

     PPVkImportSemaphoreFdInfoKHR=^PVkImportSemaphoreFdInfoKHR;
     PVkImportSemaphoreFdInfoKHR=^TVkImportSemaphoreFdInfoKHR;
     TVkImportSemaphoreFdInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR
       pNext:PVkVoid;
       semaphore:TVkSemaphore;
       flags:TVkSemaphoreImportFlags;
       handleType:TVkExternalSemaphoreHandleTypeFlagBits;
       fd:TVkInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSemaphore:TVkSemaphore;
                          const aFlags:TVkSemaphoreImportFlags;
                          const aHandleType:TVkExternalSemaphoreHandleTypeFlagBits;
                          const aFd:TVkInt32);
{$endif}
     end;

     PPVkSemaphoreGetFdInfoKHR=^PVkSemaphoreGetFdInfoKHR;
     PVkSemaphoreGetFdInfoKHR=^TVkSemaphoreGetFdInfoKHR;
     TVkSemaphoreGetFdInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR
       pNext:PVkVoid;
       semaphore:TVkSemaphore;
       handleType:TVkExternalSemaphoreHandleTypeFlagBits;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSemaphore:TVkSemaphore;
                          const aHandleType:TVkExternalSemaphoreHandleTypeFlagBits);
{$endif}
     end;

{$ifdef Fuchsia}
     PPVkImportSemaphoreZirconHandleInfoFUCHSIA=^PVkImportSemaphoreZirconHandleInfoFUCHSIA;
     PVkImportSemaphoreZirconHandleInfoFUCHSIA=^TVkImportSemaphoreZirconHandleInfoFUCHSIA;
     TVkImportSemaphoreZirconHandleInfoFUCHSIA=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA
       pNext:PVkVoid;
       semaphore:TVkSemaphore;
       flags:TVkSemaphoreImportFlags;
       handleType:TVkExternalSemaphoreHandleTypeFlagBits;
       zirconHandle:TVkFuchsiaZXHandle;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSemaphore:TVkSemaphore;
                          const aFlags:TVkSemaphoreImportFlags;
                          const aHandleType:TVkExternalSemaphoreHandleTypeFlagBits;
                          const aZirconHandle:TVkFuchsiaZXHandle);
{$endif}
     end;
{$endif}

     PPVkSemaphoreGetZirconHandleInfoFUCHSIA=^PVkSemaphoreGetZirconHandleInfoFUCHSIA;
     PVkSemaphoreGetZirconHandleInfoFUCHSIA=^TVkSemaphoreGetZirconHandleInfoFUCHSIA;
     TVkSemaphoreGetZirconHandleInfoFUCHSIA=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA
       pNext:PVkVoid;
       semaphore:TVkSemaphore;
       handleType:TVkExternalSemaphoreHandleTypeFlagBits;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSemaphore:TVkSemaphore;
                          const aHandleType:TVkExternalSemaphoreHandleTypeFlagBits);
{$endif}
     end;

     PPVkPhysicalDeviceExternalFenceInfo=^PVkPhysicalDeviceExternalFenceInfo;
     PVkPhysicalDeviceExternalFenceInfo=^TVkPhysicalDeviceExternalFenceInfo;
     TVkPhysicalDeviceExternalFenceInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO
       pNext:PVkVoid;
       handleType:TVkExternalFenceHandleTypeFlagBits;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aHandleType:TVkExternalFenceHandleTypeFlagBits);
{$endif}
     end;

     PPVkPhysicalDeviceExternalFenceInfoKHR=^PVkPhysicalDeviceExternalFenceInfoKHR;
     PVkPhysicalDeviceExternalFenceInfoKHR=^TVkPhysicalDeviceExternalFenceInfoKHR;
     TVkPhysicalDeviceExternalFenceInfoKHR=TVkPhysicalDeviceExternalFenceInfo;

     PPVkExternalFenceProperties=^PVkExternalFenceProperties;
     PVkExternalFenceProperties=^TVkExternalFenceProperties;
     TVkExternalFenceProperties=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES
       pNext:PVkVoid;
       exportFromImportedHandleTypes:TVkExternalFenceHandleTypeFlags;
       compatibleHandleTypes:TVkExternalFenceHandleTypeFlags;
       externalFenceFeatures:TVkExternalFenceFeatureFlags;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aExportFromImportedHandleTypes:TVkExternalFenceHandleTypeFlags;
                          const aCompatibleHandleTypes:TVkExternalFenceHandleTypeFlags;
                          const aExternalFenceFeatures:TVkExternalFenceFeatureFlags);
{$endif}
     end;

     PPVkExternalFencePropertiesKHR=^PVkExternalFencePropertiesKHR;
     PVkExternalFencePropertiesKHR=^TVkExternalFencePropertiesKHR;
     TVkExternalFencePropertiesKHR=TVkExternalFenceProperties;

     PPVkExportFenceCreateInfo=^PVkExportFenceCreateInfo;
     PVkExportFenceCreateInfo=^TVkExportFenceCreateInfo;
     TVkExportFenceCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO
       pNext:PVkVoid;
       handleTypes:TVkExternalFenceHandleTypeFlags;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aHandleTypes:TVkExternalFenceHandleTypeFlags);
{$endif}
     end;

     PPVkExportFenceCreateInfoKHR=^PVkExportFenceCreateInfoKHR;
     PVkExportFenceCreateInfoKHR=^TVkExportFenceCreateInfoKHR;
     TVkExportFenceCreateInfoKHR=TVkExportFenceCreateInfo;

     PPVkImportFenceWin32HandleInfoKHR=^PVkImportFenceWin32HandleInfoKHR;
     PVkImportFenceWin32HandleInfoKHR=^TVkImportFenceWin32HandleInfoKHR;
     TVkImportFenceWin32HandleInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR
       pNext:PVkVoid;
       fence:TVkFence;
       flags:TVkFenceImportFlags;
       handleType:TVkExternalFenceHandleTypeFlagBits;
       handle:THANDLE;
       name:PWideChar;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFence:TVkFence;
                          const aFlags:TVkFenceImportFlags;
                          const aHandleType:TVkExternalFenceHandleTypeFlagBits;
                          const aHandle:THANDLE;
                          const aName:PWideChar);
{$endif}
     end;

{$ifdef Windows}
     PPVkExportFenceWin32HandleInfoKHR=^PVkExportFenceWin32HandleInfoKHR;
     PVkExportFenceWin32HandleInfoKHR=^TVkExportFenceWin32HandleInfoKHR;
     TVkExportFenceWin32HandleInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR
       pNext:PVkVoid;
       pAttributes:PSecurityAttributes;
       dwAccess:TVkUInt32;
       name:PWideChar;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPAttributes:PSecurityAttributes;
                          const aDwAccess:TVkUInt32;
                          const aName:PWideChar);
{$endif}
     end;
{$endif}

     PPVkFenceGetWin32HandleInfoKHR=^PVkFenceGetWin32HandleInfoKHR;
     PVkFenceGetWin32HandleInfoKHR=^TVkFenceGetWin32HandleInfoKHR;
     TVkFenceGetWin32HandleInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR
       pNext:PVkVoid;
       fence:TVkFence;
       handleType:TVkExternalFenceHandleTypeFlagBits;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFence:TVkFence;
                          const aHandleType:TVkExternalFenceHandleTypeFlagBits);
{$endif}
     end;

     PPVkImportFenceFdInfoKHR=^PVkImportFenceFdInfoKHR;
     PVkImportFenceFdInfoKHR=^TVkImportFenceFdInfoKHR;
     TVkImportFenceFdInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR
       pNext:PVkVoid;
       fence:TVkFence;
       flags:TVkFenceImportFlags;
       handleType:TVkExternalFenceHandleTypeFlagBits;
       fd:TVkInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFence:TVkFence;
                          const aFlags:TVkFenceImportFlags;
                          const aHandleType:TVkExternalFenceHandleTypeFlagBits;
                          const aFd:TVkInt32);
{$endif}
     end;

     PPVkFenceGetFdInfoKHR=^PVkFenceGetFdInfoKHR;
     PVkFenceGetFdInfoKHR=^TVkFenceGetFdInfoKHR;
     TVkFenceGetFdInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR
       pNext:PVkVoid;
       fence:TVkFence;
       handleType:TVkExternalFenceHandleTypeFlagBits;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFence:TVkFence;
                          const aHandleType:TVkExternalFenceHandleTypeFlagBits);
{$endif}
     end;

{$ifdef NvSci}
     PPVkExportFenceSciSyncInfoNV=^PVkExportFenceSciSyncInfoNV;
     PVkExportFenceSciSyncInfoNV=^TVkExportFenceSciSyncInfoNV;
     TVkExportFenceSciSyncInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_EXPORT_FENCE_SCI_SYNC_INFO_NV
       pNext:PVkVoid;
       pAttributes:TNvSciSyncAttrList;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPAttributes:TNvSciSyncAttrList);
{$endif}
     end;
{$endif}

{$ifdef NvSci}
     PPVkImportFenceSciSyncInfoNV=^PVkImportFenceSciSyncInfoNV;
     PVkImportFenceSciSyncInfoNV=^TVkImportFenceSciSyncInfoNV;
     TVkImportFenceSciSyncInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_IMPORT_FENCE_SCI_SYNC_INFO_NV
       pNext:PVkVoid;
       fence:TVkFence;
       handleType:TVkExternalFenceHandleTypeFlagBits;
       handle:PVkVoid;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFence:TVkFence;
                          const aHandleType:TVkExternalFenceHandleTypeFlagBits;
                          const aHandle:PVkVoid);
{$endif}
     end;
{$endif}

{$ifdef NvSci}
     PPVkFenceGetSciSyncInfoNV=^PVkFenceGetSciSyncInfoNV;
     PVkFenceGetSciSyncInfoNV=^TVkFenceGetSciSyncInfoNV;
     TVkFenceGetSciSyncInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_FENCE_GET_SCI_SYNC_INFO_NV
       pNext:PVkVoid;
       fence:TVkFence;
       handleType:TVkExternalFenceHandleTypeFlagBits;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFence:TVkFence;
                          const aHandleType:TVkExternalFenceHandleTypeFlagBits);
{$endif}
     end;
{$endif}

{$ifdef NvSci}
     PPVkExportSemaphoreSciSyncInfoNV=^PVkExportSemaphoreSciSyncInfoNV;
     PVkExportSemaphoreSciSyncInfoNV=^TVkExportSemaphoreSciSyncInfoNV;
     TVkExportSemaphoreSciSyncInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_SCI_SYNC_INFO_NV
       pNext:PVkVoid;
       pAttributes:TNvSciSyncAttrList;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPAttributes:TNvSciSyncAttrList);
{$endif}
     end;
{$endif}

{$ifdef NvSci}
     PPVkImportSemaphoreSciSyncInfoNV=^PVkImportSemaphoreSciSyncInfoNV;
     PVkImportSemaphoreSciSyncInfoNV=^TVkImportSemaphoreSciSyncInfoNV;
     TVkImportSemaphoreSciSyncInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_SCI_SYNC_INFO_NV
       pNext:PVkVoid;
       semaphore:TVkSemaphore;
       handleType:TVkExternalSemaphoreHandleTypeFlagBits;
       handle:PVkVoid;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSemaphore:TVkSemaphore;
                          const aHandleType:TVkExternalSemaphoreHandleTypeFlagBits;
                          const aHandle:PVkVoid);
{$endif}
     end;
{$endif}

{$ifdef NvSci}
     PPVkSemaphoreGetSciSyncInfoNV=^PVkSemaphoreGetSciSyncInfoNV;
     PVkSemaphoreGetSciSyncInfoNV=^TVkSemaphoreGetSciSyncInfoNV;
     TVkSemaphoreGetSciSyncInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SEMAPHORE_GET_SCI_SYNC_INFO_NV
       pNext:PVkVoid;
       semaphore:TVkSemaphore;
       handleType:TVkExternalSemaphoreHandleTypeFlagBits;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSemaphore:TVkSemaphore;
                          const aHandleType:TVkExternalSemaphoreHandleTypeFlagBits);
{$endif}
     end;
{$endif}

{$ifdef NvSci}
     PPVkSciSyncAttributesInfoNV=^PVkSciSyncAttributesInfoNV;
     PVkSciSyncAttributesInfoNV=^TVkSciSyncAttributesInfoNV;
     TVkSciSyncAttributesInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SCI_SYNC_ATTRIBUTES_INFO_NV
       pNext:PVkVoid;
       clientType:TVkSciSyncClientTypeNV;
       primitiveType:TVkSciSyncPrimitiveTypeNV;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aClientType:TVkSciSyncClientTypeNV;
                          const aPrimitiveType:TVkSciSyncPrimitiveTypeNV);
{$endif}
     end;
{$endif}

{$ifdef NvSci}
     PPVkPhysicalDeviceExternalSciSyncFeaturesNV=^PVkPhysicalDeviceExternalSciSyncFeaturesNV;
     PVkPhysicalDeviceExternalSciSyncFeaturesNV=^TVkPhysicalDeviceExternalSciSyncFeaturesNV;
     TVkPhysicalDeviceExternalSciSyncFeaturesNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SCI_SYNC_FEATURES_NV
       pNext:PVkVoid;
       sciSyncFence:TVkBool32;
       sciSyncSemaphore:TVkBool32;
       sciSyncImport:TVkBool32;
       sciSyncExport:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSciSyncFence:TVkBool32;
                          const aSciSyncSemaphore:TVkBool32;
                          const aSciSyncImport:TVkBool32;
                          const aSciSyncExport:TVkBool32);
{$endif}
     end;
{$endif}

{$ifdef NvSci}
     PPVkPhysicalDeviceExternalSciSync2FeaturesNV=^PVkPhysicalDeviceExternalSciSync2FeaturesNV;
     PVkPhysicalDeviceExternalSciSync2FeaturesNV=^TVkPhysicalDeviceExternalSciSync2FeaturesNV;
     TVkPhysicalDeviceExternalSciSync2FeaturesNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SCI_SYNC_2_FEATURES_NV
       pNext:PVkVoid;
       sciSyncFence:TVkBool32;
       sciSyncSemaphore2:TVkBool32;
       sciSyncImport:TVkBool32;
       sciSyncExport:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSciSyncFence:TVkBool32;
                          const aSciSyncSemaphore2:TVkBool32;
                          const aSciSyncImport:TVkBool32;
                          const aSciSyncExport:TVkBool32);
{$endif}
     end;
{$endif}

{$ifdef NvSci}
     PPVkSemaphoreSciSyncPoolCreateInfoNV=^PVkSemaphoreSciSyncPoolCreateInfoNV;
     PVkSemaphoreSciSyncPoolCreateInfoNV=^TVkSemaphoreSciSyncPoolCreateInfoNV;
     TVkSemaphoreSciSyncPoolCreateInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SEMAPHORE_SCI_SYNC_POOL_CREATE_INFO_NV
       pNext:PVkVoid;
       handle:TNvSciSyncObj;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aHandle:TNvSciSyncObj);
{$endif}
     end;
{$endif}

{$ifdef NvSci}
     PPVkSemaphoreSciSyncCreateInfoNV=^PVkSemaphoreSciSyncCreateInfoNV;
     PVkSemaphoreSciSyncCreateInfoNV=^TVkSemaphoreSciSyncCreateInfoNV;
     TVkSemaphoreSciSyncCreateInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SEMAPHORE_SCI_SYNC_CREATE_INFO_NV
       pNext:PVkVoid;
       semaphorePool:TVkSemaphoreSciSyncPoolNV;
       pFence:PNvSciSyncFence;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSemaphorePool:TVkSemaphoreSciSyncPoolNV;
                          const aPFence:PNvSciSyncFence);
{$endif}
     end;
{$endif}

{$ifdef NvSci}
     PPVkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV=^PVkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV;
     PVkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV=^TVkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV;
     TVkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DEVICE_SEMAPHORE_SCI_SYNC_POOL_RESERVATION_CREATE_INFO_NV
       pNext:PVkVoid;
       semaphoreSciSyncPoolRequestCount:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSemaphoreSciSyncPoolRequestCount:TVkUInt32);
{$endif}
     end;
{$endif}

     PPVkPhysicalDeviceMultiviewFeatures=^PVkPhysicalDeviceMultiviewFeatures;
     PVkPhysicalDeviceMultiviewFeatures=^TVkPhysicalDeviceMultiviewFeatures;
     TVkPhysicalDeviceMultiviewFeatures=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES
       pNext:PVkVoid;
       multiview:TVkBool32;
       multiviewGeometryShader:TVkBool32;
       multiviewTessellationShader:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMultiview:TVkBool32;
                          const aMultiviewGeometryShader:TVkBool32;
                          const aMultiviewTessellationShader:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceMultiviewFeaturesKHR=^PVkPhysicalDeviceMultiviewFeaturesKHR;
     PVkPhysicalDeviceMultiviewFeaturesKHR=^TVkPhysicalDeviceMultiviewFeaturesKHR;
     TVkPhysicalDeviceMultiviewFeaturesKHR=TVkPhysicalDeviceMultiviewFeatures;

     PPVkPhysicalDeviceMultiviewProperties=^PVkPhysicalDeviceMultiviewProperties;
     PVkPhysicalDeviceMultiviewProperties=^TVkPhysicalDeviceMultiviewProperties;
     TVkPhysicalDeviceMultiviewProperties=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES
       pNext:PVkVoid;
       maxMultiviewViewCount:TVkUInt32;
       maxMultiviewInstanceIndex:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMaxMultiviewViewCount:TVkUInt32;
                          const aMaxMultiviewInstanceIndex:TVkUInt32);
{$endif}
     end;

     PPVkPhysicalDeviceMultiviewPropertiesKHR=^PVkPhysicalDeviceMultiviewPropertiesKHR;
     PVkPhysicalDeviceMultiviewPropertiesKHR=^TVkPhysicalDeviceMultiviewPropertiesKHR;
     TVkPhysicalDeviceMultiviewPropertiesKHR=TVkPhysicalDeviceMultiviewProperties;

     PPVkRenderPassMultiviewCreateInfo=^PVkRenderPassMultiviewCreateInfo;
     PVkRenderPassMultiviewCreateInfo=^TVkRenderPassMultiviewCreateInfo;
     TVkRenderPassMultiviewCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO
       pNext:PVkVoid;
       subpassCount:TVkUInt32;
       pViewMasks:PVkUInt32;
       dependencyCount:TVkUInt32;
       pViewOffsets:PVkInt32;
       correlationMaskCount:TVkUInt32;
       pCorrelationMasks:PVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSubpassCount:TVkUInt32;
                          const aPViewMasks:PVkUInt32;
                          const aDependencyCount:TVkUInt32;
                          const aPViewOffsets:PVkInt32;
                          const aCorrelationMaskCount:TVkUInt32;
                          const aPCorrelationMasks:PVkUInt32);
{$endif}
     end;

     PPVkRenderPassMultiviewCreateInfoKHR=^PVkRenderPassMultiviewCreateInfoKHR;
     PVkRenderPassMultiviewCreateInfoKHR=^TVkRenderPassMultiviewCreateInfoKHR;
     TVkRenderPassMultiviewCreateInfoKHR=TVkRenderPassMultiviewCreateInfo;

     PPVkSurfaceCapabilities2EXT=^PVkSurfaceCapabilities2EXT;
     PVkSurfaceCapabilities2EXT=^TVkSurfaceCapabilities2EXT;
     TVkSurfaceCapabilities2EXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT
       pNext:PVkVoid;
       minImageCount:TVkUInt32;
       maxImageCount:TVkUInt32;
       currentExtent:TVkExtent2D;
       minImageExtent:TVkExtent2D;
       maxImageExtent:TVkExtent2D;
       maxImageArrayLayers:TVkUInt32;
       supportedTransforms:TVkSurfaceTransformFlagsKHR;
       currentTransform:TVkSurfaceTransformFlagBitsKHR;
       supportedCompositeAlpha:TVkCompositeAlphaFlagsKHR;
       supportedUsageFlags:TVkImageUsageFlags;
       supportedSurfaceCounters:TVkSurfaceCounterFlagsEXT;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMinImageCount:TVkUInt32;
                          const aMaxImageCount:TVkUInt32;
                          const aCurrentExtent:TVkExtent2D;
                          const aMinImageExtent:TVkExtent2D;
                          const aMaxImageExtent:TVkExtent2D;
                          const aMaxImageArrayLayers:TVkUInt32;
                          const aSupportedTransforms:TVkSurfaceTransformFlagsKHR;
                          const aCurrentTransform:TVkSurfaceTransformFlagBitsKHR;
                          const aSupportedCompositeAlpha:TVkCompositeAlphaFlagsKHR;
                          const aSupportedUsageFlags:TVkImageUsageFlags;
                          const aSupportedSurfaceCounters:TVkSurfaceCounterFlagsEXT);
{$endif}
     end;

     PPVkDisplayPowerInfoEXT=^PVkDisplayPowerInfoEXT;
     PVkDisplayPowerInfoEXT=^TVkDisplayPowerInfoEXT;
     TVkDisplayPowerInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT
       pNext:PVkVoid;
       powerState:TVkDisplayPowerStateEXT;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPowerState:TVkDisplayPowerStateEXT);
{$endif}
     end;

     PPVkDeviceEventInfoEXT=^PVkDeviceEventInfoEXT;
     PVkDeviceEventInfoEXT=^TVkDeviceEventInfoEXT;
     TVkDeviceEventInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT
       pNext:PVkVoid;
       deviceEvent:TVkDeviceEventTypeEXT;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDeviceEvent:TVkDeviceEventTypeEXT);
{$endif}
     end;

     PPVkDisplayEventInfoEXT=^PVkDisplayEventInfoEXT;
     PVkDisplayEventInfoEXT=^TVkDisplayEventInfoEXT;
     TVkDisplayEventInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT
       pNext:PVkVoid;
       displayEvent:TVkDisplayEventTypeEXT;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDisplayEvent:TVkDisplayEventTypeEXT);
{$endif}
     end;

     PPVkSwapchainCounterCreateInfoEXT=^PVkSwapchainCounterCreateInfoEXT;
     PVkSwapchainCounterCreateInfoEXT=^TVkSwapchainCounterCreateInfoEXT;
     TVkSwapchainCounterCreateInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT
       pNext:PVkVoid;
       surfaceCounters:TVkSurfaceCounterFlagsEXT;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSurfaceCounters:TVkSurfaceCounterFlagsEXT);
{$endif}
     end;

     PPVkPhysicalDeviceGroupProperties=^PVkPhysicalDeviceGroupProperties;
     PVkPhysicalDeviceGroupProperties=^TVkPhysicalDeviceGroupProperties;
     TVkPhysicalDeviceGroupProperties=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES
       pNext:PVkVoid;
       physicalDeviceCount:TVkUInt32;
       physicalDevices:array[0..VK_MAX_DEVICE_GROUP_SIZE-1] of TVkPhysicalDevice;
       subsetAllocation:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPhysicalDeviceCount:TVkUInt32;
                          const aPhysicalDevices:array of TVkPhysicalDevice;
                          const aSubsetAllocation:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceGroupPropertiesKHR=^PVkPhysicalDeviceGroupPropertiesKHR;
     PVkPhysicalDeviceGroupPropertiesKHR=^TVkPhysicalDeviceGroupPropertiesKHR;
     TVkPhysicalDeviceGroupPropertiesKHR=TVkPhysicalDeviceGroupProperties;

     PPVkMemoryAllocateFlagsInfo=^PVkMemoryAllocateFlagsInfo;
     PVkMemoryAllocateFlagsInfo=^TVkMemoryAllocateFlagsInfo;
     TVkMemoryAllocateFlagsInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO
       pNext:PVkVoid;
       flags:TVkMemoryAllocateFlags;
       deviceMask:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkMemoryAllocateFlags;
                          const aDeviceMask:TVkUInt32);
{$endif}
     end;

     PPVkMemoryAllocateFlagsInfoKHR=^PVkMemoryAllocateFlagsInfoKHR;
     PVkMemoryAllocateFlagsInfoKHR=^TVkMemoryAllocateFlagsInfoKHR;
     TVkMemoryAllocateFlagsInfoKHR=TVkMemoryAllocateFlagsInfo;

     PPVkBindBufferMemoryInfo=^PVkBindBufferMemoryInfo;
     PVkBindBufferMemoryInfo=^TVkBindBufferMemoryInfo;
     TVkBindBufferMemoryInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO
       pNext:PVkVoid;
       buffer:TVkBuffer;
       memory:TVkDeviceMemory;
       memoryOffset:TVkDeviceSize;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aBuffer:TVkBuffer;
                          const aMemory:TVkDeviceMemory;
                          const aMemoryOffset:TVkDeviceSize);
{$endif}
     end;

     PPVkBindBufferMemoryInfoKHR=^PVkBindBufferMemoryInfoKHR;
     PVkBindBufferMemoryInfoKHR=^TVkBindBufferMemoryInfoKHR;
     TVkBindBufferMemoryInfoKHR=TVkBindBufferMemoryInfo;

     PPVkBindBufferMemoryDeviceGroupInfo=^PVkBindBufferMemoryDeviceGroupInfo;
     PVkBindBufferMemoryDeviceGroupInfo=^TVkBindBufferMemoryDeviceGroupInfo;
     TVkBindBufferMemoryDeviceGroupInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO
       pNext:PVkVoid;
       deviceIndexCount:TVkUInt32;
       pDeviceIndices:PVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDeviceIndexCount:TVkUInt32;
                          const aPDeviceIndices:PVkUInt32);
{$endif}
     end;

     PPVkBindBufferMemoryDeviceGroupInfoKHR=^PVkBindBufferMemoryDeviceGroupInfoKHR;
     PVkBindBufferMemoryDeviceGroupInfoKHR=^TVkBindBufferMemoryDeviceGroupInfoKHR;
     TVkBindBufferMemoryDeviceGroupInfoKHR=TVkBindBufferMemoryDeviceGroupInfo;

     PPVkBindImageMemoryInfo=^PVkBindImageMemoryInfo;
     PVkBindImageMemoryInfo=^TVkBindImageMemoryInfo;
     TVkBindImageMemoryInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO
       pNext:PVkVoid;
       image:TVkImage;
       memory:TVkDeviceMemory;
       memoryOffset:TVkDeviceSize;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aImage:TVkImage;
                          const aMemory:TVkDeviceMemory;
                          const aMemoryOffset:TVkDeviceSize);
{$endif}
     end;

     PPVkBindImageMemoryInfoKHR=^PVkBindImageMemoryInfoKHR;
     PVkBindImageMemoryInfoKHR=^TVkBindImageMemoryInfoKHR;
     TVkBindImageMemoryInfoKHR=TVkBindImageMemoryInfo;

     PPVkBindImageMemoryDeviceGroupInfo=^PVkBindImageMemoryDeviceGroupInfo;
     PVkBindImageMemoryDeviceGroupInfo=^TVkBindImageMemoryDeviceGroupInfo;
     TVkBindImageMemoryDeviceGroupInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO
       pNext:PVkVoid;
       deviceIndexCount:TVkUInt32;
       pDeviceIndices:PVkUInt32;
       splitInstanceBindRegionCount:TVkUInt32;
       pSplitInstanceBindRegions:PVkRect2D;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDeviceIndexCount:TVkUInt32;
                          const aPDeviceIndices:PVkUInt32;
                          const aSplitInstanceBindRegionCount:TVkUInt32;
                          const aPSplitInstanceBindRegions:PVkRect2D);
{$endif}
     end;

     PPVkBindImageMemoryDeviceGroupInfoKHR=^PVkBindImageMemoryDeviceGroupInfoKHR;
     PVkBindImageMemoryDeviceGroupInfoKHR=^TVkBindImageMemoryDeviceGroupInfoKHR;
     TVkBindImageMemoryDeviceGroupInfoKHR=TVkBindImageMemoryDeviceGroupInfo;

     PPVkDeviceGroupRenderPassBeginInfo=^PVkDeviceGroupRenderPassBeginInfo;
     PVkDeviceGroupRenderPassBeginInfo=^TVkDeviceGroupRenderPassBeginInfo;
     TVkDeviceGroupRenderPassBeginInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO
       pNext:PVkVoid;
       deviceMask:TVkUInt32;
       deviceRenderAreaCount:TVkUInt32;
       pDeviceRenderAreas:PVkRect2D;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDeviceMask:TVkUInt32;
                          const aDeviceRenderAreaCount:TVkUInt32;
                          const aPDeviceRenderAreas:PVkRect2D);
{$endif}
     end;

     PPVkDeviceGroupRenderPassBeginInfoKHR=^PVkDeviceGroupRenderPassBeginInfoKHR;
     PVkDeviceGroupRenderPassBeginInfoKHR=^TVkDeviceGroupRenderPassBeginInfoKHR;
     TVkDeviceGroupRenderPassBeginInfoKHR=TVkDeviceGroupRenderPassBeginInfo;

     PPVkDeviceGroupCommandBufferBeginInfo=^PVkDeviceGroupCommandBufferBeginInfo;
     PVkDeviceGroupCommandBufferBeginInfo=^TVkDeviceGroupCommandBufferBeginInfo;
     TVkDeviceGroupCommandBufferBeginInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO
       pNext:PVkVoid;
       deviceMask:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDeviceMask:TVkUInt32);
{$endif}
     end;

     PPVkDeviceGroupCommandBufferBeginInfoKHR=^PVkDeviceGroupCommandBufferBeginInfoKHR;
     PVkDeviceGroupCommandBufferBeginInfoKHR=^TVkDeviceGroupCommandBufferBeginInfoKHR;
     TVkDeviceGroupCommandBufferBeginInfoKHR=TVkDeviceGroupCommandBufferBeginInfo;

     PPVkDeviceGroupSubmitInfo=^PVkDeviceGroupSubmitInfo;
     PVkDeviceGroupSubmitInfo=^TVkDeviceGroupSubmitInfo;
     TVkDeviceGroupSubmitInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO
       pNext:PVkVoid;
       waitSemaphoreCount:TVkUInt32;
       pWaitSemaphoreDeviceIndices:PVkUInt32;
       commandBufferCount:TVkUInt32;
       pCommandBufferDeviceMasks:PVkUInt32;
       signalSemaphoreCount:TVkUInt32;
       pSignalSemaphoreDeviceIndices:PVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aWaitSemaphoreCount:TVkUInt32;
                          const aPWaitSemaphoreDeviceIndices:PVkUInt32;
                          const aCommandBufferCount:TVkUInt32;
                          const aPCommandBufferDeviceMasks:PVkUInt32;
                          const aSignalSemaphoreCount:TVkUInt32;
                          const aPSignalSemaphoreDeviceIndices:PVkUInt32);
{$endif}
     end;

     PPVkDeviceGroupSubmitInfoKHR=^PVkDeviceGroupSubmitInfoKHR;
     PVkDeviceGroupSubmitInfoKHR=^TVkDeviceGroupSubmitInfoKHR;
     TVkDeviceGroupSubmitInfoKHR=TVkDeviceGroupSubmitInfo;

     PPVkDeviceGroupBindSparseInfo=^PVkDeviceGroupBindSparseInfo;
     PVkDeviceGroupBindSparseInfo=^TVkDeviceGroupBindSparseInfo;
     TVkDeviceGroupBindSparseInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO
       pNext:PVkVoid;
       resourceDeviceIndex:TVkUInt32;
       memoryDeviceIndex:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aResourceDeviceIndex:TVkUInt32;
                          const aMemoryDeviceIndex:TVkUInt32);
{$endif}
     end;

     PPVkDeviceGroupBindSparseInfoKHR=^PVkDeviceGroupBindSparseInfoKHR;
     PVkDeviceGroupBindSparseInfoKHR=^TVkDeviceGroupBindSparseInfoKHR;
     TVkDeviceGroupBindSparseInfoKHR=TVkDeviceGroupBindSparseInfo;

     PPVkDeviceGroupPresentCapabilitiesKHR=^PVkDeviceGroupPresentCapabilitiesKHR;
     PVkDeviceGroupPresentCapabilitiesKHR=^TVkDeviceGroupPresentCapabilitiesKHR;
     TVkDeviceGroupPresentCapabilitiesKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR
       pNext:PVkVoid;
       presentMask:array[0..VK_MAX_DEVICE_GROUP_SIZE-1] of TVkUInt32;
       modes:TVkDeviceGroupPresentModeFlagsKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPresentMask:array of TVkUInt32;
                          const aModes:TVkDeviceGroupPresentModeFlagsKHR);
{$endif}
     end;

     PPVkImageSwapchainCreateInfoKHR=^PVkImageSwapchainCreateInfoKHR;
     PVkImageSwapchainCreateInfoKHR=^TVkImageSwapchainCreateInfoKHR;
     TVkImageSwapchainCreateInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR
       pNext:PVkVoid;
       swapchain:TVkSwapchainKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSwapchain:TVkSwapchainKHR);
{$endif}
     end;

     PPVkBindImageMemorySwapchainInfoKHR=^PVkBindImageMemorySwapchainInfoKHR;
     PVkBindImageMemorySwapchainInfoKHR=^TVkBindImageMemorySwapchainInfoKHR;
     TVkBindImageMemorySwapchainInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR
       pNext:PVkVoid;
       swapchain:TVkSwapchainKHR;
       imageIndex:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSwapchain:TVkSwapchainKHR;
                          const aImageIndex:TVkUInt32);
{$endif}
     end;

     PPVkAcquireNextImageInfoKHR=^PVkAcquireNextImageInfoKHR;
     PVkAcquireNextImageInfoKHR=^TVkAcquireNextImageInfoKHR;
     TVkAcquireNextImageInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR
       pNext:PVkVoid;
       swapchain:TVkSwapchainKHR;
       timeout:TVkUInt64;
       semaphore:TVkSemaphore;
       fence:TVkFence;
       deviceMask:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSwapchain:TVkSwapchainKHR;
                          const aTimeout:TVkUInt64;
                          const aSemaphore:TVkSemaphore;
                          const aFence:TVkFence;
                          const aDeviceMask:TVkUInt32);
{$endif}
     end;

     PPVkDeviceGroupPresentInfoKHR=^PVkDeviceGroupPresentInfoKHR;
     PVkDeviceGroupPresentInfoKHR=^TVkDeviceGroupPresentInfoKHR;
     TVkDeviceGroupPresentInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR
       pNext:PVkVoid;
       swapchainCount:TVkUInt32;
       pDeviceMasks:PVkUInt32;
       mode:TVkDeviceGroupPresentModeFlagBitsKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSwapchainCount:TVkUInt32;
                          const aPDeviceMasks:PVkUInt32;
                          const aMode:TVkDeviceGroupPresentModeFlagBitsKHR);
{$endif}
     end;

     PPVkDeviceGroupDeviceCreateInfo=^PVkDeviceGroupDeviceCreateInfo;
     PVkDeviceGroupDeviceCreateInfo=^TVkDeviceGroupDeviceCreateInfo;
     TVkDeviceGroupDeviceCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO
       pNext:PVkVoid;
       physicalDeviceCount:TVkUInt32;
       pPhysicalDevices:PVkPhysicalDevice;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPhysicalDeviceCount:TVkUInt32;
                          const aPPhysicalDevices:PVkPhysicalDevice);
{$endif}
     end;

     PPVkDeviceGroupDeviceCreateInfoKHR=^PVkDeviceGroupDeviceCreateInfoKHR;
     PVkDeviceGroupDeviceCreateInfoKHR=^TVkDeviceGroupDeviceCreateInfoKHR;
     TVkDeviceGroupDeviceCreateInfoKHR=TVkDeviceGroupDeviceCreateInfo;

     PPVkDeviceGroupSwapchainCreateInfoKHR=^PVkDeviceGroupSwapchainCreateInfoKHR;
     PVkDeviceGroupSwapchainCreateInfoKHR=^TVkDeviceGroupSwapchainCreateInfoKHR;
     TVkDeviceGroupSwapchainCreateInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR
       pNext:PVkVoid;
       modes:TVkDeviceGroupPresentModeFlagsKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aModes:TVkDeviceGroupPresentModeFlagsKHR);
{$endif}
     end;

     PPVkDescriptorUpdateTemplateEntry=^PVkDescriptorUpdateTemplateEntry;
     PVkDescriptorUpdateTemplateEntry=^TVkDescriptorUpdateTemplateEntry;
     TVkDescriptorUpdateTemplateEntry=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       dstBinding:TVkUInt32;
       dstArrayElement:TVkUInt32;
       descriptorCount:TVkUInt32;
       descriptorType:TVkDescriptorType;
       offset:TVkSize;
       stride:TVkSize;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDstBinding:TVkUInt32;
                          const aDstArrayElement:TVkUInt32;
                          const aDescriptorCount:TVkUInt32;
                          const aDescriptorType:TVkDescriptorType;
                          const aOffset:TVkSize;
                          const aStride:TVkSize);
{$endif}
     end;

     PPVkDescriptorUpdateTemplateEntryKHR=^PVkDescriptorUpdateTemplateEntryKHR;
     PVkDescriptorUpdateTemplateEntryKHR=^TVkDescriptorUpdateTemplateEntryKHR;
     TVkDescriptorUpdateTemplateEntryKHR=TVkDescriptorUpdateTemplateEntry;

     PPVkDescriptorUpdateTemplateCreateInfo=^PVkDescriptorUpdateTemplateCreateInfo;
     PVkDescriptorUpdateTemplateCreateInfo=^TVkDescriptorUpdateTemplateCreateInfo;
     TVkDescriptorUpdateTemplateCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO
       pNext:PVkVoid;
       flags:TVkDescriptorUpdateTemplateCreateFlags;
       descriptorUpdateEntryCount:TVkUInt32;
       pDescriptorUpdateEntries:PVkDescriptorUpdateTemplateEntry;
       templateType:TVkDescriptorUpdateTemplateType;
       descriptorSetLayout:TVkDescriptorSetLayout;
       pipelineBindPoint:TVkPipelineBindPoint;
       pipelineLayout:TVkPipelineLayout;
       set_:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkDescriptorUpdateTemplateCreateFlags;
                          const aDescriptorUpdateEntryCount:TVkUInt32;
                          const aPDescriptorUpdateEntries:PVkDescriptorUpdateTemplateEntry;
                          const aTemplateType:TVkDescriptorUpdateTemplateType;
                          const aDescriptorSetLayout:TVkDescriptorSetLayout;
                          const aPipelineBindPoint:TVkPipelineBindPoint;
                          const aPipelineLayout:TVkPipelineLayout;
                          const aSet_:TVkUInt32);
{$endif}
     end;

     PPVkDescriptorUpdateTemplateCreateInfoKHR=^PVkDescriptorUpdateTemplateCreateInfoKHR;
     PVkDescriptorUpdateTemplateCreateInfoKHR=^TVkDescriptorUpdateTemplateCreateInfoKHR;
     TVkDescriptorUpdateTemplateCreateInfoKHR=TVkDescriptorUpdateTemplateCreateInfo;

     PPVkXYColorEXT=^PVkXYColorEXT;
     PVkXYColorEXT=^TVkXYColorEXT;
     TVkXYColorEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       x:TVkFloat;
       y:TVkFloat;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aX:TVkFloat;
                          const aY:TVkFloat);
{$endif}
     end;

     PPVkPhysicalDevicePresentIdFeaturesKHR=^PVkPhysicalDevicePresentIdFeaturesKHR;
     PVkPhysicalDevicePresentIdFeaturesKHR=^TVkPhysicalDevicePresentIdFeaturesKHR;
     TVkPhysicalDevicePresentIdFeaturesKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR
       pNext:PVkVoid;
       presentId:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPresentId:TVkBool32);
{$endif}
     end;

     PPVkPresentIdKHR=^PVkPresentIdKHR;
     PVkPresentIdKHR=^TVkPresentIdKHR;
     TVkPresentIdKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PRESENT_ID_KHR
       pNext:PVkVoid;
       swapchainCount:TVkUInt32;
       pPresentIds:PVkUInt64;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSwapchainCount:TVkUInt32;
                          const aPPresentIds:PVkUInt64);
{$endif}
     end;

     PPVkPhysicalDevicePresentWaitFeaturesKHR=^PVkPhysicalDevicePresentWaitFeaturesKHR;
     PVkPhysicalDevicePresentWaitFeaturesKHR=^TVkPhysicalDevicePresentWaitFeaturesKHR;
     TVkPhysicalDevicePresentWaitFeaturesKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR
       pNext:PVkVoid;
       presentWait:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPresentWait:TVkBool32);
{$endif}
     end;

     PPVkHdrMetadataEXT=^PVkHdrMetadataEXT;
     PVkHdrMetadataEXT=^TVkHdrMetadataEXT;
     TVkHdrMetadataEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_HDR_METADATA_EXT
       pNext:PVkVoid;
       displayPrimaryRed:TVkXYColorEXT;
       displayPrimaryGreen:TVkXYColorEXT;
       displayPrimaryBlue:TVkXYColorEXT;
       whitePoint:TVkXYColorEXT;
       maxLuminance:TVkFloat;
       minLuminance:TVkFloat;
       maxContentLightLevel:TVkFloat;
       maxFrameAverageLightLevel:TVkFloat;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDisplayPrimaryRed:TVkXYColorEXT;
                          const aDisplayPrimaryGreen:TVkXYColorEXT;
                          const aDisplayPrimaryBlue:TVkXYColorEXT;
                          const aWhitePoint:TVkXYColorEXT;
                          const aMaxLuminance:TVkFloat;
                          const aMinLuminance:TVkFloat;
                          const aMaxContentLightLevel:TVkFloat;
                          const aMaxFrameAverageLightLevel:TVkFloat);
{$endif}
     end;

     PPVkDisplayNativeHdrSurfaceCapabilitiesAMD=^PVkDisplayNativeHdrSurfaceCapabilitiesAMD;
     PVkDisplayNativeHdrSurfaceCapabilitiesAMD=^TVkDisplayNativeHdrSurfaceCapabilitiesAMD;
     TVkDisplayNativeHdrSurfaceCapabilitiesAMD=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD
       pNext:PVkVoid;
       localDimmingSupport:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aLocalDimmingSupport:TVkBool32);
{$endif}
     end;

     PPVkSwapchainDisplayNativeHdrCreateInfoAMD=^PVkSwapchainDisplayNativeHdrCreateInfoAMD;
     PVkSwapchainDisplayNativeHdrCreateInfoAMD=^TVkSwapchainDisplayNativeHdrCreateInfoAMD;
     TVkSwapchainDisplayNativeHdrCreateInfoAMD=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD
       pNext:PVkVoid;
       localDimmingEnable:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aLocalDimmingEnable:TVkBool32);
{$endif}
     end;

     PPVkRefreshCycleDurationGOOGLE=^PVkRefreshCycleDurationGOOGLE;
     PVkRefreshCycleDurationGOOGLE=^TVkRefreshCycleDurationGOOGLE;
     TVkRefreshCycleDurationGOOGLE=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       refreshDuration:TVkUInt64;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aRefreshDuration:TVkUInt64);
{$endif}
     end;

     PPVkPastPresentationTimingGOOGLE=^PVkPastPresentationTimingGOOGLE;
     PVkPastPresentationTimingGOOGLE=^TVkPastPresentationTimingGOOGLE;
     TVkPastPresentationTimingGOOGLE=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       presentID:TVkUInt32;
       desiredPresentTime:TVkUInt64;
       actualPresentTime:TVkUInt64;
       earliestPresentTime:TVkUInt64;
       presentMargin:TVkUInt64;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPresentID:TVkUInt32;
                          const aDesiredPresentTime:TVkUInt64;
                          const aActualPresentTime:TVkUInt64;
                          const aEarliestPresentTime:TVkUInt64;
                          const aPresentMargin:TVkUInt64);
{$endif}
     end;

     PPVkPresentTimeGOOGLE=^PVkPresentTimeGOOGLE;
     PVkPresentTimeGOOGLE=^TVkPresentTimeGOOGLE;
     TVkPresentTimeGOOGLE=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       presentID:TVkUInt32;
       desiredPresentTime:TVkUInt64;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPresentID:TVkUInt32;
                          const aDesiredPresentTime:TVkUInt64);
{$endif}
     end;

     PPVkPresentTimesInfoGOOGLE=^PVkPresentTimesInfoGOOGLE;
     PVkPresentTimesInfoGOOGLE=^TVkPresentTimesInfoGOOGLE;
     TVkPresentTimesInfoGOOGLE=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE
       pNext:PVkVoid;
       swapchainCount:TVkUInt32;
       pTimes:PVkPresentTimeGOOGLE;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSwapchainCount:TVkUInt32;
                          const aPTimes:PVkPresentTimeGOOGLE);
{$endif}
     end;

{$ifdef MoltenVK_IOS}
     PPVkIOSSurfaceCreateInfoMVK=^PVkIOSSurfaceCreateInfoMVK;
     PVkIOSSurfaceCreateInfoMVK=^TVkIOSSurfaceCreateInfoMVK;
     TVkIOSSurfaceCreateInfoMVK=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK
       pNext:PVkVoid;
       flags:TVkIOSSurfaceCreateFlagsMVK;
       pView:PVkVoid;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkIOSSurfaceCreateFlagsMVK;
                          const aPView:PVkVoid);
{$endif}
     end;
{$endif}

{$ifdef MoltenVK_MacOS}
     PPVkMacOSSurfaceCreateInfoMVK=^PVkMacOSSurfaceCreateInfoMVK;
     PVkMacOSSurfaceCreateInfoMVK=^TVkMacOSSurfaceCreateInfoMVK;
     TVkMacOSSurfaceCreateInfoMVK=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK
       pNext:PVkVoid;
       flags:TVkMacOSSurfaceCreateFlagsMVK;
       pView:PVkVoid;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkMacOSSurfaceCreateFlagsMVK;
                          const aPView:PVkVoid);
{$endif}
     end;
{$endif}

     PPVkMetalSurfaceCreateInfoEXT=^PVkMetalSurfaceCreateInfoEXT;
     PVkMetalSurfaceCreateInfoEXT=^TVkMetalSurfaceCreateInfoEXT;
     TVkMetalSurfaceCreateInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT
       pNext:PVkVoid;
       flags:TVkMetalSurfaceCreateFlagsEXT;
       pLayer:PVkCAMetalLayer;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkMetalSurfaceCreateFlagsEXT;
                          const aPLayer:PVkCAMetalLayer);
{$endif}
     end;

     PPVkViewportWScalingNV=^PVkViewportWScalingNV;
     PVkViewportWScalingNV=^TVkViewportWScalingNV;
     TVkViewportWScalingNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       xcoeff:TVkFloat;
       ycoeff:TVkFloat;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aXcoeff:TVkFloat;
                          const aYcoeff:TVkFloat);
{$endif}
     end;

     PPVkPipelineViewportWScalingStateCreateInfoNV=^PVkPipelineViewportWScalingStateCreateInfoNV;
     PVkPipelineViewportWScalingStateCreateInfoNV=^TVkPipelineViewportWScalingStateCreateInfoNV;
     TVkPipelineViewportWScalingStateCreateInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV
       pNext:PVkVoid;
       viewportWScalingEnable:TVkBool32;
       viewportCount:TVkUInt32;
       pViewportWScalings:PVkViewportWScalingNV;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aViewportWScalingEnable:TVkBool32;
                          const aViewportCount:TVkUInt32;
                          const aPViewportWScalings:PVkViewportWScalingNV);
{$endif}
     end;

     PPVkViewportSwizzleNV=^PVkViewportSwizzleNV;
     PVkViewportSwizzleNV=^TVkViewportSwizzleNV;
     TVkViewportSwizzleNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       x:TVkViewportCoordinateSwizzleNV;
       y:TVkViewportCoordinateSwizzleNV;
       z:TVkViewportCoordinateSwizzleNV;
       w:TVkViewportCoordinateSwizzleNV;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aX:TVkViewportCoordinateSwizzleNV;
                          const aY:TVkViewportCoordinateSwizzleNV;
                          const aZ:TVkViewportCoordinateSwizzleNV;
                          const aW:TVkViewportCoordinateSwizzleNV);
{$endif}
     end;

     PPVkPipelineViewportSwizzleStateCreateInfoNV=^PVkPipelineViewportSwizzleStateCreateInfoNV;
     PVkPipelineViewportSwizzleStateCreateInfoNV=^TVkPipelineViewportSwizzleStateCreateInfoNV;
     TVkPipelineViewportSwizzleStateCreateInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV
       pNext:PVkVoid;
       flags:TVkPipelineViewportSwizzleStateCreateFlagsNV;
       viewportCount:TVkUInt32;
       pViewportSwizzles:PVkViewportSwizzleNV;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkPipelineViewportSwizzleStateCreateFlagsNV;
                          const aViewportCount:TVkUInt32;
                          const aPViewportSwizzles:PVkViewportSwizzleNV);
{$endif}
     end;

     PPVkPhysicalDeviceDiscardRectanglePropertiesEXT=^PVkPhysicalDeviceDiscardRectanglePropertiesEXT;
     PVkPhysicalDeviceDiscardRectanglePropertiesEXT=^TVkPhysicalDeviceDiscardRectanglePropertiesEXT;
     TVkPhysicalDeviceDiscardRectanglePropertiesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT
       pNext:PVkVoid;
       maxDiscardRectangles:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMaxDiscardRectangles:TVkUInt32);
{$endif}
     end;

     PPVkPipelineDiscardRectangleStateCreateInfoEXT=^PVkPipelineDiscardRectangleStateCreateInfoEXT;
     PVkPipelineDiscardRectangleStateCreateInfoEXT=^TVkPipelineDiscardRectangleStateCreateInfoEXT;
     TVkPipelineDiscardRectangleStateCreateInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT
       pNext:PVkVoid;
       flags:TVkPipelineDiscardRectangleStateCreateFlagsEXT;
       discardRectangleMode:TVkDiscardRectangleModeEXT;
       discardRectangleCount:TVkUInt32;
       pDiscardRectangles:PVkRect2D;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkPipelineDiscardRectangleStateCreateFlagsEXT;
                          const aDiscardRectangleMode:TVkDiscardRectangleModeEXT;
                          const aDiscardRectangleCount:TVkUInt32;
                          const aPDiscardRectangles:PVkRect2D);
{$endif}
     end;

     PPVkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX=^PVkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX;
     PVkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX=^TVkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX;
     TVkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX
       pNext:PVkVoid;
       perViewPositionAllComponents:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPerViewPositionAllComponents:TVkBool32);
{$endif}
     end;

     PPVkInputAttachmentAspectReference=^PVkInputAttachmentAspectReference;
     PVkInputAttachmentAspectReference=^TVkInputAttachmentAspectReference;
     TVkInputAttachmentAspectReference=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       subpass:TVkUInt32;
       inputAttachmentIndex:TVkUInt32;
       aspectMask:TVkImageAspectFlags;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSubpass:TVkUInt32;
                          const aInputAttachmentIndex:TVkUInt32;
                          const aAspectMask:TVkImageAspectFlags);
{$endif}
     end;

     PPVkInputAttachmentAspectReferenceKHR=^PVkInputAttachmentAspectReferenceKHR;
     PVkInputAttachmentAspectReferenceKHR=^TVkInputAttachmentAspectReferenceKHR;
     TVkInputAttachmentAspectReferenceKHR=TVkInputAttachmentAspectReference;

     PPVkRenderPassInputAttachmentAspectCreateInfo=^PVkRenderPassInputAttachmentAspectCreateInfo;
     PVkRenderPassInputAttachmentAspectCreateInfo=^TVkRenderPassInputAttachmentAspectCreateInfo;
     TVkRenderPassInputAttachmentAspectCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO
       pNext:PVkVoid;
       aspectReferenceCount:TVkUInt32;
       pAspectReferences:PVkInputAttachmentAspectReference;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aAspectReferenceCount:TVkUInt32;
                          const aPAspectReferences:PVkInputAttachmentAspectReference);
{$endif}
     end;

     PPVkRenderPassInputAttachmentAspectCreateInfoKHR=^PVkRenderPassInputAttachmentAspectCreateInfoKHR;
     PVkRenderPassInputAttachmentAspectCreateInfoKHR=^TVkRenderPassInputAttachmentAspectCreateInfoKHR;
     TVkRenderPassInputAttachmentAspectCreateInfoKHR=TVkRenderPassInputAttachmentAspectCreateInfo;

     PPVkPhysicalDeviceSurfaceInfo2KHR=^PVkPhysicalDeviceSurfaceInfo2KHR;
     PVkPhysicalDeviceSurfaceInfo2KHR=^TVkPhysicalDeviceSurfaceInfo2KHR;
     TVkPhysicalDeviceSurfaceInfo2KHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR
       pNext:PVkVoid;
       surface:TVkSurfaceKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSurface:TVkSurfaceKHR);
{$endif}
     end;

     PPVkSurfaceCapabilities2KHR=^PVkSurfaceCapabilities2KHR;
     PVkSurfaceCapabilities2KHR=^TVkSurfaceCapabilities2KHR;
     TVkSurfaceCapabilities2KHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR
       pNext:PVkVoid;
       surfaceCapabilities:TVkSurfaceCapabilitiesKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSurfaceCapabilities:TVkSurfaceCapabilitiesKHR);
{$endif}
     end;

     PPVkSurfaceFormat2KHR=^PVkSurfaceFormat2KHR;
     PVkSurfaceFormat2KHR=^TVkSurfaceFormat2KHR;
     TVkSurfaceFormat2KHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR
       pNext:PVkVoid;
       surfaceFormat:TVkSurfaceFormatKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSurfaceFormat:TVkSurfaceFormatKHR);
{$endif}
     end;

     PPVkDisplayProperties2KHR=^PVkDisplayProperties2KHR;
     PVkDisplayProperties2KHR=^TVkDisplayProperties2KHR;
     TVkDisplayProperties2KHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR
       pNext:PVkVoid;
       displayProperties:TVkDisplayPropertiesKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDisplayProperties:TVkDisplayPropertiesKHR);
{$endif}
     end;

     PPVkDisplayPlaneProperties2KHR=^PVkDisplayPlaneProperties2KHR;
     PVkDisplayPlaneProperties2KHR=^TVkDisplayPlaneProperties2KHR;
     TVkDisplayPlaneProperties2KHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR
       pNext:PVkVoid;
       displayPlaneProperties:TVkDisplayPlanePropertiesKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDisplayPlaneProperties:TVkDisplayPlanePropertiesKHR);
{$endif}
     end;

     PPVkDisplayModeProperties2KHR=^PVkDisplayModeProperties2KHR;
     PVkDisplayModeProperties2KHR=^TVkDisplayModeProperties2KHR;
     TVkDisplayModeProperties2KHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR
       pNext:PVkVoid;
       displayModeProperties:TVkDisplayModePropertiesKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDisplayModeProperties:TVkDisplayModePropertiesKHR);
{$endif}
     end;

     PPVkDisplayPlaneInfo2KHR=^PVkDisplayPlaneInfo2KHR;
     PVkDisplayPlaneInfo2KHR=^TVkDisplayPlaneInfo2KHR;
     TVkDisplayPlaneInfo2KHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR
       pNext:PVkVoid;
       mode:TVkDisplayModeKHR;
       planeIndex:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMode:TVkDisplayModeKHR;
                          const aPlaneIndex:TVkUInt32);
{$endif}
     end;

     PPVkDisplayPlaneCapabilities2KHR=^PVkDisplayPlaneCapabilities2KHR;
     PVkDisplayPlaneCapabilities2KHR=^TVkDisplayPlaneCapabilities2KHR;
     TVkDisplayPlaneCapabilities2KHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR
       pNext:PVkVoid;
       capabilities:TVkDisplayPlaneCapabilitiesKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aCapabilities:TVkDisplayPlaneCapabilitiesKHR);
{$endif}
     end;

     PPVkSharedPresentSurfaceCapabilitiesKHR=^PVkSharedPresentSurfaceCapabilitiesKHR;
     PVkSharedPresentSurfaceCapabilitiesKHR=^TVkSharedPresentSurfaceCapabilitiesKHR;
     TVkSharedPresentSurfaceCapabilitiesKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR
       pNext:PVkVoid;
       sharedPresentSupportedUsageFlags:TVkImageUsageFlags;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSharedPresentSupportedUsageFlags:TVkImageUsageFlags);
{$endif}
     end;

     PPVkPhysicalDevice16BitStorageFeatures=^PVkPhysicalDevice16BitStorageFeatures;
     PVkPhysicalDevice16BitStorageFeatures=^TVkPhysicalDevice16BitStorageFeatures;
     TVkPhysicalDevice16BitStorageFeatures=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES
       pNext:PVkVoid;
       storageBuffer16BitAccess:TVkBool32;
       uniformAndStorageBuffer16BitAccess:TVkBool32;
       storagePushConstant16:TVkBool32;
       storageInputOutput16:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aStorageBuffer16BitAccess:TVkBool32;
                          const aUniformAndStorageBuffer16BitAccess:TVkBool32;
                          const aStoragePushConstant16:TVkBool32;
                          const aStorageInputOutput16:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDevice16BitStorageFeaturesKHR=^PVkPhysicalDevice16BitStorageFeaturesKHR;
     PVkPhysicalDevice16BitStorageFeaturesKHR=^TVkPhysicalDevice16BitStorageFeaturesKHR;
     TVkPhysicalDevice16BitStorageFeaturesKHR=TVkPhysicalDevice16BitStorageFeatures;

     PPVkPhysicalDeviceSubgroupProperties=^PVkPhysicalDeviceSubgroupProperties;
     PVkPhysicalDeviceSubgroupProperties=^TVkPhysicalDeviceSubgroupProperties;
     TVkPhysicalDeviceSubgroupProperties=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES
       pNext:PVkVoid;
       subgroupSize:TVkUInt32;
       supportedStages:TVkShaderStageFlags;
       supportedOperations:TVkSubgroupFeatureFlags;
       quadOperationsInAllStages:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSubgroupSize:TVkUInt32;
                          const aSupportedStages:TVkShaderStageFlags;
                          const aSupportedOperations:TVkSubgroupFeatureFlags;
                          const aQuadOperationsInAllStages:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceShaderSubgroupExtendedTypesFeatures=^PVkPhysicalDeviceShaderSubgroupExtendedTypesFeatures;
     PVkPhysicalDeviceShaderSubgroupExtendedTypesFeatures=^TVkPhysicalDeviceShaderSubgroupExtendedTypesFeatures;
     TVkPhysicalDeviceShaderSubgroupExtendedTypesFeatures=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES
       pNext:PVkVoid;
       shaderSubgroupExtendedTypes:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aShaderSubgroupExtendedTypes:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR=^PVkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR;
     PVkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR=^TVkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR;
     TVkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR=TVkPhysicalDeviceShaderSubgroupExtendedTypesFeatures;

     PPVkBufferMemoryRequirementsInfo2=^PVkBufferMemoryRequirementsInfo2;
     PVkBufferMemoryRequirementsInfo2=^TVkBufferMemoryRequirementsInfo2;
     TVkBufferMemoryRequirementsInfo2=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2
       pNext:PVkVoid;
       buffer:TVkBuffer;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aBuffer:TVkBuffer);
{$endif}
     end;

     PPVkBufferMemoryRequirementsInfo2KHR=^PVkBufferMemoryRequirementsInfo2KHR;
     PVkBufferMemoryRequirementsInfo2KHR=^TVkBufferMemoryRequirementsInfo2KHR;
     TVkBufferMemoryRequirementsInfo2KHR=TVkBufferMemoryRequirementsInfo2;

     PPVkDeviceBufferMemoryRequirements=^PVkDeviceBufferMemoryRequirements;
     PVkDeviceBufferMemoryRequirements=^TVkDeviceBufferMemoryRequirements;
     TVkDeviceBufferMemoryRequirements=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS
       pNext:PVkVoid;
       pCreateInfo:PVkBufferCreateInfo;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPCreateInfo:PVkBufferCreateInfo);
{$endif}
     end;

     PPVkDeviceBufferMemoryRequirementsKHR=^PVkDeviceBufferMemoryRequirementsKHR;
     PVkDeviceBufferMemoryRequirementsKHR=^TVkDeviceBufferMemoryRequirementsKHR;
     TVkDeviceBufferMemoryRequirementsKHR=TVkDeviceBufferMemoryRequirements;

     PPVkImageMemoryRequirementsInfo2=^PVkImageMemoryRequirementsInfo2;
     PVkImageMemoryRequirementsInfo2=^TVkImageMemoryRequirementsInfo2;
     TVkImageMemoryRequirementsInfo2=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2
       pNext:PVkVoid;
       image:TVkImage;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aImage:TVkImage);
{$endif}
     end;

     PPVkImageMemoryRequirementsInfo2KHR=^PVkImageMemoryRequirementsInfo2KHR;
     PVkImageMemoryRequirementsInfo2KHR=^TVkImageMemoryRequirementsInfo2KHR;
     TVkImageMemoryRequirementsInfo2KHR=TVkImageMemoryRequirementsInfo2;

     PPVkImageSparseMemoryRequirementsInfo2=^PVkImageSparseMemoryRequirementsInfo2;
     PVkImageSparseMemoryRequirementsInfo2=^TVkImageSparseMemoryRequirementsInfo2;
     TVkImageSparseMemoryRequirementsInfo2=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2
       pNext:PVkVoid;
       image:TVkImage;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aImage:TVkImage);
{$endif}
     end;

     PPVkImageSparseMemoryRequirementsInfo2KHR=^PVkImageSparseMemoryRequirementsInfo2KHR;
     PVkImageSparseMemoryRequirementsInfo2KHR=^TVkImageSparseMemoryRequirementsInfo2KHR;
     TVkImageSparseMemoryRequirementsInfo2KHR=TVkImageSparseMemoryRequirementsInfo2;

     PPVkDeviceImageMemoryRequirements=^PVkDeviceImageMemoryRequirements;
     PVkDeviceImageMemoryRequirements=^TVkDeviceImageMemoryRequirements;
     TVkDeviceImageMemoryRequirements=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS
       pNext:PVkVoid;
       pCreateInfo:PVkImageCreateInfo;
       planeAspect:TVkImageAspectFlagBits;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPCreateInfo:PVkImageCreateInfo;
                          const aPlaneAspect:TVkImageAspectFlagBits);
{$endif}
     end;

     PPVkDeviceImageMemoryRequirementsKHR=^PVkDeviceImageMemoryRequirementsKHR;
     PVkDeviceImageMemoryRequirementsKHR=^TVkDeviceImageMemoryRequirementsKHR;
     TVkDeviceImageMemoryRequirementsKHR=TVkDeviceImageMemoryRequirements;

     PPVkMemoryRequirements2=^PVkMemoryRequirements2;
     PVkMemoryRequirements2=^TVkMemoryRequirements2;
     TVkMemoryRequirements2=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2
       pNext:PVkVoid;
       memoryRequirements:TVkMemoryRequirements;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMemoryRequirements:TVkMemoryRequirements);
{$endif}
     end;

     PPVkMemoryRequirements2KHR=^PVkMemoryRequirements2KHR;
     PVkMemoryRequirements2KHR=^TVkMemoryRequirements2KHR;
     TVkMemoryRequirements2KHR=TVkMemoryRequirements2;

     PPVkSparseImageMemoryRequirements2=^PVkSparseImageMemoryRequirements2;
     PVkSparseImageMemoryRequirements2=^TVkSparseImageMemoryRequirements2;
     TVkSparseImageMemoryRequirements2=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2
       pNext:PVkVoid;
       memoryRequirements:TVkSparseImageMemoryRequirements;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMemoryRequirements:TVkSparseImageMemoryRequirements);
{$endif}
     end;

     PPVkSparseImageMemoryRequirements2KHR=^PVkSparseImageMemoryRequirements2KHR;
     PVkSparseImageMemoryRequirements2KHR=^TVkSparseImageMemoryRequirements2KHR;
     TVkSparseImageMemoryRequirements2KHR=TVkSparseImageMemoryRequirements2;

     PPVkPhysicalDevicePointClippingProperties=^PVkPhysicalDevicePointClippingProperties;
     PVkPhysicalDevicePointClippingProperties=^TVkPhysicalDevicePointClippingProperties;
     TVkPhysicalDevicePointClippingProperties=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES
       pNext:PVkVoid;
       pointClippingBehavior:TVkPointClippingBehavior;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPointClippingBehavior:TVkPointClippingBehavior);
{$endif}
     end;

     PPVkPhysicalDevicePointClippingPropertiesKHR=^PVkPhysicalDevicePointClippingPropertiesKHR;
     PVkPhysicalDevicePointClippingPropertiesKHR=^TVkPhysicalDevicePointClippingPropertiesKHR;
     TVkPhysicalDevicePointClippingPropertiesKHR=TVkPhysicalDevicePointClippingProperties;

     PPVkMemoryDedicatedRequirements=^PVkMemoryDedicatedRequirements;
     PVkMemoryDedicatedRequirements=^TVkMemoryDedicatedRequirements;
     TVkMemoryDedicatedRequirements=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS
       pNext:PVkVoid;
       prefersDedicatedAllocation:TVkBool32;
       requiresDedicatedAllocation:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPrefersDedicatedAllocation:TVkBool32;
                          const aRequiresDedicatedAllocation:TVkBool32);
{$endif}
     end;

     PPVkMemoryDedicatedRequirementsKHR=^PVkMemoryDedicatedRequirementsKHR;
     PVkMemoryDedicatedRequirementsKHR=^TVkMemoryDedicatedRequirementsKHR;
     TVkMemoryDedicatedRequirementsKHR=TVkMemoryDedicatedRequirements;

     PPVkMemoryDedicatedAllocateInfo=^PVkMemoryDedicatedAllocateInfo;
     PVkMemoryDedicatedAllocateInfo=^TVkMemoryDedicatedAllocateInfo;
     TVkMemoryDedicatedAllocateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO
       pNext:PVkVoid;
       image:TVkImage;
       buffer:TVkBuffer;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aImage:TVkImage;
                          const aBuffer:TVkBuffer);
{$endif}
     end;

     PPVkMemoryDedicatedAllocateInfoKHR=^PVkMemoryDedicatedAllocateInfoKHR;
     PVkMemoryDedicatedAllocateInfoKHR=^TVkMemoryDedicatedAllocateInfoKHR;
     TVkMemoryDedicatedAllocateInfoKHR=TVkMemoryDedicatedAllocateInfo;

     PPVkImageViewUsageCreateInfo=^PVkImageViewUsageCreateInfo;
     PVkImageViewUsageCreateInfo=^TVkImageViewUsageCreateInfo;
     TVkImageViewUsageCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO
       pNext:PVkVoid;
       usage:TVkImageUsageFlags;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aUsage:TVkImageUsageFlags);
{$endif}
     end;

     PPVkImageViewSlicedCreateInfoEXT=^PVkImageViewSlicedCreateInfoEXT;
     PVkImageViewSlicedCreateInfoEXT=^TVkImageViewSlicedCreateInfoEXT;
     TVkImageViewSlicedCreateInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_IMAGE_VIEW_SLICED_CREATE_INFO_EXT
       pNext:PVkVoid;
       sliceOffset:TVkUInt32;
       sliceCount:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSliceOffset:TVkUInt32;
                          const aSliceCount:TVkUInt32);
{$endif}
     end;

     PPVkImageViewUsageCreateInfoKHR=^PVkImageViewUsageCreateInfoKHR;
     PVkImageViewUsageCreateInfoKHR=^TVkImageViewUsageCreateInfoKHR;
     TVkImageViewUsageCreateInfoKHR=TVkImageViewUsageCreateInfo;

     PPVkPipelineTessellationDomainOriginStateCreateInfo=^PVkPipelineTessellationDomainOriginStateCreateInfo;
     PVkPipelineTessellationDomainOriginStateCreateInfo=^TVkPipelineTessellationDomainOriginStateCreateInfo;
     TVkPipelineTessellationDomainOriginStateCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO
       pNext:PVkVoid;
       domainOrigin:TVkTessellationDomainOrigin;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDomainOrigin:TVkTessellationDomainOrigin);
{$endif}
     end;

     PPVkPipelineTessellationDomainOriginStateCreateInfoKHR=^PVkPipelineTessellationDomainOriginStateCreateInfoKHR;
     PVkPipelineTessellationDomainOriginStateCreateInfoKHR=^TVkPipelineTessellationDomainOriginStateCreateInfoKHR;
     TVkPipelineTessellationDomainOriginStateCreateInfoKHR=TVkPipelineTessellationDomainOriginStateCreateInfo;

     PPVkSamplerYcbcrConversionInfo=^PVkSamplerYcbcrConversionInfo;
     PVkSamplerYcbcrConversionInfo=^TVkSamplerYcbcrConversionInfo;
     TVkSamplerYcbcrConversionInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO
       pNext:PVkVoid;
       conversion:TVkSamplerYcbcrConversion;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aConversion:TVkSamplerYcbcrConversion);
{$endif}
     end;

     PPVkSamplerYcbcrConversionInfoKHR=^PVkSamplerYcbcrConversionInfoKHR;
     PVkSamplerYcbcrConversionInfoKHR=^TVkSamplerYcbcrConversionInfoKHR;
     TVkSamplerYcbcrConversionInfoKHR=TVkSamplerYcbcrConversionInfo;

     PPVkSamplerYcbcrConversionCreateInfo=^PVkSamplerYcbcrConversionCreateInfo;
     PVkSamplerYcbcrConversionCreateInfo=^TVkSamplerYcbcrConversionCreateInfo;
     TVkSamplerYcbcrConversionCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO
       pNext:PVkVoid;
       format:TVkFormat;
       ycbcrModel:TVkSamplerYcbcrModelConversion;
       ycbcrRange:TVkSamplerYcbcrRange;
       components:TVkComponentMapping;
       xChromaOffset:TVkChromaLocation;
       yChromaOffset:TVkChromaLocation;
       chromaFilter:TVkFilter;
       forceExplicitReconstruction:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFormat:TVkFormat;
                          const aYcbcrModel:TVkSamplerYcbcrModelConversion;
                          const aYcbcrRange:TVkSamplerYcbcrRange;
                          const aComponents:TVkComponentMapping;
                          const aXChromaOffset:TVkChromaLocation;
                          const aYChromaOffset:TVkChromaLocation;
                          const aChromaFilter:TVkFilter;
                          const aForceExplicitReconstruction:TVkBool32);
{$endif}
     end;

     PPVkSamplerYcbcrConversionCreateInfoKHR=^PVkSamplerYcbcrConversionCreateInfoKHR;
     PVkSamplerYcbcrConversionCreateInfoKHR=^TVkSamplerYcbcrConversionCreateInfoKHR;
     TVkSamplerYcbcrConversionCreateInfoKHR=TVkSamplerYcbcrConversionCreateInfo;

     PPVkBindImagePlaneMemoryInfo=^PVkBindImagePlaneMemoryInfo;
     PVkBindImagePlaneMemoryInfo=^TVkBindImagePlaneMemoryInfo;
     TVkBindImagePlaneMemoryInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO
       pNext:PVkVoid;
       planeAspect:TVkImageAspectFlagBits;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPlaneAspect:TVkImageAspectFlagBits);
{$endif}
     end;

     PPVkBindImagePlaneMemoryInfoKHR=^PVkBindImagePlaneMemoryInfoKHR;
     PVkBindImagePlaneMemoryInfoKHR=^TVkBindImagePlaneMemoryInfoKHR;
     TVkBindImagePlaneMemoryInfoKHR=TVkBindImagePlaneMemoryInfo;

     PPVkImagePlaneMemoryRequirementsInfo=^PVkImagePlaneMemoryRequirementsInfo;
     PVkImagePlaneMemoryRequirementsInfo=^TVkImagePlaneMemoryRequirementsInfo;
     TVkImagePlaneMemoryRequirementsInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO
       pNext:PVkVoid;
       planeAspect:TVkImageAspectFlagBits;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPlaneAspect:TVkImageAspectFlagBits);
{$endif}
     end;

     PPVkImagePlaneMemoryRequirementsInfoKHR=^PVkImagePlaneMemoryRequirementsInfoKHR;
     PVkImagePlaneMemoryRequirementsInfoKHR=^TVkImagePlaneMemoryRequirementsInfoKHR;
     TVkImagePlaneMemoryRequirementsInfoKHR=TVkImagePlaneMemoryRequirementsInfo;

     PPVkPhysicalDeviceSamplerYcbcrConversionFeatures=^PVkPhysicalDeviceSamplerYcbcrConversionFeatures;
     PVkPhysicalDeviceSamplerYcbcrConversionFeatures=^TVkPhysicalDeviceSamplerYcbcrConversionFeatures;
     TVkPhysicalDeviceSamplerYcbcrConversionFeatures=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES
       pNext:PVkVoid;
       samplerYcbcrConversion:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSamplerYcbcrConversion:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR=^PVkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR;
     PVkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR=^TVkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR;
     TVkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR=TVkPhysicalDeviceSamplerYcbcrConversionFeatures;

     PPVkSamplerYcbcrConversionImageFormatProperties=^PVkSamplerYcbcrConversionImageFormatProperties;
     PVkSamplerYcbcrConversionImageFormatProperties=^TVkSamplerYcbcrConversionImageFormatProperties;
     TVkSamplerYcbcrConversionImageFormatProperties=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES
       pNext:PVkVoid;
       combinedImageSamplerDescriptorCount:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aCombinedImageSamplerDescriptorCount:TVkUInt32);
{$endif}
     end;

     PPVkSamplerYcbcrConversionImageFormatPropertiesKHR=^PVkSamplerYcbcrConversionImageFormatPropertiesKHR;
     PVkSamplerYcbcrConversionImageFormatPropertiesKHR=^TVkSamplerYcbcrConversionImageFormatPropertiesKHR;
     TVkSamplerYcbcrConversionImageFormatPropertiesKHR=TVkSamplerYcbcrConversionImageFormatProperties;

     PPVkTextureLODGatherFormatPropertiesAMD=^PVkTextureLODGatherFormatPropertiesAMD;
     PVkTextureLODGatherFormatPropertiesAMD=^TVkTextureLODGatherFormatPropertiesAMD;
     TVkTextureLODGatherFormatPropertiesAMD=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD
       pNext:PVkVoid;
       supportsTextureGatherLODBiasAMD:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSupportsTextureGatherLODBiasAMD:TVkBool32);
{$endif}
     end;

     PPVkConditionalRenderingBeginInfoEXT=^PVkConditionalRenderingBeginInfoEXT;
     PVkConditionalRenderingBeginInfoEXT=^TVkConditionalRenderingBeginInfoEXT;
     TVkConditionalRenderingBeginInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT
       pNext:PVkVoid;
       buffer:TVkBuffer;
       offset:TVkDeviceSize;
       flags:TVkConditionalRenderingFlagsEXT;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aBuffer:TVkBuffer;
                          const aOffset:TVkDeviceSize;
                          const aFlags:TVkConditionalRenderingFlagsEXT);
{$endif}
     end;

     PPVkProtectedSubmitInfo=^PVkProtectedSubmitInfo;
     PVkProtectedSubmitInfo=^TVkProtectedSubmitInfo;
     TVkProtectedSubmitInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO
       pNext:PVkVoid;
       protectedSubmit:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aProtectedSubmit:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceProtectedMemoryFeatures=^PVkPhysicalDeviceProtectedMemoryFeatures;
     PVkPhysicalDeviceProtectedMemoryFeatures=^TVkPhysicalDeviceProtectedMemoryFeatures;
     TVkPhysicalDeviceProtectedMemoryFeatures=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES
       pNext:PVkVoid;
       protectedMemory:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aProtectedMemory:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceProtectedMemoryProperties=^PVkPhysicalDeviceProtectedMemoryProperties;
     PVkPhysicalDeviceProtectedMemoryProperties=^TVkPhysicalDeviceProtectedMemoryProperties;
     TVkPhysicalDeviceProtectedMemoryProperties=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES
       pNext:PVkVoid;
       protectedNoFault:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aProtectedNoFault:TVkBool32);
{$endif}
     end;

     PPVkDeviceQueueInfo2=^PVkDeviceQueueInfo2;
     PVkDeviceQueueInfo2=^TVkDeviceQueueInfo2;
     TVkDeviceQueueInfo2=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2
       pNext:PVkVoid;
       flags:TVkDeviceQueueCreateFlags;
       queueFamilyIndex:TVkUInt32;
       queueIndex:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkDeviceQueueCreateFlags;
                          const aQueueFamilyIndex:TVkUInt32;
                          const aQueueIndex:TVkUInt32);
{$endif}
     end;

     PPVkPipelineCoverageToColorStateCreateInfoNV=^PVkPipelineCoverageToColorStateCreateInfoNV;
     PVkPipelineCoverageToColorStateCreateInfoNV=^TVkPipelineCoverageToColorStateCreateInfoNV;
     TVkPipelineCoverageToColorStateCreateInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV
       pNext:PVkVoid;
       flags:TVkPipelineCoverageToColorStateCreateFlagsNV;
       coverageToColorEnable:TVkBool32;
       coverageToColorLocation:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkPipelineCoverageToColorStateCreateFlagsNV;
                          const aCoverageToColorEnable:TVkBool32;
                          const aCoverageToColorLocation:TVkUInt32);
{$endif}
     end;

     PPVkPhysicalDeviceSamplerFilterMinmaxProperties=^PVkPhysicalDeviceSamplerFilterMinmaxProperties;
     PVkPhysicalDeviceSamplerFilterMinmaxProperties=^TVkPhysicalDeviceSamplerFilterMinmaxProperties;
     TVkPhysicalDeviceSamplerFilterMinmaxProperties=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES
       pNext:PVkVoid;
       filterMinmaxSingleComponentFormats:TVkBool32;
       filterMinmaxImageComponentMapping:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFilterMinmaxSingleComponentFormats:TVkBool32;
                          const aFilterMinmaxImageComponentMapping:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT=^PVkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT;
     PVkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT=^TVkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT;
     TVkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT=TVkPhysicalDeviceSamplerFilterMinmaxProperties;

     PPVkSampleLocationEXT=^PVkSampleLocationEXT;
     PVkSampleLocationEXT=^TVkSampleLocationEXT;
     TVkSampleLocationEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       x:TVkFloat;
       y:TVkFloat;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aX:TVkFloat;
                          const aY:TVkFloat);
{$endif}
     end;

     PPVkSampleLocationsInfoEXT=^PVkSampleLocationsInfoEXT;
     PVkSampleLocationsInfoEXT=^TVkSampleLocationsInfoEXT;
     TVkSampleLocationsInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT
       pNext:PVkVoid;
       sampleLocationsPerPixel:TVkSampleCountFlagBits;
       sampleLocationGridSize:TVkExtent2D;
       sampleLocationsCount:TVkUInt32;
       pSampleLocations:PVkSampleLocationEXT;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSampleLocationsPerPixel:TVkSampleCountFlagBits;
                          const aSampleLocationGridSize:TVkExtent2D;
                          const aSampleLocationsCount:TVkUInt32;
                          const aPSampleLocations:PVkSampleLocationEXT);
{$endif}
     end;

     PPVkAttachmentSampleLocationsEXT=^PVkAttachmentSampleLocationsEXT;
     PVkAttachmentSampleLocationsEXT=^TVkAttachmentSampleLocationsEXT;
     TVkAttachmentSampleLocationsEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       attachmentIndex:TVkUInt32;
       sampleLocationsInfo:TVkSampleLocationsInfoEXT;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aAttachmentIndex:TVkUInt32;
                          const aSampleLocationsInfo:TVkSampleLocationsInfoEXT);
{$endif}
     end;

     PPVkSubpassSampleLocationsEXT=^PVkSubpassSampleLocationsEXT;
     PVkSubpassSampleLocationsEXT=^TVkSubpassSampleLocationsEXT;
     TVkSubpassSampleLocationsEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       subpassIndex:TVkUInt32;
       sampleLocationsInfo:TVkSampleLocationsInfoEXT;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSubpassIndex:TVkUInt32;
                          const aSampleLocationsInfo:TVkSampleLocationsInfoEXT);
{$endif}
     end;

     PPVkRenderPassSampleLocationsBeginInfoEXT=^PVkRenderPassSampleLocationsBeginInfoEXT;
     PVkRenderPassSampleLocationsBeginInfoEXT=^TVkRenderPassSampleLocationsBeginInfoEXT;
     TVkRenderPassSampleLocationsBeginInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT
       pNext:PVkVoid;
       attachmentInitialSampleLocationsCount:TVkUInt32;
       pAttachmentInitialSampleLocations:PVkAttachmentSampleLocationsEXT;
       postSubpassSampleLocationsCount:TVkUInt32;
       pPostSubpassSampleLocations:PVkSubpassSampleLocationsEXT;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aAttachmentInitialSampleLocationsCount:TVkUInt32;
                          const aPAttachmentInitialSampleLocations:PVkAttachmentSampleLocationsEXT;
                          const aPostSubpassSampleLocationsCount:TVkUInt32;
                          const aPPostSubpassSampleLocations:PVkSubpassSampleLocationsEXT);
{$endif}
     end;

     PPVkPipelineSampleLocationsStateCreateInfoEXT=^PVkPipelineSampleLocationsStateCreateInfoEXT;
     PVkPipelineSampleLocationsStateCreateInfoEXT=^TVkPipelineSampleLocationsStateCreateInfoEXT;
     TVkPipelineSampleLocationsStateCreateInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT
       pNext:PVkVoid;
       sampleLocationsEnable:TVkBool32;
       sampleLocationsInfo:TVkSampleLocationsInfoEXT;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSampleLocationsEnable:TVkBool32;
                          const aSampleLocationsInfo:TVkSampleLocationsInfoEXT);
{$endif}
     end;

     PPVkPhysicalDeviceSampleLocationsPropertiesEXT=^PVkPhysicalDeviceSampleLocationsPropertiesEXT;
     PVkPhysicalDeviceSampleLocationsPropertiesEXT=^TVkPhysicalDeviceSampleLocationsPropertiesEXT;
     TVkPhysicalDeviceSampleLocationsPropertiesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT
       pNext:PVkVoid;
       sampleLocationSampleCounts:TVkSampleCountFlags;
       maxSampleLocationGridSize:TVkExtent2D;
       sampleLocationCoordinateRange:array[0..1] of TVkFloat;
       sampleLocationSubPixelBits:TVkUInt32;
       variableSampleLocations:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSampleLocationSampleCounts:TVkSampleCountFlags;
                          const aMaxSampleLocationGridSize:TVkExtent2D;
                          const aSampleLocationCoordinateRange:array of TVkFloat;
                          const aSampleLocationSubPixelBits:TVkUInt32;
                          const aVariableSampleLocations:TVkBool32);
{$endif}
     end;

     PPVkMultisamplePropertiesEXT=^PVkMultisamplePropertiesEXT;
     PVkMultisamplePropertiesEXT=^TVkMultisamplePropertiesEXT;
     TVkMultisamplePropertiesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT
       pNext:PVkVoid;
       maxSampleLocationGridSize:TVkExtent2D;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMaxSampleLocationGridSize:TVkExtent2D);
{$endif}
     end;

     PPVkSamplerReductionModeCreateInfo=^PVkSamplerReductionModeCreateInfo;
     PVkSamplerReductionModeCreateInfo=^TVkSamplerReductionModeCreateInfo;
     TVkSamplerReductionModeCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO
       pNext:PVkVoid;
       reductionMode:TVkSamplerReductionMode;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aReductionMode:TVkSamplerReductionMode);
{$endif}
     end;

     PPVkSamplerReductionModeCreateInfoEXT=^PVkSamplerReductionModeCreateInfoEXT;
     PVkSamplerReductionModeCreateInfoEXT=^TVkSamplerReductionModeCreateInfoEXT;
     TVkSamplerReductionModeCreateInfoEXT=TVkSamplerReductionModeCreateInfo;

     PPVkPhysicalDeviceBlendOperationAdvancedFeaturesEXT=^PVkPhysicalDeviceBlendOperationAdvancedFeaturesEXT;
     PVkPhysicalDeviceBlendOperationAdvancedFeaturesEXT=^TVkPhysicalDeviceBlendOperationAdvancedFeaturesEXT;
     TVkPhysicalDeviceBlendOperationAdvancedFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT
       pNext:PVkVoid;
       advancedBlendCoherentOperations:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aAdvancedBlendCoherentOperations:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceMultiDrawFeaturesEXT=^PVkPhysicalDeviceMultiDrawFeaturesEXT;
     PVkPhysicalDeviceMultiDrawFeaturesEXT=^TVkPhysicalDeviceMultiDrawFeaturesEXT;
     TVkPhysicalDeviceMultiDrawFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT
       pNext:PVkVoid;
       multiDraw:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMultiDraw:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceBlendOperationAdvancedPropertiesEXT=^PVkPhysicalDeviceBlendOperationAdvancedPropertiesEXT;
     PVkPhysicalDeviceBlendOperationAdvancedPropertiesEXT=^TVkPhysicalDeviceBlendOperationAdvancedPropertiesEXT;
     TVkPhysicalDeviceBlendOperationAdvancedPropertiesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT
       pNext:PVkVoid;
       advancedBlendMaxColorAttachments:TVkUInt32;
       advancedBlendIndependentBlend:TVkBool32;
       advancedBlendNonPremultipliedSrcColor:TVkBool32;
       advancedBlendNonPremultipliedDstColor:TVkBool32;
       advancedBlendCorrelatedOverlap:TVkBool32;
       advancedBlendAllOperations:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aAdvancedBlendMaxColorAttachments:TVkUInt32;
                          const aAdvancedBlendIndependentBlend:TVkBool32;
                          const aAdvancedBlendNonPremultipliedSrcColor:TVkBool32;
                          const aAdvancedBlendNonPremultipliedDstColor:TVkBool32;
                          const aAdvancedBlendCorrelatedOverlap:TVkBool32;
                          const aAdvancedBlendAllOperations:TVkBool32);
{$endif}
     end;

     PPVkPipelineColorBlendAdvancedStateCreateInfoEXT=^PVkPipelineColorBlendAdvancedStateCreateInfoEXT;
     PVkPipelineColorBlendAdvancedStateCreateInfoEXT=^TVkPipelineColorBlendAdvancedStateCreateInfoEXT;
     TVkPipelineColorBlendAdvancedStateCreateInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT
       pNext:PVkVoid;
       srcPremultiplied:TVkBool32;
       dstPremultiplied:TVkBool32;
       blendOverlap:TVkBlendOverlapEXT;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSrcPremultiplied:TVkBool32;
                          const aDstPremultiplied:TVkBool32;
                          const aBlendOverlap:TVkBlendOverlapEXT);
{$endif}
     end;

     PPVkPhysicalDeviceInlineUniformBlockFeatures=^PVkPhysicalDeviceInlineUniformBlockFeatures;
     PVkPhysicalDeviceInlineUniformBlockFeatures=^TVkPhysicalDeviceInlineUniformBlockFeatures;
     TVkPhysicalDeviceInlineUniformBlockFeatures=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES
       pNext:PVkVoid;
       inlineUniformBlock:TVkBool32;
       descriptorBindingInlineUniformBlockUpdateAfterBind:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aInlineUniformBlock:TVkBool32;
                          const aDescriptorBindingInlineUniformBlockUpdateAfterBind:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceInlineUniformBlockFeaturesEXT=^PVkPhysicalDeviceInlineUniformBlockFeaturesEXT;
     PVkPhysicalDeviceInlineUniformBlockFeaturesEXT=^TVkPhysicalDeviceInlineUniformBlockFeaturesEXT;
     TVkPhysicalDeviceInlineUniformBlockFeaturesEXT=TVkPhysicalDeviceInlineUniformBlockFeatures;

     PPVkPhysicalDeviceInlineUniformBlockProperties=^PVkPhysicalDeviceInlineUniformBlockProperties;
     PVkPhysicalDeviceInlineUniformBlockProperties=^TVkPhysicalDeviceInlineUniformBlockProperties;
     TVkPhysicalDeviceInlineUniformBlockProperties=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES
       pNext:PVkVoid;
       maxInlineUniformBlockSize:TVkUInt32;
       maxPerStageDescriptorInlineUniformBlocks:TVkUInt32;
       maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks:TVkUInt32;
       maxDescriptorSetInlineUniformBlocks:TVkUInt32;
       maxDescriptorSetUpdateAfterBindInlineUniformBlocks:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMaxInlineUniformBlockSize:TVkUInt32;
                          const aMaxPerStageDescriptorInlineUniformBlocks:TVkUInt32;
                          const aMaxPerStageDescriptorUpdateAfterBindInlineUniformBlocks:TVkUInt32;
                          const aMaxDescriptorSetInlineUniformBlocks:TVkUInt32;
                          const aMaxDescriptorSetUpdateAfterBindInlineUniformBlocks:TVkUInt32);
{$endif}
     end;

     PPVkPhysicalDeviceInlineUniformBlockPropertiesEXT=^PVkPhysicalDeviceInlineUniformBlockPropertiesEXT;
     PVkPhysicalDeviceInlineUniformBlockPropertiesEXT=^TVkPhysicalDeviceInlineUniformBlockPropertiesEXT;
     TVkPhysicalDeviceInlineUniformBlockPropertiesEXT=TVkPhysicalDeviceInlineUniformBlockProperties;

     PPVkWriteDescriptorSetInlineUniformBlock=^PVkWriteDescriptorSetInlineUniformBlock;
     PVkWriteDescriptorSetInlineUniformBlock=^TVkWriteDescriptorSetInlineUniformBlock;
     TVkWriteDescriptorSetInlineUniformBlock=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK
       pNext:PVkVoid;
       dataSize:TVkUInt32;
       pData:PVkVoid;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDataSize:TVkUInt32;
                          const aPData:PVkVoid);
{$endif}
     end;

     PPVkWriteDescriptorSetInlineUniformBlockEXT=^PVkWriteDescriptorSetInlineUniformBlockEXT;
     PVkWriteDescriptorSetInlineUniformBlockEXT=^TVkWriteDescriptorSetInlineUniformBlockEXT;
     TVkWriteDescriptorSetInlineUniformBlockEXT=TVkWriteDescriptorSetInlineUniformBlock;

     PPVkDescriptorPoolInlineUniformBlockCreateInfo=^PVkDescriptorPoolInlineUniformBlockCreateInfo;
     PVkDescriptorPoolInlineUniformBlockCreateInfo=^TVkDescriptorPoolInlineUniformBlockCreateInfo;
     TVkDescriptorPoolInlineUniformBlockCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO
       pNext:PVkVoid;
       maxInlineUniformBlockBindings:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMaxInlineUniformBlockBindings:TVkUInt32);
{$endif}
     end;

     PPVkDescriptorPoolInlineUniformBlockCreateInfoEXT=^PVkDescriptorPoolInlineUniformBlockCreateInfoEXT;
     PVkDescriptorPoolInlineUniformBlockCreateInfoEXT=^TVkDescriptorPoolInlineUniformBlockCreateInfoEXT;
     TVkDescriptorPoolInlineUniformBlockCreateInfoEXT=TVkDescriptorPoolInlineUniformBlockCreateInfo;

     PPVkPipelineCoverageModulationStateCreateInfoNV=^PVkPipelineCoverageModulationStateCreateInfoNV;
     PVkPipelineCoverageModulationStateCreateInfoNV=^TVkPipelineCoverageModulationStateCreateInfoNV;
     TVkPipelineCoverageModulationStateCreateInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV
       pNext:PVkVoid;
       flags:TVkPipelineCoverageModulationStateCreateFlagsNV;
       coverageModulationMode:TVkCoverageModulationModeNV;
       coverageModulationTableEnable:TVkBool32;
       coverageModulationTableCount:TVkUInt32;
       pCoverageModulationTable:PVkFloat;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkPipelineCoverageModulationStateCreateFlagsNV;
                          const aCoverageModulationMode:TVkCoverageModulationModeNV;
                          const aCoverageModulationTableEnable:TVkBool32;
                          const aCoverageModulationTableCount:TVkUInt32;
                          const aPCoverageModulationTable:PVkFloat);
{$endif}
     end;

     PPVkImageFormatListCreateInfo=^PVkImageFormatListCreateInfo;
     PVkImageFormatListCreateInfo=^TVkImageFormatListCreateInfo;
     TVkImageFormatListCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO
       pNext:PVkVoid;
       viewFormatCount:TVkUInt32;
       pViewFormats:PVkFormat;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aViewFormatCount:TVkUInt32;
                          const aPViewFormats:PVkFormat);
{$endif}
     end;

     PPVkImageFormatListCreateInfoKHR=^PVkImageFormatListCreateInfoKHR;
     PVkImageFormatListCreateInfoKHR=^TVkImageFormatListCreateInfoKHR;
     TVkImageFormatListCreateInfoKHR=TVkImageFormatListCreateInfo;

     PPVkValidationCacheCreateInfoEXT=^PVkValidationCacheCreateInfoEXT;
     PVkValidationCacheCreateInfoEXT=^TVkValidationCacheCreateInfoEXT;
     TVkValidationCacheCreateInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT
       pNext:PVkVoid;
       flags:TVkValidationCacheCreateFlagsEXT;
       initialDataSize:TVkSize;
       pInitialData:PVkVoid;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkValidationCacheCreateFlagsEXT;
                          const aInitialDataSize:TVkSize;
                          const aPInitialData:PVkVoid);
{$endif}
     end;

     PPVkShaderModuleValidationCacheCreateInfoEXT=^PVkShaderModuleValidationCacheCreateInfoEXT;
     PVkShaderModuleValidationCacheCreateInfoEXT=^TVkShaderModuleValidationCacheCreateInfoEXT;
     TVkShaderModuleValidationCacheCreateInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT
       pNext:PVkVoid;
       validationCache:TVkValidationCacheEXT;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aValidationCache:TVkValidationCacheEXT);
{$endif}
     end;

     PPVkPhysicalDeviceMaintenance3Properties=^PVkPhysicalDeviceMaintenance3Properties;
     PVkPhysicalDeviceMaintenance3Properties=^TVkPhysicalDeviceMaintenance3Properties;
     TVkPhysicalDeviceMaintenance3Properties=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES
       pNext:PVkVoid;
       maxPerSetDescriptors:TVkUInt32;
       maxMemoryAllocationSize:TVkDeviceSize;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMaxPerSetDescriptors:TVkUInt32;
                          const aMaxMemoryAllocationSize:TVkDeviceSize);
{$endif}
     end;

     PPVkPhysicalDeviceMaintenance3PropertiesKHR=^PVkPhysicalDeviceMaintenance3PropertiesKHR;
     PVkPhysicalDeviceMaintenance3PropertiesKHR=^TVkPhysicalDeviceMaintenance3PropertiesKHR;
     TVkPhysicalDeviceMaintenance3PropertiesKHR=TVkPhysicalDeviceMaintenance3Properties;

     PPVkPhysicalDeviceMaintenance4Features=^PVkPhysicalDeviceMaintenance4Features;
     PVkPhysicalDeviceMaintenance4Features=^TVkPhysicalDeviceMaintenance4Features;
     TVkPhysicalDeviceMaintenance4Features=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES
       pNext:PVkVoid;
       maintenance4:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMaintenance4:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceMaintenance4FeaturesKHR=^PVkPhysicalDeviceMaintenance4FeaturesKHR;
     PVkPhysicalDeviceMaintenance4FeaturesKHR=^TVkPhysicalDeviceMaintenance4FeaturesKHR;
     TVkPhysicalDeviceMaintenance4FeaturesKHR=TVkPhysicalDeviceMaintenance4Features;

     PPVkPhysicalDeviceMaintenance4Properties=^PVkPhysicalDeviceMaintenance4Properties;
     PVkPhysicalDeviceMaintenance4Properties=^TVkPhysicalDeviceMaintenance4Properties;
     TVkPhysicalDeviceMaintenance4Properties=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES
       pNext:PVkVoid;
       maxBufferSize:TVkDeviceSize;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMaxBufferSize:TVkDeviceSize);
{$endif}
     end;

     PPVkPhysicalDeviceMaintenance4PropertiesKHR=^PVkPhysicalDeviceMaintenance4PropertiesKHR;
     PVkPhysicalDeviceMaintenance4PropertiesKHR=^TVkPhysicalDeviceMaintenance4PropertiesKHR;
     TVkPhysicalDeviceMaintenance4PropertiesKHR=TVkPhysicalDeviceMaintenance4Properties;

     PPVkPhysicalDeviceMaintenance5FeaturesKHR=^PVkPhysicalDeviceMaintenance5FeaturesKHR;
     PVkPhysicalDeviceMaintenance5FeaturesKHR=^TVkPhysicalDeviceMaintenance5FeaturesKHR;
     TVkPhysicalDeviceMaintenance5FeaturesKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR
       pNext:PVkVoid;
       maintenance5:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMaintenance5:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceMaintenance5PropertiesKHR=^PVkPhysicalDeviceMaintenance5PropertiesKHR;
     PVkPhysicalDeviceMaintenance5PropertiesKHR=^TVkPhysicalDeviceMaintenance5PropertiesKHR;
     TVkPhysicalDeviceMaintenance5PropertiesKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR
       pNext:PVkVoid;
       earlyFragmentMultisampleCoverageAfterSampleCounting:TVkBool32;
       earlyFragmentSampleMaskTestBeforeSampleCounting:TVkBool32;
       depthStencilSwizzleOneSupport:TVkBool32;
       polygonModePointSize:TVkBool32;
       nonStrictSinglePixelWideLinesUseParallelogram:TVkBool32;
       nonStrictWideLinesUseParallelogram:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aEarlyFragmentMultisampleCoverageAfterSampleCounting:TVkBool32;
                          const aEarlyFragmentSampleMaskTestBeforeSampleCounting:TVkBool32;
                          const aDepthStencilSwizzleOneSupport:TVkBool32;
                          const aPolygonModePointSize:TVkBool32;
                          const aNonStrictSinglePixelWideLinesUseParallelogram:TVkBool32;
                          const aNonStrictWideLinesUseParallelogram:TVkBool32);
{$endif}
     end;

     PPVkRenderingAreaInfoKHR=^PVkRenderingAreaInfoKHR;
     PVkRenderingAreaInfoKHR=^TVkRenderingAreaInfoKHR;
     TVkRenderingAreaInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_RENDERING_AREA_INFO_KHR
       pNext:PVkVoid;
       viewMask:TVkUInt32;
       colorAttachmentCount:TVkUInt32;
       pColorAttachmentFormats:PVkFormat;
       depthAttachmentFormat:TVkFormat;
       stencilAttachmentFormat:TVkFormat;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aViewMask:TVkUInt32;
                          const aColorAttachmentCount:TVkUInt32;
                          const aPColorAttachmentFormats:PVkFormat;
                          const aDepthAttachmentFormat:TVkFormat;
                          const aStencilAttachmentFormat:TVkFormat);
{$endif}
     end;

     PPVkDescriptorSetLayoutSupport=^PVkDescriptorSetLayoutSupport;
     PVkDescriptorSetLayoutSupport=^TVkDescriptorSetLayoutSupport;
     TVkDescriptorSetLayoutSupport=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT
       pNext:PVkVoid;
       supported:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSupported:TVkBool32);
{$endif}
     end;

     PPVkDescriptorSetLayoutSupportKHR=^PVkDescriptorSetLayoutSupportKHR;
     PVkDescriptorSetLayoutSupportKHR=^TVkDescriptorSetLayoutSupportKHR;
     TVkDescriptorSetLayoutSupportKHR=TVkDescriptorSetLayoutSupport;

     PPVkPhysicalDeviceShaderDrawParametersFeatures=^PVkPhysicalDeviceShaderDrawParametersFeatures;
     PVkPhysicalDeviceShaderDrawParametersFeatures=^TVkPhysicalDeviceShaderDrawParametersFeatures;
     TVkPhysicalDeviceShaderDrawParametersFeatures=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES
       pNext:PVkVoid;
       shaderDrawParameters:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aShaderDrawParameters:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceShaderDrawParameterFeatures=^PVkPhysicalDeviceShaderDrawParameterFeatures;
     PVkPhysicalDeviceShaderDrawParameterFeatures=^TVkPhysicalDeviceShaderDrawParameterFeatures;
     TVkPhysicalDeviceShaderDrawParameterFeatures=TVkPhysicalDeviceShaderDrawParametersFeatures;

     PPVkPhysicalDeviceShaderFloat16Int8Features=^PVkPhysicalDeviceShaderFloat16Int8Features;
     PVkPhysicalDeviceShaderFloat16Int8Features=^TVkPhysicalDeviceShaderFloat16Int8Features;
     TVkPhysicalDeviceShaderFloat16Int8Features=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES
       pNext:PVkVoid;
       shaderFloat16:TVkBool32;
       shaderInt8:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aShaderFloat16:TVkBool32;
                          const aShaderInt8:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceShaderFloat16Int8FeaturesKHR=^PVkPhysicalDeviceShaderFloat16Int8FeaturesKHR;
     PVkPhysicalDeviceShaderFloat16Int8FeaturesKHR=^TVkPhysicalDeviceShaderFloat16Int8FeaturesKHR;
     TVkPhysicalDeviceShaderFloat16Int8FeaturesKHR=TVkPhysicalDeviceShaderFloat16Int8Features;

     PPVkPhysicalDeviceFloat16Int8FeaturesKHR=^PVkPhysicalDeviceFloat16Int8FeaturesKHR;
     PVkPhysicalDeviceFloat16Int8FeaturesKHR=^TVkPhysicalDeviceFloat16Int8FeaturesKHR;
     TVkPhysicalDeviceFloat16Int8FeaturesKHR=TVkPhysicalDeviceShaderFloat16Int8Features;

     PPVkPhysicalDeviceFloatControlsProperties=^PVkPhysicalDeviceFloatControlsProperties;
     PVkPhysicalDeviceFloatControlsProperties=^TVkPhysicalDeviceFloatControlsProperties;
     TVkPhysicalDeviceFloatControlsProperties=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES
       pNext:PVkVoid;
       denormBehaviorIndependence:TVkShaderFloatControlsIndependence;
       roundingModeIndependence:TVkShaderFloatControlsIndependence;
       shaderSignedZeroInfNanPreserveFloat16:TVkBool32;
       shaderSignedZeroInfNanPreserveFloat32:TVkBool32;
       shaderSignedZeroInfNanPreserveFloat64:TVkBool32;
       shaderDenormPreserveFloat16:TVkBool32;
       shaderDenormPreserveFloat32:TVkBool32;
       shaderDenormPreserveFloat64:TVkBool32;
       shaderDenormFlushToZeroFloat16:TVkBool32;
       shaderDenormFlushToZeroFloat32:TVkBool32;
       shaderDenormFlushToZeroFloat64:TVkBool32;
       shaderRoundingModeRTEFloat16:TVkBool32;
       shaderRoundingModeRTEFloat32:TVkBool32;
       shaderRoundingModeRTEFloat64:TVkBool32;
       shaderRoundingModeRTZFloat16:TVkBool32;
       shaderRoundingModeRTZFloat32:TVkBool32;
       shaderRoundingModeRTZFloat64:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDenormBehaviorIndependence:TVkShaderFloatControlsIndependence;
                          const aRoundingModeIndependence:TVkShaderFloatControlsIndependence;
                          const aShaderSignedZeroInfNanPreserveFloat16:TVkBool32;
                          const aShaderSignedZeroInfNanPreserveFloat32:TVkBool32;
                          const aShaderSignedZeroInfNanPreserveFloat64:TVkBool32;
                          const aShaderDenormPreserveFloat16:TVkBool32;
                          const aShaderDenormPreserveFloat32:TVkBool32;
                          const aShaderDenormPreserveFloat64:TVkBool32;
                          const aShaderDenormFlushToZeroFloat16:TVkBool32;
                          const aShaderDenormFlushToZeroFloat32:TVkBool32;
                          const aShaderDenormFlushToZeroFloat64:TVkBool32;
                          const aShaderRoundingModeRTEFloat16:TVkBool32;
                          const aShaderRoundingModeRTEFloat32:TVkBool32;
                          const aShaderRoundingModeRTEFloat64:TVkBool32;
                          const aShaderRoundingModeRTZFloat16:TVkBool32;
                          const aShaderRoundingModeRTZFloat32:TVkBool32;
                          const aShaderRoundingModeRTZFloat64:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceFloatControlsPropertiesKHR=^PVkPhysicalDeviceFloatControlsPropertiesKHR;
     PVkPhysicalDeviceFloatControlsPropertiesKHR=^TVkPhysicalDeviceFloatControlsPropertiesKHR;
     TVkPhysicalDeviceFloatControlsPropertiesKHR=TVkPhysicalDeviceFloatControlsProperties;

     PPVkPhysicalDeviceHostQueryResetFeatures=^PVkPhysicalDeviceHostQueryResetFeatures;
     PVkPhysicalDeviceHostQueryResetFeatures=^TVkPhysicalDeviceHostQueryResetFeatures;
     TVkPhysicalDeviceHostQueryResetFeatures=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES
       pNext:PVkVoid;
       hostQueryReset:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aHostQueryReset:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceHostQueryResetFeaturesEXT=^PVkPhysicalDeviceHostQueryResetFeaturesEXT;
     PVkPhysicalDeviceHostQueryResetFeaturesEXT=^TVkPhysicalDeviceHostQueryResetFeaturesEXT;
     TVkPhysicalDeviceHostQueryResetFeaturesEXT=TVkPhysicalDeviceHostQueryResetFeatures;

{$ifdef Android}
     PPVkNativeBufferUsage2ANDROID=^PVkNativeBufferUsage2ANDROID;
     PVkNativeBufferUsage2ANDROID=^TVkNativeBufferUsage2ANDROID;
     TVkNativeBufferUsage2ANDROID=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       consumer:TVkUInt64;
       producer:TVkUInt64;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aConsumer:TVkUInt64;
                          const aProducer:TVkUInt64);
{$endif}
     end;
{$endif}

{$ifdef Android}
     PPVkNativeBufferANDROID=^PVkNativeBufferANDROID;
     PVkNativeBufferANDROID=^TVkNativeBufferANDROID;
     TVkNativeBufferANDROID=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID
       pNext:PVkVoid;
       handle:PVkVoid;
       stride:TVkInt32;
       format:TVkInt32;
       usage:TVkInt32;
       usage2:TVkNativeBufferUsage2ANDROID;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aHandle:PVkVoid;
                          const aStride:TVkInt32;
                          const aFormat:TVkInt32;
                          const aUsage:TVkInt32;
                          const aUsage2:TVkNativeBufferUsage2ANDROID);
{$endif}
     end;
{$endif}

{$ifdef Android}
     PPVkSwapchainImageCreateInfoANDROID=^PVkSwapchainImageCreateInfoANDROID;
     PVkSwapchainImageCreateInfoANDROID=^TVkSwapchainImageCreateInfoANDROID;
     TVkSwapchainImageCreateInfoANDROID=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SWAPCHAIN_IMAGE_CREATE_INFO_ANDROID
       pNext:PVkVoid;
       usage:TVkSwapchainImageUsageFlagsANDROID;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aUsage:TVkSwapchainImageUsageFlagsANDROID);
{$endif}
     end;
{$endif}

{$ifdef Android}
     PPVkPhysicalDevicePresentationPropertiesANDROID=^PVkPhysicalDevicePresentationPropertiesANDROID;
     PVkPhysicalDevicePresentationPropertiesANDROID=^TVkPhysicalDevicePresentationPropertiesANDROID;
     TVkPhysicalDevicePresentationPropertiesANDROID=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENTATION_PROPERTIES_ANDROID
       pNext:PVkVoid;
       sharedImage:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSharedImage:TVkBool32);
{$endif}
     end;
{$endif}

     PPVkShaderResourceUsageAMD=^PVkShaderResourceUsageAMD;
     PVkShaderResourceUsageAMD=^TVkShaderResourceUsageAMD;
     TVkShaderResourceUsageAMD=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       numUsedVgprs:TVkUInt32;
       numUsedSgprs:TVkUInt32;
       ldsSizePerLocalWorkGroup:TVkUInt32;
       ldsUsageSizeInBytes:TVkSize;
       scratchMemUsageInBytes:TVkSize;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aNumUsedVgprs:TVkUInt32;
                          const aNumUsedSgprs:TVkUInt32;
                          const aLdsSizePerLocalWorkGroup:TVkUInt32;
                          const aLdsUsageSizeInBytes:TVkSize;
                          const aScratchMemUsageInBytes:TVkSize);
{$endif}
     end;

     PPVkShaderStatisticsInfoAMD=^PVkShaderStatisticsInfoAMD;
     PVkShaderStatisticsInfoAMD=^TVkShaderStatisticsInfoAMD;
     TVkShaderStatisticsInfoAMD=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       shaderStageMask:TVkShaderStageFlags;
       resourceUsage:TVkShaderResourceUsageAMD;
       numPhysicalVgprs:TVkUInt32;
       numPhysicalSgprs:TVkUInt32;
       numAvailableVgprs:TVkUInt32;
       numAvailableSgprs:TVkUInt32;
       computeWorkGroupSize:array[0..2] of TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aShaderStageMask:TVkShaderStageFlags;
                          const aResourceUsage:TVkShaderResourceUsageAMD;
                          const aNumPhysicalVgprs:TVkUInt32;
                          const aNumPhysicalSgprs:TVkUInt32;
                          const aNumAvailableVgprs:TVkUInt32;
                          const aNumAvailableSgprs:TVkUInt32;
                          const aComputeWorkGroupSize:array of TVkUInt32);
{$endif}
     end;

     PPVkDeviceQueueGlobalPriorityCreateInfoKHR=^PVkDeviceQueueGlobalPriorityCreateInfoKHR;
     PVkDeviceQueueGlobalPriorityCreateInfoKHR=^TVkDeviceQueueGlobalPriorityCreateInfoKHR;
     TVkDeviceQueueGlobalPriorityCreateInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR
       pNext:PVkVoid;
       globalPriority:TVkQueueGlobalPriorityKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aGlobalPriority:TVkQueueGlobalPriorityKHR);
{$endif}
     end;

     PPVkDeviceQueueGlobalPriorityCreateInfoEXT=^PVkDeviceQueueGlobalPriorityCreateInfoEXT;
     PVkDeviceQueueGlobalPriorityCreateInfoEXT=^TVkDeviceQueueGlobalPriorityCreateInfoEXT;
     TVkDeviceQueueGlobalPriorityCreateInfoEXT=TVkDeviceQueueGlobalPriorityCreateInfoKHR;

     PPVkPhysicalDeviceGlobalPriorityQueryFeaturesKHR=^PVkPhysicalDeviceGlobalPriorityQueryFeaturesKHR;
     PVkPhysicalDeviceGlobalPriorityQueryFeaturesKHR=^TVkPhysicalDeviceGlobalPriorityQueryFeaturesKHR;
     TVkPhysicalDeviceGlobalPriorityQueryFeaturesKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR
       pNext:PVkVoid;
       globalPriorityQuery:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aGlobalPriorityQuery:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceGlobalPriorityQueryFeaturesEXT=^PVkPhysicalDeviceGlobalPriorityQueryFeaturesEXT;
     PVkPhysicalDeviceGlobalPriorityQueryFeaturesEXT=^TVkPhysicalDeviceGlobalPriorityQueryFeaturesEXT;
     TVkPhysicalDeviceGlobalPriorityQueryFeaturesEXT=TVkPhysicalDeviceGlobalPriorityQueryFeaturesKHR;

     PPVkQueueFamilyGlobalPriorityPropertiesKHR=^PVkQueueFamilyGlobalPriorityPropertiesKHR;
     PVkQueueFamilyGlobalPriorityPropertiesKHR=^TVkQueueFamilyGlobalPriorityPropertiesKHR;
     TVkQueueFamilyGlobalPriorityPropertiesKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR
       pNext:PVkVoid;
       priorityCount:TVkUInt32;
       priorities:array[0..VK_MAX_GLOBAL_PRIORITY_SIZE_KHR-1] of TVkQueueGlobalPriorityKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPriorityCount:TVkUInt32;
                          const aPriorities:array of TVkQueueGlobalPriorityKHR);
{$endif}
     end;

     PPVkQueueFamilyGlobalPriorityPropertiesEXT=^PVkQueueFamilyGlobalPriorityPropertiesEXT;
     PVkQueueFamilyGlobalPriorityPropertiesEXT=^TVkQueueFamilyGlobalPriorityPropertiesEXT;
     TVkQueueFamilyGlobalPriorityPropertiesEXT=TVkQueueFamilyGlobalPriorityPropertiesKHR;

     PPVkDebugUtilsLabelEXT=^PVkDebugUtilsLabelEXT;
     PVkDebugUtilsLabelEXT=^TVkDebugUtilsLabelEXT;
     TVkDebugUtilsLabelEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT
       pNext:PVkVoid;
       pLabelName:PVkChar;
       color:array[0..3] of TVkFloat;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPLabelName:PVkChar;
                          const aColor:array of TVkFloat);
{$endif}
     end;

     PPVkDebugUtilsObjectTagInfoEXT=^PVkDebugUtilsObjectTagInfoEXT;
     PVkDebugUtilsObjectTagInfoEXT=^TVkDebugUtilsObjectTagInfoEXT;
     TVkDebugUtilsObjectTagInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT
       pNext:PVkVoid;
       objectType:TVkObjectType;
       objectHandle:TVkUInt64;
       tagName:TVkUInt64;
       tagSize:TVkSize;
       pTag:PVkVoid;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aObjectType:TVkObjectType;
                          const aObjectHandle:TVkUInt64;
                          const aTagName:TVkUInt64;
                          const aTagSize:TVkSize;
                          const aPTag:PVkVoid);
{$endif}
     end;

     PPVkDebugUtilsMessengerCallbackDataEXT=^PVkDebugUtilsMessengerCallbackDataEXT;
     PVkDebugUtilsMessengerCallbackDataEXT=^TVkDebugUtilsMessengerCallbackDataEXT;
     TVkDebugUtilsMessengerCallbackDataEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT
       pNext:PVkVoid;
       flags:TVkDebugUtilsMessengerCallbackDataFlagsEXT;
       pMessageIdName:PVkChar;
       messageIdNumber:TVkInt32;
       pMessage:PVkChar;
       queueLabelCount:TVkUInt32;
       pQueueLabels:PVkDebugUtilsLabelEXT;
       cmdBufLabelCount:TVkUInt32;
       pCmdBufLabels:PVkDebugUtilsLabelEXT;
       objectCount:TVkUInt32;
       pObjects:PVkDebugUtilsObjectNameInfoEXT;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkDebugUtilsMessengerCallbackDataFlagsEXT;
                          const aPMessageIdName:PVkChar;
                          const aMessageIdNumber:TVkInt32;
                          const aPMessage:PVkChar;
                          const aQueueLabelCount:TVkUInt32;
                          const aPQueueLabels:PVkDebugUtilsLabelEXT;
                          const aCmdBufLabelCount:TVkUInt32;
                          const aPCmdBufLabels:PVkDebugUtilsLabelEXT;
                          const aObjectCount:TVkUInt32;
                          const aPObjects:PVkDebugUtilsObjectNameInfoEXT);
{$endif}
     end;

     PPPFN_vkDebugUtilsMessengerCallbackEXT=^PPFN_vkDebugUtilsMessengerCallbackEXT;
     PPFN_vkDebugUtilsMessengerCallbackEXT=^TPFN_vkDebugUtilsMessengerCallbackEXT;
     TPFN_vkDebugUtilsMessengerCallbackEXT=function(messageSeverity:TVkDebugUtilsMessageSeverityFlagBitsEXT;messageTypes:TVkDebugUtilsMessageTypeFlagsEXT;const pCallbackData:PVkDebugUtilsMessengerCallbackDataEXT;pUserData:PVkVoid):TVkBool32; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     PPVkDebugUtilsMessengerCreateInfoEXT=^PVkDebugUtilsMessengerCreateInfoEXT;
     PVkDebugUtilsMessengerCreateInfoEXT=^TVkDebugUtilsMessengerCreateInfoEXT;
     TVkDebugUtilsMessengerCreateInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT
       pNext:PVkVoid;
       flags:TVkDebugUtilsMessengerCreateFlagsEXT;
       messageSeverity:TVkDebugUtilsMessageSeverityFlagsEXT;
       messageType:TVkDebugUtilsMessageTypeFlagsEXT;
       pfnUserCallback:TPFN_vkDebugUtilsMessengerCallbackEXT;
       pUserData:PVkVoid;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkDebugUtilsMessengerCreateFlagsEXT;
                          const aMessageSeverity:TVkDebugUtilsMessageSeverityFlagsEXT;
                          const aMessageType:TVkDebugUtilsMessageTypeFlagsEXT;
                          const aPfnUserCallback:TPFN_vkDebugUtilsMessengerCallbackEXT;
                          const aPUserData:PVkVoid);
{$endif}
     end;

     PPVkPhysicalDeviceDeviceMemoryReportFeaturesEXT=^PVkPhysicalDeviceDeviceMemoryReportFeaturesEXT;
     PVkPhysicalDeviceDeviceMemoryReportFeaturesEXT=^TVkPhysicalDeviceDeviceMemoryReportFeaturesEXT;
     TVkPhysicalDeviceDeviceMemoryReportFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT
       pNext:PVkVoid;
       deviceMemoryReport:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDeviceMemoryReport:TVkBool32);
{$endif}
     end;

     PPPFN_vkDeviceMemoryReportCallbackEXT=^PPFN_vkDeviceMemoryReportCallbackEXT;
     PPFN_vkDeviceMemoryReportCallbackEXT=^TPFN_vkDeviceMemoryReportCallbackEXT;
     TPFN_vkDeviceMemoryReportCallbackEXT=procedure(pCallbackData:PVkDeviceMemoryReportCallbackDataEXT;pUserData:PVkVoid); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     PPVkDeviceDeviceMemoryReportCreateInfoEXT=^PVkDeviceDeviceMemoryReportCreateInfoEXT;
     PVkDeviceDeviceMemoryReportCreateInfoEXT=^TVkDeviceDeviceMemoryReportCreateInfoEXT;
     TVkDeviceDeviceMemoryReportCreateInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT
       pNext:PVkVoid;
       flags:TVkDeviceMemoryReportFlagsEXT;
       pfnUserCallback:TPFN_vkDeviceMemoryReportCallbackEXT;
       pUserData:PVkVoid;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkDeviceMemoryReportFlagsEXT;
                          const aPfnUserCallback:TPFN_vkDeviceMemoryReportCallbackEXT;
                          const aPUserData:PVkVoid);
{$endif}
     end;

     PPVkImportMemoryHostPointerInfoEXT=^PVkImportMemoryHostPointerInfoEXT;
     PVkImportMemoryHostPointerInfoEXT=^TVkImportMemoryHostPointerInfoEXT;
     TVkImportMemoryHostPointerInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT
       pNext:PVkVoid;
       handleType:TVkExternalMemoryHandleTypeFlagBits;
       pHostPointer:PVkVoid;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aHandleType:TVkExternalMemoryHandleTypeFlagBits;
                          const aPHostPointer:PVkVoid);
{$endif}
     end;

     PPVkMemoryHostPointerPropertiesEXT=^PVkMemoryHostPointerPropertiesEXT;
     PVkMemoryHostPointerPropertiesEXT=^TVkMemoryHostPointerPropertiesEXT;
     TVkMemoryHostPointerPropertiesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT
       pNext:PVkVoid;
       memoryTypeBits:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMemoryTypeBits:TVkUInt32);
{$endif}
     end;

     PPVkPhysicalDeviceExternalMemoryHostPropertiesEXT=^PVkPhysicalDeviceExternalMemoryHostPropertiesEXT;
     PVkPhysicalDeviceExternalMemoryHostPropertiesEXT=^TVkPhysicalDeviceExternalMemoryHostPropertiesEXT;
     TVkPhysicalDeviceExternalMemoryHostPropertiesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT
       pNext:PVkVoid;
       minImportedHostPointerAlignment:TVkDeviceSize;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMinImportedHostPointerAlignment:TVkDeviceSize);
{$endif}
     end;

     PPVkPhysicalDeviceConservativeRasterizationPropertiesEXT=^PVkPhysicalDeviceConservativeRasterizationPropertiesEXT;
     PVkPhysicalDeviceConservativeRasterizationPropertiesEXT=^TVkPhysicalDeviceConservativeRasterizationPropertiesEXT;
     TVkPhysicalDeviceConservativeRasterizationPropertiesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT
       pNext:PVkVoid;
       primitiveOverestimationSize:TVkFloat;
       maxExtraPrimitiveOverestimationSize:TVkFloat;
       extraPrimitiveOverestimationSizeGranularity:TVkFloat;
       primitiveUnderestimation:TVkBool32;
       conservativePointAndLineRasterization:TVkBool32;
       degenerateTrianglesRasterized:TVkBool32;
       degenerateLinesRasterized:TVkBool32;
       fullyCoveredFragmentShaderInputVariable:TVkBool32;
       conservativeRasterizationPostDepthCoverage:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPrimitiveOverestimationSize:TVkFloat;
                          const aMaxExtraPrimitiveOverestimationSize:TVkFloat;
                          const aExtraPrimitiveOverestimationSizeGranularity:TVkFloat;
                          const aPrimitiveUnderestimation:TVkBool32;
                          const aConservativePointAndLineRasterization:TVkBool32;
                          const aDegenerateTrianglesRasterized:TVkBool32;
                          const aDegenerateLinesRasterized:TVkBool32;
                          const aFullyCoveredFragmentShaderInputVariable:TVkBool32;
                          const aConservativeRasterizationPostDepthCoverage:TVkBool32);
{$endif}
     end;

     PPVkCalibratedTimestampInfoEXT=^PVkCalibratedTimestampInfoEXT;
     PVkCalibratedTimestampInfoEXT=^TVkCalibratedTimestampInfoEXT;
     TVkCalibratedTimestampInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT
       pNext:PVkVoid;
       timeDomain:TVkTimeDomainEXT;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aTimeDomain:TVkTimeDomainEXT);
{$endif}
     end;

     PPVkPhysicalDeviceShaderCorePropertiesAMD=^PVkPhysicalDeviceShaderCorePropertiesAMD;
     PVkPhysicalDeviceShaderCorePropertiesAMD=^TVkPhysicalDeviceShaderCorePropertiesAMD;
     TVkPhysicalDeviceShaderCorePropertiesAMD=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD
       pNext:PVkVoid;
       shaderEngineCount:TVkUInt32;
       shaderArraysPerEngineCount:TVkUInt32;
       computeUnitsPerShaderArray:TVkUInt32;
       simdPerComputeUnit:TVkUInt32;
       wavefrontsPerSimd:TVkUInt32;
       wavefrontSize:TVkUInt32;
       sgprsPerSimd:TVkUInt32;
       minSgprAllocation:TVkUInt32;
       maxSgprAllocation:TVkUInt32;
       sgprAllocationGranularity:TVkUInt32;
       vgprsPerSimd:TVkUInt32;
       minVgprAllocation:TVkUInt32;
       maxVgprAllocation:TVkUInt32;
       vgprAllocationGranularity:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aShaderEngineCount:TVkUInt32;
                          const aShaderArraysPerEngineCount:TVkUInt32;
                          const aComputeUnitsPerShaderArray:TVkUInt32;
                          const aSimdPerComputeUnit:TVkUInt32;
                          const aWavefrontsPerSimd:TVkUInt32;
                          const aWavefrontSize:TVkUInt32;
                          const aSgprsPerSimd:TVkUInt32;
                          const aMinSgprAllocation:TVkUInt32;
                          const aMaxSgprAllocation:TVkUInt32;
                          const aSgprAllocationGranularity:TVkUInt32;
                          const aVgprsPerSimd:TVkUInt32;
                          const aMinVgprAllocation:TVkUInt32;
                          const aMaxVgprAllocation:TVkUInt32;
                          const aVgprAllocationGranularity:TVkUInt32);
{$endif}
     end;

     PPVkPhysicalDeviceShaderCoreProperties2AMD=^PVkPhysicalDeviceShaderCoreProperties2AMD;
     PVkPhysicalDeviceShaderCoreProperties2AMD=^TVkPhysicalDeviceShaderCoreProperties2AMD;
     TVkPhysicalDeviceShaderCoreProperties2AMD=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD
       pNext:PVkVoid;
       shaderCoreFeatures:TVkShaderCorePropertiesFlagsAMD;
       activeComputeUnitCount:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aShaderCoreFeatures:TVkShaderCorePropertiesFlagsAMD;
                          const aActiveComputeUnitCount:TVkUInt32);
{$endif}
     end;

     PPVkPipelineRasterizationConservativeStateCreateInfoEXT=^PVkPipelineRasterizationConservativeStateCreateInfoEXT;
     PVkPipelineRasterizationConservativeStateCreateInfoEXT=^TVkPipelineRasterizationConservativeStateCreateInfoEXT;
     TVkPipelineRasterizationConservativeStateCreateInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT
       pNext:PVkVoid;
       flags:TVkPipelineRasterizationConservativeStateCreateFlagsEXT;
       conservativeRasterizationMode:TVkConservativeRasterizationModeEXT;
       extraPrimitiveOverestimationSize:TVkFloat;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkPipelineRasterizationConservativeStateCreateFlagsEXT;
                          const aConservativeRasterizationMode:TVkConservativeRasterizationModeEXT;
                          const aExtraPrimitiveOverestimationSize:TVkFloat);
{$endif}
     end;

     PPVkPhysicalDeviceDescriptorIndexingFeatures=^PVkPhysicalDeviceDescriptorIndexingFeatures;
     PVkPhysicalDeviceDescriptorIndexingFeatures=^TVkPhysicalDeviceDescriptorIndexingFeatures;
     TVkPhysicalDeviceDescriptorIndexingFeatures=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES
       pNext:PVkVoid;
       shaderInputAttachmentArrayDynamicIndexing:TVkBool32;
       shaderUniformTexelBufferArrayDynamicIndexing:TVkBool32;
       shaderStorageTexelBufferArrayDynamicIndexing:TVkBool32;
       shaderUniformBufferArrayNonUniformIndexing:TVkBool32;
       shaderSampledImageArrayNonUniformIndexing:TVkBool32;
       shaderStorageBufferArrayNonUniformIndexing:TVkBool32;
       shaderStorageImageArrayNonUniformIndexing:TVkBool32;
       shaderInputAttachmentArrayNonUniformIndexing:TVkBool32;
       shaderUniformTexelBufferArrayNonUniformIndexing:TVkBool32;
       shaderStorageTexelBufferArrayNonUniformIndexing:TVkBool32;
       descriptorBindingUniformBufferUpdateAfterBind:TVkBool32;
       descriptorBindingSampledImageUpdateAfterBind:TVkBool32;
       descriptorBindingStorageImageUpdateAfterBind:TVkBool32;
       descriptorBindingStorageBufferUpdateAfterBind:TVkBool32;
       descriptorBindingUniformTexelBufferUpdateAfterBind:TVkBool32;
       descriptorBindingStorageTexelBufferUpdateAfterBind:TVkBool32;
       descriptorBindingUpdateUnusedWhilePending:TVkBool32;
       descriptorBindingPartiallyBound:TVkBool32;
       descriptorBindingVariableDescriptorCount:TVkBool32;
       runtimeDescriptorArray:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aShaderInputAttachmentArrayDynamicIndexing:TVkBool32;
                          const aShaderUniformTexelBufferArrayDynamicIndexing:TVkBool32;
                          const aShaderStorageTexelBufferArrayDynamicIndexing:TVkBool32;
                          const aShaderUniformBufferArrayNonUniformIndexing:TVkBool32;
                          const aShaderSampledImageArrayNonUniformIndexing:TVkBool32;
                          const aShaderStorageBufferArrayNonUniformIndexing:TVkBool32;
                          const aShaderStorageImageArrayNonUniformIndexing:TVkBool32;
                          const aShaderInputAttachmentArrayNonUniformIndexing:TVkBool32;
                          const aShaderUniformTexelBufferArrayNonUniformIndexing:TVkBool32;
                          const aShaderStorageTexelBufferArrayNonUniformIndexing:TVkBool32;
                          const aDescriptorBindingUniformBufferUpdateAfterBind:TVkBool32;
                          const aDescriptorBindingSampledImageUpdateAfterBind:TVkBool32;
                          const aDescriptorBindingStorageImageUpdateAfterBind:TVkBool32;
                          const aDescriptorBindingStorageBufferUpdateAfterBind:TVkBool32;
                          const aDescriptorBindingUniformTexelBufferUpdateAfterBind:TVkBool32;
                          const aDescriptorBindingStorageTexelBufferUpdateAfterBind:TVkBool32;
                          const aDescriptorBindingUpdateUnusedWhilePending:TVkBool32;
                          const aDescriptorBindingPartiallyBound:TVkBool32;
                          const aDescriptorBindingVariableDescriptorCount:TVkBool32;
                          const aRuntimeDescriptorArray:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceDescriptorIndexingFeaturesEXT=^PVkPhysicalDeviceDescriptorIndexingFeaturesEXT;
     PVkPhysicalDeviceDescriptorIndexingFeaturesEXT=^TVkPhysicalDeviceDescriptorIndexingFeaturesEXT;
     TVkPhysicalDeviceDescriptorIndexingFeaturesEXT=TVkPhysicalDeviceDescriptorIndexingFeatures;

     PPVkPhysicalDeviceDescriptorIndexingProperties=^PVkPhysicalDeviceDescriptorIndexingProperties;
     PVkPhysicalDeviceDescriptorIndexingProperties=^TVkPhysicalDeviceDescriptorIndexingProperties;
     TVkPhysicalDeviceDescriptorIndexingProperties=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES
       pNext:PVkVoid;
       maxUpdateAfterBindDescriptorsInAllPools:TVkUInt32;
       shaderUniformBufferArrayNonUniformIndexingNative:TVkBool32;
       shaderSampledImageArrayNonUniformIndexingNative:TVkBool32;
       shaderStorageBufferArrayNonUniformIndexingNative:TVkBool32;
       shaderStorageImageArrayNonUniformIndexingNative:TVkBool32;
       shaderInputAttachmentArrayNonUniformIndexingNative:TVkBool32;
       robustBufferAccessUpdateAfterBind:TVkBool32;
       quadDivergentImplicitLod:TVkBool32;
       maxPerStageDescriptorUpdateAfterBindSamplers:TVkUInt32;
       maxPerStageDescriptorUpdateAfterBindUniformBuffers:TVkUInt32;
       maxPerStageDescriptorUpdateAfterBindStorageBuffers:TVkUInt32;
       maxPerStageDescriptorUpdateAfterBindSampledImages:TVkUInt32;
       maxPerStageDescriptorUpdateAfterBindStorageImages:TVkUInt32;
       maxPerStageDescriptorUpdateAfterBindInputAttachments:TVkUInt32;
       maxPerStageUpdateAfterBindResources:TVkUInt32;
       maxDescriptorSetUpdateAfterBindSamplers:TVkUInt32;
       maxDescriptorSetUpdateAfterBindUniformBuffers:TVkUInt32;
       maxDescriptorSetUpdateAfterBindUniformBuffersDynamic:TVkUInt32;
       maxDescriptorSetUpdateAfterBindStorageBuffers:TVkUInt32;
       maxDescriptorSetUpdateAfterBindStorageBuffersDynamic:TVkUInt32;
       maxDescriptorSetUpdateAfterBindSampledImages:TVkUInt32;
       maxDescriptorSetUpdateAfterBindStorageImages:TVkUInt32;
       maxDescriptorSetUpdateAfterBindInputAttachments:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMaxUpdateAfterBindDescriptorsInAllPools:TVkUInt32;
                          const aShaderUniformBufferArrayNonUniformIndexingNative:TVkBool32;
                          const aShaderSampledImageArrayNonUniformIndexingNative:TVkBool32;
                          const aShaderStorageBufferArrayNonUniformIndexingNative:TVkBool32;
                          const aShaderStorageImageArrayNonUniformIndexingNative:TVkBool32;
                          const aShaderInputAttachmentArrayNonUniformIndexingNative:TVkBool32;
                          const aRobustBufferAccessUpdateAfterBind:TVkBool32;
                          const aQuadDivergentImplicitLod:TVkBool32;
                          const aMaxPerStageDescriptorUpdateAfterBindSamplers:TVkUInt32;
                          const aMaxPerStageDescriptorUpdateAfterBindUniformBuffers:TVkUInt32;
                          const aMaxPerStageDescriptorUpdateAfterBindStorageBuffers:TVkUInt32;
                          const aMaxPerStageDescriptorUpdateAfterBindSampledImages:TVkUInt32;
                          const aMaxPerStageDescriptorUpdateAfterBindStorageImages:TVkUInt32;
                          const aMaxPerStageDescriptorUpdateAfterBindInputAttachments:TVkUInt32;
                          const aMaxPerStageUpdateAfterBindResources:TVkUInt32;
                          const aMaxDescriptorSetUpdateAfterBindSamplers:TVkUInt32;
                          const aMaxDescriptorSetUpdateAfterBindUniformBuffers:TVkUInt32;
                          const aMaxDescriptorSetUpdateAfterBindUniformBuffersDynamic:TVkUInt32;
                          const aMaxDescriptorSetUpdateAfterBindStorageBuffers:TVkUInt32;
                          const aMaxDescriptorSetUpdateAfterBindStorageBuffersDynamic:TVkUInt32;
                          const aMaxDescriptorSetUpdateAfterBindSampledImages:TVkUInt32;
                          const aMaxDescriptorSetUpdateAfterBindStorageImages:TVkUInt32;
                          const aMaxDescriptorSetUpdateAfterBindInputAttachments:TVkUInt32);
{$endif}
     end;

     PPVkPhysicalDeviceDescriptorIndexingPropertiesEXT=^PVkPhysicalDeviceDescriptorIndexingPropertiesEXT;
     PVkPhysicalDeviceDescriptorIndexingPropertiesEXT=^TVkPhysicalDeviceDescriptorIndexingPropertiesEXT;
     TVkPhysicalDeviceDescriptorIndexingPropertiesEXT=TVkPhysicalDeviceDescriptorIndexingProperties;

     PPVkDescriptorSetLayoutBindingFlagsCreateInfo=^PVkDescriptorSetLayoutBindingFlagsCreateInfo;
     PVkDescriptorSetLayoutBindingFlagsCreateInfo=^TVkDescriptorSetLayoutBindingFlagsCreateInfo;
     TVkDescriptorSetLayoutBindingFlagsCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO
       pNext:PVkVoid;
       bindingCount:TVkUInt32;
       pBindingFlags:PVkDescriptorBindingFlags;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aBindingCount:TVkUInt32;
                          const aPBindingFlags:PVkDescriptorBindingFlags);
{$endif}
     end;

     PPVkDescriptorSetLayoutBindingFlagsCreateInfoEXT=^PVkDescriptorSetLayoutBindingFlagsCreateInfoEXT;
     PVkDescriptorSetLayoutBindingFlagsCreateInfoEXT=^TVkDescriptorSetLayoutBindingFlagsCreateInfoEXT;
     TVkDescriptorSetLayoutBindingFlagsCreateInfoEXT=TVkDescriptorSetLayoutBindingFlagsCreateInfo;

     PPVkDescriptorSetVariableDescriptorCountAllocateInfo=^PVkDescriptorSetVariableDescriptorCountAllocateInfo;
     PVkDescriptorSetVariableDescriptorCountAllocateInfo=^TVkDescriptorSetVariableDescriptorCountAllocateInfo;
     TVkDescriptorSetVariableDescriptorCountAllocateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO
       pNext:PVkVoid;
       descriptorSetCount:TVkUInt32;
       pDescriptorCounts:PVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDescriptorSetCount:TVkUInt32;
                          const aPDescriptorCounts:PVkUInt32);
{$endif}
     end;

     PPVkDescriptorSetVariableDescriptorCountAllocateInfoEXT=^PVkDescriptorSetVariableDescriptorCountAllocateInfoEXT;
     PVkDescriptorSetVariableDescriptorCountAllocateInfoEXT=^TVkDescriptorSetVariableDescriptorCountAllocateInfoEXT;
     TVkDescriptorSetVariableDescriptorCountAllocateInfoEXT=TVkDescriptorSetVariableDescriptorCountAllocateInfo;

     PPVkDescriptorSetVariableDescriptorCountLayoutSupport=^PVkDescriptorSetVariableDescriptorCountLayoutSupport;
     PVkDescriptorSetVariableDescriptorCountLayoutSupport=^TVkDescriptorSetVariableDescriptorCountLayoutSupport;
     TVkDescriptorSetVariableDescriptorCountLayoutSupport=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT
       pNext:PVkVoid;
       maxVariableDescriptorCount:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMaxVariableDescriptorCount:TVkUInt32);
{$endif}
     end;

     PPVkDescriptorSetVariableDescriptorCountLayoutSupportEXT=^PVkDescriptorSetVariableDescriptorCountLayoutSupportEXT;
     PVkDescriptorSetVariableDescriptorCountLayoutSupportEXT=^TVkDescriptorSetVariableDescriptorCountLayoutSupportEXT;
     TVkDescriptorSetVariableDescriptorCountLayoutSupportEXT=TVkDescriptorSetVariableDescriptorCountLayoutSupport;

     PPVkAttachmentDescription2=^PVkAttachmentDescription2;
     PVkAttachmentDescription2=^TVkAttachmentDescription2;
     TVkAttachmentDescription2=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2
       pNext:PVkVoid;
       flags:TVkAttachmentDescriptionFlags;
       format:TVkFormat;
       samples:TVkSampleCountFlagBits;
       loadOp:TVkAttachmentLoadOp;
       storeOp:TVkAttachmentStoreOp;
       stencilLoadOp:TVkAttachmentLoadOp;
       stencilStoreOp:TVkAttachmentStoreOp;
       initialLayout:TVkImageLayout;
       finalLayout:TVkImageLayout;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkAttachmentDescriptionFlags;
                          const aFormat:TVkFormat;
                          const aSamples:TVkSampleCountFlagBits;
                          const aLoadOp:TVkAttachmentLoadOp;
                          const aStoreOp:TVkAttachmentStoreOp;
                          const aStencilLoadOp:TVkAttachmentLoadOp;
                          const aStencilStoreOp:TVkAttachmentStoreOp;
                          const aInitialLayout:TVkImageLayout;
                          const aFinalLayout:TVkImageLayout);
{$endif}
     end;

     PPVkAttachmentDescription2KHR=^PVkAttachmentDescription2KHR;
     PVkAttachmentDescription2KHR=^TVkAttachmentDescription2KHR;
     TVkAttachmentDescription2KHR=TVkAttachmentDescription2;

     PPVkAttachmentReference2=^PVkAttachmentReference2;
     PVkAttachmentReference2=^TVkAttachmentReference2;
     TVkAttachmentReference2=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2
       pNext:PVkVoid;
       attachment:TVkUInt32;
       layout:TVkImageLayout;
       aspectMask:TVkImageAspectFlags;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aAttachment:TVkUInt32;
                          const aLayout:TVkImageLayout;
                          const aAspectMask:TVkImageAspectFlags);
{$endif}
     end;

     PPVkAttachmentReference2KHR=^PVkAttachmentReference2KHR;
     PVkAttachmentReference2KHR=^TVkAttachmentReference2KHR;
     TVkAttachmentReference2KHR=TVkAttachmentReference2;

     PPVkSubpassDescription2=^PVkSubpassDescription2;
     PVkSubpassDescription2=^TVkSubpassDescription2;
     TVkSubpassDescription2=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2
       pNext:PVkVoid;
       flags:TVkSubpassDescriptionFlags;
       pipelineBindPoint:TVkPipelineBindPoint;
       viewMask:TVkUInt32;
       inputAttachmentCount:TVkUInt32;
       pInputAttachments:PVkAttachmentReference2;
       colorAttachmentCount:TVkUInt32;
       pColorAttachments:PVkAttachmentReference2;
       pResolveAttachments:PVkAttachmentReference2;
       pDepthStencilAttachment:PVkAttachmentReference2;
       preserveAttachmentCount:TVkUInt32;
       pPreserveAttachments:PVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkSubpassDescriptionFlags;
                          const aPipelineBindPoint:TVkPipelineBindPoint;
                          const aViewMask:TVkUInt32;
                          const aInputAttachmentCount:TVkUInt32;
                          const aPInputAttachments:PVkAttachmentReference2;
                          const aColorAttachmentCount:TVkUInt32;
                          const aPColorAttachments:PVkAttachmentReference2;
                          const aPResolveAttachments:PVkAttachmentReference2;
                          const aPDepthStencilAttachment:PVkAttachmentReference2;
                          const aPreserveAttachmentCount:TVkUInt32;
                          const aPPreserveAttachments:PVkUInt32);
{$endif}
     end;

     PPVkSubpassDescription2KHR=^PVkSubpassDescription2KHR;
     PVkSubpassDescription2KHR=^TVkSubpassDescription2KHR;
     TVkSubpassDescription2KHR=TVkSubpassDescription2;

     PPVkSubpassDependency2=^PVkSubpassDependency2;
     PVkSubpassDependency2=^TVkSubpassDependency2;
     TVkSubpassDependency2=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2
       pNext:PVkVoid;
       srcSubpass:TVkUInt32;
       dstSubpass:TVkUInt32;
       srcStageMask:TVkPipelineStageFlags;
       dstStageMask:TVkPipelineStageFlags;
       srcAccessMask:TVkAccessFlags;
       dstAccessMask:TVkAccessFlags;
       dependencyFlags:TVkDependencyFlags;
       viewOffset:TVkInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSrcSubpass:TVkUInt32;
                          const aDstSubpass:TVkUInt32;
                          const aSrcStageMask:TVkPipelineStageFlags;
                          const aDstStageMask:TVkPipelineStageFlags;
                          const aSrcAccessMask:TVkAccessFlags;
                          const aDstAccessMask:TVkAccessFlags;
                          const aDependencyFlags:TVkDependencyFlags;
                          const aViewOffset:TVkInt32);
{$endif}
     end;

     PPVkSubpassDependency2KHR=^PVkSubpassDependency2KHR;
     PVkSubpassDependency2KHR=^TVkSubpassDependency2KHR;
     TVkSubpassDependency2KHR=TVkSubpassDependency2;

     PPVkRenderPassCreateInfo2=^PVkRenderPassCreateInfo2;
     PVkRenderPassCreateInfo2=^TVkRenderPassCreateInfo2;
     TVkRenderPassCreateInfo2=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2
       pNext:PVkVoid;
       flags:TVkRenderPassCreateFlags;
       attachmentCount:TVkUInt32;
       pAttachments:PVkAttachmentDescription2;
       subpassCount:TVkUInt32;
       pSubpasses:PVkSubpassDescription2;
       dependencyCount:TVkUInt32;
       pDependencies:PVkSubpassDependency2;
       correlatedViewMaskCount:TVkUInt32;
       pCorrelatedViewMasks:PVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkRenderPassCreateFlags;
                          const aAttachmentCount:TVkUInt32;
                          const aPAttachments:PVkAttachmentDescription2;
                          const aSubpassCount:TVkUInt32;
                          const aPSubpasses:PVkSubpassDescription2;
                          const aDependencyCount:TVkUInt32;
                          const aPDependencies:PVkSubpassDependency2;
                          const aCorrelatedViewMaskCount:TVkUInt32;
                          const aPCorrelatedViewMasks:PVkUInt32);
{$endif}
     end;

     PPVkRenderPassCreateInfo2KHR=^PVkRenderPassCreateInfo2KHR;
     PVkRenderPassCreateInfo2KHR=^TVkRenderPassCreateInfo2KHR;
     TVkRenderPassCreateInfo2KHR=TVkRenderPassCreateInfo2;

     PPVkSubpassBeginInfo=^PVkSubpassBeginInfo;
     PVkSubpassBeginInfo=^TVkSubpassBeginInfo;
     TVkSubpassBeginInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO
       pNext:PVkVoid;
       contents:TVkSubpassContents;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aContents:TVkSubpassContents);
{$endif}
     end;

     PPVkSubpassBeginInfoKHR=^PVkSubpassBeginInfoKHR;
     PVkSubpassBeginInfoKHR=^TVkSubpassBeginInfoKHR;
     TVkSubpassBeginInfoKHR=TVkSubpassBeginInfo;

     PPVkSubpassEndInfo=^PVkSubpassEndInfo;
     PVkSubpassEndInfo=^TVkSubpassEndInfo;
     TVkSubpassEndInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SUBPASS_END_INFO
       pNext:PVkVoid;
{$ifdef HAS_ADVANCED_RECORDS}
{$endif}
     end;

     PPVkSubpassEndInfoKHR=^PVkSubpassEndInfoKHR;
     PVkSubpassEndInfoKHR=^TVkSubpassEndInfoKHR;
     TVkSubpassEndInfoKHR=TVkSubpassEndInfo;

     PPVkPhysicalDeviceTimelineSemaphoreFeatures=^PVkPhysicalDeviceTimelineSemaphoreFeatures;
     PVkPhysicalDeviceTimelineSemaphoreFeatures=^TVkPhysicalDeviceTimelineSemaphoreFeatures;
     TVkPhysicalDeviceTimelineSemaphoreFeatures=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES
       pNext:PVkVoid;
       timelineSemaphore:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aTimelineSemaphore:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceTimelineSemaphoreFeaturesKHR=^PVkPhysicalDeviceTimelineSemaphoreFeaturesKHR;
     PVkPhysicalDeviceTimelineSemaphoreFeaturesKHR=^TVkPhysicalDeviceTimelineSemaphoreFeaturesKHR;
     TVkPhysicalDeviceTimelineSemaphoreFeaturesKHR=TVkPhysicalDeviceTimelineSemaphoreFeatures;

     PPVkPhysicalDeviceTimelineSemaphoreProperties=^PVkPhysicalDeviceTimelineSemaphoreProperties;
     PVkPhysicalDeviceTimelineSemaphoreProperties=^TVkPhysicalDeviceTimelineSemaphoreProperties;
     TVkPhysicalDeviceTimelineSemaphoreProperties=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES
       pNext:PVkVoid;
       maxTimelineSemaphoreValueDifference:TVkUInt64;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMaxTimelineSemaphoreValueDifference:TVkUInt64);
{$endif}
     end;

     PPVkPhysicalDeviceTimelineSemaphorePropertiesKHR=^PVkPhysicalDeviceTimelineSemaphorePropertiesKHR;
     PVkPhysicalDeviceTimelineSemaphorePropertiesKHR=^TVkPhysicalDeviceTimelineSemaphorePropertiesKHR;
     TVkPhysicalDeviceTimelineSemaphorePropertiesKHR=TVkPhysicalDeviceTimelineSemaphoreProperties;

     PPVkSemaphoreTypeCreateInfo=^PVkSemaphoreTypeCreateInfo;
     PVkSemaphoreTypeCreateInfo=^TVkSemaphoreTypeCreateInfo;
     TVkSemaphoreTypeCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO
       pNext:PVkVoid;
       semaphoreType:TVkSemaphoreType;
       initialValue:TVkUInt64;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSemaphoreType:TVkSemaphoreType;
                          const aInitialValue:TVkUInt64);
{$endif}
     end;

     PPVkSemaphoreTypeCreateInfoKHR=^PVkSemaphoreTypeCreateInfoKHR;
     PVkSemaphoreTypeCreateInfoKHR=^TVkSemaphoreTypeCreateInfoKHR;
     TVkSemaphoreTypeCreateInfoKHR=TVkSemaphoreTypeCreateInfo;

     PPVkTimelineSemaphoreSubmitInfo=^PVkTimelineSemaphoreSubmitInfo;
     PVkTimelineSemaphoreSubmitInfo=^TVkTimelineSemaphoreSubmitInfo;
     TVkTimelineSemaphoreSubmitInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO
       pNext:PVkVoid;
       waitSemaphoreValueCount:TVkUInt32;
       pWaitSemaphoreValues:PVkUInt64;
       signalSemaphoreValueCount:TVkUInt32;
       pSignalSemaphoreValues:PVkUInt64;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aWaitSemaphoreValueCount:TVkUInt32;
                          const aPWaitSemaphoreValues:PVkUInt64;
                          const aSignalSemaphoreValueCount:TVkUInt32;
                          const aPSignalSemaphoreValues:PVkUInt64);
{$endif}
     end;

     PPVkTimelineSemaphoreSubmitInfoKHR=^PVkTimelineSemaphoreSubmitInfoKHR;
     PVkTimelineSemaphoreSubmitInfoKHR=^TVkTimelineSemaphoreSubmitInfoKHR;
     TVkTimelineSemaphoreSubmitInfoKHR=TVkTimelineSemaphoreSubmitInfo;

     PPVkSemaphoreWaitInfo=^PVkSemaphoreWaitInfo;
     PVkSemaphoreWaitInfo=^TVkSemaphoreWaitInfo;
     TVkSemaphoreWaitInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO
       pNext:PVkVoid;
       flags:TVkSemaphoreWaitFlags;
       semaphoreCount:TVkUInt32;
       pSemaphores:PVkSemaphore;
       pValues:PVkUInt64;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkSemaphoreWaitFlags;
                          const aSemaphoreCount:TVkUInt32;
                          const aPSemaphores:PVkSemaphore;
                          const aPValues:PVkUInt64);
{$endif}
     end;

     PPVkSemaphoreWaitInfoKHR=^PVkSemaphoreWaitInfoKHR;
     PVkSemaphoreWaitInfoKHR=^TVkSemaphoreWaitInfoKHR;
     TVkSemaphoreWaitInfoKHR=TVkSemaphoreWaitInfo;

     PPVkSemaphoreSignalInfo=^PVkSemaphoreSignalInfo;
     PVkSemaphoreSignalInfo=^TVkSemaphoreSignalInfo;
     TVkSemaphoreSignalInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO
       pNext:PVkVoid;
       semaphore:TVkSemaphore;
       value:TVkUInt64;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSemaphore:TVkSemaphore;
                          const aValue:TVkUInt64);
{$endif}
     end;

     PPVkSemaphoreSignalInfoKHR=^PVkSemaphoreSignalInfoKHR;
     PVkSemaphoreSignalInfoKHR=^TVkSemaphoreSignalInfoKHR;
     TVkSemaphoreSignalInfoKHR=TVkSemaphoreSignalInfo;

     PPVkVertexInputBindingDivisorDescriptionEXT=^PVkVertexInputBindingDivisorDescriptionEXT;
     PVkVertexInputBindingDivisorDescriptionEXT=^TVkVertexInputBindingDivisorDescriptionEXT;
     TVkVertexInputBindingDivisorDescriptionEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       binding:TVkUInt32;
       divisor:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aBinding:TVkUInt32;
                          const aDivisor:TVkUInt32);
{$endif}
     end;

     PPVkPipelineVertexInputDivisorStateCreateInfoEXT=^PVkPipelineVertexInputDivisorStateCreateInfoEXT;
     PVkPipelineVertexInputDivisorStateCreateInfoEXT=^TVkPipelineVertexInputDivisorStateCreateInfoEXT;
     TVkPipelineVertexInputDivisorStateCreateInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT
       pNext:PVkVoid;
       vertexBindingDivisorCount:TVkUInt32;
       pVertexBindingDivisors:PVkVertexInputBindingDivisorDescriptionEXT;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aVertexBindingDivisorCount:TVkUInt32;
                          const aPVertexBindingDivisors:PVkVertexInputBindingDivisorDescriptionEXT);
{$endif}
     end;

     PPVkPhysicalDeviceVertexAttributeDivisorPropertiesEXT=^PVkPhysicalDeviceVertexAttributeDivisorPropertiesEXT;
     PVkPhysicalDeviceVertexAttributeDivisorPropertiesEXT=^TVkPhysicalDeviceVertexAttributeDivisorPropertiesEXT;
     TVkPhysicalDeviceVertexAttributeDivisorPropertiesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT
       pNext:PVkVoid;
       maxVertexAttribDivisor:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMaxVertexAttribDivisor:TVkUInt32);
{$endif}
     end;

     PPVkPhysicalDevicePCIBusInfoPropertiesEXT=^PVkPhysicalDevicePCIBusInfoPropertiesEXT;
     PVkPhysicalDevicePCIBusInfoPropertiesEXT=^TVkPhysicalDevicePCIBusInfoPropertiesEXT;
     TVkPhysicalDevicePCIBusInfoPropertiesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT
       pNext:PVkVoid;
       pciDomain:TVkUInt32;
       pciBus:TVkUInt32;
       pciDevice:TVkUInt32;
       pciFunction:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPciDomain:TVkUInt32;
                          const aPciBus:TVkUInt32;
                          const aPciDevice:TVkUInt32;
                          const aPciFunction:TVkUInt32);
{$endif}
     end;

{$ifdef Android}
     PPVkImportAndroidHardwareBufferInfoANDROID=^PVkImportAndroidHardwareBufferInfoANDROID;
     PVkImportAndroidHardwareBufferInfoANDROID=^TVkImportAndroidHardwareBufferInfoANDROID;
     TVkImportAndroidHardwareBufferInfoANDROID=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID
       pNext:PVkVoid;
       buffer:PVkAndroidAHardwareBuffer;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aBuffer:PVkAndroidAHardwareBuffer);
{$endif}
     end;
{$endif}

{$ifdef Android}
     PPVkAndroidHardwareBufferUsageANDROID=^PVkAndroidHardwareBufferUsageANDROID;
     PVkAndroidHardwareBufferUsageANDROID=^TVkAndroidHardwareBufferUsageANDROID;
     TVkAndroidHardwareBufferUsageANDROID=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID
       pNext:PVkVoid;
       androidHardwareBufferUsage:TVkUInt64;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aAndroidHardwareBufferUsage:TVkUInt64);
{$endif}
     end;
{$endif}

{$ifdef Android}
     PPVkAndroidHardwareBufferPropertiesANDROID=^PVkAndroidHardwareBufferPropertiesANDROID;
     PVkAndroidHardwareBufferPropertiesANDROID=^TVkAndroidHardwareBufferPropertiesANDROID;
     TVkAndroidHardwareBufferPropertiesANDROID=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID
       pNext:PVkVoid;
       allocationSize:TVkDeviceSize;
       memoryTypeBits:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aAllocationSize:TVkDeviceSize;
                          const aMemoryTypeBits:TVkUInt32);
{$endif}
     end;
{$endif}

{$ifdef Android}
     PPVkMemoryGetAndroidHardwareBufferInfoANDROID=^PVkMemoryGetAndroidHardwareBufferInfoANDROID;
     PVkMemoryGetAndroidHardwareBufferInfoANDROID=^TVkMemoryGetAndroidHardwareBufferInfoANDROID;
     TVkMemoryGetAndroidHardwareBufferInfoANDROID=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID
       pNext:PVkVoid;
       memory:TVkDeviceMemory;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMemory:TVkDeviceMemory);
{$endif}
     end;
{$endif}

{$ifdef Android}
     PPVkAndroidHardwareBufferFormatPropertiesANDROID=^PVkAndroidHardwareBufferFormatPropertiesANDROID;
     PVkAndroidHardwareBufferFormatPropertiesANDROID=^TVkAndroidHardwareBufferFormatPropertiesANDROID;
     TVkAndroidHardwareBufferFormatPropertiesANDROID=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID
       pNext:PVkVoid;
       format:TVkFormat;
       externalFormat:TVkUInt64;
       formatFeatures:TVkFormatFeatureFlags;
       samplerYcbcrConversionComponents:TVkComponentMapping;
       suggestedYcbcrModel:TVkSamplerYcbcrModelConversion;
       suggestedYcbcrRange:TVkSamplerYcbcrRange;
       suggestedXChromaOffset:TVkChromaLocation;
       suggestedYChromaOffset:TVkChromaLocation;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFormat:TVkFormat;
                          const aExternalFormat:TVkUInt64;
                          const aFormatFeatures:TVkFormatFeatureFlags;
                          const aSamplerYcbcrConversionComponents:TVkComponentMapping;
                          const aSuggestedYcbcrModel:TVkSamplerYcbcrModelConversion;
                          const aSuggestedYcbcrRange:TVkSamplerYcbcrRange;
                          const aSuggestedXChromaOffset:TVkChromaLocation;
                          const aSuggestedYChromaOffset:TVkChromaLocation);
{$endif}
     end;
{$endif}

     PPVkCommandBufferInheritanceConditionalRenderingInfoEXT=^PVkCommandBufferInheritanceConditionalRenderingInfoEXT;
     PVkCommandBufferInheritanceConditionalRenderingInfoEXT=^TVkCommandBufferInheritanceConditionalRenderingInfoEXT;
     TVkCommandBufferInheritanceConditionalRenderingInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT
       pNext:PVkVoid;
       conditionalRenderingEnable:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aConditionalRenderingEnable:TVkBool32);
{$endif}
     end;

{$ifdef Android}
     PPVkExternalFormatANDROID=^PVkExternalFormatANDROID;
     PVkExternalFormatANDROID=^TVkExternalFormatANDROID;
     TVkExternalFormatANDROID=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID
       pNext:PVkVoid;
       externalFormat:TVkUInt64;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aExternalFormat:TVkUInt64);
{$endif}
     end;
{$endif}

     PPVkPhysicalDevice8BitStorageFeatures=^PVkPhysicalDevice8BitStorageFeatures;
     PVkPhysicalDevice8BitStorageFeatures=^TVkPhysicalDevice8BitStorageFeatures;
     TVkPhysicalDevice8BitStorageFeatures=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES
       pNext:PVkVoid;
       storageBuffer8BitAccess:TVkBool32;
       uniformAndStorageBuffer8BitAccess:TVkBool32;
       storagePushConstant8:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aStorageBuffer8BitAccess:TVkBool32;
                          const aUniformAndStorageBuffer8BitAccess:TVkBool32;
                          const aStoragePushConstant8:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDevice8BitStorageFeaturesKHR=^PVkPhysicalDevice8BitStorageFeaturesKHR;
     PVkPhysicalDevice8BitStorageFeaturesKHR=^TVkPhysicalDevice8BitStorageFeaturesKHR;
     TVkPhysicalDevice8BitStorageFeaturesKHR=TVkPhysicalDevice8BitStorageFeatures;

     PPVkPhysicalDeviceConditionalRenderingFeaturesEXT=^PVkPhysicalDeviceConditionalRenderingFeaturesEXT;
     PVkPhysicalDeviceConditionalRenderingFeaturesEXT=^TVkPhysicalDeviceConditionalRenderingFeaturesEXT;
     TVkPhysicalDeviceConditionalRenderingFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT
       pNext:PVkVoid;
       conditionalRendering:TVkBool32;
       inheritedConditionalRendering:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aConditionalRendering:TVkBool32;
                          const aInheritedConditionalRendering:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceVulkanMemoryModelFeatures=^PVkPhysicalDeviceVulkanMemoryModelFeatures;
     PVkPhysicalDeviceVulkanMemoryModelFeatures=^TVkPhysicalDeviceVulkanMemoryModelFeatures;
     TVkPhysicalDeviceVulkanMemoryModelFeatures=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES
       pNext:PVkVoid;
       vulkanMemoryModel:TVkBool32;
       vulkanMemoryModelDeviceScope:TVkBool32;
       vulkanMemoryModelAvailabilityVisibilityChains:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aVulkanMemoryModel:TVkBool32;
                          const aVulkanMemoryModelDeviceScope:TVkBool32;
                          const aVulkanMemoryModelAvailabilityVisibilityChains:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceVulkanMemoryModelFeaturesKHR=^PVkPhysicalDeviceVulkanMemoryModelFeaturesKHR;
     PVkPhysicalDeviceVulkanMemoryModelFeaturesKHR=^TVkPhysicalDeviceVulkanMemoryModelFeaturesKHR;
     TVkPhysicalDeviceVulkanMemoryModelFeaturesKHR=TVkPhysicalDeviceVulkanMemoryModelFeatures;

     PPVkPhysicalDeviceShaderAtomicInt64Features=^PVkPhysicalDeviceShaderAtomicInt64Features;
     PVkPhysicalDeviceShaderAtomicInt64Features=^TVkPhysicalDeviceShaderAtomicInt64Features;
     TVkPhysicalDeviceShaderAtomicInt64Features=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES
       pNext:PVkVoid;
       shaderBufferInt64Atomics:TVkBool32;
       shaderSharedInt64Atomics:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aShaderBufferInt64Atomics:TVkBool32;
                          const aShaderSharedInt64Atomics:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceShaderAtomicInt64FeaturesKHR=^PVkPhysicalDeviceShaderAtomicInt64FeaturesKHR;
     PVkPhysicalDeviceShaderAtomicInt64FeaturesKHR=^TVkPhysicalDeviceShaderAtomicInt64FeaturesKHR;
     TVkPhysicalDeviceShaderAtomicInt64FeaturesKHR=TVkPhysicalDeviceShaderAtomicInt64Features;

     PPVkPhysicalDeviceShaderAtomicFloatFeaturesEXT=^PVkPhysicalDeviceShaderAtomicFloatFeaturesEXT;
     PVkPhysicalDeviceShaderAtomicFloatFeaturesEXT=^TVkPhysicalDeviceShaderAtomicFloatFeaturesEXT;
     TVkPhysicalDeviceShaderAtomicFloatFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT
       pNext:PVkVoid;
       shaderBufferFloat32Atomics:TVkBool32;
       shaderBufferFloat32AtomicAdd:TVkBool32;
       shaderBufferFloat64Atomics:TVkBool32;
       shaderBufferFloat64AtomicAdd:TVkBool32;
       shaderSharedFloat32Atomics:TVkBool32;
       shaderSharedFloat32AtomicAdd:TVkBool32;
       shaderSharedFloat64Atomics:TVkBool32;
       shaderSharedFloat64AtomicAdd:TVkBool32;
       shaderImageFloat32Atomics:TVkBool32;
       shaderImageFloat32AtomicAdd:TVkBool32;
       sparseImageFloat32Atomics:TVkBool32;
       sparseImageFloat32AtomicAdd:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aShaderBufferFloat32Atomics:TVkBool32;
                          const aShaderBufferFloat32AtomicAdd:TVkBool32;
                          const aShaderBufferFloat64Atomics:TVkBool32;
                          const aShaderBufferFloat64AtomicAdd:TVkBool32;
                          const aShaderSharedFloat32Atomics:TVkBool32;
                          const aShaderSharedFloat32AtomicAdd:TVkBool32;
                          const aShaderSharedFloat64Atomics:TVkBool32;
                          const aShaderSharedFloat64AtomicAdd:TVkBool32;
                          const aShaderImageFloat32Atomics:TVkBool32;
                          const aShaderImageFloat32AtomicAdd:TVkBool32;
                          const aSparseImageFloat32Atomics:TVkBool32;
                          const aSparseImageFloat32AtomicAdd:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceShaderAtomicFloat2FeaturesEXT=^PVkPhysicalDeviceShaderAtomicFloat2FeaturesEXT;
     PVkPhysicalDeviceShaderAtomicFloat2FeaturesEXT=^TVkPhysicalDeviceShaderAtomicFloat2FeaturesEXT;
     TVkPhysicalDeviceShaderAtomicFloat2FeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT
       pNext:PVkVoid;
       shaderBufferFloat16Atomics:TVkBool32;
       shaderBufferFloat16AtomicAdd:TVkBool32;
       shaderBufferFloat16AtomicMinMax:TVkBool32;
       shaderBufferFloat32AtomicMinMax:TVkBool32;
       shaderBufferFloat64AtomicMinMax:TVkBool32;
       shaderSharedFloat16Atomics:TVkBool32;
       shaderSharedFloat16AtomicAdd:TVkBool32;
       shaderSharedFloat16AtomicMinMax:TVkBool32;
       shaderSharedFloat32AtomicMinMax:TVkBool32;
       shaderSharedFloat64AtomicMinMax:TVkBool32;
       shaderImageFloat32AtomicMinMax:TVkBool32;
       sparseImageFloat32AtomicMinMax:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aShaderBufferFloat16Atomics:TVkBool32;
                          const aShaderBufferFloat16AtomicAdd:TVkBool32;
                          const aShaderBufferFloat16AtomicMinMax:TVkBool32;
                          const aShaderBufferFloat32AtomicMinMax:TVkBool32;
                          const aShaderBufferFloat64AtomicMinMax:TVkBool32;
                          const aShaderSharedFloat16Atomics:TVkBool32;
                          const aShaderSharedFloat16AtomicAdd:TVkBool32;
                          const aShaderSharedFloat16AtomicMinMax:TVkBool32;
                          const aShaderSharedFloat32AtomicMinMax:TVkBool32;
                          const aShaderSharedFloat64AtomicMinMax:TVkBool32;
                          const aShaderImageFloat32AtomicMinMax:TVkBool32;
                          const aSparseImageFloat32AtomicMinMax:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceVertexAttributeDivisorFeaturesEXT=^PVkPhysicalDeviceVertexAttributeDivisorFeaturesEXT;
     PVkPhysicalDeviceVertexAttributeDivisorFeaturesEXT=^TVkPhysicalDeviceVertexAttributeDivisorFeaturesEXT;
     TVkPhysicalDeviceVertexAttributeDivisorFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT
       pNext:PVkVoid;
       vertexAttributeInstanceRateDivisor:TVkBool32;
       vertexAttributeInstanceRateZeroDivisor:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aVertexAttributeInstanceRateDivisor:TVkBool32;
                          const aVertexAttributeInstanceRateZeroDivisor:TVkBool32);
{$endif}
     end;

     PPVkQueueFamilyCheckpointPropertiesNV=^PVkQueueFamilyCheckpointPropertiesNV;
     PVkQueueFamilyCheckpointPropertiesNV=^TVkQueueFamilyCheckpointPropertiesNV;
     TVkQueueFamilyCheckpointPropertiesNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV
       pNext:PVkVoid;
       checkpointExecutionStageMask:TVkPipelineStageFlags;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aCheckpointExecutionStageMask:TVkPipelineStageFlags);
{$endif}
     end;

     PPVkCheckpointDataNV=^PVkCheckpointDataNV;
     PVkCheckpointDataNV=^TVkCheckpointDataNV;
     TVkCheckpointDataNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV
       pNext:PVkVoid;
       stage:TVkPipelineStageFlagBits;
       pCheckpointMarker:PVkVoid;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aStage:TVkPipelineStageFlagBits;
                          const aPCheckpointMarker:PVkVoid);
{$endif}
     end;

     PPVkPhysicalDeviceDepthStencilResolveProperties=^PVkPhysicalDeviceDepthStencilResolveProperties;
     PVkPhysicalDeviceDepthStencilResolveProperties=^TVkPhysicalDeviceDepthStencilResolveProperties;
     TVkPhysicalDeviceDepthStencilResolveProperties=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES
       pNext:PVkVoid;
       supportedDepthResolveModes:TVkResolveModeFlags;
       supportedStencilResolveModes:TVkResolveModeFlags;
       independentResolveNone:TVkBool32;
       independentResolve:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSupportedDepthResolveModes:TVkResolveModeFlags;
                          const aSupportedStencilResolveModes:TVkResolveModeFlags;
                          const aIndependentResolveNone:TVkBool32;
                          const aIndependentResolve:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceDepthStencilResolvePropertiesKHR=^PVkPhysicalDeviceDepthStencilResolvePropertiesKHR;
     PVkPhysicalDeviceDepthStencilResolvePropertiesKHR=^TVkPhysicalDeviceDepthStencilResolvePropertiesKHR;
     TVkPhysicalDeviceDepthStencilResolvePropertiesKHR=TVkPhysicalDeviceDepthStencilResolveProperties;

     PPVkSubpassDescriptionDepthStencilResolve=^PVkSubpassDescriptionDepthStencilResolve;
     PVkSubpassDescriptionDepthStencilResolve=^TVkSubpassDescriptionDepthStencilResolve;
     TVkSubpassDescriptionDepthStencilResolve=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE
       pNext:PVkVoid;
       depthResolveMode:TVkResolveModeFlagBits;
       stencilResolveMode:TVkResolveModeFlagBits;
       pDepthStencilResolveAttachment:PVkAttachmentReference2;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDepthResolveMode:TVkResolveModeFlagBits;
                          const aStencilResolveMode:TVkResolveModeFlagBits;
                          const aPDepthStencilResolveAttachment:PVkAttachmentReference2);
{$endif}
     end;

     PPVkSubpassDescriptionDepthStencilResolveKHR=^PVkSubpassDescriptionDepthStencilResolveKHR;
     PVkSubpassDescriptionDepthStencilResolveKHR=^TVkSubpassDescriptionDepthStencilResolveKHR;
     TVkSubpassDescriptionDepthStencilResolveKHR=TVkSubpassDescriptionDepthStencilResolve;

     PPVkImageViewASTCDecodeModeEXT=^PVkImageViewASTCDecodeModeEXT;
     PVkImageViewASTCDecodeModeEXT=^TVkImageViewASTCDecodeModeEXT;
     TVkImageViewASTCDecodeModeEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT
       pNext:PVkVoid;
       decodeMode:TVkFormat;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDecodeMode:TVkFormat);
{$endif}
     end;

     PPVkPhysicalDeviceASTCDecodeFeaturesEXT=^PVkPhysicalDeviceASTCDecodeFeaturesEXT;
     PVkPhysicalDeviceASTCDecodeFeaturesEXT=^TVkPhysicalDeviceASTCDecodeFeaturesEXT;
     TVkPhysicalDeviceASTCDecodeFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT
       pNext:PVkVoid;
       decodeModeSharedExponent:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDecodeModeSharedExponent:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceTransformFeedbackFeaturesEXT=^PVkPhysicalDeviceTransformFeedbackFeaturesEXT;
     PVkPhysicalDeviceTransformFeedbackFeaturesEXT=^TVkPhysicalDeviceTransformFeedbackFeaturesEXT;
     TVkPhysicalDeviceTransformFeedbackFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT
       pNext:PVkVoid;
       transformFeedback:TVkBool32;
       geometryStreams:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aTransformFeedback:TVkBool32;
                          const aGeometryStreams:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceTransformFeedbackPropertiesEXT=^PVkPhysicalDeviceTransformFeedbackPropertiesEXT;
     PVkPhysicalDeviceTransformFeedbackPropertiesEXT=^TVkPhysicalDeviceTransformFeedbackPropertiesEXT;
     TVkPhysicalDeviceTransformFeedbackPropertiesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT
       pNext:PVkVoid;
       maxTransformFeedbackStreams:TVkUInt32;
       maxTransformFeedbackBuffers:TVkUInt32;
       maxTransformFeedbackBufferSize:TVkDeviceSize;
       maxTransformFeedbackStreamDataSize:TVkUInt32;
       maxTransformFeedbackBufferDataSize:TVkUInt32;
       maxTransformFeedbackBufferDataStride:TVkUInt32;
       transformFeedbackQueries:TVkBool32;
       transformFeedbackStreamsLinesTriangles:TVkBool32;
       transformFeedbackRasterizationStreamSelect:TVkBool32;
       transformFeedbackDraw:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMaxTransformFeedbackStreams:TVkUInt32;
                          const aMaxTransformFeedbackBuffers:TVkUInt32;
                          const aMaxTransformFeedbackBufferSize:TVkDeviceSize;
                          const aMaxTransformFeedbackStreamDataSize:TVkUInt32;
                          const aMaxTransformFeedbackBufferDataSize:TVkUInt32;
                          const aMaxTransformFeedbackBufferDataStride:TVkUInt32;
                          const aTransformFeedbackQueries:TVkBool32;
                          const aTransformFeedbackStreamsLinesTriangles:TVkBool32;
                          const aTransformFeedbackRasterizationStreamSelect:TVkBool32;
                          const aTransformFeedbackDraw:TVkBool32);
{$endif}
     end;

     PPVkPipelineRasterizationStateStreamCreateInfoEXT=^PVkPipelineRasterizationStateStreamCreateInfoEXT;
     PVkPipelineRasterizationStateStreamCreateInfoEXT=^TVkPipelineRasterizationStateStreamCreateInfoEXT;
     TVkPipelineRasterizationStateStreamCreateInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT
       pNext:PVkVoid;
       flags:TVkPipelineRasterizationStateStreamCreateFlagsEXT;
       rasterizationStream:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkPipelineRasterizationStateStreamCreateFlagsEXT;
                          const aRasterizationStream:TVkUInt32);
{$endif}
     end;

     PPVkPhysicalDeviceRepresentativeFragmentTestFeaturesNV=^PVkPhysicalDeviceRepresentativeFragmentTestFeaturesNV;
     PVkPhysicalDeviceRepresentativeFragmentTestFeaturesNV=^TVkPhysicalDeviceRepresentativeFragmentTestFeaturesNV;
     TVkPhysicalDeviceRepresentativeFragmentTestFeaturesNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV
       pNext:PVkVoid;
       representativeFragmentTest:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aRepresentativeFragmentTest:TVkBool32);
{$endif}
     end;

     PPVkPipelineRepresentativeFragmentTestStateCreateInfoNV=^PVkPipelineRepresentativeFragmentTestStateCreateInfoNV;
     PVkPipelineRepresentativeFragmentTestStateCreateInfoNV=^TVkPipelineRepresentativeFragmentTestStateCreateInfoNV;
     TVkPipelineRepresentativeFragmentTestStateCreateInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV
       pNext:PVkVoid;
       representativeFragmentTestEnable:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aRepresentativeFragmentTestEnable:TVkBool32);
{$endif}
     end;

{$ifdef NvSci}
     PPVkPhysicalDeviceExclusiveScissorFeaturesNV=^PVkPhysicalDeviceExclusiveScissorFeaturesNV;
     PVkPhysicalDeviceExclusiveScissorFeaturesNV=^TVkPhysicalDeviceExclusiveScissorFeaturesNV;
     TVkPhysicalDeviceExclusiveScissorFeaturesNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV
       pNext:PVkVoid;
       exclusiveScissor:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aExclusiveScissor:TVkBool32);
{$endif}
     end;
{$endif}

{$ifdef NvSci}
     PPVkPipelineViewportExclusiveScissorStateCreateInfoNV=^PVkPipelineViewportExclusiveScissorStateCreateInfoNV;
     PVkPipelineViewportExclusiveScissorStateCreateInfoNV=^TVkPipelineViewportExclusiveScissorStateCreateInfoNV;
     TVkPipelineViewportExclusiveScissorStateCreateInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV
       pNext:PVkVoid;
       exclusiveScissorCount:TVkUInt32;
       pExclusiveScissors:PVkRect2D;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aExclusiveScissorCount:TVkUInt32;
                          const aPExclusiveScissors:PVkRect2D);
{$endif}
     end;
{$endif}

     PPVkPhysicalDeviceCornerSampledImageFeaturesNV=^PVkPhysicalDeviceCornerSampledImageFeaturesNV;
     PVkPhysicalDeviceCornerSampledImageFeaturesNV=^TVkPhysicalDeviceCornerSampledImageFeaturesNV;
     TVkPhysicalDeviceCornerSampledImageFeaturesNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV
       pNext:PVkVoid;
       cornerSampledImage:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aCornerSampledImage:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceComputeShaderDerivativesFeaturesNV=^PVkPhysicalDeviceComputeShaderDerivativesFeaturesNV;
     PVkPhysicalDeviceComputeShaderDerivativesFeaturesNV=^TVkPhysicalDeviceComputeShaderDerivativesFeaturesNV;
     TVkPhysicalDeviceComputeShaderDerivativesFeaturesNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV
       pNext:PVkVoid;
       computeDerivativeGroupQuads:TVkBool32;
       computeDerivativeGroupLinear:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aComputeDerivativeGroupQuads:TVkBool32;
                          const aComputeDerivativeGroupLinear:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR=^PVkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR;
     PVkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR=^TVkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR;
     TVkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR
       pNext:PVkVoid;
       fragmentShaderBarycentric:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFragmentShaderBarycentric:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceShaderImageFootprintFeaturesNV=^PVkPhysicalDeviceShaderImageFootprintFeaturesNV;
     PVkPhysicalDeviceShaderImageFootprintFeaturesNV=^TVkPhysicalDeviceShaderImageFootprintFeaturesNV;
     TVkPhysicalDeviceShaderImageFootprintFeaturesNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV
       pNext:PVkVoid;
       imageFootprint:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aImageFootprint:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV=^PVkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV;
     PVkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV=^TVkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV;
     TVkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV
       pNext:PVkVoid;
       dedicatedAllocationImageAliasing:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDedicatedAllocationImageAliasing:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceCopyMemoryIndirectFeaturesNV=^PVkPhysicalDeviceCopyMemoryIndirectFeaturesNV;
     PVkPhysicalDeviceCopyMemoryIndirectFeaturesNV=^TVkPhysicalDeviceCopyMemoryIndirectFeaturesNV;
     TVkPhysicalDeviceCopyMemoryIndirectFeaturesNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV
       pNext:PVkVoid;
       indirectCopy:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aIndirectCopy:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceCopyMemoryIndirectPropertiesNV=^PVkPhysicalDeviceCopyMemoryIndirectPropertiesNV;
     PVkPhysicalDeviceCopyMemoryIndirectPropertiesNV=^TVkPhysicalDeviceCopyMemoryIndirectPropertiesNV;
     TVkPhysicalDeviceCopyMemoryIndirectPropertiesNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV
       pNext:PVkVoid;
       supportedQueues:TVkQueueFlags;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSupportedQueues:TVkQueueFlags);
{$endif}
     end;

     PPVkPhysicalDeviceMemoryDecompressionFeaturesNV=^PVkPhysicalDeviceMemoryDecompressionFeaturesNV;
     PVkPhysicalDeviceMemoryDecompressionFeaturesNV=^TVkPhysicalDeviceMemoryDecompressionFeaturesNV;
     TVkPhysicalDeviceMemoryDecompressionFeaturesNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV
       pNext:PVkVoid;
       memoryDecompression:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMemoryDecompression:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceMemoryDecompressionPropertiesNV=^PVkPhysicalDeviceMemoryDecompressionPropertiesNV;
     PVkPhysicalDeviceMemoryDecompressionPropertiesNV=^TVkPhysicalDeviceMemoryDecompressionPropertiesNV;
     TVkPhysicalDeviceMemoryDecompressionPropertiesNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV
       pNext:PVkVoid;
       decompressionMethods:TVkMemoryDecompressionMethodFlagsNV;
       maxDecompressionIndirectCount:TVkUInt64;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDecompressionMethods:TVkMemoryDecompressionMethodFlagsNV;
                          const aMaxDecompressionIndirectCount:TVkUInt64);
{$endif}
     end;

     PPVkShadingRatePaletteNV=^PVkShadingRatePaletteNV;
     PVkShadingRatePaletteNV=^TVkShadingRatePaletteNV;
     TVkShadingRatePaletteNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       shadingRatePaletteEntryCount:TVkUInt32;
       pShadingRatePaletteEntries:PVkShadingRatePaletteEntryNV;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aShadingRatePaletteEntryCount:TVkUInt32;
                          const aPShadingRatePaletteEntries:PVkShadingRatePaletteEntryNV);
{$endif}
     end;

     PPVkPipelineViewportShadingRateImageStateCreateInfoNV=^PVkPipelineViewportShadingRateImageStateCreateInfoNV;
     PVkPipelineViewportShadingRateImageStateCreateInfoNV=^TVkPipelineViewportShadingRateImageStateCreateInfoNV;
     TVkPipelineViewportShadingRateImageStateCreateInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV
       pNext:PVkVoid;
       shadingRateImageEnable:TVkBool32;
       viewportCount:TVkUInt32;
       pShadingRatePalettes:PVkShadingRatePaletteNV;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aShadingRateImageEnable:TVkBool32;
                          const aViewportCount:TVkUInt32;
                          const aPShadingRatePalettes:PVkShadingRatePaletteNV);
{$endif}
     end;

     PPVkPhysicalDeviceShadingRateImageFeaturesNV=^PVkPhysicalDeviceShadingRateImageFeaturesNV;
     PVkPhysicalDeviceShadingRateImageFeaturesNV=^TVkPhysicalDeviceShadingRateImageFeaturesNV;
     TVkPhysicalDeviceShadingRateImageFeaturesNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV
       pNext:PVkVoid;
       shadingRateImage:TVkBool32;
       shadingRateCoarseSampleOrder:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aShadingRateImage:TVkBool32;
                          const aShadingRateCoarseSampleOrder:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceShadingRateImagePropertiesNV=^PVkPhysicalDeviceShadingRateImagePropertiesNV;
     PVkPhysicalDeviceShadingRateImagePropertiesNV=^TVkPhysicalDeviceShadingRateImagePropertiesNV;
     TVkPhysicalDeviceShadingRateImagePropertiesNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV
       pNext:PVkVoid;
       shadingRateTexelSize:TVkExtent2D;
       shadingRatePaletteSize:TVkUInt32;
       shadingRateMaxCoarseSamples:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aShadingRateTexelSize:TVkExtent2D;
                          const aShadingRatePaletteSize:TVkUInt32;
                          const aShadingRateMaxCoarseSamples:TVkUInt32);
{$endif}
     end;

     PPVkPhysicalDeviceInvocationMaskFeaturesHUAWEI=^PVkPhysicalDeviceInvocationMaskFeaturesHUAWEI;
     PVkPhysicalDeviceInvocationMaskFeaturesHUAWEI=^TVkPhysicalDeviceInvocationMaskFeaturesHUAWEI;
     TVkPhysicalDeviceInvocationMaskFeaturesHUAWEI=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI
       pNext:PVkVoid;
       invocationMask:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aInvocationMask:TVkBool32);
{$endif}
     end;

     PPVkCoarseSampleLocationNV=^PVkCoarseSampleLocationNV;
     PVkCoarseSampleLocationNV=^TVkCoarseSampleLocationNV;
     TVkCoarseSampleLocationNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       pixelX:TVkUInt32;
       pixelY:TVkUInt32;
       sample:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPixelX:TVkUInt32;
                          const aPixelY:TVkUInt32;
                          const aSample:TVkUInt32);
{$endif}
     end;

     PPVkCoarseSampleOrderCustomNV=^PVkCoarseSampleOrderCustomNV;
     PVkCoarseSampleOrderCustomNV=^TVkCoarseSampleOrderCustomNV;
     TVkCoarseSampleOrderCustomNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       shadingRate:TVkShadingRatePaletteEntryNV;
       sampleCount:TVkUInt32;
       sampleLocationCount:TVkUInt32;
       pSampleLocations:PVkCoarseSampleLocationNV;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aShadingRate:TVkShadingRatePaletteEntryNV;
                          const aSampleCount:TVkUInt32;
                          const aSampleLocationCount:TVkUInt32;
                          const aPSampleLocations:PVkCoarseSampleLocationNV);
{$endif}
     end;

     PPVkPipelineViewportCoarseSampleOrderStateCreateInfoNV=^PVkPipelineViewportCoarseSampleOrderStateCreateInfoNV;
     PVkPipelineViewportCoarseSampleOrderStateCreateInfoNV=^TVkPipelineViewportCoarseSampleOrderStateCreateInfoNV;
     TVkPipelineViewportCoarseSampleOrderStateCreateInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV
       pNext:PVkVoid;
       sampleOrderType:TVkCoarseSampleOrderTypeNV;
       customSampleOrderCount:TVkUInt32;
       pCustomSampleOrders:PVkCoarseSampleOrderCustomNV;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSampleOrderType:TVkCoarseSampleOrderTypeNV;
                          const aCustomSampleOrderCount:TVkUInt32;
                          const aPCustomSampleOrders:PVkCoarseSampleOrderCustomNV);
{$endif}
     end;

     PPVkPhysicalDeviceMeshShaderFeaturesNV=^PVkPhysicalDeviceMeshShaderFeaturesNV;
     PVkPhysicalDeviceMeshShaderFeaturesNV=^TVkPhysicalDeviceMeshShaderFeaturesNV;
     TVkPhysicalDeviceMeshShaderFeaturesNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV
       pNext:PVkVoid;
       taskShader:TVkBool32;
       meshShader:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aTaskShader:TVkBool32;
                          const aMeshShader:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceMeshShaderPropertiesNV=^PVkPhysicalDeviceMeshShaderPropertiesNV;
     PVkPhysicalDeviceMeshShaderPropertiesNV=^TVkPhysicalDeviceMeshShaderPropertiesNV;
     TVkPhysicalDeviceMeshShaderPropertiesNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV
       pNext:PVkVoid;
       maxDrawMeshTasksCount:TVkUInt32;
       maxTaskWorkGroupInvocations:TVkUInt32;
       maxTaskWorkGroupSize:array[0..2] of TVkUInt32;
       maxTaskTotalMemorySize:TVkUInt32;
       maxTaskOutputCount:TVkUInt32;
       maxMeshWorkGroupInvocations:TVkUInt32;
       maxMeshWorkGroupSize:array[0..2] of TVkUInt32;
       maxMeshTotalMemorySize:TVkUInt32;
       maxMeshOutputVertices:TVkUInt32;
       maxMeshOutputPrimitives:TVkUInt32;
       maxMeshMultiviewViewCount:TVkUInt32;
       meshOutputPerVertexGranularity:TVkUInt32;
       meshOutputPerPrimitiveGranularity:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMaxDrawMeshTasksCount:TVkUInt32;
                          const aMaxTaskWorkGroupInvocations:TVkUInt32;
                          const aMaxTaskWorkGroupSize:array of TVkUInt32;
                          const aMaxTaskTotalMemorySize:TVkUInt32;
                          const aMaxTaskOutputCount:TVkUInt32;
                          const aMaxMeshWorkGroupInvocations:TVkUInt32;
                          const aMaxMeshWorkGroupSize:array of TVkUInt32;
                          const aMaxMeshTotalMemorySize:TVkUInt32;
                          const aMaxMeshOutputVertices:TVkUInt32;
                          const aMaxMeshOutputPrimitives:TVkUInt32;
                          const aMaxMeshMultiviewViewCount:TVkUInt32;
                          const aMeshOutputPerVertexGranularity:TVkUInt32;
                          const aMeshOutputPerPrimitiveGranularity:TVkUInt32);
{$endif}
     end;

     PPVkDrawMeshTasksIndirectCommandNV=^PVkDrawMeshTasksIndirectCommandNV;
     PVkDrawMeshTasksIndirectCommandNV=^TVkDrawMeshTasksIndirectCommandNV;
     TVkDrawMeshTasksIndirectCommandNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       taskCount:TVkUInt32;
       firstTask:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aTaskCount:TVkUInt32;
                          const aFirstTask:TVkUInt32);
{$endif}
     end;

     PPVkPhysicalDeviceMeshShaderFeaturesEXT=^PVkPhysicalDeviceMeshShaderFeaturesEXT;
     PVkPhysicalDeviceMeshShaderFeaturesEXT=^TVkPhysicalDeviceMeshShaderFeaturesEXT;
     TVkPhysicalDeviceMeshShaderFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT
       pNext:PVkVoid;
       taskShader:TVkBool32;
       meshShader:TVkBool32;
       multiviewMeshShader:TVkBool32;
       primitiveFragmentShadingRateMeshShader:TVkBool32;
       meshShaderQueries:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aTaskShader:TVkBool32;
                          const aMeshShader:TVkBool32;
                          const aMultiviewMeshShader:TVkBool32;
                          const aPrimitiveFragmentShadingRateMeshShader:TVkBool32;
                          const aMeshShaderQueries:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceMeshShaderPropertiesEXT=^PVkPhysicalDeviceMeshShaderPropertiesEXT;
     PVkPhysicalDeviceMeshShaderPropertiesEXT=^TVkPhysicalDeviceMeshShaderPropertiesEXT;
     TVkPhysicalDeviceMeshShaderPropertiesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT
       pNext:PVkVoid;
       maxTaskWorkGroupTotalCount:TVkUInt32;
       maxTaskWorkGroupCount:array[0..2] of TVkUInt32;
       maxTaskWorkGroupInvocations:TVkUInt32;
       maxTaskWorkGroupSize:array[0..2] of TVkUInt32;
       maxTaskPayloadSize:TVkUInt32;
       maxTaskSharedMemorySize:TVkUInt32;
       maxTaskPayloadAndSharedMemorySize:TVkUInt32;
       maxMeshWorkGroupTotalCount:TVkUInt32;
       maxMeshWorkGroupCount:array[0..2] of TVkUInt32;
       maxMeshWorkGroupInvocations:TVkUInt32;
       maxMeshWorkGroupSize:array[0..2] of TVkUInt32;
       maxMeshSharedMemorySize:TVkUInt32;
       maxMeshPayloadAndSharedMemorySize:TVkUInt32;
       maxMeshOutputMemorySize:TVkUInt32;
       maxMeshPayloadAndOutputMemorySize:TVkUInt32;
       maxMeshOutputComponents:TVkUInt32;
       maxMeshOutputVertices:TVkUInt32;
       maxMeshOutputPrimitives:TVkUInt32;
       maxMeshOutputLayers:TVkUInt32;
       maxMeshMultiviewViewCount:TVkUInt32;
       meshOutputPerVertexGranularity:TVkUInt32;
       meshOutputPerPrimitiveGranularity:TVkUInt32;
       maxPreferredTaskWorkGroupInvocations:TVkUInt32;
       maxPreferredMeshWorkGroupInvocations:TVkUInt32;
       prefersLocalInvocationVertexOutput:TVkBool32;
       prefersLocalInvocationPrimitiveOutput:TVkBool32;
       prefersCompactVertexOutput:TVkBool32;
       prefersCompactPrimitiveOutput:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMaxTaskWorkGroupTotalCount:TVkUInt32;
                          const aMaxTaskWorkGroupCount:array of TVkUInt32;
                          const aMaxTaskWorkGroupInvocations:TVkUInt32;
                          const aMaxTaskWorkGroupSize:array of TVkUInt32;
                          const aMaxTaskPayloadSize:TVkUInt32;
                          const aMaxTaskSharedMemorySize:TVkUInt32;
                          const aMaxTaskPayloadAndSharedMemorySize:TVkUInt32;
                          const aMaxMeshWorkGroupTotalCount:TVkUInt32;
                          const aMaxMeshWorkGroupCount:array of TVkUInt32;
                          const aMaxMeshWorkGroupInvocations:TVkUInt32;
                          const aMaxMeshWorkGroupSize:array of TVkUInt32;
                          const aMaxMeshSharedMemorySize:TVkUInt32;
                          const aMaxMeshPayloadAndSharedMemorySize:TVkUInt32;
                          const aMaxMeshOutputMemorySize:TVkUInt32;
                          const aMaxMeshPayloadAndOutputMemorySize:TVkUInt32;
                          const aMaxMeshOutputComponents:TVkUInt32;
                          const aMaxMeshOutputVertices:TVkUInt32;
                          const aMaxMeshOutputPrimitives:TVkUInt32;
                          const aMaxMeshOutputLayers:TVkUInt32;
                          const aMaxMeshMultiviewViewCount:TVkUInt32;
                          const aMeshOutputPerVertexGranularity:TVkUInt32;
                          const aMeshOutputPerPrimitiveGranularity:TVkUInt32;
                          const aMaxPreferredTaskWorkGroupInvocations:TVkUInt32;
                          const aMaxPreferredMeshWorkGroupInvocations:TVkUInt32;
                          const aPrefersLocalInvocationVertexOutput:TVkBool32;
                          const aPrefersLocalInvocationPrimitiveOutput:TVkBool32;
                          const aPrefersCompactVertexOutput:TVkBool32;
                          const aPrefersCompactPrimitiveOutput:TVkBool32);
{$endif}
     end;

     PPVkDrawMeshTasksIndirectCommandEXT=^PVkDrawMeshTasksIndirectCommandEXT;
     PVkDrawMeshTasksIndirectCommandEXT=^TVkDrawMeshTasksIndirectCommandEXT;
     TVkDrawMeshTasksIndirectCommandEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       groupCountX:TVkUInt32;
       groupCountY:TVkUInt32;
       groupCountZ:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aGroupCountX:TVkUInt32;
                          const aGroupCountY:TVkUInt32;
                          const aGroupCountZ:TVkUInt32);
{$endif}
     end;

     PPVkRayTracingShaderGroupCreateInfoNV=^PVkRayTracingShaderGroupCreateInfoNV;
     PVkRayTracingShaderGroupCreateInfoNV=^TVkRayTracingShaderGroupCreateInfoNV;
     TVkRayTracingShaderGroupCreateInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV
       pNext:PVkVoid;
       type_:TVkRayTracingShaderGroupTypeKHR;
       generalShader:TVkUInt32;
       closestHitShader:TVkUInt32;
       anyHitShader:TVkUInt32;
       intersectionShader:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aType_:TVkRayTracingShaderGroupTypeKHR;
                          const aGeneralShader:TVkUInt32;
                          const aClosestHitShader:TVkUInt32;
                          const aAnyHitShader:TVkUInt32;
                          const aIntersectionShader:TVkUInt32);
{$endif}
     end;

     PPVkRayTracingShaderGroupCreateInfoKHR=^PVkRayTracingShaderGroupCreateInfoKHR;
     PVkRayTracingShaderGroupCreateInfoKHR=^TVkRayTracingShaderGroupCreateInfoKHR;
     TVkRayTracingShaderGroupCreateInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR
       pNext:PVkVoid;
       type_:TVkRayTracingShaderGroupTypeKHR;
       generalShader:TVkUInt32;
       closestHitShader:TVkUInt32;
       anyHitShader:TVkUInt32;
       intersectionShader:TVkUInt32;
       pShaderGroupCaptureReplayHandle:PVkVoid;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aType_:TVkRayTracingShaderGroupTypeKHR;
                          const aGeneralShader:TVkUInt32;
                          const aClosestHitShader:TVkUInt32;
                          const aAnyHitShader:TVkUInt32;
                          const aIntersectionShader:TVkUInt32;
                          const aPShaderGroupCaptureReplayHandle:PVkVoid);
{$endif}
     end;

     PPVkRayTracingPipelineCreateInfoNV=^PVkRayTracingPipelineCreateInfoNV;
     PVkRayTracingPipelineCreateInfoNV=^TVkRayTracingPipelineCreateInfoNV;
     TVkRayTracingPipelineCreateInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV
       pNext:PVkVoid;
       flags:TVkPipelineCreateFlags;
       stageCount:TVkUInt32;
       pStages:PVkPipelineShaderStageCreateInfo;
       groupCount:TVkUInt32;
       pGroups:PVkRayTracingShaderGroupCreateInfoNV;
       maxRecursionDepth:TVkUInt32;
       layout:TVkPipelineLayout;
       basePipelineHandle:TVkPipeline;
       basePipelineIndex:TVkInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkPipelineCreateFlags;
                          const aStageCount:TVkUInt32;
                          const aPStages:PVkPipelineShaderStageCreateInfo;
                          const aGroupCount:TVkUInt32;
                          const aPGroups:PVkRayTracingShaderGroupCreateInfoNV;
                          const aMaxRecursionDepth:TVkUInt32;
                          const aLayout:TVkPipelineLayout;
                          const aBasePipelineHandle:TVkPipeline;
                          const aBasePipelineIndex:TVkInt32);
{$endif}
     end;

     PPVkRayTracingPipelineInterfaceCreateInfoKHR=^PVkRayTracingPipelineInterfaceCreateInfoKHR;
     PVkRayTracingPipelineInterfaceCreateInfoKHR=^TVkRayTracingPipelineInterfaceCreateInfoKHR;
     TVkRayTracingPipelineInterfaceCreateInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR
       pNext:PVkVoid;
       maxPipelineRayPayloadSize:TVkUInt32;
       maxPipelineRayHitAttributeSize:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMaxPipelineRayPayloadSize:TVkUInt32;
                          const aMaxPipelineRayHitAttributeSize:TVkUInt32);
{$endif}
     end;

     PPVkGeometryTrianglesNV=^PVkGeometryTrianglesNV;
     PVkGeometryTrianglesNV=^TVkGeometryTrianglesNV;
     TVkGeometryTrianglesNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV
       pNext:PVkVoid;
       vertexData:TVkBuffer;
       vertexOffset:TVkDeviceSize;
       vertexCount:TVkUInt32;
       vertexStride:TVkDeviceSize;
       vertexFormat:TVkFormat;
       indexData:TVkBuffer;
       indexOffset:TVkDeviceSize;
       indexCount:TVkUInt32;
       indexType:TVkIndexType;
       transformData:TVkBuffer;
       transformOffset:TVkDeviceSize;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aVertexData:TVkBuffer;
                          const aVertexOffset:TVkDeviceSize;
                          const aVertexCount:TVkUInt32;
                          const aVertexStride:TVkDeviceSize;
                          const aVertexFormat:TVkFormat;
                          const aIndexData:TVkBuffer;
                          const aIndexOffset:TVkDeviceSize;
                          const aIndexCount:TVkUInt32;
                          const aIndexType:TVkIndexType;
                          const aTransformData:TVkBuffer;
                          const aTransformOffset:TVkDeviceSize);
{$endif}
     end;

     PPVkGeometryAABBNV=^PVkGeometryAABBNV;
     PVkGeometryAABBNV=^TVkGeometryAABBNV;
     TVkGeometryAABBNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV
       pNext:PVkVoid;
       aabbData:TVkBuffer;
       numAABBs:TVkUInt32;
       stride:TVkUInt32;
       offset:TVkDeviceSize;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aAabbData:TVkBuffer;
                          const aNumAABBs:TVkUInt32;
                          const aStride:TVkUInt32;
                          const aOffset:TVkDeviceSize);
{$endif}
     end;

     PPVkGeometryDataNV=^PVkGeometryDataNV;
     PVkGeometryDataNV=^TVkGeometryDataNV;
     TVkGeometryDataNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       triangles:TVkGeometryTrianglesNV;
       aabbs:TVkGeometryAABBNV;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aTriangles:TVkGeometryTrianglesNV;
                          const aAabbs:TVkGeometryAABBNV);
{$endif}
     end;

     PPVkGeometryNV=^PVkGeometryNV;
     PVkGeometryNV=^TVkGeometryNV;
     TVkGeometryNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_GEOMETRY_NV
       pNext:PVkVoid;
       geometryType:TVkGeometryTypeKHR;
       geometry:TVkGeometryDataNV;
       flags:TVkGeometryFlagsKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aGeometryType:TVkGeometryTypeKHR;
                          const aGeometry:TVkGeometryDataNV;
                          const aFlags:TVkGeometryFlagsKHR);
{$endif}
     end;

     PPVkAccelerationStructureInfoNV=^PVkAccelerationStructureInfoNV;
     PVkAccelerationStructureInfoNV=^TVkAccelerationStructureInfoNV;
     TVkAccelerationStructureInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV
       pNext:PVkVoid;
       type_:TVkAccelerationStructureTypeNV;
       flags:TVkBuildAccelerationStructureFlagsNV;
       instanceCount:TVkUInt32;
       geometryCount:TVkUInt32;
       pGeometries:PVkGeometryNV;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aType_:TVkAccelerationStructureTypeNV;
                          const aFlags:TVkBuildAccelerationStructureFlagsNV;
                          const aInstanceCount:TVkUInt32;
                          const aGeometryCount:TVkUInt32;
                          const aPGeometries:PVkGeometryNV);
{$endif}
     end;

     PPVkAccelerationStructureCreateInfoNV=^PVkAccelerationStructureCreateInfoNV;
     PVkAccelerationStructureCreateInfoNV=^TVkAccelerationStructureCreateInfoNV;
     TVkAccelerationStructureCreateInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV
       pNext:PVkVoid;
       compactedSize:TVkDeviceSize;
       info:TVkAccelerationStructureInfoNV;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aCompactedSize:TVkDeviceSize;
                          const aInfo:TVkAccelerationStructureInfoNV);
{$endif}
     end;

     PPVkBindAccelerationStructureMemoryInfoNV=^PVkBindAccelerationStructureMemoryInfoNV;
     PVkBindAccelerationStructureMemoryInfoNV=^TVkBindAccelerationStructureMemoryInfoNV;
     TVkBindAccelerationStructureMemoryInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV
       pNext:PVkVoid;
       accelerationStructure:TVkAccelerationStructureNV;
       memory:TVkDeviceMemory;
       memoryOffset:TVkDeviceSize;
       deviceIndexCount:TVkUInt32;
       pDeviceIndices:PVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aAccelerationStructure:TVkAccelerationStructureNV;
                          const aMemory:TVkDeviceMemory;
                          const aMemoryOffset:TVkDeviceSize;
                          const aDeviceIndexCount:TVkUInt32;
                          const aPDeviceIndices:PVkUInt32);
{$endif}
     end;

     PPVkWriteDescriptorSetAccelerationStructureKHR=^PVkWriteDescriptorSetAccelerationStructureKHR;
     PVkWriteDescriptorSetAccelerationStructureKHR=^TVkWriteDescriptorSetAccelerationStructureKHR;
     TVkWriteDescriptorSetAccelerationStructureKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR
       pNext:PVkVoid;
       accelerationStructureCount:TVkUInt32;
       pAccelerationStructures:PVkAccelerationStructureKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aAccelerationStructureCount:TVkUInt32;
                          const aPAccelerationStructures:PVkAccelerationStructureKHR);
{$endif}
     end;

     PPVkWriteDescriptorSetAccelerationStructureNV=^PVkWriteDescriptorSetAccelerationStructureNV;
     PVkWriteDescriptorSetAccelerationStructureNV=^TVkWriteDescriptorSetAccelerationStructureNV;
     TVkWriteDescriptorSetAccelerationStructureNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV
       pNext:PVkVoid;
       accelerationStructureCount:TVkUInt32;
       pAccelerationStructures:PVkAccelerationStructureNV;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aAccelerationStructureCount:TVkUInt32;
                          const aPAccelerationStructures:PVkAccelerationStructureNV);
{$endif}
     end;

     PPVkAccelerationStructureMemoryRequirementsInfoNV=^PVkAccelerationStructureMemoryRequirementsInfoNV;
     PVkAccelerationStructureMemoryRequirementsInfoNV=^TVkAccelerationStructureMemoryRequirementsInfoNV;
     TVkAccelerationStructureMemoryRequirementsInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV
       pNext:PVkVoid;
       type_:TVkAccelerationStructureMemoryRequirementsTypeNV;
       accelerationStructure:TVkAccelerationStructureNV;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aType_:TVkAccelerationStructureMemoryRequirementsTypeNV;
                          const aAccelerationStructure:TVkAccelerationStructureNV);
{$endif}
     end;

     PPVkPhysicalDeviceAccelerationStructureFeaturesKHR=^PVkPhysicalDeviceAccelerationStructureFeaturesKHR;
     PVkPhysicalDeviceAccelerationStructureFeaturesKHR=^TVkPhysicalDeviceAccelerationStructureFeaturesKHR;
     TVkPhysicalDeviceAccelerationStructureFeaturesKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR
       pNext:PVkVoid;
       accelerationStructure:TVkBool32;
       accelerationStructureCaptureReplay:TVkBool32;
       accelerationStructureIndirectBuild:TVkBool32;
       accelerationStructureHostCommands:TVkBool32;
       descriptorBindingAccelerationStructureUpdateAfterBind:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aAccelerationStructure:TVkBool32;
                          const aAccelerationStructureCaptureReplay:TVkBool32;
                          const aAccelerationStructureIndirectBuild:TVkBool32;
                          const aAccelerationStructureHostCommands:TVkBool32;
                          const aDescriptorBindingAccelerationStructureUpdateAfterBind:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceRayTracingPipelineFeaturesKHR=^PVkPhysicalDeviceRayTracingPipelineFeaturesKHR;
     PVkPhysicalDeviceRayTracingPipelineFeaturesKHR=^TVkPhysicalDeviceRayTracingPipelineFeaturesKHR;
     TVkPhysicalDeviceRayTracingPipelineFeaturesKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR
       pNext:PVkVoid;
       rayTracingPipeline:TVkBool32;
       rayTracingPipelineShaderGroupHandleCaptureReplay:TVkBool32;
       rayTracingPipelineShaderGroupHandleCaptureReplayMixed:TVkBool32;
       rayTracingPipelineTraceRaysIndirect:TVkBool32;
       rayTraversalPrimitiveCulling:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aRayTracingPipeline:TVkBool32;
                          const aRayTracingPipelineShaderGroupHandleCaptureReplay:TVkBool32;
                          const aRayTracingPipelineShaderGroupHandleCaptureReplayMixed:TVkBool32;
                          const aRayTracingPipelineTraceRaysIndirect:TVkBool32;
                          const aRayTraversalPrimitiveCulling:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceRayQueryFeaturesKHR=^PVkPhysicalDeviceRayQueryFeaturesKHR;
     PVkPhysicalDeviceRayQueryFeaturesKHR=^TVkPhysicalDeviceRayQueryFeaturesKHR;
     TVkPhysicalDeviceRayQueryFeaturesKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR
       pNext:PVkVoid;
       rayQuery:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aRayQuery:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceAccelerationStructurePropertiesKHR=^PVkPhysicalDeviceAccelerationStructurePropertiesKHR;
     PVkPhysicalDeviceAccelerationStructurePropertiesKHR=^TVkPhysicalDeviceAccelerationStructurePropertiesKHR;
     TVkPhysicalDeviceAccelerationStructurePropertiesKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR
       pNext:PVkVoid;
       maxGeometryCount:TVkUInt64;
       maxInstanceCount:TVkUInt64;
       maxPrimitiveCount:TVkUInt64;
       maxPerStageDescriptorAccelerationStructures:TVkUInt32;
       maxPerStageDescriptorUpdateAfterBindAccelerationStructures:TVkUInt32;
       maxDescriptorSetAccelerationStructures:TVkUInt32;
       maxDescriptorSetUpdateAfterBindAccelerationStructures:TVkUInt32;
       minAccelerationStructureScratchOffsetAlignment:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMaxGeometryCount:TVkUInt64;
                          const aMaxInstanceCount:TVkUInt64;
                          const aMaxPrimitiveCount:TVkUInt64;
                          const aMaxPerStageDescriptorAccelerationStructures:TVkUInt32;
                          const aMaxPerStageDescriptorUpdateAfterBindAccelerationStructures:TVkUInt32;
                          const aMaxDescriptorSetAccelerationStructures:TVkUInt32;
                          const aMaxDescriptorSetUpdateAfterBindAccelerationStructures:TVkUInt32;
                          const aMinAccelerationStructureScratchOffsetAlignment:TVkUInt32);
{$endif}
     end;

     PPVkPhysicalDeviceRayTracingPipelinePropertiesKHR=^PVkPhysicalDeviceRayTracingPipelinePropertiesKHR;
     PVkPhysicalDeviceRayTracingPipelinePropertiesKHR=^TVkPhysicalDeviceRayTracingPipelinePropertiesKHR;
     TVkPhysicalDeviceRayTracingPipelinePropertiesKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR
       pNext:PVkVoid;
       shaderGroupHandleSize:TVkUInt32;
       maxRayRecursionDepth:TVkUInt32;
       maxShaderGroupStride:TVkUInt32;
       shaderGroupBaseAlignment:TVkUInt32;
       shaderGroupHandleCaptureReplaySize:TVkUInt32;
       maxRayDispatchInvocationCount:TVkUInt32;
       shaderGroupHandleAlignment:TVkUInt32;
       maxRayHitAttributeSize:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aShaderGroupHandleSize:TVkUInt32;
                          const aMaxRayRecursionDepth:TVkUInt32;
                          const aMaxShaderGroupStride:TVkUInt32;
                          const aShaderGroupBaseAlignment:TVkUInt32;
                          const aShaderGroupHandleCaptureReplaySize:TVkUInt32;
                          const aMaxRayDispatchInvocationCount:TVkUInt32;
                          const aShaderGroupHandleAlignment:TVkUInt32;
                          const aMaxRayHitAttributeSize:TVkUInt32);
{$endif}
     end;

     PPVkPhysicalDeviceRayTracingPropertiesNV=^PVkPhysicalDeviceRayTracingPropertiesNV;
     PVkPhysicalDeviceRayTracingPropertiesNV=^TVkPhysicalDeviceRayTracingPropertiesNV;
     TVkPhysicalDeviceRayTracingPropertiesNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV
       pNext:PVkVoid;
       shaderGroupHandleSize:TVkUInt32;
       maxRecursionDepth:TVkUInt32;
       maxShaderGroupStride:TVkUInt32;
       shaderGroupBaseAlignment:TVkUInt32;
       maxGeometryCount:TVkUInt64;
       maxInstanceCount:TVkUInt64;
       maxTriangleCount:TVkUInt64;
       maxDescriptorSetAccelerationStructures:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aShaderGroupHandleSize:TVkUInt32;
                          const aMaxRecursionDepth:TVkUInt32;
                          const aMaxShaderGroupStride:TVkUInt32;
                          const aShaderGroupBaseAlignment:TVkUInt32;
                          const aMaxGeometryCount:TVkUInt64;
                          const aMaxInstanceCount:TVkUInt64;
                          const aMaxTriangleCount:TVkUInt64;
                          const aMaxDescriptorSetAccelerationStructures:TVkUInt32);
{$endif}
     end;

     PPVkStridedDeviceAddressRegionKHR=^PVkStridedDeviceAddressRegionKHR;
     PVkStridedDeviceAddressRegionKHR=^TVkStridedDeviceAddressRegionKHR;
     TVkStridedDeviceAddressRegionKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       deviceAddress:TVkDeviceAddress;
       stride:TVkDeviceSize;
       size:TVkDeviceSize;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDeviceAddress:TVkDeviceAddress;
                          const aStride:TVkDeviceSize;
                          const aSize:TVkDeviceSize);
{$endif}
     end;

     PPVkTraceRaysIndirectCommandKHR=^PVkTraceRaysIndirectCommandKHR;
     PVkTraceRaysIndirectCommandKHR=^TVkTraceRaysIndirectCommandKHR;
     TVkTraceRaysIndirectCommandKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       width:TVkUInt32;
       height:TVkUInt32;
       depth:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aWidth:TVkUInt32;
                          const aHeight:TVkUInt32;
                          const aDepth:TVkUInt32);
{$endif}
     end;

     PPVkTraceRaysIndirectCommand2KHR=^PVkTraceRaysIndirectCommand2KHR;
     PVkTraceRaysIndirectCommand2KHR=^TVkTraceRaysIndirectCommand2KHR;
     TVkTraceRaysIndirectCommand2KHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       raygenShaderRecordAddress:TVkDeviceAddress;
       raygenShaderRecordSize:TVkDeviceSize;
       missShaderBindingTableAddress:TVkDeviceAddress;
       missShaderBindingTableSize:TVkDeviceSize;
       missShaderBindingTableStride:TVkDeviceSize;
       hitShaderBindingTableAddress:TVkDeviceAddress;
       hitShaderBindingTableSize:TVkDeviceSize;
       hitShaderBindingTableStride:TVkDeviceSize;
       callableShaderBindingTableAddress:TVkDeviceAddress;
       callableShaderBindingTableSize:TVkDeviceSize;
       callableShaderBindingTableStride:TVkDeviceSize;
       width:TVkUInt32;
       height:TVkUInt32;
       depth:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aRaygenShaderRecordAddress:TVkDeviceAddress;
                          const aRaygenShaderRecordSize:TVkDeviceSize;
                          const aMissShaderBindingTableAddress:TVkDeviceAddress;
                          const aMissShaderBindingTableSize:TVkDeviceSize;
                          const aMissShaderBindingTableStride:TVkDeviceSize;
                          const aHitShaderBindingTableAddress:TVkDeviceAddress;
                          const aHitShaderBindingTableSize:TVkDeviceSize;
                          const aHitShaderBindingTableStride:TVkDeviceSize;
                          const aCallableShaderBindingTableAddress:TVkDeviceAddress;
                          const aCallableShaderBindingTableSize:TVkDeviceSize;
                          const aCallableShaderBindingTableStride:TVkDeviceSize;
                          const aWidth:TVkUInt32;
                          const aHeight:TVkUInt32;
                          const aDepth:TVkUInt32);
{$endif}
     end;

     PPVkPhysicalDeviceRayTracingMaintenance1FeaturesKHR=^PVkPhysicalDeviceRayTracingMaintenance1FeaturesKHR;
     PVkPhysicalDeviceRayTracingMaintenance1FeaturesKHR=^TVkPhysicalDeviceRayTracingMaintenance1FeaturesKHR;
     TVkPhysicalDeviceRayTracingMaintenance1FeaturesKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR
       pNext:PVkVoid;
       rayTracingMaintenance1:TVkBool32;
       rayTracingPipelineTraceRaysIndirect2:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aRayTracingMaintenance1:TVkBool32;
                          const aRayTracingPipelineTraceRaysIndirect2:TVkBool32);
{$endif}
     end;

     PPVkDrmFormatModifierPropertiesEXT=^PVkDrmFormatModifierPropertiesEXT;
     PVkDrmFormatModifierPropertiesEXT=^TVkDrmFormatModifierPropertiesEXT;
     TVkDrmFormatModifierPropertiesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       drmFormatModifier:TVkUInt64;
       drmFormatModifierPlaneCount:TVkUInt32;
       drmFormatModifierTilingFeatures:TVkFormatFeatureFlags;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDrmFormatModifier:TVkUInt64;
                          const aDrmFormatModifierPlaneCount:TVkUInt32;
                          const aDrmFormatModifierTilingFeatures:TVkFormatFeatureFlags);
{$endif}
     end;

     PPVkDrmFormatModifierPropertiesListEXT=^PVkDrmFormatModifierPropertiesListEXT;
     PVkDrmFormatModifierPropertiesListEXT=^TVkDrmFormatModifierPropertiesListEXT;
     TVkDrmFormatModifierPropertiesListEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT
       pNext:PVkVoid;
       drmFormatModifierCount:TVkUInt32;
       pDrmFormatModifierProperties:PVkDrmFormatModifierPropertiesEXT;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDrmFormatModifierCount:TVkUInt32;
                          const aPDrmFormatModifierProperties:PVkDrmFormatModifierPropertiesEXT);
{$endif}
     end;

     PPVkPhysicalDeviceImageDrmFormatModifierInfoEXT=^PVkPhysicalDeviceImageDrmFormatModifierInfoEXT;
     PVkPhysicalDeviceImageDrmFormatModifierInfoEXT=^TVkPhysicalDeviceImageDrmFormatModifierInfoEXT;
     TVkPhysicalDeviceImageDrmFormatModifierInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT
       pNext:PVkVoid;
       drmFormatModifier:TVkUInt64;
       sharingMode:TVkSharingMode;
       queueFamilyIndexCount:TVkUInt32;
       pQueueFamilyIndices:PVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDrmFormatModifier:TVkUInt64;
                          const aSharingMode:TVkSharingMode;
                          const aQueueFamilyIndexCount:TVkUInt32;
                          const aPQueueFamilyIndices:PVkUInt32);
{$endif}
     end;

     PPVkImageDrmFormatModifierListCreateInfoEXT=^PVkImageDrmFormatModifierListCreateInfoEXT;
     PVkImageDrmFormatModifierListCreateInfoEXT=^TVkImageDrmFormatModifierListCreateInfoEXT;
     TVkImageDrmFormatModifierListCreateInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT
       pNext:PVkVoid;
       drmFormatModifierCount:TVkUInt32;
       pDrmFormatModifiers:PVkUInt64;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDrmFormatModifierCount:TVkUInt32;
                          const aPDrmFormatModifiers:PVkUInt64);
{$endif}
     end;

     PPVkImageDrmFormatModifierExplicitCreateInfoEXT=^PVkImageDrmFormatModifierExplicitCreateInfoEXT;
     PVkImageDrmFormatModifierExplicitCreateInfoEXT=^TVkImageDrmFormatModifierExplicitCreateInfoEXT;
     TVkImageDrmFormatModifierExplicitCreateInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT
       pNext:PVkVoid;
       drmFormatModifier:TVkUInt64;
       drmFormatModifierPlaneCount:TVkUInt32;
       pPlaneLayouts:PVkSubresourceLayout;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDrmFormatModifier:TVkUInt64;
                          const aDrmFormatModifierPlaneCount:TVkUInt32;
                          const aPPlaneLayouts:PVkSubresourceLayout);
{$endif}
     end;

     PPVkImageDrmFormatModifierPropertiesEXT=^PVkImageDrmFormatModifierPropertiesEXT;
     PVkImageDrmFormatModifierPropertiesEXT=^TVkImageDrmFormatModifierPropertiesEXT;
     TVkImageDrmFormatModifierPropertiesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT
       pNext:PVkVoid;
       drmFormatModifier:TVkUInt64;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDrmFormatModifier:TVkUInt64);
{$endif}
     end;

     PPVkImageStencilUsageCreateInfo=^PVkImageStencilUsageCreateInfo;
     PVkImageStencilUsageCreateInfo=^TVkImageStencilUsageCreateInfo;
     TVkImageStencilUsageCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO
       pNext:PVkVoid;
       stencilUsage:TVkImageUsageFlags;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aStencilUsage:TVkImageUsageFlags);
{$endif}
     end;

     PPVkImageStencilUsageCreateInfoEXT=^PVkImageStencilUsageCreateInfoEXT;
     PVkImageStencilUsageCreateInfoEXT=^TVkImageStencilUsageCreateInfoEXT;
     TVkImageStencilUsageCreateInfoEXT=TVkImageStencilUsageCreateInfo;

     PPVkDeviceMemoryOverallocationCreateInfoAMD=^PVkDeviceMemoryOverallocationCreateInfoAMD;
     PVkDeviceMemoryOverallocationCreateInfoAMD=^TVkDeviceMemoryOverallocationCreateInfoAMD;
     TVkDeviceMemoryOverallocationCreateInfoAMD=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD
       pNext:PVkVoid;
       overallocationBehavior:TVkMemoryOverallocationBehaviorAMD;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aOverallocationBehavior:TVkMemoryOverallocationBehaviorAMD);
{$endif}
     end;

     PPVkPhysicalDeviceFragmentDensityMapFeaturesEXT=^PVkPhysicalDeviceFragmentDensityMapFeaturesEXT;
     PVkPhysicalDeviceFragmentDensityMapFeaturesEXT=^TVkPhysicalDeviceFragmentDensityMapFeaturesEXT;
     TVkPhysicalDeviceFragmentDensityMapFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT
       pNext:PVkVoid;
       fragmentDensityMap:TVkBool32;
       fragmentDensityMapDynamic:TVkBool32;
       fragmentDensityMapNonSubsampledImages:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFragmentDensityMap:TVkBool32;
                          const aFragmentDensityMapDynamic:TVkBool32;
                          const aFragmentDensityMapNonSubsampledImages:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceFragmentDensityMap2FeaturesEXT=^PVkPhysicalDeviceFragmentDensityMap2FeaturesEXT;
     PVkPhysicalDeviceFragmentDensityMap2FeaturesEXT=^TVkPhysicalDeviceFragmentDensityMap2FeaturesEXT;
     TVkPhysicalDeviceFragmentDensityMap2FeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT
       pNext:PVkVoid;
       fragmentDensityMapDeferred:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFragmentDensityMapDeferred:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM=^PVkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM;
     PVkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM=^TVkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM;
     TVkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM
       pNext:PVkVoid;
       fragmentDensityMapOffset:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFragmentDensityMapOffset:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceFragmentDensityMapPropertiesEXT=^PVkPhysicalDeviceFragmentDensityMapPropertiesEXT;
     PVkPhysicalDeviceFragmentDensityMapPropertiesEXT=^TVkPhysicalDeviceFragmentDensityMapPropertiesEXT;
     TVkPhysicalDeviceFragmentDensityMapPropertiesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT
       pNext:PVkVoid;
       minFragmentDensityTexelSize:TVkExtent2D;
       maxFragmentDensityTexelSize:TVkExtent2D;
       fragmentDensityInvocations:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMinFragmentDensityTexelSize:TVkExtent2D;
                          const aMaxFragmentDensityTexelSize:TVkExtent2D;
                          const aFragmentDensityInvocations:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceFragmentDensityMap2PropertiesEXT=^PVkPhysicalDeviceFragmentDensityMap2PropertiesEXT;
     PVkPhysicalDeviceFragmentDensityMap2PropertiesEXT=^TVkPhysicalDeviceFragmentDensityMap2PropertiesEXT;
     TVkPhysicalDeviceFragmentDensityMap2PropertiesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT
       pNext:PVkVoid;
       subsampledLoads:TVkBool32;
       subsampledCoarseReconstructionEarlyAccess:TVkBool32;
       maxSubsampledArrayLayers:TVkUInt32;
       maxDescriptorSetSubsampledSamplers:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSubsampledLoads:TVkBool32;
                          const aSubsampledCoarseReconstructionEarlyAccess:TVkBool32;
                          const aMaxSubsampledArrayLayers:TVkUInt32;
                          const aMaxDescriptorSetSubsampledSamplers:TVkUInt32);
{$endif}
     end;

     PPVkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM=^PVkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM;
     PVkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM=^TVkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM;
     TVkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM
       pNext:PVkVoid;
       fragmentDensityOffsetGranularity:TVkExtent2D;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFragmentDensityOffsetGranularity:TVkExtent2D);
{$endif}
     end;

     PPVkRenderPassFragmentDensityMapCreateInfoEXT=^PVkRenderPassFragmentDensityMapCreateInfoEXT;
     PVkRenderPassFragmentDensityMapCreateInfoEXT=^TVkRenderPassFragmentDensityMapCreateInfoEXT;
     TVkRenderPassFragmentDensityMapCreateInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT
       pNext:PVkVoid;
       fragmentDensityMapAttachment:TVkAttachmentReference;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFragmentDensityMapAttachment:TVkAttachmentReference);
{$endif}
     end;

     PPVkSubpassFragmentDensityMapOffsetEndInfoQCOM=^PVkSubpassFragmentDensityMapOffsetEndInfoQCOM;
     PVkSubpassFragmentDensityMapOffsetEndInfoQCOM=^TVkSubpassFragmentDensityMapOffsetEndInfoQCOM;
     TVkSubpassFragmentDensityMapOffsetEndInfoQCOM=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM
       pNext:PVkVoid;
       fragmentDensityOffsetCount:TVkUInt32;
       pFragmentDensityOffsets:PVkOffset2D;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFragmentDensityOffsetCount:TVkUInt32;
                          const aPFragmentDensityOffsets:PVkOffset2D);
{$endif}
     end;

     PPVkPhysicalDeviceScalarBlockLayoutFeatures=^PVkPhysicalDeviceScalarBlockLayoutFeatures;
     PVkPhysicalDeviceScalarBlockLayoutFeatures=^TVkPhysicalDeviceScalarBlockLayoutFeatures;
     TVkPhysicalDeviceScalarBlockLayoutFeatures=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES
       pNext:PVkVoid;
       scalarBlockLayout:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aScalarBlockLayout:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceScalarBlockLayoutFeaturesEXT=^PVkPhysicalDeviceScalarBlockLayoutFeaturesEXT;
     PVkPhysicalDeviceScalarBlockLayoutFeaturesEXT=^TVkPhysicalDeviceScalarBlockLayoutFeaturesEXT;
     TVkPhysicalDeviceScalarBlockLayoutFeaturesEXT=TVkPhysicalDeviceScalarBlockLayoutFeatures;

     PPVkSurfaceProtectedCapabilitiesKHR=^PVkSurfaceProtectedCapabilitiesKHR;
     PVkSurfaceProtectedCapabilitiesKHR=^TVkSurfaceProtectedCapabilitiesKHR;
     TVkSurfaceProtectedCapabilitiesKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR
       pNext:PVkVoid;
       supportsProtected:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSupportsProtected:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceUniformBufferStandardLayoutFeatures=^PVkPhysicalDeviceUniformBufferStandardLayoutFeatures;
     PVkPhysicalDeviceUniformBufferStandardLayoutFeatures=^TVkPhysicalDeviceUniformBufferStandardLayoutFeatures;
     TVkPhysicalDeviceUniformBufferStandardLayoutFeatures=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES
       pNext:PVkVoid;
       uniformBufferStandardLayout:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aUniformBufferStandardLayout:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR=^PVkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR;
     PVkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR=^TVkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR;
     TVkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR=TVkPhysicalDeviceUniformBufferStandardLayoutFeatures;

     PPVkPhysicalDeviceDepthClipEnableFeaturesEXT=^PVkPhysicalDeviceDepthClipEnableFeaturesEXT;
     PVkPhysicalDeviceDepthClipEnableFeaturesEXT=^TVkPhysicalDeviceDepthClipEnableFeaturesEXT;
     TVkPhysicalDeviceDepthClipEnableFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT
       pNext:PVkVoid;
       depthClipEnable:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDepthClipEnable:TVkBool32);
{$endif}
     end;

     PPVkPipelineRasterizationDepthClipStateCreateInfoEXT=^PVkPipelineRasterizationDepthClipStateCreateInfoEXT;
     PVkPipelineRasterizationDepthClipStateCreateInfoEXT=^TVkPipelineRasterizationDepthClipStateCreateInfoEXT;
     TVkPipelineRasterizationDepthClipStateCreateInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT
       pNext:PVkVoid;
       flags:TVkPipelineRasterizationDepthClipStateCreateFlagsEXT;
       depthClipEnable:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkPipelineRasterizationDepthClipStateCreateFlagsEXT;
                          const aDepthClipEnable:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceMemoryBudgetPropertiesEXT=^PVkPhysicalDeviceMemoryBudgetPropertiesEXT;
     PVkPhysicalDeviceMemoryBudgetPropertiesEXT=^TVkPhysicalDeviceMemoryBudgetPropertiesEXT;
     TVkPhysicalDeviceMemoryBudgetPropertiesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT
       pNext:PVkVoid;
       heapBudget:array[0..VK_MAX_MEMORY_HEAPS-1] of TVkDeviceSize;
       heapUsage:array[0..VK_MAX_MEMORY_HEAPS-1] of TVkDeviceSize;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aHeapBudget:array of TVkDeviceSize;
                          const aHeapUsage:array of TVkDeviceSize);
{$endif}
     end;

     PPVkPhysicalDeviceMemoryPriorityFeaturesEXT=^PVkPhysicalDeviceMemoryPriorityFeaturesEXT;
     PVkPhysicalDeviceMemoryPriorityFeaturesEXT=^TVkPhysicalDeviceMemoryPriorityFeaturesEXT;
     TVkPhysicalDeviceMemoryPriorityFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT
       pNext:PVkVoid;
       memoryPriority:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMemoryPriority:TVkBool32);
{$endif}
     end;

     PPVkMemoryPriorityAllocateInfoEXT=^PVkMemoryPriorityAllocateInfoEXT;
     PVkMemoryPriorityAllocateInfoEXT=^TVkMemoryPriorityAllocateInfoEXT;
     TVkMemoryPriorityAllocateInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT
       pNext:PVkVoid;
       priority:TVkFloat;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPriority:TVkFloat);
{$endif}
     end;

     PPVkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT=^PVkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT;
     PVkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT=^TVkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT;
     TVkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT
       pNext:PVkVoid;
       pageableDeviceLocalMemory:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPageableDeviceLocalMemory:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceBufferDeviceAddressFeatures=^PVkPhysicalDeviceBufferDeviceAddressFeatures;
     PVkPhysicalDeviceBufferDeviceAddressFeatures=^TVkPhysicalDeviceBufferDeviceAddressFeatures;
     TVkPhysicalDeviceBufferDeviceAddressFeatures=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES
       pNext:PVkVoid;
       bufferDeviceAddress:TVkBool32;
       bufferDeviceAddressCaptureReplay:TVkBool32;
       bufferDeviceAddressMultiDevice:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aBufferDeviceAddress:TVkBool32;
                          const aBufferDeviceAddressCaptureReplay:TVkBool32;
                          const aBufferDeviceAddressMultiDevice:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceBufferDeviceAddressFeaturesKHR=^PVkPhysicalDeviceBufferDeviceAddressFeaturesKHR;
     PVkPhysicalDeviceBufferDeviceAddressFeaturesKHR=^TVkPhysicalDeviceBufferDeviceAddressFeaturesKHR;
     TVkPhysicalDeviceBufferDeviceAddressFeaturesKHR=TVkPhysicalDeviceBufferDeviceAddressFeatures;

     PPVkPhysicalDeviceBufferDeviceAddressFeaturesEXT=^PVkPhysicalDeviceBufferDeviceAddressFeaturesEXT;
     PVkPhysicalDeviceBufferDeviceAddressFeaturesEXT=^TVkPhysicalDeviceBufferDeviceAddressFeaturesEXT;
     TVkPhysicalDeviceBufferDeviceAddressFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT
       pNext:PVkVoid;
       bufferDeviceAddress:TVkBool32;
       bufferDeviceAddressCaptureReplay:TVkBool32;
       bufferDeviceAddressMultiDevice:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aBufferDeviceAddress:TVkBool32;
                          const aBufferDeviceAddressCaptureReplay:TVkBool32;
                          const aBufferDeviceAddressMultiDevice:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceBufferAddressFeaturesEXT=^PVkPhysicalDeviceBufferAddressFeaturesEXT;
     PVkPhysicalDeviceBufferAddressFeaturesEXT=^TVkPhysicalDeviceBufferAddressFeaturesEXT;
     TVkPhysicalDeviceBufferAddressFeaturesEXT=TVkPhysicalDeviceBufferDeviceAddressFeaturesEXT;

     PPVkBufferDeviceAddressInfo=^PVkBufferDeviceAddressInfo;
     PVkBufferDeviceAddressInfo=^TVkBufferDeviceAddressInfo;
     TVkBufferDeviceAddressInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO
       pNext:PVkVoid;
       buffer:TVkBuffer;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aBuffer:TVkBuffer);
{$endif}
     end;

     PPVkBufferDeviceAddressInfoKHR=^PVkBufferDeviceAddressInfoKHR;
     PVkBufferDeviceAddressInfoKHR=^TVkBufferDeviceAddressInfoKHR;
     TVkBufferDeviceAddressInfoKHR=TVkBufferDeviceAddressInfo;

     PPVkBufferDeviceAddressInfoEXT=^PVkBufferDeviceAddressInfoEXT;
     PVkBufferDeviceAddressInfoEXT=^TVkBufferDeviceAddressInfoEXT;
     TVkBufferDeviceAddressInfoEXT=TVkBufferDeviceAddressInfo;

     PPVkBufferOpaqueCaptureAddressCreateInfo=^PVkBufferOpaqueCaptureAddressCreateInfo;
     PVkBufferOpaqueCaptureAddressCreateInfo=^TVkBufferOpaqueCaptureAddressCreateInfo;
     TVkBufferOpaqueCaptureAddressCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO
       pNext:PVkVoid;
       opaqueCaptureAddress:TVkUInt64;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aOpaqueCaptureAddress:TVkUInt64);
{$endif}
     end;

     PPVkBufferOpaqueCaptureAddressCreateInfoKHR=^PVkBufferOpaqueCaptureAddressCreateInfoKHR;
     PVkBufferOpaqueCaptureAddressCreateInfoKHR=^TVkBufferOpaqueCaptureAddressCreateInfoKHR;
     TVkBufferOpaqueCaptureAddressCreateInfoKHR=TVkBufferOpaqueCaptureAddressCreateInfo;

     PPVkBufferDeviceAddressCreateInfoEXT=^PVkBufferDeviceAddressCreateInfoEXT;
     PVkBufferDeviceAddressCreateInfoEXT=^TVkBufferDeviceAddressCreateInfoEXT;
     TVkBufferDeviceAddressCreateInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT
       pNext:PVkVoid;
       deviceAddress:TVkDeviceAddress;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDeviceAddress:TVkDeviceAddress);
{$endif}
     end;

     PPVkPhysicalDeviceImageViewImageFormatInfoEXT=^PVkPhysicalDeviceImageViewImageFormatInfoEXT;
     PVkPhysicalDeviceImageViewImageFormatInfoEXT=^TVkPhysicalDeviceImageViewImageFormatInfoEXT;
     TVkPhysicalDeviceImageViewImageFormatInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT
       pNext:PVkVoid;
       imageViewType:TVkImageViewType;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aImageViewType:TVkImageViewType);
{$endif}
     end;

     PPVkFilterCubicImageViewImageFormatPropertiesEXT=^PVkFilterCubicImageViewImageFormatPropertiesEXT;
     PVkFilterCubicImageViewImageFormatPropertiesEXT=^TVkFilterCubicImageViewImageFormatPropertiesEXT;
     TVkFilterCubicImageViewImageFormatPropertiesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT
       pNext:PVkVoid;
       filterCubic:TVkBool32;
       filterCubicMinmax:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFilterCubic:TVkBool32;
                          const aFilterCubicMinmax:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceImagelessFramebufferFeatures=^PVkPhysicalDeviceImagelessFramebufferFeatures;
     PVkPhysicalDeviceImagelessFramebufferFeatures=^TVkPhysicalDeviceImagelessFramebufferFeatures;
     TVkPhysicalDeviceImagelessFramebufferFeatures=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES
       pNext:PVkVoid;
       imagelessFramebuffer:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aImagelessFramebuffer:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceImagelessFramebufferFeaturesKHR=^PVkPhysicalDeviceImagelessFramebufferFeaturesKHR;
     PVkPhysicalDeviceImagelessFramebufferFeaturesKHR=^TVkPhysicalDeviceImagelessFramebufferFeaturesKHR;
     TVkPhysicalDeviceImagelessFramebufferFeaturesKHR=TVkPhysicalDeviceImagelessFramebufferFeatures;

     PPVkFramebufferAttachmentImageInfo=^PVkFramebufferAttachmentImageInfo;
     PVkFramebufferAttachmentImageInfo=^TVkFramebufferAttachmentImageInfo;
     TVkFramebufferAttachmentImageInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO
       pNext:PVkVoid;
       flags:TVkImageCreateFlags;
       usage:TVkImageUsageFlags;
       width:TVkUInt32;
       height:TVkUInt32;
       layerCount:TVkUInt32;
       viewFormatCount:TVkUInt32;
       pViewFormats:PVkFormat;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkImageCreateFlags;
                          const aUsage:TVkImageUsageFlags;
                          const aWidth:TVkUInt32;
                          const aHeight:TVkUInt32;
                          const aLayerCount:TVkUInt32;
                          const aViewFormatCount:TVkUInt32;
                          const aPViewFormats:PVkFormat);
{$endif}
     end;

     PPVkFramebufferAttachmentsCreateInfo=^PVkFramebufferAttachmentsCreateInfo;
     PVkFramebufferAttachmentsCreateInfo=^TVkFramebufferAttachmentsCreateInfo;
     TVkFramebufferAttachmentsCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO
       pNext:PVkVoid;
       attachmentImageInfoCount:TVkUInt32;
       pAttachmentImageInfos:PVkFramebufferAttachmentImageInfo;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aAttachmentImageInfoCount:TVkUInt32;
                          const aPAttachmentImageInfos:PVkFramebufferAttachmentImageInfo);
{$endif}
     end;

     PPVkFramebufferAttachmentsCreateInfoKHR=^PVkFramebufferAttachmentsCreateInfoKHR;
     PVkFramebufferAttachmentsCreateInfoKHR=^TVkFramebufferAttachmentsCreateInfoKHR;
     TVkFramebufferAttachmentsCreateInfoKHR=TVkFramebufferAttachmentsCreateInfo;

     PPVkFramebufferAttachmentImageInfoKHR=^PVkFramebufferAttachmentImageInfoKHR;
     PVkFramebufferAttachmentImageInfoKHR=^TVkFramebufferAttachmentImageInfoKHR;
     TVkFramebufferAttachmentImageInfoKHR=TVkFramebufferAttachmentImageInfo;

     PPVkRenderPassAttachmentBeginInfo=^PVkRenderPassAttachmentBeginInfo;
     PVkRenderPassAttachmentBeginInfo=^TVkRenderPassAttachmentBeginInfo;
     TVkRenderPassAttachmentBeginInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO
       pNext:PVkVoid;
       attachmentCount:TVkUInt32;
       pAttachments:PVkImageView;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aAttachmentCount:TVkUInt32;
                          const aPAttachments:PVkImageView);
{$endif}
     end;

     PPVkRenderPassAttachmentBeginInfoKHR=^PVkRenderPassAttachmentBeginInfoKHR;
     PVkRenderPassAttachmentBeginInfoKHR=^TVkRenderPassAttachmentBeginInfoKHR;
     TVkRenderPassAttachmentBeginInfoKHR=TVkRenderPassAttachmentBeginInfo;

     PPVkPhysicalDeviceTextureCompressionASTCHDRFeatures=^PVkPhysicalDeviceTextureCompressionASTCHDRFeatures;
     PVkPhysicalDeviceTextureCompressionASTCHDRFeatures=^TVkPhysicalDeviceTextureCompressionASTCHDRFeatures;
     TVkPhysicalDeviceTextureCompressionASTCHDRFeatures=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES
       pNext:PVkVoid;
       textureCompressionASTC_HDR:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aTextureCompressionASTC_HDR:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT=^PVkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT;
     PVkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT=^TVkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT;
     TVkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT=TVkPhysicalDeviceTextureCompressionASTCHDRFeatures;

     PPVkPhysicalDeviceCooperativeMatrixFeaturesNV=^PVkPhysicalDeviceCooperativeMatrixFeaturesNV;
     PVkPhysicalDeviceCooperativeMatrixFeaturesNV=^TVkPhysicalDeviceCooperativeMatrixFeaturesNV;
     TVkPhysicalDeviceCooperativeMatrixFeaturesNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV
       pNext:PVkVoid;
       cooperativeMatrix:TVkBool32;
       cooperativeMatrixRobustBufferAccess:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aCooperativeMatrix:TVkBool32;
                          const aCooperativeMatrixRobustBufferAccess:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceCooperativeMatrixPropertiesNV=^PVkPhysicalDeviceCooperativeMatrixPropertiesNV;
     PVkPhysicalDeviceCooperativeMatrixPropertiesNV=^TVkPhysicalDeviceCooperativeMatrixPropertiesNV;
     TVkPhysicalDeviceCooperativeMatrixPropertiesNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV
       pNext:PVkVoid;
       cooperativeMatrixSupportedStages:TVkShaderStageFlags;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aCooperativeMatrixSupportedStages:TVkShaderStageFlags);
{$endif}
     end;

     PPVkCooperativeMatrixPropertiesNV=^PVkCooperativeMatrixPropertiesNV;
     PVkCooperativeMatrixPropertiesNV=^TVkCooperativeMatrixPropertiesNV;
     TVkCooperativeMatrixPropertiesNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV
       pNext:PVkVoid;
       MSize:TVkUInt32;
       NSize:TVkUInt32;
       KSize:TVkUInt32;
       AType:TVkComponentTypeNV;
       BType:TVkComponentTypeNV;
       CType:TVkComponentTypeNV;
       DType:TVkComponentTypeNV;
       scope:TVkScopeNV;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMSize:TVkUInt32;
                          const aNSize:TVkUInt32;
                          const aKSize:TVkUInt32;
                          const aAType:TVkComponentTypeNV;
                          const aBType:TVkComponentTypeNV;
                          const aCType:TVkComponentTypeNV;
                          const aDType:TVkComponentTypeNV;
                          const aScope:TVkScopeNV);
{$endif}
     end;

     PPVkPhysicalDeviceYcbcrImageArraysFeaturesEXT=^PVkPhysicalDeviceYcbcrImageArraysFeaturesEXT;
     PVkPhysicalDeviceYcbcrImageArraysFeaturesEXT=^TVkPhysicalDeviceYcbcrImageArraysFeaturesEXT;
     TVkPhysicalDeviceYcbcrImageArraysFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT
       pNext:PVkVoid;
       ycbcrImageArrays:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aYcbcrImageArrays:TVkBool32);
{$endif}
     end;

     PPVkImageViewHandleInfoNVX=^PVkImageViewHandleInfoNVX;
     PVkImageViewHandleInfoNVX=^TVkImageViewHandleInfoNVX;
     TVkImageViewHandleInfoNVX=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX
       pNext:PVkVoid;
       imageView:TVkImageView;
       descriptorType:TVkDescriptorType;
       sampler:TVkSampler;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aImageView:TVkImageView;
                          const aDescriptorType:TVkDescriptorType;
                          const aSampler:TVkSampler);
{$endif}
     end;

     PPVkImageViewAddressPropertiesNVX=^PVkImageViewAddressPropertiesNVX;
     PVkImageViewAddressPropertiesNVX=^TVkImageViewAddressPropertiesNVX;
     TVkImageViewAddressPropertiesNVX=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX
       pNext:PVkVoid;
       deviceAddress:TVkDeviceAddress;
       size:TVkDeviceSize;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDeviceAddress:TVkDeviceAddress;
                          const aSize:TVkDeviceSize);
{$endif}
     end;

     PPVkPresentFrameTokenGGP=^PVkPresentFrameTokenGGP;
     PVkPresentFrameTokenGGP=^TVkPresentFrameTokenGGP;
     TVkPresentFrameTokenGGP=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP
       pNext:PVkVoid;
       frameToken:TVkGgpFrameToken;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFrameToken:TVkGgpFrameToken);
{$endif}
     end;

     PPVkPipelineCreationFeedback=^PVkPipelineCreationFeedback;
     PVkPipelineCreationFeedback=^TVkPipelineCreationFeedback;
     TVkPipelineCreationFeedback=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       flags:TVkPipelineCreationFeedbackFlags;
       duration:TVkUInt64;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkPipelineCreationFeedbackFlags;
                          const aDuration:TVkUInt64);
{$endif}
     end;

     PPVkPipelineCreationFeedbackEXT=^PVkPipelineCreationFeedbackEXT;
     PVkPipelineCreationFeedbackEXT=^TVkPipelineCreationFeedbackEXT;
     TVkPipelineCreationFeedbackEXT=TVkPipelineCreationFeedback;

     PPVkPipelineCreationFeedbackCreateInfo=^PVkPipelineCreationFeedbackCreateInfo;
     PVkPipelineCreationFeedbackCreateInfo=^TVkPipelineCreationFeedbackCreateInfo;
     TVkPipelineCreationFeedbackCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO
       pNext:PVkVoid;
       pPipelineCreationFeedback:PVkPipelineCreationFeedback;
       pipelineStageCreationFeedbackCount:TVkUInt32;
       pPipelineStageCreationFeedbacks:PPVkPipelineCreationFeedback;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPPipelineCreationFeedback:PVkPipelineCreationFeedback;
                          const aPipelineStageCreationFeedbackCount:TVkUInt32;
                          const aPPipelineStageCreationFeedbacks:PPVkPipelineCreationFeedback);
{$endif}
     end;

     PPVkPipelineCreationFeedbackCreateInfoEXT=^PVkPipelineCreationFeedbackCreateInfoEXT;
     PVkPipelineCreationFeedbackCreateInfoEXT=^TVkPipelineCreationFeedbackCreateInfoEXT;
     TVkPipelineCreationFeedbackCreateInfoEXT=TVkPipelineCreationFeedbackCreateInfo;

     PPVkSurfaceFullScreenExclusiveInfoEXT=^PVkSurfaceFullScreenExclusiveInfoEXT;
     PVkSurfaceFullScreenExclusiveInfoEXT=^TVkSurfaceFullScreenExclusiveInfoEXT;
     TVkSurfaceFullScreenExclusiveInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT
       pNext:PVkVoid;
       fullScreenExclusive:TVkFullScreenExclusiveEXT;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFullScreenExclusive:TVkFullScreenExclusiveEXT);
{$endif}
     end;

{$ifdef Windows}
     PPVkSurfaceFullScreenExclusiveWin32InfoEXT=^PVkSurfaceFullScreenExclusiveWin32InfoEXT;
     PVkSurfaceFullScreenExclusiveWin32InfoEXT=^TVkSurfaceFullScreenExclusiveWin32InfoEXT;
     TVkSurfaceFullScreenExclusiveWin32InfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT
       pNext:PVkVoid;
       hmonitor_:TVkHMONITOR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aHmonitor_:TVkHMONITOR);
{$endif}
     end;
{$endif}

     PPVkSurfaceCapabilitiesFullScreenExclusiveEXT=^PVkSurfaceCapabilitiesFullScreenExclusiveEXT;
     PVkSurfaceCapabilitiesFullScreenExclusiveEXT=^TVkSurfaceCapabilitiesFullScreenExclusiveEXT;
     TVkSurfaceCapabilitiesFullScreenExclusiveEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT
       pNext:PVkVoid;
       fullScreenExclusiveSupported:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFullScreenExclusiveSupported:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDevicePresentBarrierFeaturesNV=^PVkPhysicalDevicePresentBarrierFeaturesNV;
     PVkPhysicalDevicePresentBarrierFeaturesNV=^TVkPhysicalDevicePresentBarrierFeaturesNV;
     TVkPhysicalDevicePresentBarrierFeaturesNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_BARRIER_FEATURES_NV
       pNext:PVkVoid;
       presentBarrier:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPresentBarrier:TVkBool32);
{$endif}
     end;

     PPVkSurfaceCapabilitiesPresentBarrierNV=^PVkSurfaceCapabilitiesPresentBarrierNV;
     PVkSurfaceCapabilitiesPresentBarrierNV=^TVkSurfaceCapabilitiesPresentBarrierNV;
     TVkSurfaceCapabilitiesPresentBarrierNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_BARRIER_NV
       pNext:PVkVoid;
       presentBarrierSupported:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPresentBarrierSupported:TVkBool32);
{$endif}
     end;

     PPVkSwapchainPresentBarrierCreateInfoNV=^PVkSwapchainPresentBarrierCreateInfoNV;
     PVkSwapchainPresentBarrierCreateInfoNV=^TVkSwapchainPresentBarrierCreateInfoNV;
     TVkSwapchainPresentBarrierCreateInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV
       pNext:PVkVoid;
       presentBarrierEnable:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPresentBarrierEnable:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDevicePerformanceQueryFeaturesKHR=^PVkPhysicalDevicePerformanceQueryFeaturesKHR;
     PVkPhysicalDevicePerformanceQueryFeaturesKHR=^TVkPhysicalDevicePerformanceQueryFeaturesKHR;
     TVkPhysicalDevicePerformanceQueryFeaturesKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR
       pNext:PVkVoid;
       performanceCounterQueryPools:TVkBool32;
       performanceCounterMultipleQueryPools:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPerformanceCounterQueryPools:TVkBool32;
                          const aPerformanceCounterMultipleQueryPools:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDevicePerformanceQueryPropertiesKHR=^PVkPhysicalDevicePerformanceQueryPropertiesKHR;
     PVkPhysicalDevicePerformanceQueryPropertiesKHR=^TVkPhysicalDevicePerformanceQueryPropertiesKHR;
     TVkPhysicalDevicePerformanceQueryPropertiesKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR
       pNext:PVkVoid;
       allowCommandBufferQueryCopies:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aAllowCommandBufferQueryCopies:TVkBool32);
{$endif}
     end;

     PPVkPerformanceCounterKHR=^PVkPerformanceCounterKHR;
     PVkPerformanceCounterKHR=^TVkPerformanceCounterKHR;
     TVkPerformanceCounterKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR
       pNext:PVkVoid;
       unit_:TVkPerformanceCounterUnitKHR;
       scope:TVkPerformanceCounterScopeKHR;
       storage:TVkPerformanceCounterStorageKHR;
       uuid:array[0..VK_UUID_SIZE-1] of TVkUInt8;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aUnit_:TVkPerformanceCounterUnitKHR;
                          const aScope:TVkPerformanceCounterScopeKHR;
                          const aStorage:TVkPerformanceCounterStorageKHR;
                          const aUuid:array of TVkUInt8);
{$endif}
     end;

     PPVkPerformanceCounterDescriptionKHR=^PVkPerformanceCounterDescriptionKHR;
     PVkPerformanceCounterDescriptionKHR=^TVkPerformanceCounterDescriptionKHR;
     TVkPerformanceCounterDescriptionKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR
       pNext:PVkVoid;
       flags:TVkPerformanceCounterDescriptionFlagsKHR;
       name:array[0..VK_MAX_DESCRIPTION_SIZE-1] of TVkChar;
       category:array[0..VK_MAX_DESCRIPTION_SIZE-1] of TVkChar;
       description:array[0..VK_MAX_DESCRIPTION_SIZE-1] of TVkChar;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkPerformanceCounterDescriptionFlagsKHR;
                          const aName:TVkCharString;
                          const aCategory:TVkCharString;
                          const aDescription:TVkCharString);
{$endif}
     end;

     PPVkQueryPoolPerformanceCreateInfoKHR=^PVkQueryPoolPerformanceCreateInfoKHR;
     PVkQueryPoolPerformanceCreateInfoKHR=^TVkQueryPoolPerformanceCreateInfoKHR;
     TVkQueryPoolPerformanceCreateInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR
       pNext:PVkVoid;
       queueFamilyIndex:TVkUInt32;
       counterIndexCount:TVkUInt32;
       pCounterIndices:PVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aQueueFamilyIndex:TVkUInt32;
                          const aCounterIndexCount:TVkUInt32;
                          const aPCounterIndices:PVkUInt32);
{$endif}
     end;

     PPVkPerformanceCounterResultKHR=^PVkPerformanceCounterResultKHR;
     PVkPerformanceCounterResultKHR=^TVkPerformanceCounterResultKHR;
     TVkPerformanceCounterResultKHR=record
      case longint of
       0:(
        int32:TVkInt32;
       );
       1:(
        int64:TVkInt64;
       );
       2:(
        uint32:TVkUInt32;
       );
       3:(
        uint64:TVkUInt64;
       );
       4:(
        float32:TVkFloat;
       );
       5:(
        float64:TVkDouble;
       );
     end;

     PPVkAcquireProfilingLockInfoKHR=^PVkAcquireProfilingLockInfoKHR;
     PVkAcquireProfilingLockInfoKHR=^TVkAcquireProfilingLockInfoKHR;
     TVkAcquireProfilingLockInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR
       pNext:PVkVoid;
       flags:TVkAcquireProfilingLockFlagsKHR;
       timeout:TVkUInt64;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkAcquireProfilingLockFlagsKHR;
                          const aTimeout:TVkUInt64);
{$endif}
     end;

     PPVkPerformanceQuerySubmitInfoKHR=^PVkPerformanceQuerySubmitInfoKHR;
     PVkPerformanceQuerySubmitInfoKHR=^TVkPerformanceQuerySubmitInfoKHR;
     TVkPerformanceQuerySubmitInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR
       pNext:PVkVoid;
       counterPassIndex:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aCounterPassIndex:TVkUInt32);
{$endif}
     end;

{$ifdef VulkanSC}
     PPVkPerformanceQueryReservationInfoKHR=^PVkPerformanceQueryReservationInfoKHR;
     PVkPerformanceQueryReservationInfoKHR=^TVkPerformanceQueryReservationInfoKHR;
     TVkPerformanceQueryReservationInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_RESERVATION_INFO_KHR
       pNext:PVkVoid;
       maxPerformanceQueriesPerPool:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMaxPerformanceQueriesPerPool:TVkUInt32);
{$endif}
     end;
{$endif}

     PPVkHeadlessSurfaceCreateInfoEXT=^PVkHeadlessSurfaceCreateInfoEXT;
     PVkHeadlessSurfaceCreateInfoEXT=^TVkHeadlessSurfaceCreateInfoEXT;
     TVkHeadlessSurfaceCreateInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT
       pNext:PVkVoid;
       flags:TVkHeadlessSurfaceCreateFlagsEXT;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkHeadlessSurfaceCreateFlagsEXT);
{$endif}
     end;

     PPVkPhysicalDeviceCoverageReductionModeFeaturesNV=^PVkPhysicalDeviceCoverageReductionModeFeaturesNV;
     PVkPhysicalDeviceCoverageReductionModeFeaturesNV=^TVkPhysicalDeviceCoverageReductionModeFeaturesNV;
     TVkPhysicalDeviceCoverageReductionModeFeaturesNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV
       pNext:PVkVoid;
       coverageReductionMode:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aCoverageReductionMode:TVkBool32);
{$endif}
     end;

     PPVkPipelineCoverageReductionStateCreateInfoNV=^PVkPipelineCoverageReductionStateCreateInfoNV;
     PVkPipelineCoverageReductionStateCreateInfoNV=^TVkPipelineCoverageReductionStateCreateInfoNV;
     TVkPipelineCoverageReductionStateCreateInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV
       pNext:PVkVoid;
       flags:TVkPipelineCoverageReductionStateCreateFlagsNV;
       coverageReductionMode:TVkCoverageReductionModeNV;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkPipelineCoverageReductionStateCreateFlagsNV;
                          const aCoverageReductionMode:TVkCoverageReductionModeNV);
{$endif}
     end;

     PPVkFramebufferMixedSamplesCombinationNV=^PVkFramebufferMixedSamplesCombinationNV;
     PVkFramebufferMixedSamplesCombinationNV=^TVkFramebufferMixedSamplesCombinationNV;
     TVkFramebufferMixedSamplesCombinationNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV
       pNext:PVkVoid;
       coverageReductionMode:TVkCoverageReductionModeNV;
       rasterizationSamples:TVkSampleCountFlagBits;
       depthStencilSamples:TVkSampleCountFlags;
       colorSamples:TVkSampleCountFlags;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aCoverageReductionMode:TVkCoverageReductionModeNV;
                          const aRasterizationSamples:TVkSampleCountFlagBits;
                          const aDepthStencilSamples:TVkSampleCountFlags;
                          const aColorSamples:TVkSampleCountFlags);
{$endif}
     end;

     PPVkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL=^PVkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL;
     PVkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL=^TVkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL;
     TVkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL
       pNext:PVkVoid;
       shaderIntegerFunctions2:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aShaderIntegerFunctions2:TVkBool32);
{$endif}
     end;

     PPVkPerformanceValueDataINTEL=^PVkPerformanceValueDataINTEL;
     PVkPerformanceValueDataINTEL=^TVkPerformanceValueDataINTEL;
     TVkPerformanceValueDataINTEL=record
      case longint of
       0:(
        value32:TVkUInt32;
       );
       1:(
        value64:TVkUInt64;
       );
       2:(
        valueFloat:TVkFloat;
       );
       3:(
        valueBool:TVkBool32;
       );
       4:(
        valueString:PVkChar;
       );
     end;

     PPVkPerformanceValueINTEL=^PVkPerformanceValueINTEL;
     PVkPerformanceValueINTEL=^TVkPerformanceValueINTEL;
     TVkPerformanceValueINTEL=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       type_:TVkPerformanceValueTypeINTEL;
       data:TVkPerformanceValueDataINTEL;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aType_:TVkPerformanceValueTypeINTEL;
                          const aData:TVkPerformanceValueDataINTEL);
{$endif}
     end;

     PPVkInitializePerformanceApiInfoINTEL=^PVkInitializePerformanceApiInfoINTEL;
     PVkInitializePerformanceApiInfoINTEL=^TVkInitializePerformanceApiInfoINTEL;
     TVkInitializePerformanceApiInfoINTEL=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL
       pNext:PVkVoid;
       pUserData:PVkVoid;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPUserData:PVkVoid);
{$endif}
     end;

     PPVkQueryPoolPerformanceQueryCreateInfoINTEL=^PVkQueryPoolPerformanceQueryCreateInfoINTEL;
     PVkQueryPoolPerformanceQueryCreateInfoINTEL=^TVkQueryPoolPerformanceQueryCreateInfoINTEL;
     TVkQueryPoolPerformanceQueryCreateInfoINTEL=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL
       pNext:PVkVoid;
       performanceCountersSampling:TVkQueryPoolSamplingModeINTEL;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPerformanceCountersSampling:TVkQueryPoolSamplingModeINTEL);
{$endif}
     end;

     PPVkQueryPoolCreateInfoINTEL=^PVkQueryPoolCreateInfoINTEL;
     PVkQueryPoolCreateInfoINTEL=^TVkQueryPoolCreateInfoINTEL;
     TVkQueryPoolCreateInfoINTEL=TVkQueryPoolPerformanceQueryCreateInfoINTEL;

     PPVkPerformanceMarkerInfoINTEL=^PVkPerformanceMarkerInfoINTEL;
     PVkPerformanceMarkerInfoINTEL=^TVkPerformanceMarkerInfoINTEL;
     TVkPerformanceMarkerInfoINTEL=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL
       pNext:PVkVoid;
       marker:TVkUInt64;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMarker:TVkUInt64);
{$endif}
     end;

     PPVkPerformanceStreamMarkerInfoINTEL=^PVkPerformanceStreamMarkerInfoINTEL;
     PVkPerformanceStreamMarkerInfoINTEL=^TVkPerformanceStreamMarkerInfoINTEL;
     TVkPerformanceStreamMarkerInfoINTEL=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL
       pNext:PVkVoid;
       marker:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMarker:TVkUInt32);
{$endif}
     end;

     PPVkPerformanceOverrideInfoINTEL=^PVkPerformanceOverrideInfoINTEL;
     PVkPerformanceOverrideInfoINTEL=^TVkPerformanceOverrideInfoINTEL;
     TVkPerformanceOverrideInfoINTEL=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL
       pNext:PVkVoid;
       type_:TVkPerformanceOverrideTypeINTEL;
       enable:TVkBool32;
       parameter:TVkUInt64;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aType_:TVkPerformanceOverrideTypeINTEL;
                          const aEnable:TVkBool32;
                          const aParameter:TVkUInt64);
{$endif}
     end;

     PPVkPerformanceConfigurationAcquireInfoINTEL=^PVkPerformanceConfigurationAcquireInfoINTEL;
     PVkPerformanceConfigurationAcquireInfoINTEL=^TVkPerformanceConfigurationAcquireInfoINTEL;
     TVkPerformanceConfigurationAcquireInfoINTEL=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL
       pNext:PVkVoid;
       type_:TVkPerformanceConfigurationTypeINTEL;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aType_:TVkPerformanceConfigurationTypeINTEL);
{$endif}
     end;

     PPVkPhysicalDeviceShaderClockFeaturesKHR=^PVkPhysicalDeviceShaderClockFeaturesKHR;
     PVkPhysicalDeviceShaderClockFeaturesKHR=^TVkPhysicalDeviceShaderClockFeaturesKHR;
     TVkPhysicalDeviceShaderClockFeaturesKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR
       pNext:PVkVoid;
       shaderSubgroupClock:TVkBool32;
       shaderDeviceClock:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aShaderSubgroupClock:TVkBool32;
                          const aShaderDeviceClock:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceIndexTypeUint8FeaturesEXT=^PVkPhysicalDeviceIndexTypeUint8FeaturesEXT;
     PVkPhysicalDeviceIndexTypeUint8FeaturesEXT=^TVkPhysicalDeviceIndexTypeUint8FeaturesEXT;
     TVkPhysicalDeviceIndexTypeUint8FeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT
       pNext:PVkVoid;
       indexTypeUint8:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aIndexTypeUint8:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceShaderSMBuiltinsPropertiesNV=^PVkPhysicalDeviceShaderSMBuiltinsPropertiesNV;
     PVkPhysicalDeviceShaderSMBuiltinsPropertiesNV=^TVkPhysicalDeviceShaderSMBuiltinsPropertiesNV;
     TVkPhysicalDeviceShaderSMBuiltinsPropertiesNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV
       pNext:PVkVoid;
       shaderSMCount:TVkUInt32;
       shaderWarpsPerSM:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aShaderSMCount:TVkUInt32;
                          const aShaderWarpsPerSM:TVkUInt32);
{$endif}
     end;

     PPVkPhysicalDeviceShaderSMBuiltinsFeaturesNV=^PVkPhysicalDeviceShaderSMBuiltinsFeaturesNV;
     PVkPhysicalDeviceShaderSMBuiltinsFeaturesNV=^TVkPhysicalDeviceShaderSMBuiltinsFeaturesNV;
     TVkPhysicalDeviceShaderSMBuiltinsFeaturesNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV
       pNext:PVkVoid;
       shaderSMBuiltins:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aShaderSMBuiltins:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceFragmentShaderInterlockFeaturesEXT=^PVkPhysicalDeviceFragmentShaderInterlockFeaturesEXT;
     PVkPhysicalDeviceFragmentShaderInterlockFeaturesEXT=^TVkPhysicalDeviceFragmentShaderInterlockFeaturesEXT;
     TVkPhysicalDeviceFragmentShaderInterlockFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT
       pNext:PVkVoid;
       fragmentShaderSampleInterlock:TVkBool32;
       fragmentShaderPixelInterlock:TVkBool32;
       fragmentShaderShadingRateInterlock:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFragmentShaderSampleInterlock:TVkBool32;
                          const aFragmentShaderPixelInterlock:TVkBool32;
                          const aFragmentShaderShadingRateInterlock:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceSeparateDepthStencilLayoutsFeatures=^PVkPhysicalDeviceSeparateDepthStencilLayoutsFeatures;
     PVkPhysicalDeviceSeparateDepthStencilLayoutsFeatures=^TVkPhysicalDeviceSeparateDepthStencilLayoutsFeatures;
     TVkPhysicalDeviceSeparateDepthStencilLayoutsFeatures=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES
       pNext:PVkVoid;
       separateDepthStencilLayouts:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSeparateDepthStencilLayouts:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR=^PVkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR;
     PVkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR=^TVkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR;
     TVkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR=TVkPhysicalDeviceSeparateDepthStencilLayoutsFeatures;

     PPVkAttachmentReferenceStencilLayout=^PVkAttachmentReferenceStencilLayout;
     PVkAttachmentReferenceStencilLayout=^TVkAttachmentReferenceStencilLayout;
     TVkAttachmentReferenceStencilLayout=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT
       pNext:PVkVoid;
       stencilLayout:TVkImageLayout;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aStencilLayout:TVkImageLayout);
{$endif}
     end;

     PPVkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT=^PVkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT;
     PVkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT=^TVkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT;
     TVkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT
       pNext:PVkVoid;
       primitiveTopologyListRestart:TVkBool32;
       primitiveTopologyPatchListRestart:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPrimitiveTopologyListRestart:TVkBool32;
                          const aPrimitiveTopologyPatchListRestart:TVkBool32);
{$endif}
     end;

     PPVkAttachmentReferenceStencilLayoutKHR=^PVkAttachmentReferenceStencilLayoutKHR;
     PVkAttachmentReferenceStencilLayoutKHR=^TVkAttachmentReferenceStencilLayoutKHR;
     TVkAttachmentReferenceStencilLayoutKHR=TVkAttachmentReferenceStencilLayout;

     PPVkAttachmentDescriptionStencilLayout=^PVkAttachmentDescriptionStencilLayout;
     PVkAttachmentDescriptionStencilLayout=^TVkAttachmentDescriptionStencilLayout;
     TVkAttachmentDescriptionStencilLayout=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT
       pNext:PVkVoid;
       stencilInitialLayout:TVkImageLayout;
       stencilFinalLayout:TVkImageLayout;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aStencilInitialLayout:TVkImageLayout;
                          const aStencilFinalLayout:TVkImageLayout);
{$endif}
     end;

     PPVkAttachmentDescriptionStencilLayoutKHR=^PVkAttachmentDescriptionStencilLayoutKHR;
     PVkAttachmentDescriptionStencilLayoutKHR=^TVkAttachmentDescriptionStencilLayoutKHR;
     TVkAttachmentDescriptionStencilLayoutKHR=TVkAttachmentDescriptionStencilLayout;

     PPVkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR=^PVkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR;
     PVkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR=^TVkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR;
     TVkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR
       pNext:PVkVoid;
       pipelineExecutableInfo:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPipelineExecutableInfo:TVkBool32);
{$endif}
     end;

     PPVkPipelineInfoKHR=^PVkPipelineInfoKHR;
     PVkPipelineInfoKHR=^TVkPipelineInfoKHR;
     TVkPipelineInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR
       pNext:PVkVoid;
       pipeline:TVkPipeline;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPipeline:TVkPipeline);
{$endif}
     end;

     PPVkPipelineInfoEXT=^PVkPipelineInfoEXT;
     PVkPipelineInfoEXT=^TVkPipelineInfoEXT;
     TVkPipelineInfoEXT=TVkPipelineInfoKHR;

     PPVkPipelineExecutablePropertiesKHR=^PVkPipelineExecutablePropertiesKHR;
     PVkPipelineExecutablePropertiesKHR=^TVkPipelineExecutablePropertiesKHR;
     TVkPipelineExecutablePropertiesKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR
       pNext:PVkVoid;
       stages:TVkShaderStageFlags;
       name:array[0..VK_MAX_DESCRIPTION_SIZE-1] of TVkChar;
       description:array[0..VK_MAX_DESCRIPTION_SIZE-1] of TVkChar;
       subgroupSize:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aStages:TVkShaderStageFlags;
                          const aName:TVkCharString;
                          const aDescription:TVkCharString;
                          const aSubgroupSize:TVkUInt32);
{$endif}
     end;

     PPVkPipelineExecutableInfoKHR=^PVkPipelineExecutableInfoKHR;
     PVkPipelineExecutableInfoKHR=^TVkPipelineExecutableInfoKHR;
     TVkPipelineExecutableInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR
       pNext:PVkVoid;
       pipeline:TVkPipeline;
       executableIndex:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPipeline:TVkPipeline;
                          const aExecutableIndex:TVkUInt32);
{$endif}
     end;

     PPVkPipelineExecutableStatisticValueKHR=^PVkPipelineExecutableStatisticValueKHR;
     PVkPipelineExecutableStatisticValueKHR=^TVkPipelineExecutableStatisticValueKHR;
     TVkPipelineExecutableStatisticValueKHR=record
      case longint of
       0:(
        b32:TVkBool32;
       );
       1:(
        i64:TVkInt64;
       );
       2:(
        u64:TVkUInt64;
       );
       3:(
        f64:TVkDouble;
       );
     end;

     PPVkPipelineExecutableStatisticKHR=^PVkPipelineExecutableStatisticKHR;
     PVkPipelineExecutableStatisticKHR=^TVkPipelineExecutableStatisticKHR;
     TVkPipelineExecutableStatisticKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR
       pNext:PVkVoid;
       name:array[0..VK_MAX_DESCRIPTION_SIZE-1] of TVkChar;
       description:array[0..VK_MAX_DESCRIPTION_SIZE-1] of TVkChar;
       format:TVkPipelineExecutableStatisticFormatKHR;
       value:TVkPipelineExecutableStatisticValueKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aName:TVkCharString;
                          const aDescription:TVkCharString;
                          const aFormat:TVkPipelineExecutableStatisticFormatKHR;
                          const aValue:TVkPipelineExecutableStatisticValueKHR);
{$endif}
     end;

     PPVkPipelineExecutableInternalRepresentationKHR=^PVkPipelineExecutableInternalRepresentationKHR;
     PVkPipelineExecutableInternalRepresentationKHR=^TVkPipelineExecutableInternalRepresentationKHR;
     TVkPipelineExecutableInternalRepresentationKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR
       pNext:PVkVoid;
       name:array[0..VK_MAX_DESCRIPTION_SIZE-1] of TVkChar;
       description:array[0..VK_MAX_DESCRIPTION_SIZE-1] of TVkChar;
       isText:TVkBool32;
       dataSize:TVkSize;
       pData:PVkVoid;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aName:TVkCharString;
                          const aDescription:TVkCharString;
                          const aIsText:TVkBool32;
                          const aDataSize:TVkSize;
                          const aPData:PVkVoid);
{$endif}
     end;

     PPVkPhysicalDeviceShaderDemoteToHelperInvocationFeatures=^PVkPhysicalDeviceShaderDemoteToHelperInvocationFeatures;
     PVkPhysicalDeviceShaderDemoteToHelperInvocationFeatures=^TVkPhysicalDeviceShaderDemoteToHelperInvocationFeatures;
     TVkPhysicalDeviceShaderDemoteToHelperInvocationFeatures=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES
       pNext:PVkVoid;
       shaderDemoteToHelperInvocation:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aShaderDemoteToHelperInvocation:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT=^PVkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT;
     PVkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT=^TVkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT;
     TVkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT=TVkPhysicalDeviceShaderDemoteToHelperInvocationFeatures;

     PPVkPhysicalDeviceTexelBufferAlignmentFeaturesEXT=^PVkPhysicalDeviceTexelBufferAlignmentFeaturesEXT;
     PVkPhysicalDeviceTexelBufferAlignmentFeaturesEXT=^TVkPhysicalDeviceTexelBufferAlignmentFeaturesEXT;
     TVkPhysicalDeviceTexelBufferAlignmentFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT
       pNext:PVkVoid;
       texelBufferAlignment:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aTexelBufferAlignment:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceTexelBufferAlignmentProperties=^PVkPhysicalDeviceTexelBufferAlignmentProperties;
     PVkPhysicalDeviceTexelBufferAlignmentProperties=^TVkPhysicalDeviceTexelBufferAlignmentProperties;
     TVkPhysicalDeviceTexelBufferAlignmentProperties=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES
       pNext:PVkVoid;
       storageTexelBufferOffsetAlignmentBytes:TVkDeviceSize;
       storageTexelBufferOffsetSingleTexelAlignment:TVkBool32;
       uniformTexelBufferOffsetAlignmentBytes:TVkDeviceSize;
       uniformTexelBufferOffsetSingleTexelAlignment:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aStorageTexelBufferOffsetAlignmentBytes:TVkDeviceSize;
                          const aStorageTexelBufferOffsetSingleTexelAlignment:TVkBool32;
                          const aUniformTexelBufferOffsetAlignmentBytes:TVkDeviceSize;
                          const aUniformTexelBufferOffsetSingleTexelAlignment:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceTexelBufferAlignmentPropertiesEXT=^PVkPhysicalDeviceTexelBufferAlignmentPropertiesEXT;
     PVkPhysicalDeviceTexelBufferAlignmentPropertiesEXT=^TVkPhysicalDeviceTexelBufferAlignmentPropertiesEXT;
     TVkPhysicalDeviceTexelBufferAlignmentPropertiesEXT=TVkPhysicalDeviceTexelBufferAlignmentProperties;

     PPVkPhysicalDeviceSubgroupSizeControlFeatures=^PVkPhysicalDeviceSubgroupSizeControlFeatures;
     PVkPhysicalDeviceSubgroupSizeControlFeatures=^TVkPhysicalDeviceSubgroupSizeControlFeatures;
     TVkPhysicalDeviceSubgroupSizeControlFeatures=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES
       pNext:PVkVoid;
       subgroupSizeControl:TVkBool32;
       computeFullSubgroups:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSubgroupSizeControl:TVkBool32;
                          const aComputeFullSubgroups:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceSubgroupSizeControlFeaturesEXT=^PVkPhysicalDeviceSubgroupSizeControlFeaturesEXT;
     PVkPhysicalDeviceSubgroupSizeControlFeaturesEXT=^TVkPhysicalDeviceSubgroupSizeControlFeaturesEXT;
     TVkPhysicalDeviceSubgroupSizeControlFeaturesEXT=TVkPhysicalDeviceSubgroupSizeControlFeatures;

     PPVkPhysicalDeviceSubgroupSizeControlProperties=^PVkPhysicalDeviceSubgroupSizeControlProperties;
     PVkPhysicalDeviceSubgroupSizeControlProperties=^TVkPhysicalDeviceSubgroupSizeControlProperties;
     TVkPhysicalDeviceSubgroupSizeControlProperties=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES
       pNext:PVkVoid;
       minSubgroupSize:TVkUInt32;
       maxSubgroupSize:TVkUInt32;
       maxComputeWorkgroupSubgroups:TVkUInt32;
       requiredSubgroupSizeStages:TVkShaderStageFlags;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMinSubgroupSize:TVkUInt32;
                          const aMaxSubgroupSize:TVkUInt32;
                          const aMaxComputeWorkgroupSubgroups:TVkUInt32;
                          const aRequiredSubgroupSizeStages:TVkShaderStageFlags);
{$endif}
     end;

     PPVkPhysicalDeviceSubgroupSizeControlPropertiesEXT=^PVkPhysicalDeviceSubgroupSizeControlPropertiesEXT;
     PVkPhysicalDeviceSubgroupSizeControlPropertiesEXT=^TVkPhysicalDeviceSubgroupSizeControlPropertiesEXT;
     TVkPhysicalDeviceSubgroupSizeControlPropertiesEXT=TVkPhysicalDeviceSubgroupSizeControlProperties;

     PPVkPipelineShaderStageRequiredSubgroupSizeCreateInfo=^PVkPipelineShaderStageRequiredSubgroupSizeCreateInfo;
     PVkPipelineShaderStageRequiredSubgroupSizeCreateInfo=^TVkPipelineShaderStageRequiredSubgroupSizeCreateInfo;
     TVkPipelineShaderStageRequiredSubgroupSizeCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO
       pNext:PVkVoid;
       requiredSubgroupSize:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aRequiredSubgroupSize:TVkUInt32);
{$endif}
     end;

     PPVkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT=^PVkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT;
     PVkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT=^TVkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT;
     TVkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT=TVkPipelineShaderStageRequiredSubgroupSizeCreateInfo;

     PPVkShaderRequiredSubgroupSizeCreateInfoEXT=^PVkShaderRequiredSubgroupSizeCreateInfoEXT;
     PVkShaderRequiredSubgroupSizeCreateInfoEXT=^TVkShaderRequiredSubgroupSizeCreateInfoEXT;
     TVkShaderRequiredSubgroupSizeCreateInfoEXT=TVkPipelineShaderStageRequiredSubgroupSizeCreateInfo;

     PPVkSubpassShadingPipelineCreateInfoHUAWEI=^PVkSubpassShadingPipelineCreateInfoHUAWEI;
     PVkSubpassShadingPipelineCreateInfoHUAWEI=^TVkSubpassShadingPipelineCreateInfoHUAWEI;
     TVkSubpassShadingPipelineCreateInfoHUAWEI=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI
       pNext:PVkVoid;
       renderPass:TVkRenderPass;
       subpass:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aRenderPass:TVkRenderPass;
                          const aSubpass:TVkUInt32);
{$endif}
     end;

     PPVkPhysicalDeviceSubpassShadingPropertiesHUAWEI=^PVkPhysicalDeviceSubpassShadingPropertiesHUAWEI;
     PVkPhysicalDeviceSubpassShadingPropertiesHUAWEI=^TVkPhysicalDeviceSubpassShadingPropertiesHUAWEI;
     TVkPhysicalDeviceSubpassShadingPropertiesHUAWEI=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI
       pNext:PVkVoid;
       maxSubpassShadingWorkgroupSizeAspectRatio:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMaxSubpassShadingWorkgroupSizeAspectRatio:TVkUInt32);
{$endif}
     end;

     PPVkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI=^PVkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI;
     PVkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI=^TVkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI;
     TVkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI
       pNext:PVkVoid;
       maxWorkGroupCount:array[0..2] of TVkUInt32;
       maxWorkGroupSize:array[0..2] of TVkUInt32;
       maxOutputClusterCount:TVkUInt32;
       indirectBufferOffsetAlignment:TVkDeviceSize;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMaxWorkGroupCount:array of TVkUInt32;
                          const aMaxWorkGroupSize:array of TVkUInt32;
                          const aMaxOutputClusterCount:TVkUInt32;
                          const aIndirectBufferOffsetAlignment:TVkDeviceSize);
{$endif}
     end;

     PPVkMemoryOpaqueCaptureAddressAllocateInfo=^PVkMemoryOpaqueCaptureAddressAllocateInfo;
     PVkMemoryOpaqueCaptureAddressAllocateInfo=^TVkMemoryOpaqueCaptureAddressAllocateInfo;
     TVkMemoryOpaqueCaptureAddressAllocateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO
       pNext:PVkVoid;
       opaqueCaptureAddress:TVkUInt64;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aOpaqueCaptureAddress:TVkUInt64);
{$endif}
     end;

     PPVkMemoryOpaqueCaptureAddressAllocateInfoKHR=^PVkMemoryOpaqueCaptureAddressAllocateInfoKHR;
     PVkMemoryOpaqueCaptureAddressAllocateInfoKHR=^TVkMemoryOpaqueCaptureAddressAllocateInfoKHR;
     TVkMemoryOpaqueCaptureAddressAllocateInfoKHR=TVkMemoryOpaqueCaptureAddressAllocateInfo;

     PPVkDeviceMemoryOpaqueCaptureAddressInfo=^PVkDeviceMemoryOpaqueCaptureAddressInfo;
     PVkDeviceMemoryOpaqueCaptureAddressInfo=^TVkDeviceMemoryOpaqueCaptureAddressInfo;
     TVkDeviceMemoryOpaqueCaptureAddressInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO
       pNext:PVkVoid;
       memory:TVkDeviceMemory;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMemory:TVkDeviceMemory);
{$endif}
     end;

     PPVkDeviceMemoryOpaqueCaptureAddressInfoKHR=^PVkDeviceMemoryOpaqueCaptureAddressInfoKHR;
     PVkDeviceMemoryOpaqueCaptureAddressInfoKHR=^TVkDeviceMemoryOpaqueCaptureAddressInfoKHR;
     TVkDeviceMemoryOpaqueCaptureAddressInfoKHR=TVkDeviceMemoryOpaqueCaptureAddressInfo;

     PPVkPhysicalDeviceLineRasterizationFeaturesEXT=^PVkPhysicalDeviceLineRasterizationFeaturesEXT;
     PVkPhysicalDeviceLineRasterizationFeaturesEXT=^TVkPhysicalDeviceLineRasterizationFeaturesEXT;
     TVkPhysicalDeviceLineRasterizationFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT
       pNext:PVkVoid;
       rectangularLines:TVkBool32;
       bresenhamLines:TVkBool32;
       smoothLines:TVkBool32;
       stippledRectangularLines:TVkBool32;
       stippledBresenhamLines:TVkBool32;
       stippledSmoothLines:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aRectangularLines:TVkBool32;
                          const aBresenhamLines:TVkBool32;
                          const aSmoothLines:TVkBool32;
                          const aStippledRectangularLines:TVkBool32;
                          const aStippledBresenhamLines:TVkBool32;
                          const aStippledSmoothLines:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceLineRasterizationPropertiesEXT=^PVkPhysicalDeviceLineRasterizationPropertiesEXT;
     PVkPhysicalDeviceLineRasterizationPropertiesEXT=^TVkPhysicalDeviceLineRasterizationPropertiesEXT;
     TVkPhysicalDeviceLineRasterizationPropertiesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT
       pNext:PVkVoid;
       lineSubPixelPrecisionBits:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aLineSubPixelPrecisionBits:TVkUInt32);
{$endif}
     end;

     PPVkPipelineRasterizationLineStateCreateInfoEXT=^PVkPipelineRasterizationLineStateCreateInfoEXT;
     PVkPipelineRasterizationLineStateCreateInfoEXT=^TVkPipelineRasterizationLineStateCreateInfoEXT;
     TVkPipelineRasterizationLineStateCreateInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT
       pNext:PVkVoid;
       lineRasterizationMode:TVkLineRasterizationModeEXT;
       stippledLineEnable:TVkBool32;
       lineStippleFactor:TVkUInt32;
       lineStipplePattern:TVkUInt16;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aLineRasterizationMode:TVkLineRasterizationModeEXT;
                          const aStippledLineEnable:TVkBool32;
                          const aLineStippleFactor:TVkUInt32;
                          const aLineStipplePattern:TVkUInt16);
{$endif}
     end;

     PPVkPhysicalDevicePipelineCreationCacheControlFeatures=^PVkPhysicalDevicePipelineCreationCacheControlFeatures;
     PVkPhysicalDevicePipelineCreationCacheControlFeatures=^TVkPhysicalDevicePipelineCreationCacheControlFeatures;
     TVkPhysicalDevicePipelineCreationCacheControlFeatures=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES
       pNext:PVkVoid;
       pipelineCreationCacheControl:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPipelineCreationCacheControl:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDevicePipelineCreationCacheControlFeaturesEXT=^PVkPhysicalDevicePipelineCreationCacheControlFeaturesEXT;
     PVkPhysicalDevicePipelineCreationCacheControlFeaturesEXT=^TVkPhysicalDevicePipelineCreationCacheControlFeaturesEXT;
     TVkPhysicalDevicePipelineCreationCacheControlFeaturesEXT=TVkPhysicalDevicePipelineCreationCacheControlFeatures;

     PPVkPhysicalDeviceVulkan11Features=^PVkPhysicalDeviceVulkan11Features;
     PVkPhysicalDeviceVulkan11Features=^TVkPhysicalDeviceVulkan11Features;
     TVkPhysicalDeviceVulkan11Features=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES
       pNext:PVkVoid;
       storageBuffer16BitAccess:TVkBool32;
       uniformAndStorageBuffer16BitAccess:TVkBool32;
       storagePushConstant16:TVkBool32;
       storageInputOutput16:TVkBool32;
       multiview:TVkBool32;
       multiviewGeometryShader:TVkBool32;
       multiviewTessellationShader:TVkBool32;
       variablePointersStorageBuffer:TVkBool32;
       variablePointers:TVkBool32;
       protectedMemory:TVkBool32;
       samplerYcbcrConversion:TVkBool32;
       shaderDrawParameters:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aStorageBuffer16BitAccess:TVkBool32;
                          const aUniformAndStorageBuffer16BitAccess:TVkBool32;
                          const aStoragePushConstant16:TVkBool32;
                          const aStorageInputOutput16:TVkBool32;
                          const aMultiview:TVkBool32;
                          const aMultiviewGeometryShader:TVkBool32;
                          const aMultiviewTessellationShader:TVkBool32;
                          const aVariablePointersStorageBuffer:TVkBool32;
                          const aVariablePointers:TVkBool32;
                          const aProtectedMemory:TVkBool32;
                          const aSamplerYcbcrConversion:TVkBool32;
                          const aShaderDrawParameters:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceVulkan11Properties=^PVkPhysicalDeviceVulkan11Properties;
     PVkPhysicalDeviceVulkan11Properties=^TVkPhysicalDeviceVulkan11Properties;
     TVkPhysicalDeviceVulkan11Properties=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES
       pNext:PVkVoid;
       deviceUUID:array[0..VK_UUID_SIZE-1] of TVkUInt8;
       driverUUID:array[0..VK_UUID_SIZE-1] of TVkUInt8;
       deviceLUID:array[0..VK_LUID_SIZE-1] of TVkUInt8;
       deviceNodeMask:TVkUInt32;
       deviceLUIDValid:TVkBool32;
       subgroupSize:TVkUInt32;
       subgroupSupportedStages:TVkShaderStageFlags;
       subgroupSupportedOperations:TVkSubgroupFeatureFlags;
       subgroupQuadOperationsInAllStages:TVkBool32;
       pointClippingBehavior:TVkPointClippingBehavior;
       maxMultiviewViewCount:TVkUInt32;
       maxMultiviewInstanceIndex:TVkUInt32;
       protectedNoFault:TVkBool32;
       maxPerSetDescriptors:TVkUInt32;
       maxMemoryAllocationSize:TVkDeviceSize;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDeviceUUID:array of TVkUInt8;
                          const aDriverUUID:array of TVkUInt8;
                          const aDeviceLUID:array of TVkUInt8;
                          const aDeviceNodeMask:TVkUInt32;
                          const aDeviceLUIDValid:TVkBool32;
                          const aSubgroupSize:TVkUInt32;
                          const aSubgroupSupportedStages:TVkShaderStageFlags;
                          const aSubgroupSupportedOperations:TVkSubgroupFeatureFlags;
                          const aSubgroupQuadOperationsInAllStages:TVkBool32;
                          const aPointClippingBehavior:TVkPointClippingBehavior;
                          const aMaxMultiviewViewCount:TVkUInt32;
                          const aMaxMultiviewInstanceIndex:TVkUInt32;
                          const aProtectedNoFault:TVkBool32;
                          const aMaxPerSetDescriptors:TVkUInt32;
                          const aMaxMemoryAllocationSize:TVkDeviceSize);
{$endif}
     end;

     PPVkPhysicalDeviceVulkan12Features=^PVkPhysicalDeviceVulkan12Features;
     PVkPhysicalDeviceVulkan12Features=^TVkPhysicalDeviceVulkan12Features;
     TVkPhysicalDeviceVulkan12Features=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES
       pNext:PVkVoid;
       samplerMirrorClampToEdge:TVkBool32;
       drawIndirectCount:TVkBool32;
       storageBuffer8BitAccess:TVkBool32;
       uniformAndStorageBuffer8BitAccess:TVkBool32;
       storagePushConstant8:TVkBool32;
       shaderBufferInt64Atomics:TVkBool32;
       shaderSharedInt64Atomics:TVkBool32;
       shaderFloat16:TVkBool32;
       shaderInt8:TVkBool32;
       descriptorIndexing:TVkBool32;
       shaderInputAttachmentArrayDynamicIndexing:TVkBool32;
       shaderUniformTexelBufferArrayDynamicIndexing:TVkBool32;
       shaderStorageTexelBufferArrayDynamicIndexing:TVkBool32;
       shaderUniformBufferArrayNonUniformIndexing:TVkBool32;
       shaderSampledImageArrayNonUniformIndexing:TVkBool32;
       shaderStorageBufferArrayNonUniformIndexing:TVkBool32;
       shaderStorageImageArrayNonUniformIndexing:TVkBool32;
       shaderInputAttachmentArrayNonUniformIndexing:TVkBool32;
       shaderUniformTexelBufferArrayNonUniformIndexing:TVkBool32;
       shaderStorageTexelBufferArrayNonUniformIndexing:TVkBool32;
       descriptorBindingUniformBufferUpdateAfterBind:TVkBool32;
       descriptorBindingSampledImageUpdateAfterBind:TVkBool32;
       descriptorBindingStorageImageUpdateAfterBind:TVkBool32;
       descriptorBindingStorageBufferUpdateAfterBind:TVkBool32;
       descriptorBindingUniformTexelBufferUpdateAfterBind:TVkBool32;
       descriptorBindingStorageTexelBufferUpdateAfterBind:TVkBool32;
       descriptorBindingUpdateUnusedWhilePending:TVkBool32;
       descriptorBindingPartiallyBound:TVkBool32;
       descriptorBindingVariableDescriptorCount:TVkBool32;
       runtimeDescriptorArray:TVkBool32;
       samplerFilterMinmax:TVkBool32;
       scalarBlockLayout:TVkBool32;
       imagelessFramebuffer:TVkBool32;
       uniformBufferStandardLayout:TVkBool32;
       shaderSubgroupExtendedTypes:TVkBool32;
       separateDepthStencilLayouts:TVkBool32;
       hostQueryReset:TVkBool32;
       timelineSemaphore:TVkBool32;
       bufferDeviceAddress:TVkBool32;
       bufferDeviceAddressCaptureReplay:TVkBool32;
       bufferDeviceAddressMultiDevice:TVkBool32;
       vulkanMemoryModel:TVkBool32;
       vulkanMemoryModelDeviceScope:TVkBool32;
       vulkanMemoryModelAvailabilityVisibilityChains:TVkBool32;
       shaderOutputViewportIndex:TVkBool32;
       shaderOutputLayer:TVkBool32;
       subgroupBroadcastDynamicId:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSamplerMirrorClampToEdge:TVkBool32;
                          const aDrawIndirectCount:TVkBool32;
                          const aStorageBuffer8BitAccess:TVkBool32;
                          const aUniformAndStorageBuffer8BitAccess:TVkBool32;
                          const aStoragePushConstant8:TVkBool32;
                          const aShaderBufferInt64Atomics:TVkBool32;
                          const aShaderSharedInt64Atomics:TVkBool32;
                          const aShaderFloat16:TVkBool32;
                          const aShaderInt8:TVkBool32;
                          const aDescriptorIndexing:TVkBool32;
                          const aShaderInputAttachmentArrayDynamicIndexing:TVkBool32;
                          const aShaderUniformTexelBufferArrayDynamicIndexing:TVkBool32;
                          const aShaderStorageTexelBufferArrayDynamicIndexing:TVkBool32;
                          const aShaderUniformBufferArrayNonUniformIndexing:TVkBool32;
                          const aShaderSampledImageArrayNonUniformIndexing:TVkBool32;
                          const aShaderStorageBufferArrayNonUniformIndexing:TVkBool32;
                          const aShaderStorageImageArrayNonUniformIndexing:TVkBool32;
                          const aShaderInputAttachmentArrayNonUniformIndexing:TVkBool32;
                          const aShaderUniformTexelBufferArrayNonUniformIndexing:TVkBool32;
                          const aShaderStorageTexelBufferArrayNonUniformIndexing:TVkBool32;
                          const aDescriptorBindingUniformBufferUpdateAfterBind:TVkBool32;
                          const aDescriptorBindingSampledImageUpdateAfterBind:TVkBool32;
                          const aDescriptorBindingStorageImageUpdateAfterBind:TVkBool32;
                          const aDescriptorBindingStorageBufferUpdateAfterBind:TVkBool32;
                          const aDescriptorBindingUniformTexelBufferUpdateAfterBind:TVkBool32;
                          const aDescriptorBindingStorageTexelBufferUpdateAfterBind:TVkBool32;
                          const aDescriptorBindingUpdateUnusedWhilePending:TVkBool32;
                          const aDescriptorBindingPartiallyBound:TVkBool32;
                          const aDescriptorBindingVariableDescriptorCount:TVkBool32;
                          const aRuntimeDescriptorArray:TVkBool32;
                          const aSamplerFilterMinmax:TVkBool32;
                          const aScalarBlockLayout:TVkBool32;
                          const aImagelessFramebuffer:TVkBool32;
                          const aUniformBufferStandardLayout:TVkBool32;
                          const aShaderSubgroupExtendedTypes:TVkBool32;
                          const aSeparateDepthStencilLayouts:TVkBool32;
                          const aHostQueryReset:TVkBool32;
                          const aTimelineSemaphore:TVkBool32;
                          const aBufferDeviceAddress:TVkBool32;
                          const aBufferDeviceAddressCaptureReplay:TVkBool32;
                          const aBufferDeviceAddressMultiDevice:TVkBool32;
                          const aVulkanMemoryModel:TVkBool32;
                          const aVulkanMemoryModelDeviceScope:TVkBool32;
                          const aVulkanMemoryModelAvailabilityVisibilityChains:TVkBool32;
                          const aShaderOutputViewportIndex:TVkBool32;
                          const aShaderOutputLayer:TVkBool32;
                          const aSubgroupBroadcastDynamicId:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceVulkan12Properties=^PVkPhysicalDeviceVulkan12Properties;
     PVkPhysicalDeviceVulkan12Properties=^TVkPhysicalDeviceVulkan12Properties;
     TVkPhysicalDeviceVulkan12Properties=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES
       pNext:PVkVoid;
       driverID:TVkDriverId;
       driverName:array[0..VK_MAX_DRIVER_NAME_SIZE-1] of TVkChar;
       driverInfo:array[0..VK_MAX_DRIVER_INFO_SIZE-1] of TVkChar;
       conformanceVersion:TVkConformanceVersion;
       denormBehaviorIndependence:TVkShaderFloatControlsIndependence;
       roundingModeIndependence:TVkShaderFloatControlsIndependence;
       shaderSignedZeroInfNanPreserveFloat16:TVkBool32;
       shaderSignedZeroInfNanPreserveFloat32:TVkBool32;
       shaderSignedZeroInfNanPreserveFloat64:TVkBool32;
       shaderDenormPreserveFloat16:TVkBool32;
       shaderDenormPreserveFloat32:TVkBool32;
       shaderDenormPreserveFloat64:TVkBool32;
       shaderDenormFlushToZeroFloat16:TVkBool32;
       shaderDenormFlushToZeroFloat32:TVkBool32;
       shaderDenormFlushToZeroFloat64:TVkBool32;
       shaderRoundingModeRTEFloat16:TVkBool32;
       shaderRoundingModeRTEFloat32:TVkBool32;
       shaderRoundingModeRTEFloat64:TVkBool32;
       shaderRoundingModeRTZFloat16:TVkBool32;
       shaderRoundingModeRTZFloat32:TVkBool32;
       shaderRoundingModeRTZFloat64:TVkBool32;
       maxUpdateAfterBindDescriptorsInAllPools:TVkUInt32;
       shaderUniformBufferArrayNonUniformIndexingNative:TVkBool32;
       shaderSampledImageArrayNonUniformIndexingNative:TVkBool32;
       shaderStorageBufferArrayNonUniformIndexingNative:TVkBool32;
       shaderStorageImageArrayNonUniformIndexingNative:TVkBool32;
       shaderInputAttachmentArrayNonUniformIndexingNative:TVkBool32;
       robustBufferAccessUpdateAfterBind:TVkBool32;
       quadDivergentImplicitLod:TVkBool32;
       maxPerStageDescriptorUpdateAfterBindSamplers:TVkUInt32;
       maxPerStageDescriptorUpdateAfterBindUniformBuffers:TVkUInt32;
       maxPerStageDescriptorUpdateAfterBindStorageBuffers:TVkUInt32;
       maxPerStageDescriptorUpdateAfterBindSampledImages:TVkUInt32;
       maxPerStageDescriptorUpdateAfterBindStorageImages:TVkUInt32;
       maxPerStageDescriptorUpdateAfterBindInputAttachments:TVkUInt32;
       maxPerStageUpdateAfterBindResources:TVkUInt32;
       maxDescriptorSetUpdateAfterBindSamplers:TVkUInt32;
       maxDescriptorSetUpdateAfterBindUniformBuffers:TVkUInt32;
       maxDescriptorSetUpdateAfterBindUniformBuffersDynamic:TVkUInt32;
       maxDescriptorSetUpdateAfterBindStorageBuffers:TVkUInt32;
       maxDescriptorSetUpdateAfterBindStorageBuffersDynamic:TVkUInt32;
       maxDescriptorSetUpdateAfterBindSampledImages:TVkUInt32;
       maxDescriptorSetUpdateAfterBindStorageImages:TVkUInt32;
       maxDescriptorSetUpdateAfterBindInputAttachments:TVkUInt32;
       supportedDepthResolveModes:TVkResolveModeFlags;
       supportedStencilResolveModes:TVkResolveModeFlags;
       independentResolveNone:TVkBool32;
       independentResolve:TVkBool32;
       filterMinmaxSingleComponentFormats:TVkBool32;
       filterMinmaxImageComponentMapping:TVkBool32;
       maxTimelineSemaphoreValueDifference:TVkUInt64;
       framebufferIntegerColorSampleCounts:TVkSampleCountFlags;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDriverID:TVkDriverId;
                          const aDriverName:TVkCharString;
                          const aDriverInfo:TVkCharString;
                          const aConformanceVersion:TVkConformanceVersion;
                          const aDenormBehaviorIndependence:TVkShaderFloatControlsIndependence;
                          const aRoundingModeIndependence:TVkShaderFloatControlsIndependence;
                          const aShaderSignedZeroInfNanPreserveFloat16:TVkBool32;
                          const aShaderSignedZeroInfNanPreserveFloat32:TVkBool32;
                          const aShaderSignedZeroInfNanPreserveFloat64:TVkBool32;
                          const aShaderDenormPreserveFloat16:TVkBool32;
                          const aShaderDenormPreserveFloat32:TVkBool32;
                          const aShaderDenormPreserveFloat64:TVkBool32;
                          const aShaderDenormFlushToZeroFloat16:TVkBool32;
                          const aShaderDenormFlushToZeroFloat32:TVkBool32;
                          const aShaderDenormFlushToZeroFloat64:TVkBool32;
                          const aShaderRoundingModeRTEFloat16:TVkBool32;
                          const aShaderRoundingModeRTEFloat32:TVkBool32;
                          const aShaderRoundingModeRTEFloat64:TVkBool32;
                          const aShaderRoundingModeRTZFloat16:TVkBool32;
                          const aShaderRoundingModeRTZFloat32:TVkBool32;
                          const aShaderRoundingModeRTZFloat64:TVkBool32;
                          const aMaxUpdateAfterBindDescriptorsInAllPools:TVkUInt32;
                          const aShaderUniformBufferArrayNonUniformIndexingNative:TVkBool32;
                          const aShaderSampledImageArrayNonUniformIndexingNative:TVkBool32;
                          const aShaderStorageBufferArrayNonUniformIndexingNative:TVkBool32;
                          const aShaderStorageImageArrayNonUniformIndexingNative:TVkBool32;
                          const aShaderInputAttachmentArrayNonUniformIndexingNative:TVkBool32;
                          const aRobustBufferAccessUpdateAfterBind:TVkBool32;
                          const aQuadDivergentImplicitLod:TVkBool32;
                          const aMaxPerStageDescriptorUpdateAfterBindSamplers:TVkUInt32;
                          const aMaxPerStageDescriptorUpdateAfterBindUniformBuffers:TVkUInt32;
                          const aMaxPerStageDescriptorUpdateAfterBindStorageBuffers:TVkUInt32;
                          const aMaxPerStageDescriptorUpdateAfterBindSampledImages:TVkUInt32;
                          const aMaxPerStageDescriptorUpdateAfterBindStorageImages:TVkUInt32;
                          const aMaxPerStageDescriptorUpdateAfterBindInputAttachments:TVkUInt32;
                          const aMaxPerStageUpdateAfterBindResources:TVkUInt32;
                          const aMaxDescriptorSetUpdateAfterBindSamplers:TVkUInt32;
                          const aMaxDescriptorSetUpdateAfterBindUniformBuffers:TVkUInt32;
                          const aMaxDescriptorSetUpdateAfterBindUniformBuffersDynamic:TVkUInt32;
                          const aMaxDescriptorSetUpdateAfterBindStorageBuffers:TVkUInt32;
                          const aMaxDescriptorSetUpdateAfterBindStorageBuffersDynamic:TVkUInt32;
                          const aMaxDescriptorSetUpdateAfterBindSampledImages:TVkUInt32;
                          const aMaxDescriptorSetUpdateAfterBindStorageImages:TVkUInt32;
                          const aMaxDescriptorSetUpdateAfterBindInputAttachments:TVkUInt32;
                          const aSupportedDepthResolveModes:TVkResolveModeFlags;
                          const aSupportedStencilResolveModes:TVkResolveModeFlags;
                          const aIndependentResolveNone:TVkBool32;
                          const aIndependentResolve:TVkBool32;
                          const aFilterMinmaxSingleComponentFormats:TVkBool32;
                          const aFilterMinmaxImageComponentMapping:TVkBool32;
                          const aMaxTimelineSemaphoreValueDifference:TVkUInt64;
                          const aFramebufferIntegerColorSampleCounts:TVkSampleCountFlags);
{$endif}
     end;

     PPVkPhysicalDeviceVulkan13Features=^PVkPhysicalDeviceVulkan13Features;
     PVkPhysicalDeviceVulkan13Features=^TVkPhysicalDeviceVulkan13Features;
     TVkPhysicalDeviceVulkan13Features=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES
       pNext:PVkVoid;
       robustImageAccess:TVkBool32;
       inlineUniformBlock:TVkBool32;
       descriptorBindingInlineUniformBlockUpdateAfterBind:TVkBool32;
       pipelineCreationCacheControl:TVkBool32;
       privateData:TVkBool32;
       shaderDemoteToHelperInvocation:TVkBool32;
       shaderTerminateInvocation:TVkBool32;
       subgroupSizeControl:TVkBool32;
       computeFullSubgroups:TVkBool32;
       synchronization2:TVkBool32;
       textureCompressionASTC_HDR:TVkBool32;
       shaderZeroInitializeWorkgroupMemory:TVkBool32;
       dynamicRendering:TVkBool32;
       shaderIntegerDotProduct:TVkBool32;
       maintenance4:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aRobustImageAccess:TVkBool32;
                          const aInlineUniformBlock:TVkBool32;
                          const aDescriptorBindingInlineUniformBlockUpdateAfterBind:TVkBool32;
                          const aPipelineCreationCacheControl:TVkBool32;
                          const aPrivateData:TVkBool32;
                          const aShaderDemoteToHelperInvocation:TVkBool32;
                          const aShaderTerminateInvocation:TVkBool32;
                          const aSubgroupSizeControl:TVkBool32;
                          const aComputeFullSubgroups:TVkBool32;
                          const aSynchronization2:TVkBool32;
                          const aTextureCompressionASTC_HDR:TVkBool32;
                          const aShaderZeroInitializeWorkgroupMemory:TVkBool32;
                          const aDynamicRendering:TVkBool32;
                          const aShaderIntegerDotProduct:TVkBool32;
                          const aMaintenance4:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceVulkan13Properties=^PVkPhysicalDeviceVulkan13Properties;
     PVkPhysicalDeviceVulkan13Properties=^TVkPhysicalDeviceVulkan13Properties;
     TVkPhysicalDeviceVulkan13Properties=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES
       pNext:PVkVoid;
       minSubgroupSize:TVkUInt32;
       maxSubgroupSize:TVkUInt32;
       maxComputeWorkgroupSubgroups:TVkUInt32;
       requiredSubgroupSizeStages:TVkShaderStageFlags;
       maxInlineUniformBlockSize:TVkUInt32;
       maxPerStageDescriptorInlineUniformBlocks:TVkUInt32;
       maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks:TVkUInt32;
       maxDescriptorSetInlineUniformBlocks:TVkUInt32;
       maxDescriptorSetUpdateAfterBindInlineUniformBlocks:TVkUInt32;
       maxInlineUniformTotalSize:TVkUInt32;
       integerDotProduct8BitUnsignedAccelerated:TVkBool32;
       integerDotProduct8BitSignedAccelerated:TVkBool32;
       integerDotProduct8BitMixedSignednessAccelerated:TVkBool32;
       integerDotProduct4x8BitPackedUnsignedAccelerated:TVkBool32;
       integerDotProduct4x8BitPackedSignedAccelerated:TVkBool32;
       integerDotProduct4x8BitPackedMixedSignednessAccelerated:TVkBool32;
       integerDotProduct16BitUnsignedAccelerated:TVkBool32;
       integerDotProduct16BitSignedAccelerated:TVkBool32;
       integerDotProduct16BitMixedSignednessAccelerated:TVkBool32;
       integerDotProduct32BitUnsignedAccelerated:TVkBool32;
       integerDotProduct32BitSignedAccelerated:TVkBool32;
       integerDotProduct32BitMixedSignednessAccelerated:TVkBool32;
       integerDotProduct64BitUnsignedAccelerated:TVkBool32;
       integerDotProduct64BitSignedAccelerated:TVkBool32;
       integerDotProduct64BitMixedSignednessAccelerated:TVkBool32;
       integerDotProductAccumulatingSaturating8BitUnsignedAccelerated:TVkBool32;
       integerDotProductAccumulatingSaturating8BitSignedAccelerated:TVkBool32;
       integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated:TVkBool32;
       integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated:TVkBool32;
       integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated:TVkBool32;
       integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated:TVkBool32;
       integerDotProductAccumulatingSaturating16BitUnsignedAccelerated:TVkBool32;
       integerDotProductAccumulatingSaturating16BitSignedAccelerated:TVkBool32;
       integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated:TVkBool32;
       integerDotProductAccumulatingSaturating32BitUnsignedAccelerated:TVkBool32;
       integerDotProductAccumulatingSaturating32BitSignedAccelerated:TVkBool32;
       integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated:TVkBool32;
       integerDotProductAccumulatingSaturating64BitUnsignedAccelerated:TVkBool32;
       integerDotProductAccumulatingSaturating64BitSignedAccelerated:TVkBool32;
       integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated:TVkBool32;
       storageTexelBufferOffsetAlignmentBytes:TVkDeviceSize;
       storageTexelBufferOffsetSingleTexelAlignment:TVkBool32;
       uniformTexelBufferOffsetAlignmentBytes:TVkDeviceSize;
       uniformTexelBufferOffsetSingleTexelAlignment:TVkBool32;
       maxBufferSize:TVkDeviceSize;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMinSubgroupSize:TVkUInt32;
                          const aMaxSubgroupSize:TVkUInt32;
                          const aMaxComputeWorkgroupSubgroups:TVkUInt32;
                          const aRequiredSubgroupSizeStages:TVkShaderStageFlags;
                          const aMaxInlineUniformBlockSize:TVkUInt32;
                          const aMaxPerStageDescriptorInlineUniformBlocks:TVkUInt32;
                          const aMaxPerStageDescriptorUpdateAfterBindInlineUniformBlocks:TVkUInt32;
                          const aMaxDescriptorSetInlineUniformBlocks:TVkUInt32;
                          const aMaxDescriptorSetUpdateAfterBindInlineUniformBlocks:TVkUInt32;
                          const aMaxInlineUniformTotalSize:TVkUInt32;
                          const aIntegerDotProduct8BitUnsignedAccelerated:TVkBool32;
                          const aIntegerDotProduct8BitSignedAccelerated:TVkBool32;
                          const aIntegerDotProduct8BitMixedSignednessAccelerated:TVkBool32;
                          const aIntegerDotProduct4x8BitPackedUnsignedAccelerated:TVkBool32;
                          const aIntegerDotProduct4x8BitPackedSignedAccelerated:TVkBool32;
                          const aIntegerDotProduct4x8BitPackedMixedSignednessAccelerated:TVkBool32;
                          const aIntegerDotProduct16BitUnsignedAccelerated:TVkBool32;
                          const aIntegerDotProduct16BitSignedAccelerated:TVkBool32;
                          const aIntegerDotProduct16BitMixedSignednessAccelerated:TVkBool32;
                          const aIntegerDotProduct32BitUnsignedAccelerated:TVkBool32;
                          const aIntegerDotProduct32BitSignedAccelerated:TVkBool32;
                          const aIntegerDotProduct32BitMixedSignednessAccelerated:TVkBool32;
                          const aIntegerDotProduct64BitUnsignedAccelerated:TVkBool32;
                          const aIntegerDotProduct64BitSignedAccelerated:TVkBool32;
                          const aIntegerDotProduct64BitMixedSignednessAccelerated:TVkBool32;
                          const aIntegerDotProductAccumulatingSaturating8BitUnsignedAccelerated:TVkBool32;
                          const aIntegerDotProductAccumulatingSaturating8BitSignedAccelerated:TVkBool32;
                          const aIntegerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated:TVkBool32;
                          const aIntegerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated:TVkBool32;
                          const aIntegerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated:TVkBool32;
                          const aIntegerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated:TVkBool32;
                          const aIntegerDotProductAccumulatingSaturating16BitUnsignedAccelerated:TVkBool32;
                          const aIntegerDotProductAccumulatingSaturating16BitSignedAccelerated:TVkBool32;
                          const aIntegerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated:TVkBool32;
                          const aIntegerDotProductAccumulatingSaturating32BitUnsignedAccelerated:TVkBool32;
                          const aIntegerDotProductAccumulatingSaturating32BitSignedAccelerated:TVkBool32;
                          const aIntegerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated:TVkBool32;
                          const aIntegerDotProductAccumulatingSaturating64BitUnsignedAccelerated:TVkBool32;
                          const aIntegerDotProductAccumulatingSaturating64BitSignedAccelerated:TVkBool32;
                          const aIntegerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated:TVkBool32;
                          const aStorageTexelBufferOffsetAlignmentBytes:TVkDeviceSize;
                          const aStorageTexelBufferOffsetSingleTexelAlignment:TVkBool32;
                          const aUniformTexelBufferOffsetAlignmentBytes:TVkDeviceSize;
                          const aUniformTexelBufferOffsetSingleTexelAlignment:TVkBool32;
                          const aMaxBufferSize:TVkDeviceSize);
{$endif}
     end;

     PPVkPipelineCompilerControlCreateInfoAMD=^PVkPipelineCompilerControlCreateInfoAMD;
     PVkPipelineCompilerControlCreateInfoAMD=^TVkPipelineCompilerControlCreateInfoAMD;
     TVkPipelineCompilerControlCreateInfoAMD=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD
       pNext:PVkVoid;
       compilerControlFlags:TVkPipelineCompilerControlFlagsAMD;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aCompilerControlFlags:TVkPipelineCompilerControlFlagsAMD);
{$endif}
     end;

     PPVkPhysicalDeviceCoherentMemoryFeaturesAMD=^PVkPhysicalDeviceCoherentMemoryFeaturesAMD;
     PVkPhysicalDeviceCoherentMemoryFeaturesAMD=^TVkPhysicalDeviceCoherentMemoryFeaturesAMD;
     TVkPhysicalDeviceCoherentMemoryFeaturesAMD=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD
       pNext:PVkVoid;
       deviceCoherentMemory:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDeviceCoherentMemory:TVkBool32);
{$endif}
     end;

{$ifdef VulkanSC}
     PPPFN_vkFaultCallbackFunction=^PPFN_vkFaultCallbackFunction;
     PPFN_vkFaultCallbackFunction=^TPFN_vkFaultCallbackFunction;
     TPFN_vkFaultCallbackFunction=procedure(unrecordedFaults:TVkBool32;faultCount:TVkUInt32;const pFaults:PVkFaultData); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

{$ifdef VulkanSC}
     PPVkFaultCallbackInfo=^PVkFaultCallbackInfo;
     PVkFaultCallbackInfo=^TVkFaultCallbackInfo;
     TVkFaultCallbackInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_FAULT_CALLBACK_INFO
       pNext:PVkVoid;
       faultCount:TVkUInt32;
       pFaults:PVkFaultData;
       pfnFaultCallback:TPFN_vkFaultCallbackFunction;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFaultCount:TVkUInt32;
                          const aPFaults:PVkFaultData;
                          const aPfnFaultCallback:TPFN_vkFaultCallbackFunction);
{$endif}
     end;
{$endif}

     PPVkPhysicalDeviceToolProperties=^PVkPhysicalDeviceToolProperties;
     PVkPhysicalDeviceToolProperties=^TVkPhysicalDeviceToolProperties;
     TVkPhysicalDeviceToolProperties=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES
       pNext:PVkVoid;
       name:array[0..VK_MAX_EXTENSION_NAME_SIZE-1] of TVkChar;
       version:array[0..VK_MAX_EXTENSION_NAME_SIZE-1] of TVkChar;
       purposes:TVkToolPurposeFlags;
       description:array[0..VK_MAX_DESCRIPTION_SIZE-1] of TVkChar;
       layer:array[0..VK_MAX_EXTENSION_NAME_SIZE-1] of TVkChar;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aName:TVkCharString;
                          const aVersion:TVkCharString;
                          const aPurposes:TVkToolPurposeFlags;
                          const aDescription:TVkCharString;
                          const aLayer:TVkCharString);
{$endif}
     end;

     PPVkPhysicalDeviceToolPropertiesEXT=^PVkPhysicalDeviceToolPropertiesEXT;
     PVkPhysicalDeviceToolPropertiesEXT=^TVkPhysicalDeviceToolPropertiesEXT;
     TVkPhysicalDeviceToolPropertiesEXT=TVkPhysicalDeviceToolProperties;

     PPVkSamplerCustomBorderColorCreateInfoEXT=^PVkSamplerCustomBorderColorCreateInfoEXT;
     PVkSamplerCustomBorderColorCreateInfoEXT=^TVkSamplerCustomBorderColorCreateInfoEXT;
     TVkSamplerCustomBorderColorCreateInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT
       pNext:PVkVoid;
       customBorderColor:TVkClearColorValue;
       format:TVkFormat;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aCustomBorderColor:TVkClearColorValue;
                          const aFormat:TVkFormat);
{$endif}
     end;

     PPVkPhysicalDeviceCustomBorderColorPropertiesEXT=^PVkPhysicalDeviceCustomBorderColorPropertiesEXT;
     PVkPhysicalDeviceCustomBorderColorPropertiesEXT=^TVkPhysicalDeviceCustomBorderColorPropertiesEXT;
     TVkPhysicalDeviceCustomBorderColorPropertiesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT
       pNext:PVkVoid;
       maxCustomBorderColorSamplers:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMaxCustomBorderColorSamplers:TVkUInt32);
{$endif}
     end;

     PPVkPhysicalDeviceCustomBorderColorFeaturesEXT=^PVkPhysicalDeviceCustomBorderColorFeaturesEXT;
     PVkPhysicalDeviceCustomBorderColorFeaturesEXT=^TVkPhysicalDeviceCustomBorderColorFeaturesEXT;
     TVkPhysicalDeviceCustomBorderColorFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT
       pNext:PVkVoid;
       customBorderColors:TVkBool32;
       customBorderColorWithoutFormat:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aCustomBorderColors:TVkBool32;
                          const aCustomBorderColorWithoutFormat:TVkBool32);
{$endif}
     end;

     PPVkSamplerBorderColorComponentMappingCreateInfoEXT=^PVkSamplerBorderColorComponentMappingCreateInfoEXT;
     PVkSamplerBorderColorComponentMappingCreateInfoEXT=^TVkSamplerBorderColorComponentMappingCreateInfoEXT;
     TVkSamplerBorderColorComponentMappingCreateInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT
       pNext:PVkVoid;
       components:TVkComponentMapping;
       srgb:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aComponents:TVkComponentMapping;
                          const aSrgb:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceBorderColorSwizzleFeaturesEXT=^PVkPhysicalDeviceBorderColorSwizzleFeaturesEXT;
     PVkPhysicalDeviceBorderColorSwizzleFeaturesEXT=^TVkPhysicalDeviceBorderColorSwizzleFeaturesEXT;
     TVkPhysicalDeviceBorderColorSwizzleFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT
       pNext:PVkVoid;
       borderColorSwizzle:TVkBool32;
       borderColorSwizzleFromImage:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aBorderColorSwizzle:TVkBool32;
                          const aBorderColorSwizzleFromImage:TVkBool32);
{$endif}
     end;

     PPVkDeviceOrHostAddressKHR=^PVkDeviceOrHostAddressKHR;
     PVkDeviceOrHostAddressKHR=^TVkDeviceOrHostAddressKHR;
     TVkDeviceOrHostAddressKHR=record
      case longint of
       0:(
        deviceAddress:TVkDeviceAddress;
       );
       1:(
        hostAddress:PVkVoid;
       );
     end;

     PPVkDeviceOrHostAddressConstKHR=^PVkDeviceOrHostAddressConstKHR;
     PVkDeviceOrHostAddressConstKHR=^TVkDeviceOrHostAddressConstKHR;
     TVkDeviceOrHostAddressConstKHR=record
      case longint of
       0:(
        deviceAddress:TVkDeviceAddress;
       );
       1:(
        hostAddress:PVkVoid;
       );
     end;

     PPVkDeviceOrHostAddressConstAMDX=^PVkDeviceOrHostAddressConstAMDX;
     PVkDeviceOrHostAddressConstAMDX=^TVkDeviceOrHostAddressConstAMDX;
     TVkDeviceOrHostAddressConstAMDX=record
      case longint of
       0:(
        deviceAddress:TVkDeviceAddress;
       );
       1:(
        hostAddress:PVkVoid;
       );
     end;

     PPVkAccelerationStructureGeometryTrianglesDataKHR=^PVkAccelerationStructureGeometryTrianglesDataKHR;
     PVkAccelerationStructureGeometryTrianglesDataKHR=^TVkAccelerationStructureGeometryTrianglesDataKHR;
     TVkAccelerationStructureGeometryTrianglesDataKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR
       pNext:PVkVoid;
       vertexFormat:TVkFormat;
       vertexData:TVkDeviceOrHostAddressConstKHR;
       vertexStride:TVkDeviceSize;
       maxVertex:TVkUInt32;
       indexType:TVkIndexType;
       indexData:TVkDeviceOrHostAddressConstKHR;
       transformData:TVkDeviceOrHostAddressConstKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aVertexFormat:TVkFormat;
                          const aVertexData:TVkDeviceOrHostAddressConstKHR;
                          const aVertexStride:TVkDeviceSize;
                          const aMaxVertex:TVkUInt32;
                          const aIndexType:TVkIndexType;
                          const aIndexData:TVkDeviceOrHostAddressConstKHR;
                          const aTransformData:TVkDeviceOrHostAddressConstKHR);
{$endif}
     end;

     PPVkAccelerationStructureGeometryAabbsDataKHR=^PVkAccelerationStructureGeometryAabbsDataKHR;
     PVkAccelerationStructureGeometryAabbsDataKHR=^TVkAccelerationStructureGeometryAabbsDataKHR;
     TVkAccelerationStructureGeometryAabbsDataKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR
       pNext:PVkVoid;
       data:TVkDeviceOrHostAddressConstKHR;
       stride:TVkDeviceSize;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aData:TVkDeviceOrHostAddressConstKHR;
                          const aStride:TVkDeviceSize);
{$endif}
     end;

     PPVkAccelerationStructureGeometryInstancesDataKHR=^PVkAccelerationStructureGeometryInstancesDataKHR;
     PVkAccelerationStructureGeometryInstancesDataKHR=^TVkAccelerationStructureGeometryInstancesDataKHR;
     TVkAccelerationStructureGeometryInstancesDataKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR
       pNext:PVkVoid;
       arrayOfPointers:TVkBool32;
       data:TVkDeviceOrHostAddressConstKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aArrayOfPointers:TVkBool32;
                          const aData:TVkDeviceOrHostAddressConstKHR);
{$endif}
     end;

     PPVkAccelerationStructureGeometryDataKHR=^PVkAccelerationStructureGeometryDataKHR;
     PVkAccelerationStructureGeometryDataKHR=^TVkAccelerationStructureGeometryDataKHR;
     TVkAccelerationStructureGeometryDataKHR=record
      case longint of
       0:(
        triangles:TVkAccelerationStructureGeometryTrianglesDataKHR;
       );
       1:(
        aabbs:TVkAccelerationStructureGeometryAabbsDataKHR;
       );
       2:(
        instances:TVkAccelerationStructureGeometryInstancesDataKHR;
       );
     end;

     PPVkAccelerationStructureGeometryKHR=^PVkAccelerationStructureGeometryKHR;
     PVkAccelerationStructureGeometryKHR=^TVkAccelerationStructureGeometryKHR;
     TVkAccelerationStructureGeometryKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR
       pNext:PVkVoid;
       geometryType:TVkGeometryTypeKHR;
       geometry:TVkAccelerationStructureGeometryDataKHR;
       flags:TVkGeometryFlagsKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aGeometryType:TVkGeometryTypeKHR;
                          const aGeometry:TVkAccelerationStructureGeometryDataKHR;
                          const aFlags:TVkGeometryFlagsKHR);
{$endif}
     end;

     PPVkAccelerationStructureBuildGeometryInfoKHR=^PVkAccelerationStructureBuildGeometryInfoKHR;
     PVkAccelerationStructureBuildGeometryInfoKHR=^TVkAccelerationStructureBuildGeometryInfoKHR;
     TVkAccelerationStructureBuildGeometryInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR
       pNext:PVkVoid;
       type_:TVkAccelerationStructureTypeKHR;
       flags:TVkBuildAccelerationStructureFlagsKHR;
       mode:TVkBuildAccelerationStructureModeKHR;
       srcAccelerationStructure:TVkAccelerationStructureKHR;
       dstAccelerationStructure:TVkAccelerationStructureKHR;
       geometryCount:TVkUInt32;
       pGeometries:PVkAccelerationStructureGeometryKHR;
       ppGeometries:PPVkAccelerationStructureGeometryKHR;
       scratchData:TVkDeviceOrHostAddressKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aType_:TVkAccelerationStructureTypeKHR;
                          const aFlags:TVkBuildAccelerationStructureFlagsKHR;
                          const aMode:TVkBuildAccelerationStructureModeKHR;
                          const aSrcAccelerationStructure:TVkAccelerationStructureKHR;
                          const aDstAccelerationStructure:TVkAccelerationStructureKHR;
                          const aGeometryCount:TVkUInt32;
                          const aPGeometries:PVkAccelerationStructureGeometryKHR;
                          const aPpGeometries:PPVkAccelerationStructureGeometryKHR;
                          const aScratchData:TVkDeviceOrHostAddressKHR);
{$endif}
     end;

     PPVkAccelerationStructureBuildRangeInfoKHR=^PVkAccelerationStructureBuildRangeInfoKHR;
     PVkAccelerationStructureBuildRangeInfoKHR=^TVkAccelerationStructureBuildRangeInfoKHR;
     TVkAccelerationStructureBuildRangeInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       primitiveCount:TVkUInt32;
       primitiveOffset:TVkUInt32;
       firstVertex:TVkUInt32;
       transformOffset:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPrimitiveCount:TVkUInt32;
                          const aPrimitiveOffset:TVkUInt32;
                          const aFirstVertex:TVkUInt32;
                          const aTransformOffset:TVkUInt32);
{$endif}
     end;

     PPVkAccelerationStructureCreateInfoKHR=^PVkAccelerationStructureCreateInfoKHR;
     PVkAccelerationStructureCreateInfoKHR=^TVkAccelerationStructureCreateInfoKHR;
     TVkAccelerationStructureCreateInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR
       pNext:PVkVoid;
       createFlags:TVkAccelerationStructureCreateFlagsKHR;
       buffer:TVkBuffer;
       offset:TVkDeviceSize;
       size:TVkDeviceSize;
       type_:TVkAccelerationStructureTypeKHR;
       deviceAddress:TVkDeviceAddress;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aCreateFlags:TVkAccelerationStructureCreateFlagsKHR;
                          const aBuffer:TVkBuffer;
                          const aOffset:TVkDeviceSize;
                          const aSize:TVkDeviceSize;
                          const aType_:TVkAccelerationStructureTypeKHR;
                          const aDeviceAddress:TVkDeviceAddress);
{$endif}
     end;

     PPVkAabbPositionsKHR=^PVkAabbPositionsKHR;
     PVkAabbPositionsKHR=^TVkAabbPositionsKHR;
     TVkAabbPositionsKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       minX:TVkFloat;
       minY:TVkFloat;
       minZ:TVkFloat;
       maxX:TVkFloat;
       maxY:TVkFloat;
       maxZ:TVkFloat;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMinX:TVkFloat;
                          const aMinY:TVkFloat;
                          const aMinZ:TVkFloat;
                          const aMaxX:TVkFloat;
                          const aMaxY:TVkFloat;
                          const aMaxZ:TVkFloat);
{$endif}
     end;

     PPVkAabbPositionsNV=^PVkAabbPositionsNV;
     PVkAabbPositionsNV=^TVkAabbPositionsNV;
     TVkAabbPositionsNV=TVkAabbPositionsKHR;

     PPVkTransformMatrixKHR=^PVkTransformMatrixKHR;
     PVkTransformMatrixKHR=^TVkTransformMatrixKHR;
     TVkTransformMatrixKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       matrix:array[0..2,0..3] of TVkFloat;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMatrix:array of TVkFloat);
{$endif}
     end;

     PPVkTransformMatrixNV=^PVkTransformMatrixNV;
     PVkTransformMatrixNV=^TVkTransformMatrixNV;
     TVkTransformMatrixNV=TVkTransformMatrixKHR;

     PPVkAccelerationStructureInstanceKHR=^PVkAccelerationStructureInstanceKHR;
     PVkAccelerationStructureInstanceKHR=^TVkAccelerationStructureInstanceKHR;
     TVkAccelerationStructureInstanceKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       transform:TVkTransformMatrixKHR;
       instanceCustomIndexMask:TVkUInt32; // 24 bits of instance custom index, 8 bits of mask
       instanceShaderBindingTableRecordOffsetFlags:TVkUInt32; // 24 bits of instance shader binding table record offset, 8 bits of flags
       accelerationStructureReference:TVkUInt64;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aTransform:TVkTransformMatrixKHR;
                          const aInstanceCustomIndex:TVkUInt32;
                          const aMask:TVkUInt32;
                          const aInstanceShaderBindingTableRecordOffset:TVkUInt32;
                          const aFlags:TVkGeometryInstanceFlagsKHR;
                          const aAccelerationStructureReference:TVkUInt64);
      private
       function GetInstanceCustomIndex:TVkUInt32;
       procedure SetInstanceCustomIndex(const aValue:TVkUInt32);
       function GetMask:TVkUInt32;
       procedure SetMask(const aValue:TVkUInt32);
       function GetInstanceShaderBindingTableRecordOffset:TVkUInt32;
       procedure SetInstanceShaderBindingTableRecordOffset(const aValue:TVkUInt32);
       function GetFlags:TVkGeometryInstanceFlagsKHR;
       procedure SetFlags(const aValue:TVkGeometryInstanceFlagsKHR);
      public
       property instanceCustomIndex:TVkUInt32 read GetInstanceCustomIndex write SetInstanceCustomIndex;
       property mask:TVkUInt32 read GetMask write SetMask;
       property instanceShaderBindingTableRecordOffset:TVkUInt32 read GetInstanceShaderBindingTableRecordOffset write SetInstanceShaderBindingTableRecordOffset;
       property flags:TVkGeometryInstanceFlagsKHR read GetFlags write SetFlags;
{$endif}
     end;

     PPVkAccelerationStructureInstanceNV=^PVkAccelerationStructureInstanceNV;
     PVkAccelerationStructureInstanceNV=^TVkAccelerationStructureInstanceNV;
     TVkAccelerationStructureInstanceNV=TVkAccelerationStructureInstanceKHR;

     PPVkAccelerationStructureDeviceAddressInfoKHR=^PVkAccelerationStructureDeviceAddressInfoKHR;
     PVkAccelerationStructureDeviceAddressInfoKHR=^TVkAccelerationStructureDeviceAddressInfoKHR;
     TVkAccelerationStructureDeviceAddressInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR
       pNext:PVkVoid;
       accelerationStructure:TVkAccelerationStructureKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aAccelerationStructure:TVkAccelerationStructureKHR);
{$endif}
     end;

     PPVkAccelerationStructureVersionInfoKHR=^PVkAccelerationStructureVersionInfoKHR;
     PVkAccelerationStructureVersionInfoKHR=^TVkAccelerationStructureVersionInfoKHR;
     TVkAccelerationStructureVersionInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR
       pNext:PVkVoid;
       pVersionData:PVkUInt8;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPVersionData:PVkUInt8);
{$endif}
     end;

     PPVkCopyAccelerationStructureInfoKHR=^PVkCopyAccelerationStructureInfoKHR;
     PVkCopyAccelerationStructureInfoKHR=^TVkCopyAccelerationStructureInfoKHR;
     TVkCopyAccelerationStructureInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR
       pNext:PVkVoid;
       src:TVkAccelerationStructureKHR;
       dst:TVkAccelerationStructureKHR;
       mode:TVkCopyAccelerationStructureModeKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSrc:TVkAccelerationStructureKHR;
                          const aDst:TVkAccelerationStructureKHR;
                          const aMode:TVkCopyAccelerationStructureModeKHR);
{$endif}
     end;

     PPVkCopyAccelerationStructureToMemoryInfoKHR=^PVkCopyAccelerationStructureToMemoryInfoKHR;
     PVkCopyAccelerationStructureToMemoryInfoKHR=^TVkCopyAccelerationStructureToMemoryInfoKHR;
     TVkCopyAccelerationStructureToMemoryInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR
       pNext:PVkVoid;
       src:TVkAccelerationStructureKHR;
       dst:TVkDeviceOrHostAddressKHR;
       mode:TVkCopyAccelerationStructureModeKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSrc:TVkAccelerationStructureKHR;
                          const aDst:TVkDeviceOrHostAddressKHR;
                          const aMode:TVkCopyAccelerationStructureModeKHR);
{$endif}
     end;

     PPVkCopyMemoryToAccelerationStructureInfoKHR=^PVkCopyMemoryToAccelerationStructureInfoKHR;
     PVkCopyMemoryToAccelerationStructureInfoKHR=^TVkCopyMemoryToAccelerationStructureInfoKHR;
     TVkCopyMemoryToAccelerationStructureInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR
       pNext:PVkVoid;
       src:TVkDeviceOrHostAddressConstKHR;
       dst:TVkAccelerationStructureKHR;
       mode:TVkCopyAccelerationStructureModeKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSrc:TVkDeviceOrHostAddressConstKHR;
                          const aDst:TVkAccelerationStructureKHR;
                          const aMode:TVkCopyAccelerationStructureModeKHR);
{$endif}
     end;

     PPVkPipelineLibraryCreateInfoKHR=^PVkPipelineLibraryCreateInfoKHR;
     PVkPipelineLibraryCreateInfoKHR=^TVkPipelineLibraryCreateInfoKHR;
     TVkPipelineLibraryCreateInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR
       pNext:PVkVoid;
       libraryCount:TVkUInt32;
       pLibraries:PVkPipeline;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aLibraryCount:TVkUInt32;
                          const aPLibraries:PVkPipeline);
{$endif}
     end;

     PPVkRayTracingPipelineCreateInfoKHR=^PVkRayTracingPipelineCreateInfoKHR;
     PVkRayTracingPipelineCreateInfoKHR=^TVkRayTracingPipelineCreateInfoKHR;
     TVkRayTracingPipelineCreateInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR
       pNext:PVkVoid;
       flags:TVkPipelineCreateFlags;
       stageCount:TVkUInt32;
       pStages:PVkPipelineShaderStageCreateInfo;
       groupCount:TVkUInt32;
       pGroups:PVkRayTracingShaderGroupCreateInfoKHR;
       maxPipelineRayRecursionDepth:TVkUInt32;
       pLibraryInfo:PVkPipelineLibraryCreateInfoKHR;
       pLibraryInterface:PVkRayTracingPipelineInterfaceCreateInfoKHR;
       pDynamicState:PVkPipelineDynamicStateCreateInfo;
       layout:TVkPipelineLayout;
       basePipelineHandle:TVkPipeline;
       basePipelineIndex:TVkInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkPipelineCreateFlags;
                          const aStageCount:TVkUInt32;
                          const aPStages:PVkPipelineShaderStageCreateInfo;
                          const aGroupCount:TVkUInt32;
                          const aPGroups:PVkRayTracingShaderGroupCreateInfoKHR;
                          const aMaxPipelineRayRecursionDepth:TVkUInt32;
                          const aPLibraryInfo:PVkPipelineLibraryCreateInfoKHR;
                          const aPLibraryInterface:PVkRayTracingPipelineInterfaceCreateInfoKHR;
                          const aPDynamicState:PVkPipelineDynamicStateCreateInfo;
                          const aLayout:TVkPipelineLayout;
                          const aBasePipelineHandle:TVkPipeline;
                          const aBasePipelineIndex:TVkInt32);
{$endif}
     end;

     PPVkRefreshObjectKHR=^PVkRefreshObjectKHR;
     PVkRefreshObjectKHR=^TVkRefreshObjectKHR;
     TVkRefreshObjectKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       objectType:TVkObjectType;
       objectHandle:TVkUInt64;
       flags:TVkRefreshObjectFlagsKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aObjectType:TVkObjectType;
                          const aObjectHandle:TVkUInt64;
                          const aFlags:TVkRefreshObjectFlagsKHR);
{$endif}
     end;

     PPVkRefreshObjectListKHR=^PVkRefreshObjectListKHR;
     PVkRefreshObjectListKHR=^TVkRefreshObjectListKHR;
     TVkRefreshObjectListKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_REFRESH_OBJECT_LIST_KHR
       pNext:PVkVoid;
       objectCount:TVkUInt32;
       pObjects:PVkRefreshObjectKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aObjectCount:TVkUInt32;
                          const aPObjects:PVkRefreshObjectKHR);
{$endif}
     end;

     PPVkPhysicalDeviceExtendedDynamicStateFeaturesEXT=^PVkPhysicalDeviceExtendedDynamicStateFeaturesEXT;
     PVkPhysicalDeviceExtendedDynamicStateFeaturesEXT=^TVkPhysicalDeviceExtendedDynamicStateFeaturesEXT;
     TVkPhysicalDeviceExtendedDynamicStateFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT
       pNext:PVkVoid;
       extendedDynamicState:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aExtendedDynamicState:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceExtendedDynamicState2FeaturesEXT=^PVkPhysicalDeviceExtendedDynamicState2FeaturesEXT;
     PVkPhysicalDeviceExtendedDynamicState2FeaturesEXT=^TVkPhysicalDeviceExtendedDynamicState2FeaturesEXT;
     TVkPhysicalDeviceExtendedDynamicState2FeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT
       pNext:PVkVoid;
       extendedDynamicState2:TVkBool32;
       extendedDynamicState2LogicOp:TVkBool32;
       extendedDynamicState2PatchControlPoints:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aExtendedDynamicState2:TVkBool32;
                          const aExtendedDynamicState2LogicOp:TVkBool32;
                          const aExtendedDynamicState2PatchControlPoints:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceExtendedDynamicState3FeaturesEXT=^PVkPhysicalDeviceExtendedDynamicState3FeaturesEXT;
     PVkPhysicalDeviceExtendedDynamicState3FeaturesEXT=^TVkPhysicalDeviceExtendedDynamicState3FeaturesEXT;
     TVkPhysicalDeviceExtendedDynamicState3FeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT
       pNext:PVkVoid;
       extendedDynamicState3TessellationDomainOrigin:TVkBool32;
       extendedDynamicState3DepthClampEnable:TVkBool32;
       extendedDynamicState3PolygonMode:TVkBool32;
       extendedDynamicState3RasterizationSamples:TVkBool32;
       extendedDynamicState3SampleMask:TVkBool32;
       extendedDynamicState3AlphaToCoverageEnable:TVkBool32;
       extendedDynamicState3AlphaToOneEnable:TVkBool32;
       extendedDynamicState3LogicOpEnable:TVkBool32;
       extendedDynamicState3ColorBlendEnable:TVkBool32;
       extendedDynamicState3ColorBlendEquation:TVkBool32;
       extendedDynamicState3ColorWriteMask:TVkBool32;
       extendedDynamicState3RasterizationStream:TVkBool32;
       extendedDynamicState3ConservativeRasterizationMode:TVkBool32;
       extendedDynamicState3ExtraPrimitiveOverestimationSize:TVkBool32;
       extendedDynamicState3DepthClipEnable:TVkBool32;
       extendedDynamicState3SampleLocationsEnable:TVkBool32;
       extendedDynamicState3ColorBlendAdvanced:TVkBool32;
       extendedDynamicState3ProvokingVertexMode:TVkBool32;
       extendedDynamicState3LineRasterizationMode:TVkBool32;
       extendedDynamicState3LineStippleEnable:TVkBool32;
       extendedDynamicState3DepthClipNegativeOneToOne:TVkBool32;
       extendedDynamicState3ViewportWScalingEnable:TVkBool32;
       extendedDynamicState3ViewportSwizzle:TVkBool32;
       extendedDynamicState3CoverageToColorEnable:TVkBool32;
       extendedDynamicState3CoverageToColorLocation:TVkBool32;
       extendedDynamicState3CoverageModulationMode:TVkBool32;
       extendedDynamicState3CoverageModulationTableEnable:TVkBool32;
       extendedDynamicState3CoverageModulationTable:TVkBool32;
       extendedDynamicState3CoverageReductionMode:TVkBool32;
       extendedDynamicState3RepresentativeFragmentTestEnable:TVkBool32;
       extendedDynamicState3ShadingRateImageEnable:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aExtendedDynamicState3TessellationDomainOrigin:TVkBool32;
                          const aExtendedDynamicState3DepthClampEnable:TVkBool32;
                          const aExtendedDynamicState3PolygonMode:TVkBool32;
                          const aExtendedDynamicState3RasterizationSamples:TVkBool32;
                          const aExtendedDynamicState3SampleMask:TVkBool32;
                          const aExtendedDynamicState3AlphaToCoverageEnable:TVkBool32;
                          const aExtendedDynamicState3AlphaToOneEnable:TVkBool32;
                          const aExtendedDynamicState3LogicOpEnable:TVkBool32;
                          const aExtendedDynamicState3ColorBlendEnable:TVkBool32;
                          const aExtendedDynamicState3ColorBlendEquation:TVkBool32;
                          const aExtendedDynamicState3ColorWriteMask:TVkBool32;
                          const aExtendedDynamicState3RasterizationStream:TVkBool32;
                          const aExtendedDynamicState3ConservativeRasterizationMode:TVkBool32;
                          const aExtendedDynamicState3ExtraPrimitiveOverestimationSize:TVkBool32;
                          const aExtendedDynamicState3DepthClipEnable:TVkBool32;
                          const aExtendedDynamicState3SampleLocationsEnable:TVkBool32;
                          const aExtendedDynamicState3ColorBlendAdvanced:TVkBool32;
                          const aExtendedDynamicState3ProvokingVertexMode:TVkBool32;
                          const aExtendedDynamicState3LineRasterizationMode:TVkBool32;
                          const aExtendedDynamicState3LineStippleEnable:TVkBool32;
                          const aExtendedDynamicState3DepthClipNegativeOneToOne:TVkBool32;
                          const aExtendedDynamicState3ViewportWScalingEnable:TVkBool32;
                          const aExtendedDynamicState3ViewportSwizzle:TVkBool32;
                          const aExtendedDynamicState3CoverageToColorEnable:TVkBool32;
                          const aExtendedDynamicState3CoverageToColorLocation:TVkBool32;
                          const aExtendedDynamicState3CoverageModulationMode:TVkBool32;
                          const aExtendedDynamicState3CoverageModulationTableEnable:TVkBool32;
                          const aExtendedDynamicState3CoverageModulationTable:TVkBool32;
                          const aExtendedDynamicState3CoverageReductionMode:TVkBool32;
                          const aExtendedDynamicState3RepresentativeFragmentTestEnable:TVkBool32;
                          const aExtendedDynamicState3ShadingRateImageEnable:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceExtendedDynamicState3PropertiesEXT=^PVkPhysicalDeviceExtendedDynamicState3PropertiesEXT;
     PVkPhysicalDeviceExtendedDynamicState3PropertiesEXT=^TVkPhysicalDeviceExtendedDynamicState3PropertiesEXT;
     TVkPhysicalDeviceExtendedDynamicState3PropertiesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT
       pNext:PVkVoid;
       dynamicPrimitiveTopologyUnrestricted:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDynamicPrimitiveTopologyUnrestricted:TVkBool32);
{$endif}
     end;

     PPVkColorBlendEquationEXT=^PVkColorBlendEquationEXT;
     PVkColorBlendEquationEXT=^TVkColorBlendEquationEXT;
     TVkColorBlendEquationEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       srcColorBlendFactor:TVkBlendFactor;
       dstColorBlendFactor:TVkBlendFactor;
       colorBlendOp:TVkBlendOp;
       srcAlphaBlendFactor:TVkBlendFactor;
       dstAlphaBlendFactor:TVkBlendFactor;
       alphaBlendOp:TVkBlendOp;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSrcColorBlendFactor:TVkBlendFactor;
                          const aDstColorBlendFactor:TVkBlendFactor;
                          const aColorBlendOp:TVkBlendOp;
                          const aSrcAlphaBlendFactor:TVkBlendFactor;
                          const aDstAlphaBlendFactor:TVkBlendFactor;
                          const aAlphaBlendOp:TVkBlendOp);
{$endif}
     end;

     PPVkColorBlendAdvancedEXT=^PVkColorBlendAdvancedEXT;
     PVkColorBlendAdvancedEXT=^TVkColorBlendAdvancedEXT;
     TVkColorBlendAdvancedEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       advancedBlendOp:TVkBlendOp;
       srcPremultiplied:TVkBool32;
       dstPremultiplied:TVkBool32;
       blendOverlap:TVkBlendOverlapEXT;
       clampResults:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aAdvancedBlendOp:TVkBlendOp;
                          const aSrcPremultiplied:TVkBool32;
                          const aDstPremultiplied:TVkBool32;
                          const aBlendOverlap:TVkBlendOverlapEXT;
                          const aClampResults:TVkBool32);
{$endif}
     end;

     PPVkRenderPassTransformBeginInfoQCOM=^PVkRenderPassTransformBeginInfoQCOM;
     PVkRenderPassTransformBeginInfoQCOM=^TVkRenderPassTransformBeginInfoQCOM;
     TVkRenderPassTransformBeginInfoQCOM=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM
       pNext:PVkVoid;
       transform:TVkSurfaceTransformFlagBitsKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aTransform:TVkSurfaceTransformFlagBitsKHR);
{$endif}
     end;

     PPVkCopyCommandTransformInfoQCOM=^PVkCopyCommandTransformInfoQCOM;
     PVkCopyCommandTransformInfoQCOM=^TVkCopyCommandTransformInfoQCOM;
     TVkCopyCommandTransformInfoQCOM=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM
       pNext:PVkVoid;
       transform:TVkSurfaceTransformFlagBitsKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aTransform:TVkSurfaceTransformFlagBitsKHR);
{$endif}
     end;

     PPVkCommandBufferInheritanceRenderPassTransformInfoQCOM=^PVkCommandBufferInheritanceRenderPassTransformInfoQCOM;
     PVkCommandBufferInheritanceRenderPassTransformInfoQCOM=^TVkCommandBufferInheritanceRenderPassTransformInfoQCOM;
     TVkCommandBufferInheritanceRenderPassTransformInfoQCOM=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM
       pNext:PVkVoid;
       transform:TVkSurfaceTransformFlagBitsKHR;
       renderArea:TVkRect2D;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aTransform:TVkSurfaceTransformFlagBitsKHR;
                          const aRenderArea:TVkRect2D);
{$endif}
     end;

     PPVkPhysicalDeviceDiagnosticsConfigFeaturesNV=^PVkPhysicalDeviceDiagnosticsConfigFeaturesNV;
     PVkPhysicalDeviceDiagnosticsConfigFeaturesNV=^TVkPhysicalDeviceDiagnosticsConfigFeaturesNV;
     TVkPhysicalDeviceDiagnosticsConfigFeaturesNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV
       pNext:PVkVoid;
       diagnosticsConfig:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDiagnosticsConfig:TVkBool32);
{$endif}
     end;

     PPVkDeviceDiagnosticsConfigCreateInfoNV=^PVkDeviceDiagnosticsConfigCreateInfoNV;
     PVkDeviceDiagnosticsConfigCreateInfoNV=^TVkDeviceDiagnosticsConfigCreateInfoNV;
     TVkDeviceDiagnosticsConfigCreateInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV
       pNext:PVkVoid;
       flags:TVkDeviceDiagnosticsConfigFlagsNV;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkDeviceDiagnosticsConfigFlagsNV);
{$endif}
     end;

{$ifdef VulkanSC}
     PPVkPipelineOfflineCreateInfo=^PVkPipelineOfflineCreateInfo;
     PVkPipelineOfflineCreateInfo=^TVkPipelineOfflineCreateInfo;
     TVkPipelineOfflineCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PIPELINE_OFFLINE_CREATE_INFO
       pNext:PVkVoid;
       pipelineIdentifier:array[0..VK_UUID_SIZE-1] of TVkUInt8;
       matchControl:TVkPipelineMatchControl;
       poolEntrySize:TVkDeviceSize;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPipelineIdentifier:array of TVkUInt8;
                          const aMatchControl:TVkPipelineMatchControl;
                          const aPoolEntrySize:TVkDeviceSize);
{$endif}
     end;
{$endif}

     PPVkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures=^PVkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures;
     PVkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures=^TVkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures;
     TVkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES
       pNext:PVkVoid;
       shaderZeroInitializeWorkgroupMemory:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aShaderZeroInitializeWorkgroupMemory:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR=^PVkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR;
     PVkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR=^TVkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR;
     TVkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR=TVkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures;

     PPVkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR=^PVkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR;
     PVkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR=^TVkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR;
     TVkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR
       pNext:PVkVoid;
       shaderSubgroupUniformControlFlow:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aShaderSubgroupUniformControlFlow:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceRobustness2FeaturesEXT=^PVkPhysicalDeviceRobustness2FeaturesEXT;
     PVkPhysicalDeviceRobustness2FeaturesEXT=^TVkPhysicalDeviceRobustness2FeaturesEXT;
     TVkPhysicalDeviceRobustness2FeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT
       pNext:PVkVoid;
       robustBufferAccess2:TVkBool32;
       robustImageAccess2:TVkBool32;
       nullDescriptor:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aRobustBufferAccess2:TVkBool32;
                          const aRobustImageAccess2:TVkBool32;
                          const aNullDescriptor:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceRobustness2PropertiesEXT=^PVkPhysicalDeviceRobustness2PropertiesEXT;
     PVkPhysicalDeviceRobustness2PropertiesEXT=^TVkPhysicalDeviceRobustness2PropertiesEXT;
     TVkPhysicalDeviceRobustness2PropertiesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT
       pNext:PVkVoid;
       robustStorageBufferAccessSizeAlignment:TVkDeviceSize;
       robustUniformBufferAccessSizeAlignment:TVkDeviceSize;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aRobustStorageBufferAccessSizeAlignment:TVkDeviceSize;
                          const aRobustUniformBufferAccessSizeAlignment:TVkDeviceSize);
{$endif}
     end;

     PPVkPhysicalDeviceImageRobustnessFeatures=^PVkPhysicalDeviceImageRobustnessFeatures;
     PVkPhysicalDeviceImageRobustnessFeatures=^TVkPhysicalDeviceImageRobustnessFeatures;
     TVkPhysicalDeviceImageRobustnessFeatures=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES
       pNext:PVkVoid;
       robustImageAccess:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aRobustImageAccess:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceImageRobustnessFeaturesEXT=^PVkPhysicalDeviceImageRobustnessFeaturesEXT;
     PVkPhysicalDeviceImageRobustnessFeaturesEXT=^TVkPhysicalDeviceImageRobustnessFeaturesEXT;
     TVkPhysicalDeviceImageRobustnessFeaturesEXT=TVkPhysicalDeviceImageRobustnessFeatures;

     PPVkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR=^PVkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR;
     PVkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR=^TVkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR;
     TVkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR
       pNext:PVkVoid;
       workgroupMemoryExplicitLayout:TVkBool32;
       workgroupMemoryExplicitLayoutScalarBlockLayout:TVkBool32;
       workgroupMemoryExplicitLayout8BitAccess:TVkBool32;
       workgroupMemoryExplicitLayout16BitAccess:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aWorkgroupMemoryExplicitLayout:TVkBool32;
                          const aWorkgroupMemoryExplicitLayoutScalarBlockLayout:TVkBool32;
                          const aWorkgroupMemoryExplicitLayout8BitAccess:TVkBool32;
                          const aWorkgroupMemoryExplicitLayout16BitAccess:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDevicePortabilitySubsetFeaturesKHR=^PVkPhysicalDevicePortabilitySubsetFeaturesKHR;
     PVkPhysicalDevicePortabilitySubsetFeaturesKHR=^TVkPhysicalDevicePortabilitySubsetFeaturesKHR;
     TVkPhysicalDevicePortabilitySubsetFeaturesKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR
       pNext:PVkVoid;
       constantAlphaColorBlendFactors:TVkBool32;
       events:TVkBool32;
       imageViewFormatReinterpretation:TVkBool32;
       imageViewFormatSwizzle:TVkBool32;
       imageView2DOn3DImage:TVkBool32;
       multisampleArrayImage:TVkBool32;
       mutableComparisonSamplers:TVkBool32;
       pointPolygons:TVkBool32;
       samplerMipLodBias:TVkBool32;
       separateStencilMaskRef:TVkBool32;
       shaderSampleRateInterpolationFunctions:TVkBool32;
       tessellationIsolines:TVkBool32;
       tessellationPointMode:TVkBool32;
       triangleFans:TVkBool32;
       vertexAttributeAccessBeyondStride:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aConstantAlphaColorBlendFactors:TVkBool32;
                          const aEvents:TVkBool32;
                          const aImageViewFormatReinterpretation:TVkBool32;
                          const aImageViewFormatSwizzle:TVkBool32;
                          const aImageView2DOn3DImage:TVkBool32;
                          const aMultisampleArrayImage:TVkBool32;
                          const aMutableComparisonSamplers:TVkBool32;
                          const aPointPolygons:TVkBool32;
                          const aSamplerMipLodBias:TVkBool32;
                          const aSeparateStencilMaskRef:TVkBool32;
                          const aShaderSampleRateInterpolationFunctions:TVkBool32;
                          const aTessellationIsolines:TVkBool32;
                          const aTessellationPointMode:TVkBool32;
                          const aTriangleFans:TVkBool32;
                          const aVertexAttributeAccessBeyondStride:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDevicePortabilitySubsetPropertiesKHR=^PVkPhysicalDevicePortabilitySubsetPropertiesKHR;
     PVkPhysicalDevicePortabilitySubsetPropertiesKHR=^TVkPhysicalDevicePortabilitySubsetPropertiesKHR;
     TVkPhysicalDevicePortabilitySubsetPropertiesKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR
       pNext:PVkVoid;
       minVertexInputBindingStrideAlignment:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMinVertexInputBindingStrideAlignment:TVkUInt32);
{$endif}
     end;

     PPVkPhysicalDevice4444FormatsFeaturesEXT=^PVkPhysicalDevice4444FormatsFeaturesEXT;
     PVkPhysicalDevice4444FormatsFeaturesEXT=^TVkPhysicalDevice4444FormatsFeaturesEXT;
     TVkPhysicalDevice4444FormatsFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT
       pNext:PVkVoid;
       formatA4R4G4B4:TVkBool32;
       formatA4B4G4R4:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFormatA4R4G4B4:TVkBool32;
                          const aFormatA4B4G4R4:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceSubpassShadingFeaturesHUAWEI=^PVkPhysicalDeviceSubpassShadingFeaturesHUAWEI;
     PVkPhysicalDeviceSubpassShadingFeaturesHUAWEI=^TVkPhysicalDeviceSubpassShadingFeaturesHUAWEI;
     TVkPhysicalDeviceSubpassShadingFeaturesHUAWEI=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI
       pNext:PVkVoid;
       subpassShading:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSubpassShading:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI=^PVkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI;
     PVkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI=^TVkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI;
     TVkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI
       pNext:PVkVoid;
       clustercullingShader:TVkBool32;
       multiviewClusterCullingShader:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aClustercullingShader:TVkBool32;
                          const aMultiviewClusterCullingShader:TVkBool32);
{$endif}
     end;

     PPVkBufferCopy2=^PVkBufferCopy2;
     PVkBufferCopy2=^TVkBufferCopy2;
     TVkBufferCopy2=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_BUFFER_COPY_2
       pNext:PVkVoid;
       srcOffset:TVkDeviceSize;
       dstOffset:TVkDeviceSize;
       size:TVkDeviceSize;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSrcOffset:TVkDeviceSize;
                          const aDstOffset:TVkDeviceSize;
                          const aSize:TVkDeviceSize);
{$endif}
     end;

     PPVkBufferCopy2KHR=^PVkBufferCopy2KHR;
     PVkBufferCopy2KHR=^TVkBufferCopy2KHR;
     TVkBufferCopy2KHR=TVkBufferCopy2;

     PPVkImageCopy2=^PVkImageCopy2;
     PVkImageCopy2=^TVkImageCopy2;
     TVkImageCopy2=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_IMAGE_COPY_2
       pNext:PVkVoid;
       srcSubresource:TVkImageSubresourceLayers;
       srcOffset:TVkOffset3D;
       dstSubresource:TVkImageSubresourceLayers;
       dstOffset:TVkOffset3D;
       extent:TVkExtent3D;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSrcSubresource:TVkImageSubresourceLayers;
                          const aSrcOffset:TVkOffset3D;
                          const aDstSubresource:TVkImageSubresourceLayers;
                          const aDstOffset:TVkOffset3D;
                          const aExtent:TVkExtent3D);
{$endif}
     end;

     PPVkImageCopy2KHR=^PVkImageCopy2KHR;
     PVkImageCopy2KHR=^TVkImageCopy2KHR;
     TVkImageCopy2KHR=TVkImageCopy2;

     PPVkImageBlit2=^PVkImageBlit2;
     PVkImageBlit2=^TVkImageBlit2;
     TVkImageBlit2=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_IMAGE_BLIT_2
       pNext:PVkVoid;
       srcSubresource:TVkImageSubresourceLayers;
       srcOffsets:array[0..1] of TVkOffset3D;
       dstSubresource:TVkImageSubresourceLayers;
       dstOffsets:array[0..1] of TVkOffset3D;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSrcSubresource:TVkImageSubresourceLayers;
                          const aSrcOffsets:array of TVkOffset3D;
                          const aDstSubresource:TVkImageSubresourceLayers;
                          const aDstOffsets:array of TVkOffset3D);
{$endif}
     end;

     PPVkImageBlit2KHR=^PVkImageBlit2KHR;
     PVkImageBlit2KHR=^TVkImageBlit2KHR;
     TVkImageBlit2KHR=TVkImageBlit2;

     PPVkBufferImageCopy2=^PVkBufferImageCopy2;
     PVkBufferImageCopy2=^TVkBufferImageCopy2;
     TVkBufferImageCopy2=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2
       pNext:PVkVoid;
       bufferOffset:TVkDeviceSize;
       bufferRowLength:TVkUInt32;
       bufferImageHeight:TVkUInt32;
       imageSubresource:TVkImageSubresourceLayers;
       imageOffset:TVkOffset3D;
       imageExtent:TVkExtent3D;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aBufferOffset:TVkDeviceSize;
                          const aBufferRowLength:TVkUInt32;
                          const aBufferImageHeight:TVkUInt32;
                          const aImageSubresource:TVkImageSubresourceLayers;
                          const aImageOffset:TVkOffset3D;
                          const aImageExtent:TVkExtent3D);
{$endif}
     end;

     PPVkBufferImageCopy2KHR=^PVkBufferImageCopy2KHR;
     PVkBufferImageCopy2KHR=^TVkBufferImageCopy2KHR;
     TVkBufferImageCopy2KHR=TVkBufferImageCopy2;

     PPVkImageResolve2=^PVkImageResolve2;
     PVkImageResolve2=^TVkImageResolve2;
     TVkImageResolve2=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2
       pNext:PVkVoid;
       srcSubresource:TVkImageSubresourceLayers;
       srcOffset:TVkOffset3D;
       dstSubresource:TVkImageSubresourceLayers;
       dstOffset:TVkOffset3D;
       extent:TVkExtent3D;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSrcSubresource:TVkImageSubresourceLayers;
                          const aSrcOffset:TVkOffset3D;
                          const aDstSubresource:TVkImageSubresourceLayers;
                          const aDstOffset:TVkOffset3D;
                          const aExtent:TVkExtent3D);
{$endif}
     end;

     PPVkImageResolve2KHR=^PVkImageResolve2KHR;
     PVkImageResolve2KHR=^TVkImageResolve2KHR;
     TVkImageResolve2KHR=TVkImageResolve2;

     PPVkCopyBufferInfo2=^PVkCopyBufferInfo2;
     PVkCopyBufferInfo2=^TVkCopyBufferInfo2;
     TVkCopyBufferInfo2=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2
       pNext:PVkVoid;
       srcBuffer:TVkBuffer;
       dstBuffer:TVkBuffer;
       regionCount:TVkUInt32;
       pRegions:PVkBufferCopy2;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSrcBuffer:TVkBuffer;
                          const aDstBuffer:TVkBuffer;
                          const aRegionCount:TVkUInt32;
                          const aPRegions:PVkBufferCopy2);
{$endif}
     end;

     PPVkCopyBufferInfo2KHR=^PVkCopyBufferInfo2KHR;
     PVkCopyBufferInfo2KHR=^TVkCopyBufferInfo2KHR;
     TVkCopyBufferInfo2KHR=TVkCopyBufferInfo2;

     PPVkCopyImageInfo2=^PVkCopyImageInfo2;
     PVkCopyImageInfo2=^TVkCopyImageInfo2;
     TVkCopyImageInfo2=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2
       pNext:PVkVoid;
       srcImage:TVkImage;
       srcImageLayout:TVkImageLayout;
       dstImage:TVkImage;
       dstImageLayout:TVkImageLayout;
       regionCount:TVkUInt32;
       pRegions:PVkImageCopy2;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSrcImage:TVkImage;
                          const aSrcImageLayout:TVkImageLayout;
                          const aDstImage:TVkImage;
                          const aDstImageLayout:TVkImageLayout;
                          const aRegionCount:TVkUInt32;
                          const aPRegions:PVkImageCopy2);
{$endif}
     end;

     PPVkCopyImageInfo2KHR=^PVkCopyImageInfo2KHR;
     PVkCopyImageInfo2KHR=^TVkCopyImageInfo2KHR;
     TVkCopyImageInfo2KHR=TVkCopyImageInfo2;

     PPVkBlitImageInfo2=^PVkBlitImageInfo2;
     PVkBlitImageInfo2=^TVkBlitImageInfo2;
     TVkBlitImageInfo2=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2
       pNext:PVkVoid;
       srcImage:TVkImage;
       srcImageLayout:TVkImageLayout;
       dstImage:TVkImage;
       dstImageLayout:TVkImageLayout;
       regionCount:TVkUInt32;
       pRegions:PVkImageBlit2;
       filter:TVkFilter;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSrcImage:TVkImage;
                          const aSrcImageLayout:TVkImageLayout;
                          const aDstImage:TVkImage;
                          const aDstImageLayout:TVkImageLayout;
                          const aRegionCount:TVkUInt32;
                          const aPRegions:PVkImageBlit2;
                          const aFilter:TVkFilter);
{$endif}
     end;

     PPVkBlitImageInfo2KHR=^PVkBlitImageInfo2KHR;
     PVkBlitImageInfo2KHR=^TVkBlitImageInfo2KHR;
     TVkBlitImageInfo2KHR=TVkBlitImageInfo2;

     PPVkCopyBufferToImageInfo2=^PVkCopyBufferToImageInfo2;
     PVkCopyBufferToImageInfo2=^TVkCopyBufferToImageInfo2;
     TVkCopyBufferToImageInfo2=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2
       pNext:PVkVoid;
       srcBuffer:TVkBuffer;
       dstImage:TVkImage;
       dstImageLayout:TVkImageLayout;
       regionCount:TVkUInt32;
       pRegions:PVkBufferImageCopy2;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSrcBuffer:TVkBuffer;
                          const aDstImage:TVkImage;
                          const aDstImageLayout:TVkImageLayout;
                          const aRegionCount:TVkUInt32;
                          const aPRegions:PVkBufferImageCopy2);
{$endif}
     end;

     PPVkCopyBufferToImageInfo2KHR=^PVkCopyBufferToImageInfo2KHR;
     PVkCopyBufferToImageInfo2KHR=^TVkCopyBufferToImageInfo2KHR;
     TVkCopyBufferToImageInfo2KHR=TVkCopyBufferToImageInfo2;

     PPVkCopyImageToBufferInfo2=^PVkCopyImageToBufferInfo2;
     PVkCopyImageToBufferInfo2=^TVkCopyImageToBufferInfo2;
     TVkCopyImageToBufferInfo2=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2
       pNext:PVkVoid;
       srcImage:TVkImage;
       srcImageLayout:TVkImageLayout;
       dstBuffer:TVkBuffer;
       regionCount:TVkUInt32;
       pRegions:PVkBufferImageCopy2;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSrcImage:TVkImage;
                          const aSrcImageLayout:TVkImageLayout;
                          const aDstBuffer:TVkBuffer;
                          const aRegionCount:TVkUInt32;
                          const aPRegions:PVkBufferImageCopy2);
{$endif}
     end;

     PPVkCopyImageToBufferInfo2KHR=^PVkCopyImageToBufferInfo2KHR;
     PVkCopyImageToBufferInfo2KHR=^TVkCopyImageToBufferInfo2KHR;
     TVkCopyImageToBufferInfo2KHR=TVkCopyImageToBufferInfo2;

     PPVkResolveImageInfo2=^PVkResolveImageInfo2;
     PVkResolveImageInfo2=^TVkResolveImageInfo2;
     TVkResolveImageInfo2=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2
       pNext:PVkVoid;
       srcImage:TVkImage;
       srcImageLayout:TVkImageLayout;
       dstImage:TVkImage;
       dstImageLayout:TVkImageLayout;
       regionCount:TVkUInt32;
       pRegions:PVkImageResolve2;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSrcImage:TVkImage;
                          const aSrcImageLayout:TVkImageLayout;
                          const aDstImage:TVkImage;
                          const aDstImageLayout:TVkImageLayout;
                          const aRegionCount:TVkUInt32;
                          const aPRegions:PVkImageResolve2);
{$endif}
     end;

     PPVkResolveImageInfo2KHR=^PVkResolveImageInfo2KHR;
     PVkResolveImageInfo2KHR=^TVkResolveImageInfo2KHR;
     TVkResolveImageInfo2KHR=TVkResolveImageInfo2;

     PPVkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT=^PVkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT;
     PVkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT=^TVkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT;
     TVkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT
       pNext:PVkVoid;
       shaderImageInt64Atomics:TVkBool32;
       sparseImageInt64Atomics:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aShaderImageInt64Atomics:TVkBool32;
                          const aSparseImageInt64Atomics:TVkBool32);
{$endif}
     end;

     PPVkFragmentShadingRateAttachmentInfoKHR=^PVkFragmentShadingRateAttachmentInfoKHR;
     PVkFragmentShadingRateAttachmentInfoKHR=^TVkFragmentShadingRateAttachmentInfoKHR;
     TVkFragmentShadingRateAttachmentInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR
       pNext:PVkVoid;
       pFragmentShadingRateAttachment:PVkAttachmentReference2;
       shadingRateAttachmentTexelSize:TVkExtent2D;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPFragmentShadingRateAttachment:PVkAttachmentReference2;
                          const aShadingRateAttachmentTexelSize:TVkExtent2D);
{$endif}
     end;

     PPVkPipelineFragmentShadingRateStateCreateInfoKHR=^PVkPipelineFragmentShadingRateStateCreateInfoKHR;
     PVkPipelineFragmentShadingRateStateCreateInfoKHR=^TVkPipelineFragmentShadingRateStateCreateInfoKHR;
     TVkPipelineFragmentShadingRateStateCreateInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR
       pNext:PVkVoid;
       fragmentSize:TVkExtent2D;
       combinerOps:array[0..1] of TVkFragmentShadingRateCombinerOpKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFragmentSize:TVkExtent2D;
                          const aCombinerOps:array of TVkFragmentShadingRateCombinerOpKHR);
{$endif}
     end;

     PPVkPhysicalDeviceFragmentShadingRateFeaturesKHR=^PVkPhysicalDeviceFragmentShadingRateFeaturesKHR;
     PVkPhysicalDeviceFragmentShadingRateFeaturesKHR=^TVkPhysicalDeviceFragmentShadingRateFeaturesKHR;
     TVkPhysicalDeviceFragmentShadingRateFeaturesKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR
       pNext:PVkVoid;
       pipelineFragmentShadingRate:TVkBool32;
       primitiveFragmentShadingRate:TVkBool32;
       attachmentFragmentShadingRate:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPipelineFragmentShadingRate:TVkBool32;
                          const aPrimitiveFragmentShadingRate:TVkBool32;
                          const aAttachmentFragmentShadingRate:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceFragmentShadingRatePropertiesKHR=^PVkPhysicalDeviceFragmentShadingRatePropertiesKHR;
     PVkPhysicalDeviceFragmentShadingRatePropertiesKHR=^TVkPhysicalDeviceFragmentShadingRatePropertiesKHR;
     TVkPhysicalDeviceFragmentShadingRatePropertiesKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR
       pNext:PVkVoid;
       minFragmentShadingRateAttachmentTexelSize:TVkExtent2D;
       maxFragmentShadingRateAttachmentTexelSize:TVkExtent2D;
       maxFragmentShadingRateAttachmentTexelSizeAspectRatio:TVkUInt32;
       primitiveFragmentShadingRateWithMultipleViewports:TVkBool32;
       layeredShadingRateAttachments:TVkBool32;
       fragmentShadingRateNonTrivialCombinerOps:TVkBool32;
       maxFragmentSize:TVkExtent2D;
       maxFragmentSizeAspectRatio:TVkUInt32;
       maxFragmentShadingRateCoverageSamples:TVkUInt32;
       maxFragmentShadingRateRasterizationSamples:TVkSampleCountFlagBits;
       fragmentShadingRateWithShaderDepthStencilWrites:TVkBool32;
       fragmentShadingRateWithSampleMask:TVkBool32;
       fragmentShadingRateWithShaderSampleMask:TVkBool32;
       fragmentShadingRateWithConservativeRasterization:TVkBool32;
       fragmentShadingRateWithFragmentShaderInterlock:TVkBool32;
       fragmentShadingRateWithCustomSampleLocations:TVkBool32;
       fragmentShadingRateStrictMultiplyCombiner:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMinFragmentShadingRateAttachmentTexelSize:TVkExtent2D;
                          const aMaxFragmentShadingRateAttachmentTexelSize:TVkExtent2D;
                          const aMaxFragmentShadingRateAttachmentTexelSizeAspectRatio:TVkUInt32;
                          const aPrimitiveFragmentShadingRateWithMultipleViewports:TVkBool32;
                          const aLayeredShadingRateAttachments:TVkBool32;
                          const aFragmentShadingRateNonTrivialCombinerOps:TVkBool32;
                          const aMaxFragmentSize:TVkExtent2D;
                          const aMaxFragmentSizeAspectRatio:TVkUInt32;
                          const aMaxFragmentShadingRateCoverageSamples:TVkUInt32;
                          const aMaxFragmentShadingRateRasterizationSamples:TVkSampleCountFlagBits;
                          const aFragmentShadingRateWithShaderDepthStencilWrites:TVkBool32;
                          const aFragmentShadingRateWithSampleMask:TVkBool32;
                          const aFragmentShadingRateWithShaderSampleMask:TVkBool32;
                          const aFragmentShadingRateWithConservativeRasterization:TVkBool32;
                          const aFragmentShadingRateWithFragmentShaderInterlock:TVkBool32;
                          const aFragmentShadingRateWithCustomSampleLocations:TVkBool32;
                          const aFragmentShadingRateStrictMultiplyCombiner:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceFragmentShadingRateKHR=^PVkPhysicalDeviceFragmentShadingRateKHR;
     PVkPhysicalDeviceFragmentShadingRateKHR=^TVkPhysicalDeviceFragmentShadingRateKHR;
     TVkPhysicalDeviceFragmentShadingRateKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR
       pNext:PVkVoid;
       sampleCounts:TVkSampleCountFlags;
       fragmentSize:TVkExtent2D;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSampleCounts:TVkSampleCountFlags;
                          const aFragmentSize:TVkExtent2D);
{$endif}
     end;

     PPVkPhysicalDeviceShaderTerminateInvocationFeatures=^PVkPhysicalDeviceShaderTerminateInvocationFeatures;
     PVkPhysicalDeviceShaderTerminateInvocationFeatures=^TVkPhysicalDeviceShaderTerminateInvocationFeatures;
     TVkPhysicalDeviceShaderTerminateInvocationFeatures=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES
       pNext:PVkVoid;
       shaderTerminateInvocation:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aShaderTerminateInvocation:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceShaderTerminateInvocationFeaturesKHR=^PVkPhysicalDeviceShaderTerminateInvocationFeaturesKHR;
     PVkPhysicalDeviceShaderTerminateInvocationFeaturesKHR=^TVkPhysicalDeviceShaderTerminateInvocationFeaturesKHR;
     TVkPhysicalDeviceShaderTerminateInvocationFeaturesKHR=TVkPhysicalDeviceShaderTerminateInvocationFeatures;

     PPVkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV=^PVkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV;
     PVkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV=^TVkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV;
     TVkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV
       pNext:PVkVoid;
       fragmentShadingRateEnums:TVkBool32;
       supersampleFragmentShadingRates:TVkBool32;
       noInvocationFragmentShadingRates:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFragmentShadingRateEnums:TVkBool32;
                          const aSupersampleFragmentShadingRates:TVkBool32;
                          const aNoInvocationFragmentShadingRates:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV=^PVkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV;
     PVkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV=^TVkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV;
     TVkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV
       pNext:PVkVoid;
       maxFragmentShadingRateInvocationCount:TVkSampleCountFlagBits;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMaxFragmentShadingRateInvocationCount:TVkSampleCountFlagBits);
{$endif}
     end;

     PPVkPipelineFragmentShadingRateEnumStateCreateInfoNV=^PVkPipelineFragmentShadingRateEnumStateCreateInfoNV;
     PVkPipelineFragmentShadingRateEnumStateCreateInfoNV=^TVkPipelineFragmentShadingRateEnumStateCreateInfoNV;
     TVkPipelineFragmentShadingRateEnumStateCreateInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV
       pNext:PVkVoid;
       shadingRateType:TVkFragmentShadingRateTypeNV;
       shadingRate:TVkFragmentShadingRateNV;
       combinerOps:array[0..1] of TVkFragmentShadingRateCombinerOpKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aShadingRateType:TVkFragmentShadingRateTypeNV;
                          const aShadingRate:TVkFragmentShadingRateNV;
                          const aCombinerOps:array of TVkFragmentShadingRateCombinerOpKHR);
{$endif}
     end;

     PPVkAccelerationStructureBuildSizesInfoKHR=^PVkAccelerationStructureBuildSizesInfoKHR;
     PVkAccelerationStructureBuildSizesInfoKHR=^TVkAccelerationStructureBuildSizesInfoKHR;
     TVkAccelerationStructureBuildSizesInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR
       pNext:PVkVoid;
       accelerationStructureSize:TVkDeviceSize;
       updateScratchSize:TVkDeviceSize;
       buildScratchSize:TVkDeviceSize;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aAccelerationStructureSize:TVkDeviceSize;
                          const aUpdateScratchSize:TVkDeviceSize;
                          const aBuildScratchSize:TVkDeviceSize);
{$endif}
     end;

     PPVkPhysicalDeviceImage2DViewOf3DFeaturesEXT=^PVkPhysicalDeviceImage2DViewOf3DFeaturesEXT;
     PVkPhysicalDeviceImage2DViewOf3DFeaturesEXT=^TVkPhysicalDeviceImage2DViewOf3DFeaturesEXT;
     TVkPhysicalDeviceImage2DViewOf3DFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT
       pNext:PVkVoid;
       image2DViewOf3D:TVkBool32;
       sampler2DViewOf3D:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aImage2DViewOf3D:TVkBool32;
                          const aSampler2DViewOf3D:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT=^PVkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT;
     PVkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT=^TVkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT;
     TVkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT
       pNext:PVkVoid;
       imageSlicedViewOf3D:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aImageSlicedViewOf3D:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT=^PVkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT;
     PVkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT=^TVkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT;
     TVkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT
       pNext:PVkVoid;
       attachmentFeedbackLoopDynamicState:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aAttachmentFeedbackLoopDynamicState:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceMutableDescriptorTypeFeaturesEXT=^PVkPhysicalDeviceMutableDescriptorTypeFeaturesEXT;
     PVkPhysicalDeviceMutableDescriptorTypeFeaturesEXT=^TVkPhysicalDeviceMutableDescriptorTypeFeaturesEXT;
     TVkPhysicalDeviceMutableDescriptorTypeFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT
       pNext:PVkVoid;
       mutableDescriptorType:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMutableDescriptorType:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE=^PVkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE;
     PVkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE=^TVkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE;
     TVkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE=TVkPhysicalDeviceMutableDescriptorTypeFeaturesEXT;

     PPVkMutableDescriptorTypeListEXT=^PVkMutableDescriptorTypeListEXT;
     PVkMutableDescriptorTypeListEXT=^TVkMutableDescriptorTypeListEXT;
     TVkMutableDescriptorTypeListEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       descriptorTypeCount:TVkUInt32;
       pDescriptorTypes:PVkDescriptorType;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDescriptorTypeCount:TVkUInt32;
                          const aPDescriptorTypes:PVkDescriptorType);
{$endif}
     end;

     PPVkMutableDescriptorTypeListVALVE=^PVkMutableDescriptorTypeListVALVE;
     PVkMutableDescriptorTypeListVALVE=^TVkMutableDescriptorTypeListVALVE;
     TVkMutableDescriptorTypeListVALVE=TVkMutableDescriptorTypeListEXT;

     PPVkMutableDescriptorTypeCreateInfoEXT=^PVkMutableDescriptorTypeCreateInfoEXT;
     PVkMutableDescriptorTypeCreateInfoEXT=^TVkMutableDescriptorTypeCreateInfoEXT;
     TVkMutableDescriptorTypeCreateInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT
       pNext:PVkVoid;
       mutableDescriptorTypeListCount:TVkUInt32;
       pMutableDescriptorTypeLists:PVkMutableDescriptorTypeListEXT;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMutableDescriptorTypeListCount:TVkUInt32;
                          const aPMutableDescriptorTypeLists:PVkMutableDescriptorTypeListEXT);
{$endif}
     end;

     PPVkMutableDescriptorTypeCreateInfoVALVE=^PVkMutableDescriptorTypeCreateInfoVALVE;
     PVkMutableDescriptorTypeCreateInfoVALVE=^TVkMutableDescriptorTypeCreateInfoVALVE;
     TVkMutableDescriptorTypeCreateInfoVALVE=TVkMutableDescriptorTypeCreateInfoEXT;

     PPVkPhysicalDeviceDepthClipControlFeaturesEXT=^PVkPhysicalDeviceDepthClipControlFeaturesEXT;
     PVkPhysicalDeviceDepthClipControlFeaturesEXT=^TVkPhysicalDeviceDepthClipControlFeaturesEXT;
     TVkPhysicalDeviceDepthClipControlFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT
       pNext:PVkVoid;
       depthClipControl:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDepthClipControl:TVkBool32);
{$endif}
     end;

     PPVkPipelineViewportDepthClipControlCreateInfoEXT=^PVkPipelineViewportDepthClipControlCreateInfoEXT;
     PVkPipelineViewportDepthClipControlCreateInfoEXT=^TVkPipelineViewportDepthClipControlCreateInfoEXT;
     TVkPipelineViewportDepthClipControlCreateInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT
       pNext:PVkVoid;
       negativeOneToOne:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aNegativeOneToOne:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceVertexInputDynamicStateFeaturesEXT=^PVkPhysicalDeviceVertexInputDynamicStateFeaturesEXT;
     PVkPhysicalDeviceVertexInputDynamicStateFeaturesEXT=^TVkPhysicalDeviceVertexInputDynamicStateFeaturesEXT;
     TVkPhysicalDeviceVertexInputDynamicStateFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT
       pNext:PVkVoid;
       vertexInputDynamicState:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aVertexInputDynamicState:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceExternalMemoryRDMAFeaturesNV=^PVkPhysicalDeviceExternalMemoryRDMAFeaturesNV;
     PVkPhysicalDeviceExternalMemoryRDMAFeaturesNV=^TVkPhysicalDeviceExternalMemoryRDMAFeaturesNV;
     TVkPhysicalDeviceExternalMemoryRDMAFeaturesNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV
       pNext:PVkVoid;
       externalMemoryRDMA:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aExternalMemoryRDMA:TVkBool32);
{$endif}
     end;

     PPVkVertexInputBindingDescription2EXT=^PVkVertexInputBindingDescription2EXT;
     PVkVertexInputBindingDescription2EXT=^TVkVertexInputBindingDescription2EXT;
     TVkVertexInputBindingDescription2EXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT
       pNext:PVkVoid;
       binding:TVkUInt32;
       stride:TVkUInt32;
       inputRate:TVkVertexInputRate;
       divisor:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aBinding:TVkUInt32;
                          const aStride:TVkUInt32;
                          const aInputRate:TVkVertexInputRate;
                          const aDivisor:TVkUInt32);
{$endif}
     end;

     PPVkVertexInputAttributeDescription2EXT=^PVkVertexInputAttributeDescription2EXT;
     PVkVertexInputAttributeDescription2EXT=^TVkVertexInputAttributeDescription2EXT;
     TVkVertexInputAttributeDescription2EXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT
       pNext:PVkVoid;
       location:TVkUInt32;
       binding:TVkUInt32;
       format:TVkFormat;
       offset:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aLocation:TVkUInt32;
                          const aBinding:TVkUInt32;
                          const aFormat:TVkFormat;
                          const aOffset:TVkUInt32);
{$endif}
     end;

     PPVkPhysicalDeviceColorWriteEnableFeaturesEXT=^PVkPhysicalDeviceColorWriteEnableFeaturesEXT;
     PVkPhysicalDeviceColorWriteEnableFeaturesEXT=^TVkPhysicalDeviceColorWriteEnableFeaturesEXT;
     TVkPhysicalDeviceColorWriteEnableFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT
       pNext:PVkVoid;
       colorWriteEnable:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aColorWriteEnable:TVkBool32);
{$endif}
     end;

     PPVkPipelineColorWriteCreateInfoEXT=^PVkPipelineColorWriteCreateInfoEXT;
     PVkPipelineColorWriteCreateInfoEXT=^TVkPipelineColorWriteCreateInfoEXT;
     TVkPipelineColorWriteCreateInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT
       pNext:PVkVoid;
       attachmentCount:TVkUInt32;
       pColorWriteEnables:PVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aAttachmentCount:TVkUInt32;
                          const aPColorWriteEnables:PVkBool32);
{$endif}
     end;

     PPVkMemoryBarrier2=^PVkMemoryBarrier2;
     PVkMemoryBarrier2=^TVkMemoryBarrier2;
     TVkMemoryBarrier2=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_MEMORY_BARRIER_2
       pNext:PVkVoid;
       srcStageMask:TVkPipelineStageFlags2;
       srcAccessMask:TVkAccessFlags2;
       dstStageMask:TVkPipelineStageFlags2;
       dstAccessMask:TVkAccessFlags2;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSrcStageMask:TVkPipelineStageFlags2;
                          const aSrcAccessMask:TVkAccessFlags2;
                          const aDstStageMask:TVkPipelineStageFlags2;
                          const aDstAccessMask:TVkAccessFlags2);
{$endif}
     end;

     PPVkMemoryBarrier2KHR=^PVkMemoryBarrier2KHR;
     PVkMemoryBarrier2KHR=^TVkMemoryBarrier2KHR;
     TVkMemoryBarrier2KHR=TVkMemoryBarrier2;

     PPVkImageMemoryBarrier2=^PVkImageMemoryBarrier2;
     PVkImageMemoryBarrier2=^TVkImageMemoryBarrier2;
     TVkImageMemoryBarrier2=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2
       pNext:PVkVoid;
       srcStageMask:TVkPipelineStageFlags2;
       srcAccessMask:TVkAccessFlags2;
       dstStageMask:TVkPipelineStageFlags2;
       dstAccessMask:TVkAccessFlags2;
       oldLayout:TVkImageLayout;
       newLayout:TVkImageLayout;
       srcQueueFamilyIndex:TVkUInt32;
       dstQueueFamilyIndex:TVkUInt32;
       image:TVkImage;
       subresourceRange:TVkImageSubresourceRange;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSrcStageMask:TVkPipelineStageFlags2;
                          const aSrcAccessMask:TVkAccessFlags2;
                          const aDstStageMask:TVkPipelineStageFlags2;
                          const aDstAccessMask:TVkAccessFlags2;
                          const aOldLayout:TVkImageLayout;
                          const aNewLayout:TVkImageLayout;
                          const aSrcQueueFamilyIndex:TVkUInt32;
                          const aDstQueueFamilyIndex:TVkUInt32;
                          const aImage:TVkImage;
                          const aSubresourceRange:TVkImageSubresourceRange);
{$endif}
     end;

     PPVkImageMemoryBarrier2KHR=^PVkImageMemoryBarrier2KHR;
     PVkImageMemoryBarrier2KHR=^TVkImageMemoryBarrier2KHR;
     TVkImageMemoryBarrier2KHR=TVkImageMemoryBarrier2;

     PPVkBufferMemoryBarrier2=^PVkBufferMemoryBarrier2;
     PVkBufferMemoryBarrier2=^TVkBufferMemoryBarrier2;
     TVkBufferMemoryBarrier2=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2
       pNext:PVkVoid;
       srcStageMask:TVkPipelineStageFlags2;
       srcAccessMask:TVkAccessFlags2;
       dstStageMask:TVkPipelineStageFlags2;
       dstAccessMask:TVkAccessFlags2;
       srcQueueFamilyIndex:TVkUInt32;
       dstQueueFamilyIndex:TVkUInt32;
       buffer:TVkBuffer;
       offset:TVkDeviceSize;
       size:TVkDeviceSize;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSrcStageMask:TVkPipelineStageFlags2;
                          const aSrcAccessMask:TVkAccessFlags2;
                          const aDstStageMask:TVkPipelineStageFlags2;
                          const aDstAccessMask:TVkAccessFlags2;
                          const aSrcQueueFamilyIndex:TVkUInt32;
                          const aDstQueueFamilyIndex:TVkUInt32;
                          const aBuffer:TVkBuffer;
                          const aOffset:TVkDeviceSize;
                          const aSize:TVkDeviceSize);
{$endif}
     end;

     PPVkBufferMemoryBarrier2KHR=^PVkBufferMemoryBarrier2KHR;
     PVkBufferMemoryBarrier2KHR=^TVkBufferMemoryBarrier2KHR;
     TVkBufferMemoryBarrier2KHR=TVkBufferMemoryBarrier2;

     PPVkDependencyInfo=^PVkDependencyInfo;
     PVkDependencyInfo=^TVkDependencyInfo;
     TVkDependencyInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DEPENDENCY_INFO
       pNext:PVkVoid;
       dependencyFlags:TVkDependencyFlags;
       memoryBarrierCount:TVkUInt32;
       pMemoryBarriers:PVkMemoryBarrier2;
       bufferMemoryBarrierCount:TVkUInt32;
       pBufferMemoryBarriers:PVkBufferMemoryBarrier2;
       imageMemoryBarrierCount:TVkUInt32;
       pImageMemoryBarriers:PVkImageMemoryBarrier2;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDependencyFlags:TVkDependencyFlags;
                          const aMemoryBarrierCount:TVkUInt32;
                          const aPMemoryBarriers:PVkMemoryBarrier2;
                          const aBufferMemoryBarrierCount:TVkUInt32;
                          const aPBufferMemoryBarriers:PVkBufferMemoryBarrier2;
                          const aImageMemoryBarrierCount:TVkUInt32;
                          const aPImageMemoryBarriers:PVkImageMemoryBarrier2);
{$endif}
     end;

     PPVkDependencyInfoKHR=^PVkDependencyInfoKHR;
     PVkDependencyInfoKHR=^TVkDependencyInfoKHR;
     TVkDependencyInfoKHR=TVkDependencyInfo;

     PPVkSemaphoreSubmitInfo=^PVkSemaphoreSubmitInfo;
     PVkSemaphoreSubmitInfo=^TVkSemaphoreSubmitInfo;
     TVkSemaphoreSubmitInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO
       pNext:PVkVoid;
       semaphore:TVkSemaphore;
       value:TVkUInt64;
       stageMask:TVkPipelineStageFlags2;
       deviceIndex:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSemaphore:TVkSemaphore;
                          const aValue:TVkUInt64;
                          const aStageMask:TVkPipelineStageFlags2;
                          const aDeviceIndex:TVkUInt32);
{$endif}
     end;

     PPVkSemaphoreSubmitInfoKHR=^PVkSemaphoreSubmitInfoKHR;
     PVkSemaphoreSubmitInfoKHR=^TVkSemaphoreSubmitInfoKHR;
     TVkSemaphoreSubmitInfoKHR=TVkSemaphoreSubmitInfo;

     PPVkCommandBufferSubmitInfo=^PVkCommandBufferSubmitInfo;
     PVkCommandBufferSubmitInfo=^TVkCommandBufferSubmitInfo;
     TVkCommandBufferSubmitInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO
       pNext:PVkVoid;
       commandBuffer:TVkCommandBuffer;
       deviceMask:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aCommandBuffer:TVkCommandBuffer;
                          const aDeviceMask:TVkUInt32);
{$endif}
     end;

     PPVkCommandBufferSubmitInfoKHR=^PVkCommandBufferSubmitInfoKHR;
     PVkCommandBufferSubmitInfoKHR=^TVkCommandBufferSubmitInfoKHR;
     TVkCommandBufferSubmitInfoKHR=TVkCommandBufferSubmitInfo;

     PPVkSubmitInfo2=^PVkSubmitInfo2;
     PVkSubmitInfo2=^TVkSubmitInfo2;
     TVkSubmitInfo2=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SUBMIT_INFO_2
       pNext:PVkVoid;
       flags:TVkSubmitFlags;
       waitSemaphoreInfoCount:TVkUInt32;
       pWaitSemaphoreInfos:PVkSemaphoreSubmitInfo;
       commandBufferInfoCount:TVkUInt32;
       pCommandBufferInfos:PVkCommandBufferSubmitInfo;
       signalSemaphoreInfoCount:TVkUInt32;
       pSignalSemaphoreInfos:PVkSemaphoreSubmitInfo;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkSubmitFlags;
                          const aWaitSemaphoreInfoCount:TVkUInt32;
                          const aPWaitSemaphoreInfos:PVkSemaphoreSubmitInfo;
                          const aCommandBufferInfoCount:TVkUInt32;
                          const aPCommandBufferInfos:PVkCommandBufferSubmitInfo;
                          const aSignalSemaphoreInfoCount:TVkUInt32;
                          const aPSignalSemaphoreInfos:PVkSemaphoreSubmitInfo);
{$endif}
     end;

     PPVkSubmitInfo2KHR=^PVkSubmitInfo2KHR;
     PVkSubmitInfo2KHR=^TVkSubmitInfo2KHR;
     TVkSubmitInfo2KHR=TVkSubmitInfo2;

     PPVkQueueFamilyCheckpointProperties2NV=^PVkQueueFamilyCheckpointProperties2NV;
     PVkQueueFamilyCheckpointProperties2NV=^TVkQueueFamilyCheckpointProperties2NV;
     TVkQueueFamilyCheckpointProperties2NV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV
       pNext:PVkVoid;
       checkpointExecutionStageMask:TVkPipelineStageFlags2;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aCheckpointExecutionStageMask:TVkPipelineStageFlags2);
{$endif}
     end;

     PPVkCheckpointData2NV=^PVkCheckpointData2NV;
     PVkCheckpointData2NV=^TVkCheckpointData2NV;
     TVkCheckpointData2NV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV
       pNext:PVkVoid;
       stage:TVkPipelineStageFlags2;
       pCheckpointMarker:PVkVoid;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aStage:TVkPipelineStageFlags2;
                          const aPCheckpointMarker:PVkVoid);
{$endif}
     end;

     PPVkPhysicalDeviceSynchronization2Features=^PVkPhysicalDeviceSynchronization2Features;
     PVkPhysicalDeviceSynchronization2Features=^TVkPhysicalDeviceSynchronization2Features;
     TVkPhysicalDeviceSynchronization2Features=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES
       pNext:PVkVoid;
       synchronization2:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSynchronization2:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceSynchronization2FeaturesKHR=^PVkPhysicalDeviceSynchronization2FeaturesKHR;
     PVkPhysicalDeviceSynchronization2FeaturesKHR=^TVkPhysicalDeviceSynchronization2FeaturesKHR;
     TVkPhysicalDeviceSynchronization2FeaturesKHR=TVkPhysicalDeviceSynchronization2Features;

     PPVkPhysicalDeviceHostImageCopyFeaturesEXT=^PVkPhysicalDeviceHostImageCopyFeaturesEXT;
     PVkPhysicalDeviceHostImageCopyFeaturesEXT=^TVkPhysicalDeviceHostImageCopyFeaturesEXT;
     TVkPhysicalDeviceHostImageCopyFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT
       pNext:PVkVoid;
       hostImageCopy:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aHostImageCopy:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceHostImageCopyPropertiesEXT=^PVkPhysicalDeviceHostImageCopyPropertiesEXT;
     PVkPhysicalDeviceHostImageCopyPropertiesEXT=^TVkPhysicalDeviceHostImageCopyPropertiesEXT;
     TVkPhysicalDeviceHostImageCopyPropertiesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT
       pNext:PVkVoid;
       copySrcLayoutCount:TVkUInt32;
       pCopySrcLayouts:PVkImageLayout;
       copyDstLayoutCount:TVkUInt32;
       pCopyDstLayouts:PVkImageLayout;
       optimalTilingLayoutUUID:array[0..VK_UUID_SIZE-1] of TVkUInt8;
       identicalMemoryTypeRequirements:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aCopySrcLayoutCount:TVkUInt32;
                          const aPCopySrcLayouts:PVkImageLayout;
                          const aCopyDstLayoutCount:TVkUInt32;
                          const aPCopyDstLayouts:PVkImageLayout;
                          const aOptimalTilingLayoutUUID:array of TVkUInt8;
                          const aIdenticalMemoryTypeRequirements:TVkBool32);
{$endif}
     end;

     PPVkMemoryToImageCopyEXT=^PVkMemoryToImageCopyEXT;
     PVkMemoryToImageCopyEXT=^TVkMemoryToImageCopyEXT;
     TVkMemoryToImageCopyEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXT
       pNext:PVkVoid;
       pHostPointer:PVkVoid;
       memoryRowLength:TVkUInt32;
       memoryImageHeight:TVkUInt32;
       imageSubresource:TVkImageSubresourceLayers;
       imageOffset:TVkOffset3D;
       imageExtent:TVkExtent3D;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPHostPointer:PVkVoid;
                          const aMemoryRowLength:TVkUInt32;
                          const aMemoryImageHeight:TVkUInt32;
                          const aImageSubresource:TVkImageSubresourceLayers;
                          const aImageOffset:TVkOffset3D;
                          const aImageExtent:TVkExtent3D);
{$endif}
     end;

     PPVkImageToMemoryCopyEXT=^PVkImageToMemoryCopyEXT;
     PVkImageToMemoryCopyEXT=^TVkImageToMemoryCopyEXT;
     TVkImageToMemoryCopyEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXT
       pNext:PVkVoid;
       pHostPointer:PVkVoid;
       memoryRowLength:TVkUInt32;
       memoryImageHeight:TVkUInt32;
       imageSubresource:TVkImageSubresourceLayers;
       imageOffset:TVkOffset3D;
       imageExtent:TVkExtent3D;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPHostPointer:PVkVoid;
                          const aMemoryRowLength:TVkUInt32;
                          const aMemoryImageHeight:TVkUInt32;
                          const aImageSubresource:TVkImageSubresourceLayers;
                          const aImageOffset:TVkOffset3D;
                          const aImageExtent:TVkExtent3D);
{$endif}
     end;

     PPVkCopyMemoryToImageInfoEXT=^PVkCopyMemoryToImageInfoEXT;
     PVkCopyMemoryToImageInfoEXT=^TVkCopyMemoryToImageInfoEXT;
     TVkCopyMemoryToImageInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXT
       pNext:PVkVoid;
       flags:TVkHostImageCopyFlagsEXT;
       dstImage:TVkImage;
       dstImageLayout:TVkImageLayout;
       regionCount:TVkUInt32;
       pRegions:PVkMemoryToImageCopyEXT;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkHostImageCopyFlagsEXT;
                          const aDstImage:TVkImage;
                          const aDstImageLayout:TVkImageLayout;
                          const aRegionCount:TVkUInt32;
                          const aPRegions:PVkMemoryToImageCopyEXT);
{$endif}
     end;

     PPVkCopyImageToMemoryInfoEXT=^PVkCopyImageToMemoryInfoEXT;
     PVkCopyImageToMemoryInfoEXT=^TVkCopyImageToMemoryInfoEXT;
     TVkCopyImageToMemoryInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXT
       pNext:PVkVoid;
       flags:TVkHostImageCopyFlagsEXT;
       srcImage:TVkImage;
       srcImageLayout:TVkImageLayout;
       regionCount:TVkUInt32;
       pRegions:PVkImageToMemoryCopyEXT;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkHostImageCopyFlagsEXT;
                          const aSrcImage:TVkImage;
                          const aSrcImageLayout:TVkImageLayout;
                          const aRegionCount:TVkUInt32;
                          const aPRegions:PVkImageToMemoryCopyEXT);
{$endif}
     end;

     PPVkCopyImageToImageInfoEXT=^PVkCopyImageToImageInfoEXT;
     PVkCopyImageToImageInfoEXT=^TVkCopyImageToImageInfoEXT;
     TVkCopyImageToImageInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXT
       pNext:PVkVoid;
       flags:TVkHostImageCopyFlagsEXT;
       srcImage:TVkImage;
       srcImageLayout:TVkImageLayout;
       dstImage:TVkImage;
       dstImageLayout:TVkImageLayout;
       regionCount:TVkUInt32;
       pRegions:PVkImageCopy2;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkHostImageCopyFlagsEXT;
                          const aSrcImage:TVkImage;
                          const aSrcImageLayout:TVkImageLayout;
                          const aDstImage:TVkImage;
                          const aDstImageLayout:TVkImageLayout;
                          const aRegionCount:TVkUInt32;
                          const aPRegions:PVkImageCopy2);
{$endif}
     end;

     PPVkHostImageLayoutTransitionInfoEXT=^PVkHostImageLayoutTransitionInfoEXT;
     PVkHostImageLayoutTransitionInfoEXT=^TVkHostImageLayoutTransitionInfoEXT;
     TVkHostImageLayoutTransitionInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXT
       pNext:PVkVoid;
       image:TVkImage;
       oldLayout:TVkImageLayout;
       newLayout:TVkImageLayout;
       subresourceRange:TVkImageSubresourceRange;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aImage:TVkImage;
                          const aOldLayout:TVkImageLayout;
                          const aNewLayout:TVkImageLayout;
                          const aSubresourceRange:TVkImageSubresourceRange);
{$endif}
     end;

     PPVkSubresourceHostMemcpySizeEXT=^PVkSubresourceHostMemcpySizeEXT;
     PVkSubresourceHostMemcpySizeEXT=^TVkSubresourceHostMemcpySizeEXT;
     TVkSubresourceHostMemcpySizeEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXT
       pNext:PVkVoid;
       size:TVkDeviceSize;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSize:TVkDeviceSize);
{$endif}
     end;

     PPVkHostImageCopyDevicePerformanceQueryEXT=^PVkHostImageCopyDevicePerformanceQueryEXT;
     PVkHostImageCopyDevicePerformanceQueryEXT=^TVkHostImageCopyDevicePerformanceQueryEXT;
     TVkHostImageCopyDevicePerformanceQueryEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT
       pNext:PVkVoid;
       optimalDeviceAccess:TVkBool32;
       identicalMemoryLayout:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aOptimalDeviceAccess:TVkBool32;
                          const aIdenticalMemoryLayout:TVkBool32);
{$endif}
     end;

{$ifdef VulkanSC}
     PPVkPhysicalDeviceVulkanSC10Properties=^PVkPhysicalDeviceVulkanSC10Properties;
     PVkPhysicalDeviceVulkanSC10Properties=^TVkPhysicalDeviceVulkanSC10Properties;
     TVkPhysicalDeviceVulkanSC10Properties=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_PROPERTIES
       pNext:PVkVoid;
       deviceNoDynamicHostAllocations:TVkBool32;
       deviceDestroyFreesMemory:TVkBool32;
       commandPoolMultipleCommandBuffersRecording:TVkBool32;
       commandPoolResetCommandBuffer:TVkBool32;
       commandBufferSimultaneousUse:TVkBool32;
       secondaryCommandBufferNullOrImagelessFramebuffer:TVkBool32;
       recycleDescriptorSetMemory:TVkBool32;
       recyclePipelineMemory:TVkBool32;
       maxRenderPassSubpasses:TVkUInt32;
       maxRenderPassDependencies:TVkUInt32;
       maxSubpassInputAttachments:TVkUInt32;
       maxSubpassPreserveAttachments:TVkUInt32;
       maxFramebufferAttachments:TVkUInt32;
       maxDescriptorSetLayoutBindings:TVkUInt32;
       maxQueryFaultCount:TVkUInt32;
       maxCallbackFaultCount:TVkUInt32;
       maxCommandPoolCommandBuffers:TVkUInt32;
       maxCommandBufferSize:TVkDeviceSize;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDeviceNoDynamicHostAllocations:TVkBool32;
                          const aDeviceDestroyFreesMemory:TVkBool32;
                          const aCommandPoolMultipleCommandBuffersRecording:TVkBool32;
                          const aCommandPoolResetCommandBuffer:TVkBool32;
                          const aCommandBufferSimultaneousUse:TVkBool32;
                          const aSecondaryCommandBufferNullOrImagelessFramebuffer:TVkBool32;
                          const aRecycleDescriptorSetMemory:TVkBool32;
                          const aRecyclePipelineMemory:TVkBool32;
                          const aMaxRenderPassSubpasses:TVkUInt32;
                          const aMaxRenderPassDependencies:TVkUInt32;
                          const aMaxSubpassInputAttachments:TVkUInt32;
                          const aMaxSubpassPreserveAttachments:TVkUInt32;
                          const aMaxFramebufferAttachments:TVkUInt32;
                          const aMaxDescriptorSetLayoutBindings:TVkUInt32;
                          const aMaxQueryFaultCount:TVkUInt32;
                          const aMaxCallbackFaultCount:TVkUInt32;
                          const aMaxCommandPoolCommandBuffers:TVkUInt32;
                          const aMaxCommandBufferSize:TVkDeviceSize);
{$endif}
     end;
{$endif}

{$ifdef VulkanSC}
     PPVkPipelinePoolSize=^PVkPipelinePoolSize;
     PVkPipelinePoolSize=^TVkPipelinePoolSize;
     TVkPipelinePoolSize=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PIPELINE_POOL_SIZE
       pNext:PVkVoid;
       poolEntrySize:TVkDeviceSize;
       poolEntryCount:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPoolEntrySize:TVkDeviceSize;
                          const aPoolEntryCount:TVkUInt32);
{$endif}
     end;
{$endif}

{$ifdef VulkanSC}
     PPVkDeviceObjectReservationCreateInfo=^PVkDeviceObjectReservationCreateInfo;
     PVkDeviceObjectReservationCreateInfo=^TVkDeviceObjectReservationCreateInfo;
     TVkDeviceObjectReservationCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DEVICE_OBJECT_RESERVATION_CREATE_INFO
       pNext:PVkVoid;
       pipelineCacheCreateInfoCount:TVkUInt32;
       pPipelineCacheCreateInfos:PVkPipelineCacheCreateInfo;
       pipelinePoolSizeCount:TVkUInt32;
       pPipelinePoolSizes:PVkPipelinePoolSize;
       semaphoreRequestCount:TVkUInt32;
       commandBufferRequestCount:TVkUInt32;
       fenceRequestCount:TVkUInt32;
       deviceMemoryRequestCount:TVkUInt32;
       bufferRequestCount:TVkUInt32;
       imageRequestCount:TVkUInt32;
       eventRequestCount:TVkUInt32;
       queryPoolRequestCount:TVkUInt32;
       bufferViewRequestCount:TVkUInt32;
       imageViewRequestCount:TVkUInt32;
       layeredImageViewRequestCount:TVkUInt32;
       pipelineCacheRequestCount:TVkUInt32;
       pipelineLayoutRequestCount:TVkUInt32;
       renderPassRequestCount:TVkUInt32;
       graphicsPipelineRequestCount:TVkUInt32;
       computePipelineRequestCount:TVkUInt32;
       descriptorSetLayoutRequestCount:TVkUInt32;
       samplerRequestCount:TVkUInt32;
       descriptorPoolRequestCount:TVkUInt32;
       descriptorSetRequestCount:TVkUInt32;
       framebufferRequestCount:TVkUInt32;
       commandPoolRequestCount:TVkUInt32;
       samplerYcbcrConversionRequestCount:TVkUInt32;
       surfaceRequestCount:TVkUInt32;
       swapchainRequestCount:TVkUInt32;
       displayModeRequestCount:TVkUInt32;
       subpassDescriptionRequestCount:TVkUInt32;
       attachmentDescriptionRequestCount:TVkUInt32;
       descriptorSetLayoutBindingRequestCount:TVkUInt32;
       descriptorSetLayoutBindingLimit:TVkUInt32;
       maxImageViewMipLevels:TVkUInt32;
       maxImageViewArrayLayers:TVkUInt32;
       maxLayeredImageViewMipLevels:TVkUInt32;
       maxOcclusionQueriesPerPool:TVkUInt32;
       maxPipelineStatisticsQueriesPerPool:TVkUInt32;
       maxTimestampQueriesPerPool:TVkUInt32;
       maxImmutableSamplersPerDescriptorSetLayout:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPipelineCacheCreateInfoCount:TVkUInt32;
                          const aPPipelineCacheCreateInfos:PVkPipelineCacheCreateInfo;
                          const aPipelinePoolSizeCount:TVkUInt32;
                          const aPPipelinePoolSizes:PVkPipelinePoolSize;
                          const aSemaphoreRequestCount:TVkUInt32;
                          const aCommandBufferRequestCount:TVkUInt32;
                          const aFenceRequestCount:TVkUInt32;
                          const aDeviceMemoryRequestCount:TVkUInt32;
                          const aBufferRequestCount:TVkUInt32;
                          const aImageRequestCount:TVkUInt32;
                          const aEventRequestCount:TVkUInt32;
                          const aQueryPoolRequestCount:TVkUInt32;
                          const aBufferViewRequestCount:TVkUInt32;
                          const aImageViewRequestCount:TVkUInt32;
                          const aLayeredImageViewRequestCount:TVkUInt32;
                          const aPipelineCacheRequestCount:TVkUInt32;
                          const aPipelineLayoutRequestCount:TVkUInt32;
                          const aRenderPassRequestCount:TVkUInt32;
                          const aGraphicsPipelineRequestCount:TVkUInt32;
                          const aComputePipelineRequestCount:TVkUInt32;
                          const aDescriptorSetLayoutRequestCount:TVkUInt32;
                          const aSamplerRequestCount:TVkUInt32;
                          const aDescriptorPoolRequestCount:TVkUInt32;
                          const aDescriptorSetRequestCount:TVkUInt32;
                          const aFramebufferRequestCount:TVkUInt32;
                          const aCommandPoolRequestCount:TVkUInt32;
                          const aSamplerYcbcrConversionRequestCount:TVkUInt32;
                          const aSurfaceRequestCount:TVkUInt32;
                          const aSwapchainRequestCount:TVkUInt32;
                          const aDisplayModeRequestCount:TVkUInt32;
                          const aSubpassDescriptionRequestCount:TVkUInt32;
                          const aAttachmentDescriptionRequestCount:TVkUInt32;
                          const aDescriptorSetLayoutBindingRequestCount:TVkUInt32;
                          const aDescriptorSetLayoutBindingLimit:TVkUInt32;
                          const aMaxImageViewMipLevels:TVkUInt32;
                          const aMaxImageViewArrayLayers:TVkUInt32;
                          const aMaxLayeredImageViewMipLevels:TVkUInt32;
                          const aMaxOcclusionQueriesPerPool:TVkUInt32;
                          const aMaxPipelineStatisticsQueriesPerPool:TVkUInt32;
                          const aMaxTimestampQueriesPerPool:TVkUInt32;
                          const aMaxImmutableSamplersPerDescriptorSetLayout:TVkUInt32);
{$endif}
     end;
{$endif}

{$ifdef VulkanSC}
     PPVkCommandPoolMemoryReservationCreateInfo=^PVkCommandPoolMemoryReservationCreateInfo;
     PVkCommandPoolMemoryReservationCreateInfo=^TVkCommandPoolMemoryReservationCreateInfo;
     TVkCommandPoolMemoryReservationCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_COMMAND_POOL_MEMORY_RESERVATION_CREATE_INFO
       pNext:PVkVoid;
       commandPoolReservedSize:TVkDeviceSize;
       commandPoolMaxCommandBuffers:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aCommandPoolReservedSize:TVkDeviceSize;
                          const aCommandPoolMaxCommandBuffers:TVkUInt32);
{$endif}
     end;
{$endif}

{$ifdef VulkanSC}
     PPVkCommandPoolMemoryConsumption=^PVkCommandPoolMemoryConsumption;
     PVkCommandPoolMemoryConsumption=^TVkCommandPoolMemoryConsumption;
     TVkCommandPoolMemoryConsumption=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_COMMAND_POOL_MEMORY_CONSUMPTION
       pNext:PVkVoid;
       commandPoolAllocated:TVkDeviceSize;
       commandPoolReservedSize:TVkDeviceSize;
       commandBufferAllocated:TVkDeviceSize;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aCommandPoolAllocated:TVkDeviceSize;
                          const aCommandPoolReservedSize:TVkDeviceSize;
                          const aCommandBufferAllocated:TVkDeviceSize);
{$endif}
     end;
{$endif}

{$ifdef VulkanSC}
     PPVkPhysicalDeviceVulkanSC10Features=^PVkPhysicalDeviceVulkanSC10Features;
     PVkPhysicalDeviceVulkanSC10Features=^TVkPhysicalDeviceVulkanSC10Features;
     TVkPhysicalDeviceVulkanSC10Features=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_FEATURES
       pNext:PVkVoid;
       shaderAtomicInstructions:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aShaderAtomicInstructions:TVkBool32);
{$endif}
     end;
{$endif}

     PPVkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT=^PVkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT;
     PVkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT=^TVkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT;
     TVkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT
       pNext:PVkVoid;
       primitivesGeneratedQuery:TVkBool32;
       primitivesGeneratedQueryWithRasterizerDiscard:TVkBool32;
       primitivesGeneratedQueryWithNonZeroStreams:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPrimitivesGeneratedQuery:TVkBool32;
                          const aPrimitivesGeneratedQueryWithRasterizerDiscard:TVkBool32;
                          const aPrimitivesGeneratedQueryWithNonZeroStreams:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceLegacyDitheringFeaturesEXT=^PVkPhysicalDeviceLegacyDitheringFeaturesEXT;
     PVkPhysicalDeviceLegacyDitheringFeaturesEXT=^TVkPhysicalDeviceLegacyDitheringFeaturesEXT;
     TVkPhysicalDeviceLegacyDitheringFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT
       pNext:PVkVoid;
       legacyDithering:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aLegacyDithering:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT=^PVkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT;
     PVkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT=^TVkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT;
     TVkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT
       pNext:PVkVoid;
       multisampledRenderToSingleSampled:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMultisampledRenderToSingleSampled:TVkBool32);
{$endif}
     end;

     PPVkSubpassResolvePerformanceQueryEXT=^PVkSubpassResolvePerformanceQueryEXT;
     PVkSubpassResolvePerformanceQueryEXT=^TVkSubpassResolvePerformanceQueryEXT;
     TVkSubpassResolvePerformanceQueryEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT
       pNext:PVkVoid;
       optimal:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aOptimal:TVkBool32);
{$endif}
     end;

     PPVkMultisampledRenderToSingleSampledInfoEXT=^PVkMultisampledRenderToSingleSampledInfoEXT;
     PVkMultisampledRenderToSingleSampledInfoEXT=^TVkMultisampledRenderToSingleSampledInfoEXT;
     TVkMultisampledRenderToSingleSampledInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT
       pNext:PVkVoid;
       multisampledRenderToSingleSampledEnable:TVkBool32;
       rasterizationSamples:TVkSampleCountFlagBits;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMultisampledRenderToSingleSampledEnable:TVkBool32;
                          const aRasterizationSamples:TVkSampleCountFlagBits);
{$endif}
     end;

     PPVkPhysicalDevicePipelineProtectedAccessFeaturesEXT=^PVkPhysicalDevicePipelineProtectedAccessFeaturesEXT;
     PVkPhysicalDevicePipelineProtectedAccessFeaturesEXT=^TVkPhysicalDevicePipelineProtectedAccessFeaturesEXT;
     TVkPhysicalDevicePipelineProtectedAccessFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT
       pNext:PVkVoid;
       pipelineProtectedAccess:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPipelineProtectedAccess:TVkBool32);
{$endif}
     end;

{$ifdef VkVideo}
     PPVkQueueFamilyVideoPropertiesKHR=^PVkQueueFamilyVideoPropertiesKHR;
     PVkQueueFamilyVideoPropertiesKHR=^TVkQueueFamilyVideoPropertiesKHR;
     TVkQueueFamilyVideoPropertiesKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_QUEUE_FAMILY_VIDEO_PROPERTIES_KHR
       pNext:PVkVoid;
       videoCodecOperations:TVkVideoCodecOperationFlagsKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aVideoCodecOperations:TVkVideoCodecOperationFlagsKHR);
{$endif}
     end;
{$endif}

     PPVkQueueFamilyQueryResultStatusPropertiesKHR=^PVkQueueFamilyQueryResultStatusPropertiesKHR;
     PVkQueueFamilyQueryResultStatusPropertiesKHR=^TVkQueueFamilyQueryResultStatusPropertiesKHR;
     TVkQueueFamilyQueryResultStatusPropertiesKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_QUEUE_FAMILY_QUERY_RESULT_STATUS_PROPERTIES_KHR
       pNext:PVkVoid;
       queryResultStatusSupport:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aQueryResultStatusSupport:TVkBool32);
{$endif}
     end;

{$ifdef VkVideo}
     PPVkVideoProfileInfoKHR=^PVkVideoProfileInfoKHR;
     PVkVideoProfileInfoKHR=^TVkVideoProfileInfoKHR;
     TVkVideoProfileInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_PROFILE_INFO_KHR
       pNext:PVkVoid;
       videoCodecOperation:TVkVideoCodecOperationFlagBitsKHR;
       chromaSubsampling:TVkVideoChromaSubsamplingFlagsKHR;
       lumaBitDepth:TVkVideoComponentBitDepthFlagsKHR;
       chromaBitDepth:TVkVideoComponentBitDepthFlagsKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aVideoCodecOperation:TVkVideoCodecOperationFlagBitsKHR;
                          const aChromaSubsampling:TVkVideoChromaSubsamplingFlagsKHR;
                          const aLumaBitDepth:TVkVideoComponentBitDepthFlagsKHR;
                          const aChromaBitDepth:TVkVideoComponentBitDepthFlagsKHR);
{$endif}
     end;
{$endif}

     PPVkPhysicalDeviceVideoFormatInfoKHR=^PVkPhysicalDeviceVideoFormatInfoKHR;
     PVkPhysicalDeviceVideoFormatInfoKHR=^TVkPhysicalDeviceVideoFormatInfoKHR;
     TVkPhysicalDeviceVideoFormatInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR
       pNext:PVkVoid;
       imageUsage:TVkImageUsageFlags;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aImageUsage:TVkImageUsageFlags);
{$endif}
     end;

{$ifdef VkVideo}
     PPVkVideoFormatPropertiesKHR=^PVkVideoFormatPropertiesKHR;
     PVkVideoFormatPropertiesKHR=^TVkVideoFormatPropertiesKHR;
     TVkVideoFormatPropertiesKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_FORMAT_PROPERTIES_KHR
       pNext:PVkVoid;
       format:TVkFormat;
       componentMapping:TVkComponentMapping;
       imageCreateFlags:TVkImageCreateFlags;
       imageType:TVkImageType;
       imageTiling:TVkImageTiling;
       imageUsageFlags:TVkImageUsageFlags;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFormat:TVkFormat;
                          const aComponentMapping:TVkComponentMapping;
                          const aImageCreateFlags:TVkImageCreateFlags;
                          const aImageType:TVkImageType;
                          const aImageTiling:TVkImageTiling;
                          const aImageUsageFlags:TVkImageUsageFlags);
{$endif}
     end;
{$endif}

{$ifdef VkVideo}
     PPVkVideoProfileListInfoKHR=^PVkVideoProfileListInfoKHR;
     PVkVideoProfileListInfoKHR=^TVkVideoProfileListInfoKHR;
     TVkVideoProfileListInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_PROFILE_LIST_INFO_KHR
       pNext:PVkVoid;
       profileCount:TVkUInt32;
       pProfiles:PVkVideoProfileInfoKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aProfileCount:TVkUInt32;
                          const aPProfiles:PVkVideoProfileInfoKHR);
{$endif}
     end;
{$endif}

{$ifdef VkVideo}
     PPVkVideoCapabilitiesKHR=^PVkVideoCapabilitiesKHR;
     PVkVideoCapabilitiesKHR=^TVkVideoCapabilitiesKHR;
     TVkVideoCapabilitiesKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_CAPABILITIES_KHR
       pNext:PVkVoid;
       flags:TVkVideoCapabilityFlagsKHR;
       minBitstreamBufferOffsetAlignment:TVkDeviceSize;
       minBitstreamBufferSizeAlignment:TVkDeviceSize;
       pictureAccessGranularity:TVkExtent2D;
       minCodedExtent:TVkExtent2D;
       maxCodedExtent:TVkExtent2D;
       maxDpbSlots:TVkUInt32;
       maxActiveReferencePictures:TVkUInt32;
       stdHeaderVersion:TVkExtensionProperties;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkVideoCapabilityFlagsKHR;
                          const aMinBitstreamBufferOffsetAlignment:TVkDeviceSize;
                          const aMinBitstreamBufferSizeAlignment:TVkDeviceSize;
                          const aPictureAccessGranularity:TVkExtent2D;
                          const aMinCodedExtent:TVkExtent2D;
                          const aMaxCodedExtent:TVkExtent2D;
                          const aMaxDpbSlots:TVkUInt32;
                          const aMaxActiveReferencePictures:TVkUInt32;
                          const aStdHeaderVersion:TVkExtensionProperties);
{$endif}
     end;
{$endif}

{$ifdef VkVideo}
     PPVkVideoSessionMemoryRequirementsKHR=^PVkVideoSessionMemoryRequirementsKHR;
     PVkVideoSessionMemoryRequirementsKHR=^TVkVideoSessionMemoryRequirementsKHR;
     TVkVideoSessionMemoryRequirementsKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_SESSION_MEMORY_REQUIREMENTS_KHR
       pNext:PVkVoid;
       memoryBindIndex:TVkUInt32;
       memoryRequirements:TVkMemoryRequirements;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMemoryBindIndex:TVkUInt32;
                          const aMemoryRequirements:TVkMemoryRequirements);
{$endif}
     end;
{$endif}

     PPVkBindVideoSessionMemoryInfoKHR=^PVkBindVideoSessionMemoryInfoKHR;
     PVkBindVideoSessionMemoryInfoKHR=^TVkBindVideoSessionMemoryInfoKHR;
     TVkBindVideoSessionMemoryInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_BIND_VIDEO_SESSION_MEMORY_INFO_KHR
       pNext:PVkVoid;
       memoryBindIndex:TVkUInt32;
       memory:TVkDeviceMemory;
       memoryOffset:TVkDeviceSize;
       memorySize:TVkDeviceSize;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMemoryBindIndex:TVkUInt32;
                          const aMemory:TVkDeviceMemory;
                          const aMemoryOffset:TVkDeviceSize;
                          const aMemorySize:TVkDeviceSize);
{$endif}
     end;

{$ifdef VkVideo}
     PPVkVideoPictureResourceInfoKHR=^PVkVideoPictureResourceInfoKHR;
     PVkVideoPictureResourceInfoKHR=^TVkVideoPictureResourceInfoKHR;
     TVkVideoPictureResourceInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_PICTURE_RESOURCE_INFO_KHR
       pNext:PVkVoid;
       codedOffset:TVkOffset2D;
       codedExtent:TVkExtent2D;
       baseArrayLayer:TVkUInt32;
       imageViewBinding:TVkImageView;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aCodedOffset:TVkOffset2D;
                          const aCodedExtent:TVkExtent2D;
                          const aBaseArrayLayer:TVkUInt32;
                          const aImageViewBinding:TVkImageView);
{$endif}
     end;
{$endif}

{$ifdef VkVideo}
     PPVkVideoReferenceSlotInfoKHR=^PVkVideoReferenceSlotInfoKHR;
     PVkVideoReferenceSlotInfoKHR=^TVkVideoReferenceSlotInfoKHR;
     TVkVideoReferenceSlotInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_REFERENCE_SLOT_INFO_KHR
       pNext:PVkVoid;
       slotIndex:TVkInt32;
       pPictureResource:PVkVideoPictureResourceInfoKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSlotIndex:TVkInt32;
                          const aPPictureResource:PVkVideoPictureResourceInfoKHR);
{$endif}
     end;
{$endif}

{$ifdef VkVideo}
     PPVkVideoDecodeCapabilitiesKHR=^PVkVideoDecodeCapabilitiesKHR;
     PVkVideoDecodeCapabilitiesKHR=^TVkVideoDecodeCapabilitiesKHR;
     TVkVideoDecodeCapabilitiesKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_DECODE_CAPABILITIES_KHR
       pNext:PVkVoid;
       flags:TVkVideoDecodeCapabilityFlagsKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkVideoDecodeCapabilityFlagsKHR);
{$endif}
     end;
{$endif}

{$ifdef VkVideo}
     PPVkVideoDecodeUsageInfoKHR=^PVkVideoDecodeUsageInfoKHR;
     PVkVideoDecodeUsageInfoKHR=^TVkVideoDecodeUsageInfoKHR;
     TVkVideoDecodeUsageInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_DECODE_USAGE_INFO_KHR
       pNext:PVkVoid;
       videoUsageHints:TVkVideoDecodeUsageFlagsKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aVideoUsageHints:TVkVideoDecodeUsageFlagsKHR);
{$endif}
     end;
{$endif}

{$ifdef VkVideo}
     PPVkVideoDecodeInfoKHR=^PVkVideoDecodeInfoKHR;
     PVkVideoDecodeInfoKHR=^TVkVideoDecodeInfoKHR;
     TVkVideoDecodeInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_DECODE_INFO_KHR
       pNext:PVkVoid;
       flags:TVkVideoDecodeFlagsKHR;
       srcBuffer:TVkBuffer;
       srcBufferOffset:TVkDeviceSize;
       srcBufferRange:TVkDeviceSize;
       dstPictureResource:TVkVideoPictureResourceInfoKHR;
       pSetupReferenceSlot:PVkVideoReferenceSlotInfoKHR;
       referenceSlotCount:TVkUInt32;
       pReferenceSlots:PVkVideoReferenceSlotInfoKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkVideoDecodeFlagsKHR;
                          const aSrcBuffer:TVkBuffer;
                          const aSrcBufferOffset:TVkDeviceSize;
                          const aSrcBufferRange:TVkDeviceSize;
                          const aDstPictureResource:TVkVideoPictureResourceInfoKHR;
                          const aPSetupReferenceSlot:PVkVideoReferenceSlotInfoKHR;
                          const aReferenceSlotCount:TVkUInt32;
                          const aPReferenceSlots:PVkVideoReferenceSlotInfoKHR);
{$endif}
     end;
{$endif}

{$ifdef VkVideo}
     PPVkVideoDecodeH264ProfileInfoKHR=^PVkVideoDecodeH264ProfileInfoKHR;
     PVkVideoDecodeH264ProfileInfoKHR=^TVkVideoDecodeH264ProfileInfoKHR;
     TVkVideoDecodeH264ProfileInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_KHR
       pNext:PVkVoid;
       stdProfileIdc:TStdVideoH264ProfileIdc;
       pictureLayout:TVkVideoDecodeH264PictureLayoutFlagBitsKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aStdProfileIdc:TStdVideoH264ProfileIdc;
                          const aPictureLayout:TVkVideoDecodeH264PictureLayoutFlagBitsKHR);
{$endif}
     end;
{$endif}

{$ifdef VkStdVideo}
     PPVkVideoDecodeH264CapabilitiesKHR=^PVkVideoDecodeH264CapabilitiesKHR;
     PVkVideoDecodeH264CapabilitiesKHR=^TVkVideoDecodeH264CapabilitiesKHR;
     TVkVideoDecodeH264CapabilitiesKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_KHR
       pNext:PVkVoid;
       maxLevelIdc:TStdVideoH264LevelIdc;
       fieldOffsetGranularity:TVkOffset2D;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMaxLevelIdc:TStdVideoH264LevelIdc;
                          const aFieldOffsetGranularity:TVkOffset2D);
{$endif}
     end;
{$endif}

{$ifdef VkStdVideo}
     PPVkVideoDecodeH264SessionParametersAddInfoKHR=^PVkVideoDecodeH264SessionParametersAddInfoKHR;
     PVkVideoDecodeH264SessionParametersAddInfoKHR=^TVkVideoDecodeH264SessionParametersAddInfoKHR;
     TVkVideoDecodeH264SessionParametersAddInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR
       pNext:PVkVoid;
       stdSPSCount:TVkUInt32;
       pStdSPSs:PStdVideoH264SequenceParameterSet;
       stdPPSCount:TVkUInt32;
       pStdPPSs:PStdVideoH264PictureParameterSet;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aStdSPSCount:TVkUInt32;
                          const aPStdSPSs:PStdVideoH264SequenceParameterSet;
                          const aStdPPSCount:TVkUInt32;
                          const aPStdPPSs:PStdVideoH264PictureParameterSet);
{$endif}
     end;
{$endif}

{$ifdef VkVideo}
     PPVkVideoDecodeH264SessionParametersCreateInfoKHR=^PVkVideoDecodeH264SessionParametersCreateInfoKHR;
     PVkVideoDecodeH264SessionParametersCreateInfoKHR=^TVkVideoDecodeH264SessionParametersCreateInfoKHR;
     TVkVideoDecodeH264SessionParametersCreateInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR
       pNext:PVkVoid;
       maxStdSPSCount:TVkUInt32;
       maxStdPPSCount:TVkUInt32;
       pParametersAddInfo:PVkVideoDecodeH264SessionParametersAddInfoKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMaxStdSPSCount:TVkUInt32;
                          const aMaxStdPPSCount:TVkUInt32;
                          const aPParametersAddInfo:PVkVideoDecodeH264SessionParametersAddInfoKHR);
{$endif}
     end;
{$endif}

{$ifdef VkStdVideo}
     PPVkVideoDecodeH264PictureInfoKHR=^PVkVideoDecodeH264PictureInfoKHR;
     PVkVideoDecodeH264PictureInfoKHR=^TVkVideoDecodeH264PictureInfoKHR;
     TVkVideoDecodeH264PictureInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_KHR
       pNext:PVkVoid;
       pStdPictureInfo:PStdVideoDecodeH264PictureInfo;
       sliceCount:TVkUInt32;
       pSliceOffsets:PVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPStdPictureInfo:PStdVideoDecodeH264PictureInfo;
                          const aSliceCount:TVkUInt32;
                          const aPSliceOffsets:PVkUInt32);
{$endif}
     end;
{$endif}

{$ifdef VkStdVideo}
     PPVkVideoDecodeH264DpbSlotInfoKHR=^PVkVideoDecodeH264DpbSlotInfoKHR;
     PVkVideoDecodeH264DpbSlotInfoKHR=^TVkVideoDecodeH264DpbSlotInfoKHR;
     TVkVideoDecodeH264DpbSlotInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR
       pNext:PVkVoid;
       pStdReferenceInfo:PStdVideoDecodeH264ReferenceInfo;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPStdReferenceInfo:PStdVideoDecodeH264ReferenceInfo);
{$endif}
     end;
{$endif}

{$ifdef VkStdVideo}
     PPVkVideoDecodeH265ProfileInfoKHR=^PVkVideoDecodeH265ProfileInfoKHR;
     PVkVideoDecodeH265ProfileInfoKHR=^TVkVideoDecodeH265ProfileInfoKHR;
     TVkVideoDecodeH265ProfileInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_KHR
       pNext:PVkVoid;
       stdProfileIdc:TStdVideoH265ProfileIdc;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aStdProfileIdc:TStdVideoH265ProfileIdc);
{$endif}
     end;
{$endif}

{$ifdef VkStdVideo}
     PPVkVideoDecodeH265CapabilitiesKHR=^PVkVideoDecodeH265CapabilitiesKHR;
     PVkVideoDecodeH265CapabilitiesKHR=^TVkVideoDecodeH265CapabilitiesKHR;
     TVkVideoDecodeH265CapabilitiesKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_KHR
       pNext:PVkVoid;
       maxLevelIdc:TStdVideoH265LevelIdc;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMaxLevelIdc:TStdVideoH265LevelIdc);
{$endif}
     end;
{$endif}

{$ifdef VkStdVideo}
     PPVkVideoDecodeH265SessionParametersAddInfoKHR=^PVkVideoDecodeH265SessionParametersAddInfoKHR;
     PVkVideoDecodeH265SessionParametersAddInfoKHR=^TVkVideoDecodeH265SessionParametersAddInfoKHR;
     TVkVideoDecodeH265SessionParametersAddInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR
       pNext:PVkVoid;
       stdVPSCount:TVkUInt32;
       pStdVPSs:PStdVideoH265VideoParameterSet;
       stdSPSCount:TVkUInt32;
       pStdSPSs:PStdVideoH265SequenceParameterSet;
       stdPPSCount:TVkUInt32;
       pStdPPSs:PStdVideoH265PictureParameterSet;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aStdVPSCount:TVkUInt32;
                          const aPStdVPSs:PStdVideoH265VideoParameterSet;
                          const aStdSPSCount:TVkUInt32;
                          const aPStdSPSs:PStdVideoH265SequenceParameterSet;
                          const aStdPPSCount:TVkUInt32;
                          const aPStdPPSs:PStdVideoH265PictureParameterSet);
{$endif}
     end;
{$endif}

{$ifdef VkVideo}
     PPVkVideoDecodeH265SessionParametersCreateInfoKHR=^PVkVideoDecodeH265SessionParametersCreateInfoKHR;
     PVkVideoDecodeH265SessionParametersCreateInfoKHR=^TVkVideoDecodeH265SessionParametersCreateInfoKHR;
     TVkVideoDecodeH265SessionParametersCreateInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR
       pNext:PVkVoid;
       maxStdVPSCount:TVkUInt32;
       maxStdSPSCount:TVkUInt32;
       maxStdPPSCount:TVkUInt32;
       pParametersAddInfo:PVkVideoDecodeH265SessionParametersAddInfoKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMaxStdVPSCount:TVkUInt32;
                          const aMaxStdSPSCount:TVkUInt32;
                          const aMaxStdPPSCount:TVkUInt32;
                          const aPParametersAddInfo:PVkVideoDecodeH265SessionParametersAddInfoKHR);
{$endif}
     end;
{$endif}

{$ifdef VkStdVideo}
     PPVkVideoDecodeH265PictureInfoKHR=^PVkVideoDecodeH265PictureInfoKHR;
     PVkVideoDecodeH265PictureInfoKHR=^TVkVideoDecodeH265PictureInfoKHR;
     TVkVideoDecodeH265PictureInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_KHR
       pNext:PVkVoid;
       pStdPictureInfo:PStdVideoDecodeH265PictureInfo;
       sliceSegmentCount:TVkUInt32;
       pSliceSegmentOffsets:PVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPStdPictureInfo:PStdVideoDecodeH265PictureInfo;
                          const aSliceSegmentCount:TVkUInt32;
                          const aPSliceSegmentOffsets:PVkUInt32);
{$endif}
     end;
{$endif}

{$ifdef VkStdVideo}
     PPVkVideoDecodeH265DpbSlotInfoKHR=^PVkVideoDecodeH265DpbSlotInfoKHR;
     PVkVideoDecodeH265DpbSlotInfoKHR=^TVkVideoDecodeH265DpbSlotInfoKHR;
     TVkVideoDecodeH265DpbSlotInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR
       pNext:PVkVoid;
       pStdReferenceInfo:PStdVideoDecodeH265ReferenceInfo;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPStdReferenceInfo:PStdVideoDecodeH265ReferenceInfo);
{$endif}
     end;
{$endif}

{$ifdef VkVideo}
     PPVkVideoSessionCreateInfoKHR=^PVkVideoSessionCreateInfoKHR;
     PVkVideoSessionCreateInfoKHR=^TVkVideoSessionCreateInfoKHR;
     TVkVideoSessionCreateInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_SESSION_CREATE_INFO_KHR
       pNext:PVkVoid;
       queueFamilyIndex:TVkUInt32;
       flags:TVkVideoSessionCreateFlagsKHR;
       pVideoProfile:PVkVideoProfileInfoKHR;
       pictureFormat:TVkFormat;
       maxCodedExtent:TVkExtent2D;
       referencePictureFormat:TVkFormat;
       maxDpbSlots:TVkUInt32;
       maxActiveReferencePictures:TVkUInt32;
       pStdHeaderVersion:PVkExtensionProperties;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aQueueFamilyIndex:TVkUInt32;
                          const aFlags:TVkVideoSessionCreateFlagsKHR;
                          const aPVideoProfile:PVkVideoProfileInfoKHR;
                          const aPictureFormat:TVkFormat;
                          const aMaxCodedExtent:TVkExtent2D;
                          const aReferencePictureFormat:TVkFormat;
                          const aMaxDpbSlots:TVkUInt32;
                          const aMaxActiveReferencePictures:TVkUInt32;
                          const aPStdHeaderVersion:PVkExtensionProperties);
{$endif}
     end;
{$endif}

{$ifdef VkVideo}
     PPVkVideoSessionParametersCreateInfoKHR=^PVkVideoSessionParametersCreateInfoKHR;
     PVkVideoSessionParametersCreateInfoKHR=^TVkVideoSessionParametersCreateInfoKHR;
     TVkVideoSessionParametersCreateInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR
       pNext:PVkVoid;
       flags:TVkVideoSessionParametersCreateFlagsKHR;
       videoSessionParametersTemplate:TVkVideoSessionParametersKHR;
       videoSession:TVkVideoSessionKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkVideoSessionParametersCreateFlagsKHR;
                          const aVideoSessionParametersTemplate:TVkVideoSessionParametersKHR;
                          const aVideoSession:TVkVideoSessionKHR);
{$endif}
     end;
{$endif}

{$ifdef VkVideo}
     PPVkVideoSessionParametersUpdateInfoKHR=^PVkVideoSessionParametersUpdateInfoKHR;
     PVkVideoSessionParametersUpdateInfoKHR=^TVkVideoSessionParametersUpdateInfoKHR;
     TVkVideoSessionParametersUpdateInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR
       pNext:PVkVoid;
       updateSequenceCount:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aUpdateSequenceCount:TVkUInt32);
{$endif}
     end;
{$endif}

{$ifdef VkVideo}
     PPVkVideoEncodeSessionParametersGetInfoKHR=^PVkVideoEncodeSessionParametersGetInfoKHR;
     PVkVideoEncodeSessionParametersGetInfoKHR=^TVkVideoEncodeSessionParametersGetInfoKHR;
     TVkVideoEncodeSessionParametersGetInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_GET_INFO_KHR
       pNext:PVkVoid;
       videoSessionParameters:TVkVideoSessionParametersKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aVideoSessionParameters:TVkVideoSessionParametersKHR);
{$endif}
     end;
{$endif}

{$ifdef VkVideo}
     PPVkVideoEncodeSessionParametersFeedbackInfoKHR=^PVkVideoEncodeSessionParametersFeedbackInfoKHR;
     PVkVideoEncodeSessionParametersFeedbackInfoKHR=^TVkVideoEncodeSessionParametersFeedbackInfoKHR;
     TVkVideoEncodeSessionParametersFeedbackInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_FEEDBACK_INFO_KHR
       pNext:PVkVoid;
       hasOverrides:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aHasOverrides:TVkBool32);
{$endif}
     end;
{$endif}

{$ifdef VkVideo}
     PPVkVideoBeginCodingInfoKHR=^PVkVideoBeginCodingInfoKHR;
     PVkVideoBeginCodingInfoKHR=^TVkVideoBeginCodingInfoKHR;
     TVkVideoBeginCodingInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_BEGIN_CODING_INFO_KHR
       pNext:PVkVoid;
       flags:TVkVideoBeginCodingFlagsKHR;
       videoSession:TVkVideoSessionKHR;
       videoSessionParameters:TVkVideoSessionParametersKHR;
       referenceSlotCount:TVkUInt32;
       pReferenceSlots:PVkVideoReferenceSlotInfoKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkVideoBeginCodingFlagsKHR;
                          const aVideoSession:TVkVideoSessionKHR;
                          const aVideoSessionParameters:TVkVideoSessionParametersKHR;
                          const aReferenceSlotCount:TVkUInt32;
                          const aPReferenceSlots:PVkVideoReferenceSlotInfoKHR);
{$endif}
     end;
{$endif}

{$ifdef VkVideo}
     PPVkVideoEndCodingInfoKHR=^PVkVideoEndCodingInfoKHR;
     PVkVideoEndCodingInfoKHR=^TVkVideoEndCodingInfoKHR;
     TVkVideoEndCodingInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_END_CODING_INFO_KHR
       pNext:PVkVoid;
       flags:TVkVideoEndCodingFlagsKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkVideoEndCodingFlagsKHR);
{$endif}
     end;
{$endif}

{$ifdef VkVideo}
     PPVkVideoCodingControlInfoKHR=^PVkVideoCodingControlInfoKHR;
     PVkVideoCodingControlInfoKHR=^TVkVideoCodingControlInfoKHR;
     TVkVideoCodingControlInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_CODING_CONTROL_INFO_KHR
       pNext:PVkVoid;
       flags:TVkVideoCodingControlFlagsKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkVideoCodingControlFlagsKHR);
{$endif}
     end;
{$endif}

{$ifdef VkVideo}
     PPVkVideoEncodeUsageInfoKHR=^PVkVideoEncodeUsageInfoKHR;
     PVkVideoEncodeUsageInfoKHR=^TVkVideoEncodeUsageInfoKHR;
     TVkVideoEncodeUsageInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_USAGE_INFO_KHR
       pNext:PVkVoid;
       videoUsageHints:TVkVideoEncodeUsageFlagsKHR;
       videoContentHints:TVkVideoEncodeContentFlagsKHR;
       tuningMode:TVkVideoEncodeTuningModeKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aVideoUsageHints:TVkVideoEncodeUsageFlagsKHR;
                          const aVideoContentHints:TVkVideoEncodeContentFlagsKHR;
                          const aTuningMode:TVkVideoEncodeTuningModeKHR);
{$endif}
     end;
{$endif}

{$ifdef VkVideo}
     PPVkVideoEncodeInfoKHR=^PVkVideoEncodeInfoKHR;
     PVkVideoEncodeInfoKHR=^TVkVideoEncodeInfoKHR;
     TVkVideoEncodeInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_INFO_KHR
       pNext:PVkVoid;
       flags:TVkVideoEncodeFlagsKHR;
       dstBuffer:TVkBuffer;
       dstBufferOffset:TVkDeviceSize;
       dstBufferRange:TVkDeviceSize;
       srcPictureResource:TVkVideoPictureResourceInfoKHR;
       pSetupReferenceSlot:PVkVideoReferenceSlotInfoKHR;
       referenceSlotCount:TVkUInt32;
       pReferenceSlots:PVkVideoReferenceSlotInfoKHR;
       precedingExternallyEncodedBytes:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkVideoEncodeFlagsKHR;
                          const aDstBuffer:TVkBuffer;
                          const aDstBufferOffset:TVkDeviceSize;
                          const aDstBufferRange:TVkDeviceSize;
                          const aSrcPictureResource:TVkVideoPictureResourceInfoKHR;
                          const aPSetupReferenceSlot:PVkVideoReferenceSlotInfoKHR;
                          const aReferenceSlotCount:TVkUInt32;
                          const aPReferenceSlots:PVkVideoReferenceSlotInfoKHR;
                          const aPrecedingExternallyEncodedBytes:TVkUInt32);
{$endif}
     end;
{$endif}

{$ifdef VkVideo}
     PPVkQueryPoolVideoEncodeFeedbackCreateInfoKHR=^PVkQueryPoolVideoEncodeFeedbackCreateInfoKHR;
     PVkQueryPoolVideoEncodeFeedbackCreateInfoKHR=^TVkQueryPoolVideoEncodeFeedbackCreateInfoKHR;
     TVkQueryPoolVideoEncodeFeedbackCreateInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_QUERY_POOL_VIDEO_ENCODE_FEEDBACK_CREATE_INFO_KHR
       pNext:PVkVoid;
       encodeFeedbackFlags:TVkVideoEncodeFeedbackFlagsKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aEncodeFeedbackFlags:TVkVideoEncodeFeedbackFlagsKHR);
{$endif}
     end;
{$endif}

{$ifdef VkVideo}
     PPVkVideoEncodeQualityLevelInfoKHR=^PVkVideoEncodeQualityLevelInfoKHR;
     PVkVideoEncodeQualityLevelInfoKHR=^TVkVideoEncodeQualityLevelInfoKHR;
     TVkVideoEncodeQualityLevelInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR
       pNext:PVkVoid;
       qualityLevel:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aQualityLevel:TVkUInt32);
{$endif}
     end;
{$endif}

{$ifdef VkVideo}
     PPVkPhysicalDeviceVideoEncodeQualityLevelInfoKHR=^PVkPhysicalDeviceVideoEncodeQualityLevelInfoKHR;
     PVkPhysicalDeviceVideoEncodeQualityLevelInfoKHR=^TVkPhysicalDeviceVideoEncodeQualityLevelInfoKHR;
     TVkPhysicalDeviceVideoEncodeQualityLevelInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR
       pNext:PVkVoid;
       pVideoProfile:PVkVideoProfileInfoKHR;
       qualityLevel:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPVideoProfile:PVkVideoProfileInfoKHR;
                          const aQualityLevel:TVkUInt32);
{$endif}
     end;
{$endif}

{$ifdef VkVideo}
     PPVkVideoEncodeQualityLevelPropertiesKHR=^PVkVideoEncodeQualityLevelPropertiesKHR;
     PVkVideoEncodeQualityLevelPropertiesKHR=^TVkVideoEncodeQualityLevelPropertiesKHR;
     TVkVideoEncodeQualityLevelPropertiesKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_PROPERTIES_KHR
       pNext:PVkVoid;
       preferredRateControlMode:TVkVideoEncodeRateControlModeFlagBitsKHR;
       preferredRateControlLayerCount:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPreferredRateControlMode:TVkVideoEncodeRateControlModeFlagBitsKHR;
                          const aPreferredRateControlLayerCount:TVkUInt32);
{$endif}
     end;
{$endif}

{$ifdef VkVideo}
     PPVkVideoEncodeRateControlLayerInfoKHR=^PVkVideoEncodeRateControlLayerInfoKHR;
     PVkVideoEncodeRateControlLayerInfoKHR=^TVkVideoEncodeRateControlLayerInfoKHR;
     TVkVideoEncodeRateControlLayerInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR
       pNext:PVkVoid;
       averageBitrate:TVkUInt64;
       maxBitrate:TVkUInt64;
       frameRateNumerator:TVkUInt32;
       frameRateDenominator:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aAverageBitrate:TVkUInt64;
                          const aMaxBitrate:TVkUInt64;
                          const aFrameRateNumerator:TVkUInt32;
                          const aFrameRateDenominator:TVkUInt32);
{$endif}
     end;
{$endif}

{$ifdef VkVideo}
     PPVkVideoEncodeRateControlInfoKHR=^PVkVideoEncodeRateControlInfoKHR;
     PVkVideoEncodeRateControlInfoKHR=^TVkVideoEncodeRateControlInfoKHR;
     TVkVideoEncodeRateControlInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR
       pNext:PVkVoid;
       flags:TVkVideoEncodeRateControlFlagsKHR;
       rateControlMode:TVkVideoEncodeRateControlModeFlagBitsKHR;
       layerCount:TVkUInt32;
       pLayers:PVkVideoEncodeRateControlLayerInfoKHR;
       virtualBufferSizeInMs:TVkUInt32;
       initialVirtualBufferSizeInMs:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkVideoEncodeRateControlFlagsKHR;
                          const aRateControlMode:TVkVideoEncodeRateControlModeFlagBitsKHR;
                          const aLayerCount:TVkUInt32;
                          const aPLayers:PVkVideoEncodeRateControlLayerInfoKHR;
                          const aVirtualBufferSizeInMs:TVkUInt32;
                          const aInitialVirtualBufferSizeInMs:TVkUInt32);
{$endif}
     end;
{$endif}

{$ifdef VkVideo}
     PPVkVideoEncodeCapabilitiesKHR=^PVkVideoEncodeCapabilitiesKHR;
     PVkVideoEncodeCapabilitiesKHR=^TVkVideoEncodeCapabilitiesKHR;
     TVkVideoEncodeCapabilitiesKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_CAPABILITIES_KHR
       pNext:PVkVoid;
       flags:TVkVideoEncodeCapabilityFlagsKHR;
       rateControlModes:TVkVideoEncodeRateControlModeFlagsKHR;
       maxRateControlLayers:TVkUInt32;
       maxBitrate:TVkUInt64;
       maxQualityLevels:TVkUInt32;
       encodeInputPictureGranularity:TVkExtent2D;
       supportedEncodeFeedbackFlags:TVkVideoEncodeFeedbackFlagsKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkVideoEncodeCapabilityFlagsKHR;
                          const aRateControlModes:TVkVideoEncodeRateControlModeFlagsKHR;
                          const aMaxRateControlLayers:TVkUInt32;
                          const aMaxBitrate:TVkUInt64;
                          const aMaxQualityLevels:TVkUInt32;
                          const aEncodeInputPictureGranularity:TVkExtent2D;
                          const aSupportedEncodeFeedbackFlags:TVkVideoEncodeFeedbackFlagsKHR);
{$endif}
     end;
{$endif}

{$ifdef VkVideo}
     PPVkVideoEncodeH264CapabilitiesEXT=^PVkVideoEncodeH264CapabilitiesEXT;
     PVkVideoEncodeH264CapabilitiesEXT=^TVkVideoEncodeH264CapabilitiesEXT;
     TVkVideoEncodeH264CapabilitiesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_CAPABILITIES_EXT
       pNext:PVkVoid;
       flags:TVkVideoEncodeH264CapabilityFlagsEXT;
       maxLevelIdc:TStdVideoH264LevelIdc;
       maxSliceCount:TVkUInt32;
       maxPPictureL0ReferenceCount:TVkUInt32;
       maxBPictureL0ReferenceCount:TVkUInt32;
       maxL1ReferenceCount:TVkUInt32;
       maxTemporalLayerCount:TVkUInt32;
       expectDyadicTemporalLayerPattern:TVkBool32;
       minQp:TVkInt32;
       maxQp:TVkInt32;
       prefersGopRemainingFrames:TVkBool32;
       requiresGopRemainingFrames:TVkBool32;
       stdSyntaxFlags:TVkVideoEncodeH264StdFlagsEXT;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkVideoEncodeH264CapabilityFlagsEXT;
                          const aMaxLevelIdc:TStdVideoH264LevelIdc;
                          const aMaxSliceCount:TVkUInt32;
                          const aMaxPPictureL0ReferenceCount:TVkUInt32;
                          const aMaxBPictureL0ReferenceCount:TVkUInt32;
                          const aMaxL1ReferenceCount:TVkUInt32;
                          const aMaxTemporalLayerCount:TVkUInt32;
                          const aExpectDyadicTemporalLayerPattern:TVkBool32;
                          const aMinQp:TVkInt32;
                          const aMaxQp:TVkInt32;
                          const aPrefersGopRemainingFrames:TVkBool32;
                          const aRequiresGopRemainingFrames:TVkBool32;
                          const aStdSyntaxFlags:TVkVideoEncodeH264StdFlagsEXT);
{$endif}
     end;
{$endif}

{$ifdef VkVideo}
     PPVkVideoEncodeH264QpEXT=^PVkVideoEncodeH264QpEXT;
     PVkVideoEncodeH264QpEXT=^TVkVideoEncodeH264QpEXT;
     TVkVideoEncodeH264QpEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       qpI:TVkInt32;
       qpP:TVkInt32;
       qpB:TVkInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aQpI:TVkInt32;
                          const aQpP:TVkInt32;
                          const aQpB:TVkInt32);
{$endif}
     end;
{$endif}

{$ifdef VkStdVideo}
     PPVkVideoEncodeH264SessionCreateInfoEXT=^PVkVideoEncodeH264SessionCreateInfoEXT;
     PVkVideoEncodeH264SessionCreateInfoEXT=^TVkVideoEncodeH264SessionCreateInfoEXT;
     TVkVideoEncodeH264SessionCreateInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_CREATE_INFO_EXT
       pNext:PVkVoid;
       useMaxLevelIdc:TVkBool32;
       maxLevelIdc:TStdVideoH264LevelIdc;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aUseMaxLevelIdc:TVkBool32;
                          const aMaxLevelIdc:TStdVideoH264LevelIdc);
{$endif}
     end;
{$endif}

{$ifdef VkStdVideo}
     PPVkVideoEncodeH264SessionParametersAddInfoEXT=^PVkVideoEncodeH264SessionParametersAddInfoEXT;
     PVkVideoEncodeH264SessionParametersAddInfoEXT=^TVkVideoEncodeH264SessionParametersAddInfoEXT;
     TVkVideoEncodeH264SessionParametersAddInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT
       pNext:PVkVoid;
       stdSPSCount:TVkUInt32;
       pStdSPSs:PStdVideoH264SequenceParameterSet;
       stdPPSCount:TVkUInt32;
       pStdPPSs:PStdVideoH264PictureParameterSet;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aStdSPSCount:TVkUInt32;
                          const aPStdSPSs:PStdVideoH264SequenceParameterSet;
                          const aStdPPSCount:TVkUInt32;
                          const aPStdPPSs:PStdVideoH264PictureParameterSet);
{$endif}
     end;
{$endif}

{$ifdef VkVideo}
     PPVkVideoEncodeH264SessionParametersCreateInfoEXT=^PVkVideoEncodeH264SessionParametersCreateInfoEXT;
     PVkVideoEncodeH264SessionParametersCreateInfoEXT=^TVkVideoEncodeH264SessionParametersCreateInfoEXT;
     TVkVideoEncodeH264SessionParametersCreateInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT
       pNext:PVkVoid;
       maxStdSPSCount:TVkUInt32;
       maxStdPPSCount:TVkUInt32;
       pParametersAddInfo:PVkVideoEncodeH264SessionParametersAddInfoEXT;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMaxStdSPSCount:TVkUInt32;
                          const aMaxStdPPSCount:TVkUInt32;
                          const aPParametersAddInfo:PVkVideoEncodeH264SessionParametersAddInfoEXT);
{$endif}
     end;
{$endif}

{$ifdef VkVideo}
     PPVkVideoEncodeH264SessionParametersGetInfoEXT=^PVkVideoEncodeH264SessionParametersGetInfoEXT;
     PVkVideoEncodeH264SessionParametersGetInfoEXT=^TVkVideoEncodeH264SessionParametersGetInfoEXT;
     TVkVideoEncodeH264SessionParametersGetInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_GET_INFO_EXT
       pNext:PVkVoid;
       writeStdSPS:TVkBool32;
       writeStdPPS:TVkBool32;
       stdSPSId:TVkUInt32;
       stdPPSId:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aWriteStdSPS:TVkBool32;
                          const aWriteStdPPS:TVkBool32;
                          const aStdSPSId:TVkUInt32;
                          const aStdPPSId:TVkUInt32);
{$endif}
     end;
{$endif}

{$ifdef VkVideo}
     PPVkVideoEncodeH264SessionParametersFeedbackInfoEXT=^PVkVideoEncodeH264SessionParametersFeedbackInfoEXT;
     PVkVideoEncodeH264SessionParametersFeedbackInfoEXT=^TVkVideoEncodeH264SessionParametersFeedbackInfoEXT;
     TVkVideoEncodeH264SessionParametersFeedbackInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_FEEDBACK_INFO_EXT
       pNext:PVkVoid;
       hasStdSPSOverrides:TVkBool32;
       hasStdPPSOverrides:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aHasStdSPSOverrides:TVkBool32;
                          const aHasStdPPSOverrides:TVkBool32);
{$endif}
     end;
{$endif}

{$ifdef VkStdVideo}
     PPVkVideoEncodeH264DpbSlotInfoEXT=^PVkVideoEncodeH264DpbSlotInfoEXT;
     PVkVideoEncodeH264DpbSlotInfoEXT=^TVkVideoEncodeH264DpbSlotInfoEXT;
     TVkVideoEncodeH264DpbSlotInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_EXT
       pNext:PVkVoid;
       pStdReferenceInfo:PStdVideoEncodeH264ReferenceInfo;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPStdReferenceInfo:PStdVideoEncodeH264ReferenceInfo);
{$endif}
     end;
{$endif}

{$ifdef VkStdVideo}
     PPVkVideoEncodeH264NaluSliceInfoEXT=^PVkVideoEncodeH264NaluSliceInfoEXT;
     PVkVideoEncodeH264NaluSliceInfoEXT=^TVkVideoEncodeH264NaluSliceInfoEXT;
     TVkVideoEncodeH264NaluSliceInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_INFO_EXT
       pNext:PVkVoid;
       constantQp:TVkInt32;
       pStdSliceHeader:PStdVideoEncodeH264SliceHeader;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aConstantQp:TVkInt32;
                          const aPStdSliceHeader:PStdVideoEncodeH264SliceHeader);
{$endif}
     end;
{$endif}

{$ifdef VkStdVideo}
     PPVkVideoEncodeH264ProfileInfoEXT=^PVkVideoEncodeH264ProfileInfoEXT;
     PVkVideoEncodeH264ProfileInfoEXT=^TVkVideoEncodeH264ProfileInfoEXT;
     TVkVideoEncodeH264ProfileInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_INFO_EXT
       pNext:PVkVoid;
       stdProfileIdc:TStdVideoH264ProfileIdc;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aStdProfileIdc:TStdVideoH264ProfileIdc);
{$endif}
     end;
{$endif}

{$ifdef VkStdVideo}
     PPVkVideoEncodeH264PictureInfoEXT=^PVkVideoEncodeH264PictureInfoEXT;
     PVkVideoEncodeH264PictureInfoEXT=^TVkVideoEncodeH264PictureInfoEXT;
     TVkVideoEncodeH264PictureInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PICTURE_INFO_EXT
       pNext:PVkVoid;
       naluSliceEntryCount:TVkUInt32;
       pNaluSliceEntries:PVkVideoEncodeH264NaluSliceInfoEXT;
       pStdPictureInfo:PStdVideoEncodeH264PictureInfo;
       generatePrefixNalu:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aNaluSliceEntryCount:TVkUInt32;
                          const aPNaluSliceEntries:PVkVideoEncodeH264NaluSliceInfoEXT;
                          const aPStdPictureInfo:PStdVideoEncodeH264PictureInfo;
                          const aGeneratePrefixNalu:TVkBool32);
{$endif}
     end;
{$endif}

{$ifdef VkVideo}
     PPVkVideoEncodeH264RateControlInfoEXT=^PVkVideoEncodeH264RateControlInfoEXT;
     PVkVideoEncodeH264RateControlInfoEXT=^TVkVideoEncodeH264RateControlInfoEXT;
     TVkVideoEncodeH264RateControlInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_INFO_EXT
       pNext:PVkVoid;
       flags:TVkVideoEncodeH264RateControlFlagsEXT;
       gopFrameCount:TVkUInt32;
       idrPeriod:TVkUInt32;
       consecutiveBFrameCount:TVkUInt32;
       temporalLayerCount:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkVideoEncodeH264RateControlFlagsEXT;
                          const aGopFrameCount:TVkUInt32;
                          const aIdrPeriod:TVkUInt32;
                          const aConsecutiveBFrameCount:TVkUInt32;
                          const aTemporalLayerCount:TVkUInt32);
{$endif}
     end;
{$endif}

{$ifdef VkVideo}
     PPVkVideoEncodeH264QualityLevelPropertiesEXT=^PVkVideoEncodeH264QualityLevelPropertiesEXT;
     PVkVideoEncodeH264QualityLevelPropertiesEXT=^TVkVideoEncodeH264QualityLevelPropertiesEXT;
     TVkVideoEncodeH264QualityLevelPropertiesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_QUALITY_LEVEL_PROPERTIES_EXT
       pNext:PVkVoid;
       preferredRateControlFlags:TVkVideoEncodeH264RateControlFlagsEXT;
       preferredGopFrameCount:TVkUInt32;
       preferredIdrPeriod:TVkUInt32;
       preferredConsecutiveBFrameCount:TVkUInt32;
       preferredTemporalLayerCount:TVkUInt32;
       preferredConstantQp:TVkVideoEncodeH264QpEXT;
       preferredMaxL0ReferenceCount:TVkUInt32;
       preferredMaxL1ReferenceCount:TVkUInt32;
       preferredStdEntropyCodingModeFlag:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPreferredRateControlFlags:TVkVideoEncodeH264RateControlFlagsEXT;
                          const aPreferredGopFrameCount:TVkUInt32;
                          const aPreferredIdrPeriod:TVkUInt32;
                          const aPreferredConsecutiveBFrameCount:TVkUInt32;
                          const aPreferredTemporalLayerCount:TVkUInt32;
                          const aPreferredConstantQp:TVkVideoEncodeH264QpEXT;
                          const aPreferredMaxL0ReferenceCount:TVkUInt32;
                          const aPreferredMaxL1ReferenceCount:TVkUInt32;
                          const aPreferredStdEntropyCodingModeFlag:TVkBool32);
{$endif}
     end;
{$endif}

{$ifdef VkVideo}
     PPVkVideoEncodeH264FrameSizeEXT=^PVkVideoEncodeH264FrameSizeEXT;
     PVkVideoEncodeH264FrameSizeEXT=^TVkVideoEncodeH264FrameSizeEXT;
     TVkVideoEncodeH264FrameSizeEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       frameISize:TVkUInt32;
       framePSize:TVkUInt32;
       frameBSize:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFrameISize:TVkUInt32;
                          const aFramePSize:TVkUInt32;
                          const aFrameBSize:TVkUInt32);
{$endif}
     end;
{$endif}

{$ifdef VkVideo}
     PPVkVideoEncodeH264GopRemainingFrameInfoEXT=^PVkVideoEncodeH264GopRemainingFrameInfoEXT;
     PVkVideoEncodeH264GopRemainingFrameInfoEXT=^TVkVideoEncodeH264GopRemainingFrameInfoEXT;
     TVkVideoEncodeH264GopRemainingFrameInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_GOP_REMAINING_FRAME_INFO_EXT
       pNext:PVkVoid;
       useGopRemainingFrames:TVkBool32;
       gopRemainingI:TVkUInt32;
       gopRemainingP:TVkUInt32;
       gopRemainingB:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aUseGopRemainingFrames:TVkBool32;
                          const aGopRemainingI:TVkUInt32;
                          const aGopRemainingP:TVkUInt32;
                          const aGopRemainingB:TVkUInt32);
{$endif}
     end;
{$endif}

{$ifdef VkVideo}
     PPVkVideoEncodeH264RateControlLayerInfoEXT=^PVkVideoEncodeH264RateControlLayerInfoEXT;
     PVkVideoEncodeH264RateControlLayerInfoEXT=^TVkVideoEncodeH264RateControlLayerInfoEXT;
     TVkVideoEncodeH264RateControlLayerInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_EXT
       pNext:PVkVoid;
       useMinQp:TVkBool32;
       minQp:TVkVideoEncodeH264QpEXT;
       useMaxQp:TVkBool32;
       maxQp:TVkVideoEncodeH264QpEXT;
       useMaxFrameSize:TVkBool32;
       maxFrameSize:TVkVideoEncodeH264FrameSizeEXT;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aUseMinQp:TVkBool32;
                          const aMinQp:TVkVideoEncodeH264QpEXT;
                          const aUseMaxQp:TVkBool32;
                          const aMaxQp:TVkVideoEncodeH264QpEXT;
                          const aUseMaxFrameSize:TVkBool32;
                          const aMaxFrameSize:TVkVideoEncodeH264FrameSizeEXT);
{$endif}
     end;
{$endif}

{$ifdef VkVideo}
     PPVkVideoEncodeH265CapabilitiesEXT=^PVkVideoEncodeH265CapabilitiesEXT;
     PVkVideoEncodeH265CapabilitiesEXT=^TVkVideoEncodeH265CapabilitiesEXT;
     TVkVideoEncodeH265CapabilitiesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_EXT
       pNext:PVkVoid;
       flags:TVkVideoEncodeH265CapabilityFlagsEXT;
       maxLevelIdc:TStdVideoH265LevelIdc;
       maxSliceSegmentCount:TVkUInt32;
       maxTiles:TVkExtent2D;
       ctbSizes:TVkVideoEncodeH265CtbSizeFlagsEXT;
       transformBlockSizes:TVkVideoEncodeH265TransformBlockSizeFlagsEXT;
       maxPPictureL0ReferenceCount:TVkUInt32;
       maxBPictureL0ReferenceCount:TVkUInt32;
       maxL1ReferenceCount:TVkUInt32;
       maxSubLayerCount:TVkUInt32;
       expectDyadicTemporalSubLayerPattern:TVkBool32;
       minQp:TVkInt32;
       maxQp:TVkInt32;
       prefersGopRemainingFrames:TVkBool32;
       requiresGopRemainingFrames:TVkBool32;
       stdSyntaxFlags:TVkVideoEncodeH265StdFlagsEXT;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkVideoEncodeH265CapabilityFlagsEXT;
                          const aMaxLevelIdc:TStdVideoH265LevelIdc;
                          const aMaxSliceSegmentCount:TVkUInt32;
                          const aMaxTiles:TVkExtent2D;
                          const aCtbSizes:TVkVideoEncodeH265CtbSizeFlagsEXT;
                          const aTransformBlockSizes:TVkVideoEncodeH265TransformBlockSizeFlagsEXT;
                          const aMaxPPictureL0ReferenceCount:TVkUInt32;
                          const aMaxBPictureL0ReferenceCount:TVkUInt32;
                          const aMaxL1ReferenceCount:TVkUInt32;
                          const aMaxSubLayerCount:TVkUInt32;
                          const aExpectDyadicTemporalSubLayerPattern:TVkBool32;
                          const aMinQp:TVkInt32;
                          const aMaxQp:TVkInt32;
                          const aPrefersGopRemainingFrames:TVkBool32;
                          const aRequiresGopRemainingFrames:TVkBool32;
                          const aStdSyntaxFlags:TVkVideoEncodeH265StdFlagsEXT);
{$endif}
     end;
{$endif}

{$ifdef VkVideo}
     PPVkVideoEncodeH265QpEXT=^PVkVideoEncodeH265QpEXT;
     PVkVideoEncodeH265QpEXT=^TVkVideoEncodeH265QpEXT;
     TVkVideoEncodeH265QpEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       qpI:TVkInt32;
       qpP:TVkInt32;
       qpB:TVkInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aQpI:TVkInt32;
                          const aQpP:TVkInt32;
                          const aQpB:TVkInt32);
{$endif}
     end;
{$endif}

{$ifdef VkStdVideo}
     PPVkVideoEncodeH265SessionCreateInfoEXT=^PVkVideoEncodeH265SessionCreateInfoEXT;
     PVkVideoEncodeH265SessionCreateInfoEXT=^TVkVideoEncodeH265SessionCreateInfoEXT;
     TVkVideoEncodeH265SessionCreateInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_CREATE_INFO_EXT
       pNext:PVkVoid;
       useMaxLevelIdc:TVkBool32;
       maxLevelIdc:TStdVideoH265LevelIdc;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aUseMaxLevelIdc:TVkBool32;
                          const aMaxLevelIdc:TStdVideoH265LevelIdc);
{$endif}
     end;
{$endif}

{$ifdef VkStdVideo}
     PPVkVideoEncodeH265SessionParametersAddInfoEXT=^PVkVideoEncodeH265SessionParametersAddInfoEXT;
     PVkVideoEncodeH265SessionParametersAddInfoEXT=^TVkVideoEncodeH265SessionParametersAddInfoEXT;
     TVkVideoEncodeH265SessionParametersAddInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT
       pNext:PVkVoid;
       stdVPSCount:TVkUInt32;
       pStdVPSs:PStdVideoH265VideoParameterSet;
       stdSPSCount:TVkUInt32;
       pStdSPSs:PStdVideoH265SequenceParameterSet;
       stdPPSCount:TVkUInt32;
       pStdPPSs:PStdVideoH265PictureParameterSet;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aStdVPSCount:TVkUInt32;
                          const aPStdVPSs:PStdVideoH265VideoParameterSet;
                          const aStdSPSCount:TVkUInt32;
                          const aPStdSPSs:PStdVideoH265SequenceParameterSet;
                          const aStdPPSCount:TVkUInt32;
                          const aPStdPPSs:PStdVideoH265PictureParameterSet);
{$endif}
     end;
{$endif}

{$ifdef VkVideo}
     PPVkVideoEncodeH265SessionParametersCreateInfoEXT=^PVkVideoEncodeH265SessionParametersCreateInfoEXT;
     PVkVideoEncodeH265SessionParametersCreateInfoEXT=^TVkVideoEncodeH265SessionParametersCreateInfoEXT;
     TVkVideoEncodeH265SessionParametersCreateInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT
       pNext:PVkVoid;
       maxStdVPSCount:TVkUInt32;
       maxStdSPSCount:TVkUInt32;
       maxStdPPSCount:TVkUInt32;
       pParametersAddInfo:PVkVideoEncodeH265SessionParametersAddInfoEXT;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMaxStdVPSCount:TVkUInt32;
                          const aMaxStdSPSCount:TVkUInt32;
                          const aMaxStdPPSCount:TVkUInt32;
                          const aPParametersAddInfo:PVkVideoEncodeH265SessionParametersAddInfoEXT);
{$endif}
     end;
{$endif}

{$ifdef VkVideo}
     PPVkVideoEncodeH265SessionParametersGetInfoEXT=^PVkVideoEncodeH265SessionParametersGetInfoEXT;
     PVkVideoEncodeH265SessionParametersGetInfoEXT=^TVkVideoEncodeH265SessionParametersGetInfoEXT;
     TVkVideoEncodeH265SessionParametersGetInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_GET_INFO_EXT
       pNext:PVkVoid;
       writeStdVPS:TVkBool32;
       writeStdSPS:TVkBool32;
       writeStdPPS:TVkBool32;
       stdVPSId:TVkUInt32;
       stdSPSId:TVkUInt32;
       stdPPSId:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aWriteStdVPS:TVkBool32;
                          const aWriteStdSPS:TVkBool32;
                          const aWriteStdPPS:TVkBool32;
                          const aStdVPSId:TVkUInt32;
                          const aStdSPSId:TVkUInt32;
                          const aStdPPSId:TVkUInt32);
{$endif}
     end;
{$endif}

{$ifdef VkVideo}
     PPVkVideoEncodeH265SessionParametersFeedbackInfoEXT=^PVkVideoEncodeH265SessionParametersFeedbackInfoEXT;
     PVkVideoEncodeH265SessionParametersFeedbackInfoEXT=^TVkVideoEncodeH265SessionParametersFeedbackInfoEXT;
     TVkVideoEncodeH265SessionParametersFeedbackInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_FEEDBACK_INFO_EXT
       pNext:PVkVoid;
       hasStdVPSOverrides:TVkBool32;
       hasStdSPSOverrides:TVkBool32;
       hasStdPPSOverrides:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aHasStdVPSOverrides:TVkBool32;
                          const aHasStdSPSOverrides:TVkBool32;
                          const aHasStdPPSOverrides:TVkBool32);
{$endif}
     end;
{$endif}

{$ifdef VkStdVideo}
     PPVkVideoEncodeH265NaluSliceSegmentInfoEXT=^PVkVideoEncodeH265NaluSliceSegmentInfoEXT;
     PVkVideoEncodeH265NaluSliceSegmentInfoEXT=^TVkVideoEncodeH265NaluSliceSegmentInfoEXT;
     TVkVideoEncodeH265NaluSliceSegmentInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_NALU_SLICE_SEGMENT_INFO_EXT
       pNext:PVkVoid;
       constantQp:TVkInt32;
       pStdSliceSegmentHeader:PStdVideoEncodeH265SliceSegmentHeader;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aConstantQp:TVkInt32;
                          const aPStdSliceSegmentHeader:PStdVideoEncodeH265SliceSegmentHeader);
{$endif}
     end;
{$endif}

{$ifdef VkStdVideo}
     PPVkVideoEncodeH265PictureInfoEXT=^PVkVideoEncodeH265PictureInfoEXT;
     PVkVideoEncodeH265PictureInfoEXT=^TVkVideoEncodeH265PictureInfoEXT;
     TVkVideoEncodeH265PictureInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PICTURE_INFO_EXT
       pNext:PVkVoid;
       naluSliceSegmentEntryCount:TVkUInt32;
       pNaluSliceSegmentEntries:PVkVideoEncodeH265NaluSliceSegmentInfoEXT;
       pStdPictureInfo:PStdVideoEncodeH265PictureInfo;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aNaluSliceSegmentEntryCount:TVkUInt32;
                          const aPNaluSliceSegmentEntries:PVkVideoEncodeH265NaluSliceSegmentInfoEXT;
                          const aPStdPictureInfo:PStdVideoEncodeH265PictureInfo);
{$endif}
     end;
{$endif}

{$ifdef VkVideo}
     PPVkVideoEncodeH265RateControlInfoEXT=^PVkVideoEncodeH265RateControlInfoEXT;
     PVkVideoEncodeH265RateControlInfoEXT=^TVkVideoEncodeH265RateControlInfoEXT;
     TVkVideoEncodeH265RateControlInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_INFO_EXT
       pNext:PVkVoid;
       flags:TVkVideoEncodeH265RateControlFlagsEXT;
       gopFrameCount:TVkUInt32;
       idrPeriod:TVkUInt32;
       consecutiveBFrameCount:TVkUInt32;
       subLayerCount:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkVideoEncodeH265RateControlFlagsEXT;
                          const aGopFrameCount:TVkUInt32;
                          const aIdrPeriod:TVkUInt32;
                          const aConsecutiveBFrameCount:TVkUInt32;
                          const aSubLayerCount:TVkUInt32);
{$endif}
     end;
{$endif}

{$ifdef VkVideo}
     PPVkVideoEncodeH265QualityLevelPropertiesEXT=^PVkVideoEncodeH265QualityLevelPropertiesEXT;
     PVkVideoEncodeH265QualityLevelPropertiesEXT=^TVkVideoEncodeH265QualityLevelPropertiesEXT;
     TVkVideoEncodeH265QualityLevelPropertiesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_QUALITY_LEVEL_PROPERTIES_EXT
       pNext:PVkVoid;
       preferredRateControlFlags:TVkVideoEncodeH265RateControlFlagsEXT;
       preferredGopFrameCount:TVkUInt32;
       preferredIdrPeriod:TVkUInt32;
       preferredConsecutiveBFrameCount:TVkUInt32;
       preferredSubLayerCount:TVkUInt32;
       preferredConstantQp:TVkVideoEncodeH265QpEXT;
       preferredMaxL0ReferenceCount:TVkUInt32;
       preferredMaxL1ReferenceCount:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPreferredRateControlFlags:TVkVideoEncodeH265RateControlFlagsEXT;
                          const aPreferredGopFrameCount:TVkUInt32;
                          const aPreferredIdrPeriod:TVkUInt32;
                          const aPreferredConsecutiveBFrameCount:TVkUInt32;
                          const aPreferredSubLayerCount:TVkUInt32;
                          const aPreferredConstantQp:TVkVideoEncodeH265QpEXT;
                          const aPreferredMaxL0ReferenceCount:TVkUInt32;
                          const aPreferredMaxL1ReferenceCount:TVkUInt32);
{$endif}
     end;
{$endif}

{$ifdef VkVideo}
     PPVkVideoEncodeH265FrameSizeEXT=^PVkVideoEncodeH265FrameSizeEXT;
     PVkVideoEncodeH265FrameSizeEXT=^TVkVideoEncodeH265FrameSizeEXT;
     TVkVideoEncodeH265FrameSizeEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       frameISize:TVkUInt32;
       framePSize:TVkUInt32;
       frameBSize:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFrameISize:TVkUInt32;
                          const aFramePSize:TVkUInt32;
                          const aFrameBSize:TVkUInt32);
{$endif}
     end;
{$endif}

{$ifdef VkVideo}
     PPVkVideoEncodeH265GopRemainingFrameInfoEXT=^PVkVideoEncodeH265GopRemainingFrameInfoEXT;
     PVkVideoEncodeH265GopRemainingFrameInfoEXT=^TVkVideoEncodeH265GopRemainingFrameInfoEXT;
     TVkVideoEncodeH265GopRemainingFrameInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_GOP_REMAINING_FRAME_INFO_EXT
       pNext:PVkVoid;
       useGopRemainingFrames:TVkBool32;
       gopRemainingI:TVkUInt32;
       gopRemainingP:TVkUInt32;
       gopRemainingB:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aUseGopRemainingFrames:TVkBool32;
                          const aGopRemainingI:TVkUInt32;
                          const aGopRemainingP:TVkUInt32;
                          const aGopRemainingB:TVkUInt32);
{$endif}
     end;
{$endif}

{$ifdef VkVideo}
     PPVkVideoEncodeH265RateControlLayerInfoEXT=^PVkVideoEncodeH265RateControlLayerInfoEXT;
     PVkVideoEncodeH265RateControlLayerInfoEXT=^TVkVideoEncodeH265RateControlLayerInfoEXT;
     TVkVideoEncodeH265RateControlLayerInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_EXT
       pNext:PVkVoid;
       useMinQp:TVkBool32;
       minQp:TVkVideoEncodeH265QpEXT;
       useMaxQp:TVkBool32;
       maxQp:TVkVideoEncodeH265QpEXT;
       useMaxFrameSize:TVkBool32;
       maxFrameSize:TVkVideoEncodeH265FrameSizeEXT;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aUseMinQp:TVkBool32;
                          const aMinQp:TVkVideoEncodeH265QpEXT;
                          const aUseMaxQp:TVkBool32;
                          const aMaxQp:TVkVideoEncodeH265QpEXT;
                          const aUseMaxFrameSize:TVkBool32;
                          const aMaxFrameSize:TVkVideoEncodeH265FrameSizeEXT);
{$endif}
     end;
{$endif}

{$ifdef VkStdVideo}
     PPVkVideoEncodeH265ProfileInfoEXT=^PVkVideoEncodeH265ProfileInfoEXT;
     PVkVideoEncodeH265ProfileInfoEXT=^TVkVideoEncodeH265ProfileInfoEXT;
     TVkVideoEncodeH265ProfileInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_INFO_EXT
       pNext:PVkVoid;
       stdProfileIdc:TStdVideoH265ProfileIdc;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aStdProfileIdc:TStdVideoH265ProfileIdc);
{$endif}
     end;
{$endif}

{$ifdef VkStdVideo}
     PPVkVideoEncodeH265DpbSlotInfoEXT=^PVkVideoEncodeH265DpbSlotInfoEXT;
     PVkVideoEncodeH265DpbSlotInfoEXT=^TVkVideoEncodeH265DpbSlotInfoEXT;
     TVkVideoEncodeH265DpbSlotInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_DPB_SLOT_INFO_EXT
       pNext:PVkVoid;
       pStdReferenceInfo:PStdVideoEncodeH265ReferenceInfo;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPStdReferenceInfo:PStdVideoEncodeH265ReferenceInfo);
{$endif}
     end;
{$endif}

{$ifdef NvSci}
     PPVkPhysicalDeviceInheritedViewportScissorFeaturesNV=^PVkPhysicalDeviceInheritedViewportScissorFeaturesNV;
     PVkPhysicalDeviceInheritedViewportScissorFeaturesNV=^TVkPhysicalDeviceInheritedViewportScissorFeaturesNV;
     TVkPhysicalDeviceInheritedViewportScissorFeaturesNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV
       pNext:PVkVoid;
       inheritedViewportScissor2D:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aInheritedViewportScissor2D:TVkBool32);
{$endif}
     end;
{$endif}

{$ifdef NvSci}
     PPVkCommandBufferInheritanceViewportScissorInfoNV=^PVkCommandBufferInheritanceViewportScissorInfoNV;
     PVkCommandBufferInheritanceViewportScissorInfoNV=^TVkCommandBufferInheritanceViewportScissorInfoNV;
     TVkCommandBufferInheritanceViewportScissorInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV
       pNext:PVkVoid;
       viewportScissor2D:TVkBool32;
       viewportDepthCount:TVkUInt32;
       pViewportDepths:PVkViewport;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aViewportScissor2D:TVkBool32;
                          const aViewportDepthCount:TVkUInt32;
                          const aPViewportDepths:PVkViewport);
{$endif}
     end;
{$endif}

     PPVkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT=^PVkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT;
     PVkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT=^TVkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT;
     TVkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT
       pNext:PVkVoid;
       ycbcr2plane444Formats:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aYcbcr2plane444Formats:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceProvokingVertexFeaturesEXT=^PVkPhysicalDeviceProvokingVertexFeaturesEXT;
     PVkPhysicalDeviceProvokingVertexFeaturesEXT=^TVkPhysicalDeviceProvokingVertexFeaturesEXT;
     TVkPhysicalDeviceProvokingVertexFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT
       pNext:PVkVoid;
       provokingVertexLast:TVkBool32;
       transformFeedbackPreservesProvokingVertex:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aProvokingVertexLast:TVkBool32;
                          const aTransformFeedbackPreservesProvokingVertex:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceProvokingVertexPropertiesEXT=^PVkPhysicalDeviceProvokingVertexPropertiesEXT;
     PVkPhysicalDeviceProvokingVertexPropertiesEXT=^TVkPhysicalDeviceProvokingVertexPropertiesEXT;
     TVkPhysicalDeviceProvokingVertexPropertiesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT
       pNext:PVkVoid;
       provokingVertexModePerPipeline:TVkBool32;
       transformFeedbackPreservesTriangleFanProvokingVertex:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aProvokingVertexModePerPipeline:TVkBool32;
                          const aTransformFeedbackPreservesTriangleFanProvokingVertex:TVkBool32);
{$endif}
     end;

     PPVkPipelineRasterizationProvokingVertexStateCreateInfoEXT=^PVkPipelineRasterizationProvokingVertexStateCreateInfoEXT;
     PVkPipelineRasterizationProvokingVertexStateCreateInfoEXT=^TVkPipelineRasterizationProvokingVertexStateCreateInfoEXT;
     TVkPipelineRasterizationProvokingVertexStateCreateInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT
       pNext:PVkVoid;
       provokingVertexMode:TVkProvokingVertexModeEXT;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aProvokingVertexMode:TVkProvokingVertexModeEXT);
{$endif}
     end;

     PPVkCuModuleCreateInfoNVX=^PVkCuModuleCreateInfoNVX;
     PVkCuModuleCreateInfoNVX=^TVkCuModuleCreateInfoNVX;
     TVkCuModuleCreateInfoNVX=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX
       pNext:PVkVoid;
       dataSize:TVkSize;
       pData:PVkVoid;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDataSize:TVkSize;
                          const aPData:PVkVoid);
{$endif}
     end;

     PPVkCuFunctionCreateInfoNVX=^PVkCuFunctionCreateInfoNVX;
     PVkCuFunctionCreateInfoNVX=^TVkCuFunctionCreateInfoNVX;
     TVkCuFunctionCreateInfoNVX=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX
       pNext:PVkVoid;
       module:TVkCuModuleNVX;
       pName:PVkChar;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aModule:TVkCuModuleNVX;
                          const aPName:PVkChar);
{$endif}
     end;

     PPVkCuLaunchInfoNVX=^PVkCuLaunchInfoNVX;
     PVkCuLaunchInfoNVX=^TVkCuLaunchInfoNVX;
     TVkCuLaunchInfoNVX=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX
       pNext:PVkVoid;
       function_:TVkCuFunctionNVX;
       gridDimX:TVkUInt32;
       gridDimY:TVkUInt32;
       gridDimZ:TVkUInt32;
       blockDimX:TVkUInt32;
       blockDimY:TVkUInt32;
       blockDimZ:TVkUInt32;
       sharedMemBytes:TVkUInt32;
       paramCount:TVkSize;
       pParams:PPVkVoid;
       extraCount:TVkSize;
       pExtras:PPVkVoid;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFunction_:TVkCuFunctionNVX;
                          const aGridDimX:TVkUInt32;
                          const aGridDimY:TVkUInt32;
                          const aGridDimZ:TVkUInt32;
                          const aBlockDimX:TVkUInt32;
                          const aBlockDimY:TVkUInt32;
                          const aBlockDimZ:TVkUInt32;
                          const aSharedMemBytes:TVkUInt32;
                          const aParamCount:TVkSize;
                          const aPParams:PPVkVoid;
                          const aExtraCount:TVkSize;
                          const aPExtras:PPVkVoid);
{$endif}
     end;

     PPVkPhysicalDeviceDescriptorBufferFeaturesEXT=^PVkPhysicalDeviceDescriptorBufferFeaturesEXT;
     PVkPhysicalDeviceDescriptorBufferFeaturesEXT=^TVkPhysicalDeviceDescriptorBufferFeaturesEXT;
     TVkPhysicalDeviceDescriptorBufferFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT
       pNext:PVkVoid;
       descriptorBuffer:TVkBool32;
       descriptorBufferCaptureReplay:TVkBool32;
       descriptorBufferImageLayoutIgnored:TVkBool32;
       descriptorBufferPushDescriptors:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDescriptorBuffer:TVkBool32;
                          const aDescriptorBufferCaptureReplay:TVkBool32;
                          const aDescriptorBufferImageLayoutIgnored:TVkBool32;
                          const aDescriptorBufferPushDescriptors:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceDescriptorBufferPropertiesEXT=^PVkPhysicalDeviceDescriptorBufferPropertiesEXT;
     PVkPhysicalDeviceDescriptorBufferPropertiesEXT=^TVkPhysicalDeviceDescriptorBufferPropertiesEXT;
     TVkPhysicalDeviceDescriptorBufferPropertiesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT
       pNext:PVkVoid;
       combinedImageSamplerDescriptorSingleArray:TVkBool32;
       bufferlessPushDescriptors:TVkBool32;
       allowSamplerImageViewPostSubmitCreation:TVkBool32;
       descriptorBufferOffsetAlignment:TVkDeviceSize;
       maxDescriptorBufferBindings:TVkUInt32;
       maxResourceDescriptorBufferBindings:TVkUInt32;
       maxSamplerDescriptorBufferBindings:TVkUInt32;
       maxEmbeddedImmutableSamplerBindings:TVkUInt32;
       maxEmbeddedImmutableSamplers:TVkUInt32;
       bufferCaptureReplayDescriptorDataSize:TVkSize;
       imageCaptureReplayDescriptorDataSize:TVkSize;
       imageViewCaptureReplayDescriptorDataSize:TVkSize;
       samplerCaptureReplayDescriptorDataSize:TVkSize;
       accelerationStructureCaptureReplayDescriptorDataSize:TVkSize;
       samplerDescriptorSize:TVkSize;
       combinedImageSamplerDescriptorSize:TVkSize;
       sampledImageDescriptorSize:TVkSize;
       storageImageDescriptorSize:TVkSize;
       uniformTexelBufferDescriptorSize:TVkSize;
       robustUniformTexelBufferDescriptorSize:TVkSize;
       storageTexelBufferDescriptorSize:TVkSize;
       robustStorageTexelBufferDescriptorSize:TVkSize;
       uniformBufferDescriptorSize:TVkSize;
       robustUniformBufferDescriptorSize:TVkSize;
       storageBufferDescriptorSize:TVkSize;
       robustStorageBufferDescriptorSize:TVkSize;
       inputAttachmentDescriptorSize:TVkSize;
       accelerationStructureDescriptorSize:TVkSize;
       maxSamplerDescriptorBufferRange:TVkDeviceSize;
       maxResourceDescriptorBufferRange:TVkDeviceSize;
       samplerDescriptorBufferAddressSpaceSize:TVkDeviceSize;
       resourceDescriptorBufferAddressSpaceSize:TVkDeviceSize;
       descriptorBufferAddressSpaceSize:TVkDeviceSize;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aCombinedImageSamplerDescriptorSingleArray:TVkBool32;
                          const aBufferlessPushDescriptors:TVkBool32;
                          const aAllowSamplerImageViewPostSubmitCreation:TVkBool32;
                          const aDescriptorBufferOffsetAlignment:TVkDeviceSize;
                          const aMaxDescriptorBufferBindings:TVkUInt32;
                          const aMaxResourceDescriptorBufferBindings:TVkUInt32;
                          const aMaxSamplerDescriptorBufferBindings:TVkUInt32;
                          const aMaxEmbeddedImmutableSamplerBindings:TVkUInt32;
                          const aMaxEmbeddedImmutableSamplers:TVkUInt32;
                          const aBufferCaptureReplayDescriptorDataSize:TVkSize;
                          const aImageCaptureReplayDescriptorDataSize:TVkSize;
                          const aImageViewCaptureReplayDescriptorDataSize:TVkSize;
                          const aSamplerCaptureReplayDescriptorDataSize:TVkSize;
                          const aAccelerationStructureCaptureReplayDescriptorDataSize:TVkSize;
                          const aSamplerDescriptorSize:TVkSize;
                          const aCombinedImageSamplerDescriptorSize:TVkSize;
                          const aSampledImageDescriptorSize:TVkSize;
                          const aStorageImageDescriptorSize:TVkSize;
                          const aUniformTexelBufferDescriptorSize:TVkSize;
                          const aRobustUniformTexelBufferDescriptorSize:TVkSize;
                          const aStorageTexelBufferDescriptorSize:TVkSize;
                          const aRobustStorageTexelBufferDescriptorSize:TVkSize;
                          const aUniformBufferDescriptorSize:TVkSize;
                          const aRobustUniformBufferDescriptorSize:TVkSize;
                          const aStorageBufferDescriptorSize:TVkSize;
                          const aRobustStorageBufferDescriptorSize:TVkSize;
                          const aInputAttachmentDescriptorSize:TVkSize;
                          const aAccelerationStructureDescriptorSize:TVkSize;
                          const aMaxSamplerDescriptorBufferRange:TVkDeviceSize;
                          const aMaxResourceDescriptorBufferRange:TVkDeviceSize;
                          const aSamplerDescriptorBufferAddressSpaceSize:TVkDeviceSize;
                          const aResourceDescriptorBufferAddressSpaceSize:TVkDeviceSize;
                          const aDescriptorBufferAddressSpaceSize:TVkDeviceSize);
{$endif}
     end;

     PPVkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT=^PVkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT;
     PVkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT=^TVkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT;
     TVkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT
       pNext:PVkVoid;
       combinedImageSamplerDensityMapDescriptorSize:TVkSize;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aCombinedImageSamplerDensityMapDescriptorSize:TVkSize);
{$endif}
     end;

     PPVkDescriptorAddressInfoEXT=^PVkDescriptorAddressInfoEXT;
     PVkDescriptorAddressInfoEXT=^TVkDescriptorAddressInfoEXT;
     TVkDescriptorAddressInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DESCRIPTOR_ADDRESS_INFO_EXT
       pNext:PVkVoid;
       address:TVkDeviceAddress;
       range:TVkDeviceSize;
       format:TVkFormat;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aAddress:TVkDeviceAddress;
                          const aRange:TVkDeviceSize;
                          const aFormat:TVkFormat);
{$endif}
     end;

     PPVkDescriptorBufferBindingInfoEXT=^PVkDescriptorBufferBindingInfoEXT;
     PVkDescriptorBufferBindingInfoEXT=^TVkDescriptorBufferBindingInfoEXT;
     TVkDescriptorBufferBindingInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_INFO_EXT
       pNext:PVkVoid;
       address:TVkDeviceAddress;
       usage:TVkBufferUsageFlags;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aAddress:TVkDeviceAddress;
                          const aUsage:TVkBufferUsageFlags);
{$endif}
     end;

     PPVkDescriptorBufferBindingPushDescriptorBufferHandleEXT=^PVkDescriptorBufferBindingPushDescriptorBufferHandleEXT;
     PVkDescriptorBufferBindingPushDescriptorBufferHandleEXT=^TVkDescriptorBufferBindingPushDescriptorBufferHandleEXT;
     TVkDescriptorBufferBindingPushDescriptorBufferHandleEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT
       pNext:PVkVoid;
       buffer:TVkBuffer;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aBuffer:TVkBuffer);
{$endif}
     end;

     PPVkDescriptorDataEXT=^PVkDescriptorDataEXT;
     PVkDescriptorDataEXT=^TVkDescriptorDataEXT;
     TVkDescriptorDataEXT=record
      case longint of
       0:(
        pSampler:PVkSampler;
       );
       1:(
        pCombinedImageSampler:PVkDescriptorImageInfo;
       );
       2:(
        pInputAttachmentImage:PVkDescriptorImageInfo;
       );
       3:(
        pSampledImage:PVkDescriptorImageInfo;
       );
       4:(
        pStorageImage:PVkDescriptorImageInfo;
       );
       5:(
        pUniformTexelBuffer:PVkDescriptorAddressInfoEXT;
       );
       6:(
        pStorageTexelBuffer:PVkDescriptorAddressInfoEXT;
       );
       7:(
        pUniformBuffer:PVkDescriptorAddressInfoEXT;
       );
       8:(
        pStorageBuffer:PVkDescriptorAddressInfoEXT;
       );
       9:(
        accelerationStructure:TVkDeviceAddress;
       );
     end;

     PPVkDescriptorGetInfoEXT=^PVkDescriptorGetInfoEXT;
     PVkDescriptorGetInfoEXT=^TVkDescriptorGetInfoEXT;
     TVkDescriptorGetInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DESCRIPTOR_GET_INFO_EXT
       pNext:PVkVoid;
       type_:TVkDescriptorType;
       data:TVkDescriptorDataEXT;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aType_:TVkDescriptorType;
                          const aData:TVkDescriptorDataEXT);
{$endif}
     end;

     PPVkBufferCaptureDescriptorDataInfoEXT=^PVkBufferCaptureDescriptorDataInfoEXT;
     PVkBufferCaptureDescriptorDataInfoEXT=^TVkBufferCaptureDescriptorDataInfoEXT;
     TVkBufferCaptureDescriptorDataInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_BUFFER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT
       pNext:PVkVoid;
       buffer:TVkBuffer;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aBuffer:TVkBuffer);
{$endif}
     end;

     PPVkImageCaptureDescriptorDataInfoEXT=^PVkImageCaptureDescriptorDataInfoEXT;
     PVkImageCaptureDescriptorDataInfoEXT=^TVkImageCaptureDescriptorDataInfoEXT;
     TVkImageCaptureDescriptorDataInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_IMAGE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT
       pNext:PVkVoid;
       image:TVkImage;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aImage:TVkImage);
{$endif}
     end;

     PPVkImageViewCaptureDescriptorDataInfoEXT=^PVkImageViewCaptureDescriptorDataInfoEXT;
     PVkImageViewCaptureDescriptorDataInfoEXT=^TVkImageViewCaptureDescriptorDataInfoEXT;
     TVkImageViewCaptureDescriptorDataInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXT
       pNext:PVkVoid;
       imageView:TVkImageView;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aImageView:TVkImageView);
{$endif}
     end;

     PPVkSamplerCaptureDescriptorDataInfoEXT=^PVkSamplerCaptureDescriptorDataInfoEXT;
     PVkSamplerCaptureDescriptorDataInfoEXT=^TVkSamplerCaptureDescriptorDataInfoEXT;
     TVkSamplerCaptureDescriptorDataInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SAMPLER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT
       pNext:PVkVoid;
       sampler:TVkSampler;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSampler:TVkSampler);
{$endif}
     end;

     PPVkAccelerationStructureCaptureDescriptorDataInfoEXT=^PVkAccelerationStructureCaptureDescriptorDataInfoEXT;
     PVkAccelerationStructureCaptureDescriptorDataInfoEXT=^TVkAccelerationStructureCaptureDescriptorDataInfoEXT;
     TVkAccelerationStructureCaptureDescriptorDataInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT
       pNext:PVkVoid;
       accelerationStructure:TVkAccelerationStructureKHR;
       accelerationStructureNV:TVkAccelerationStructureNV;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aAccelerationStructure:TVkAccelerationStructureKHR;
                          const aAccelerationStructureNV:TVkAccelerationStructureNV);
{$endif}
     end;

     PPVkOpaqueCaptureDescriptorDataCreateInfoEXT=^PVkOpaqueCaptureDescriptorDataCreateInfoEXT;
     PVkOpaqueCaptureDescriptorDataCreateInfoEXT=^TVkOpaqueCaptureDescriptorDataCreateInfoEXT;
     TVkOpaqueCaptureDescriptorDataCreateInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT
       pNext:PVkVoid;
       opaqueCaptureDescriptorData:PVkVoid;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aOpaqueCaptureDescriptorData:PVkVoid);
{$endif}
     end;

     PPVkPhysicalDeviceShaderIntegerDotProductFeatures=^PVkPhysicalDeviceShaderIntegerDotProductFeatures;
     PVkPhysicalDeviceShaderIntegerDotProductFeatures=^TVkPhysicalDeviceShaderIntegerDotProductFeatures;
     TVkPhysicalDeviceShaderIntegerDotProductFeatures=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES
       pNext:PVkVoid;
       shaderIntegerDotProduct:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aShaderIntegerDotProduct:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceShaderIntegerDotProductFeaturesKHR=^PVkPhysicalDeviceShaderIntegerDotProductFeaturesKHR;
     PVkPhysicalDeviceShaderIntegerDotProductFeaturesKHR=^TVkPhysicalDeviceShaderIntegerDotProductFeaturesKHR;
     TVkPhysicalDeviceShaderIntegerDotProductFeaturesKHR=TVkPhysicalDeviceShaderIntegerDotProductFeatures;

     PPVkPhysicalDeviceShaderIntegerDotProductProperties=^PVkPhysicalDeviceShaderIntegerDotProductProperties;
     PVkPhysicalDeviceShaderIntegerDotProductProperties=^TVkPhysicalDeviceShaderIntegerDotProductProperties;
     TVkPhysicalDeviceShaderIntegerDotProductProperties=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES
       pNext:PVkVoid;
       integerDotProduct8BitUnsignedAccelerated:TVkBool32;
       integerDotProduct8BitSignedAccelerated:TVkBool32;
       integerDotProduct8BitMixedSignednessAccelerated:TVkBool32;
       integerDotProduct4x8BitPackedUnsignedAccelerated:TVkBool32;
       integerDotProduct4x8BitPackedSignedAccelerated:TVkBool32;
       integerDotProduct4x8BitPackedMixedSignednessAccelerated:TVkBool32;
       integerDotProduct16BitUnsignedAccelerated:TVkBool32;
       integerDotProduct16BitSignedAccelerated:TVkBool32;
       integerDotProduct16BitMixedSignednessAccelerated:TVkBool32;
       integerDotProduct32BitUnsignedAccelerated:TVkBool32;
       integerDotProduct32BitSignedAccelerated:TVkBool32;
       integerDotProduct32BitMixedSignednessAccelerated:TVkBool32;
       integerDotProduct64BitUnsignedAccelerated:TVkBool32;
       integerDotProduct64BitSignedAccelerated:TVkBool32;
       integerDotProduct64BitMixedSignednessAccelerated:TVkBool32;
       integerDotProductAccumulatingSaturating8BitUnsignedAccelerated:TVkBool32;
       integerDotProductAccumulatingSaturating8BitSignedAccelerated:TVkBool32;
       integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated:TVkBool32;
       integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated:TVkBool32;
       integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated:TVkBool32;
       integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated:TVkBool32;
       integerDotProductAccumulatingSaturating16BitUnsignedAccelerated:TVkBool32;
       integerDotProductAccumulatingSaturating16BitSignedAccelerated:TVkBool32;
       integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated:TVkBool32;
       integerDotProductAccumulatingSaturating32BitUnsignedAccelerated:TVkBool32;
       integerDotProductAccumulatingSaturating32BitSignedAccelerated:TVkBool32;
       integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated:TVkBool32;
       integerDotProductAccumulatingSaturating64BitUnsignedAccelerated:TVkBool32;
       integerDotProductAccumulatingSaturating64BitSignedAccelerated:TVkBool32;
       integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aIntegerDotProduct8BitUnsignedAccelerated:TVkBool32;
                          const aIntegerDotProduct8BitSignedAccelerated:TVkBool32;
                          const aIntegerDotProduct8BitMixedSignednessAccelerated:TVkBool32;
                          const aIntegerDotProduct4x8BitPackedUnsignedAccelerated:TVkBool32;
                          const aIntegerDotProduct4x8BitPackedSignedAccelerated:TVkBool32;
                          const aIntegerDotProduct4x8BitPackedMixedSignednessAccelerated:TVkBool32;
                          const aIntegerDotProduct16BitUnsignedAccelerated:TVkBool32;
                          const aIntegerDotProduct16BitSignedAccelerated:TVkBool32;
                          const aIntegerDotProduct16BitMixedSignednessAccelerated:TVkBool32;
                          const aIntegerDotProduct32BitUnsignedAccelerated:TVkBool32;
                          const aIntegerDotProduct32BitSignedAccelerated:TVkBool32;
                          const aIntegerDotProduct32BitMixedSignednessAccelerated:TVkBool32;
                          const aIntegerDotProduct64BitUnsignedAccelerated:TVkBool32;
                          const aIntegerDotProduct64BitSignedAccelerated:TVkBool32;
                          const aIntegerDotProduct64BitMixedSignednessAccelerated:TVkBool32;
                          const aIntegerDotProductAccumulatingSaturating8BitUnsignedAccelerated:TVkBool32;
                          const aIntegerDotProductAccumulatingSaturating8BitSignedAccelerated:TVkBool32;
                          const aIntegerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated:TVkBool32;
                          const aIntegerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated:TVkBool32;
                          const aIntegerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated:TVkBool32;
                          const aIntegerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated:TVkBool32;
                          const aIntegerDotProductAccumulatingSaturating16BitUnsignedAccelerated:TVkBool32;
                          const aIntegerDotProductAccumulatingSaturating16BitSignedAccelerated:TVkBool32;
                          const aIntegerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated:TVkBool32;
                          const aIntegerDotProductAccumulatingSaturating32BitUnsignedAccelerated:TVkBool32;
                          const aIntegerDotProductAccumulatingSaturating32BitSignedAccelerated:TVkBool32;
                          const aIntegerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated:TVkBool32;
                          const aIntegerDotProductAccumulatingSaturating64BitUnsignedAccelerated:TVkBool32;
                          const aIntegerDotProductAccumulatingSaturating64BitSignedAccelerated:TVkBool32;
                          const aIntegerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceShaderIntegerDotProductPropertiesKHR=^PVkPhysicalDeviceShaderIntegerDotProductPropertiesKHR;
     PVkPhysicalDeviceShaderIntegerDotProductPropertiesKHR=^TVkPhysicalDeviceShaderIntegerDotProductPropertiesKHR;
     TVkPhysicalDeviceShaderIntegerDotProductPropertiesKHR=TVkPhysicalDeviceShaderIntegerDotProductProperties;

     PPVkPhysicalDeviceDrmPropertiesEXT=^PVkPhysicalDeviceDrmPropertiesEXT;
     PVkPhysicalDeviceDrmPropertiesEXT=^TVkPhysicalDeviceDrmPropertiesEXT;
     TVkPhysicalDeviceDrmPropertiesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT
       pNext:PVkVoid;
       hasPrimary:TVkBool32;
       hasRender:TVkBool32;
       primaryMajor:TVkInt64;
       primaryMinor:TVkInt64;
       renderMajor:TVkInt64;
       renderMinor:TVkInt64;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aHasPrimary:TVkBool32;
                          const aHasRender:TVkBool32;
                          const aPrimaryMajor:TVkInt64;
                          const aPrimaryMinor:TVkInt64;
                          const aRenderMajor:TVkInt64;
                          const aRenderMinor:TVkInt64);
{$endif}
     end;

     PPVkPhysicalDeviceFragmentShaderBarycentricFeaturesNV=^PVkPhysicalDeviceFragmentShaderBarycentricFeaturesNV;
     PVkPhysicalDeviceFragmentShaderBarycentricFeaturesNV=^TVkPhysicalDeviceFragmentShaderBarycentricFeaturesNV;
     TVkPhysicalDeviceFragmentShaderBarycentricFeaturesNV=TVkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR;

     PPVkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR=^PVkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR;
     PVkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR=^TVkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR;
     TVkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR
       pNext:PVkVoid;
       triStripVertexOrderIndependentOfProvokingVertex:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aTriStripVertexOrderIndependentOfProvokingVertex:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceRayTracingMotionBlurFeaturesNV=^PVkPhysicalDeviceRayTracingMotionBlurFeaturesNV;
     PVkPhysicalDeviceRayTracingMotionBlurFeaturesNV=^TVkPhysicalDeviceRayTracingMotionBlurFeaturesNV;
     TVkPhysicalDeviceRayTracingMotionBlurFeaturesNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV
       pNext:PVkVoid;
       rayTracingMotionBlur:TVkBool32;
       rayTracingMotionBlurPipelineTraceRaysIndirect:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aRayTracingMotionBlur:TVkBool32;
                          const aRayTracingMotionBlurPipelineTraceRaysIndirect:TVkBool32);
{$endif}
     end;

     PPVkAccelerationStructureGeometryMotionTrianglesDataNV=^PVkAccelerationStructureGeometryMotionTrianglesDataNV;
     PVkAccelerationStructureGeometryMotionTrianglesDataNV=^TVkAccelerationStructureGeometryMotionTrianglesDataNV;
     TVkAccelerationStructureGeometryMotionTrianglesDataNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV
       pNext:PVkVoid;
       vertexData:TVkDeviceOrHostAddressConstKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aVertexData:TVkDeviceOrHostAddressConstKHR);
{$endif}
     end;

     PPVkAccelerationStructureMotionInfoNV=^PVkAccelerationStructureMotionInfoNV;
     PVkAccelerationStructureMotionInfoNV=^TVkAccelerationStructureMotionInfoNV;
     TVkAccelerationStructureMotionInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV
       pNext:PVkVoid;
       maxInstances:TVkUInt32;
       flags:TVkAccelerationStructureMotionInfoFlagsNV;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMaxInstances:TVkUInt32;
                          const aFlags:TVkAccelerationStructureMotionInfoFlagsNV);
{$endif}
     end;

     PPVkSRTDataNV=^PVkSRTDataNV;
     PVkSRTDataNV=^TVkSRTDataNV;
     TVkSRTDataNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sx:TVkFloat;
       a:TVkFloat;
       b:TVkFloat;
       pvx:TVkFloat;
       sy:TVkFloat;
       c:TVkFloat;
       pvy:TVkFloat;
       sz:TVkFloat;
       pvz:TVkFloat;
       qx:TVkFloat;
       qy:TVkFloat;
       qz:TVkFloat;
       qw:TVkFloat;
       tx:TVkFloat;
       ty:TVkFloat;
       tz:TVkFloat;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSx:TVkFloat;
                          const aA:TVkFloat;
                          const aB:TVkFloat;
                          const aPvx:TVkFloat;
                          const aSy:TVkFloat;
                          const aC:TVkFloat;
                          const aPvy:TVkFloat;
                          const aSz:TVkFloat;
                          const aPvz:TVkFloat;
                          const aQx:TVkFloat;
                          const aQy:TVkFloat;
                          const aQz:TVkFloat;
                          const aQw:TVkFloat;
                          const aTx:TVkFloat;
                          const aTy:TVkFloat;
                          const aTz:TVkFloat);
{$endif}
     end;

     PPVkAccelerationStructureSRTMotionInstanceNV=^PVkAccelerationStructureSRTMotionInstanceNV;
     PVkAccelerationStructureSRTMotionInstanceNV=^TVkAccelerationStructureSRTMotionInstanceNV;
     TVkAccelerationStructureSRTMotionInstanceNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       transformT0:TVkSRTDataNV;
       transformT1:TVkSRTDataNV;
       instanceCustomIndexMask:TVkUInt32; // 24 bits of instance custom index, 8 bits of mask
       instanceShaderBindingTableRecordOffsetFlags:TVkUInt32; // 24 bits of instance shader binding table record offset, 8 bits of flags
       accelerationStructureReference:TVkUInt64;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aTransformT0:TVkSRTDataNV;
                          const aTransformT1:TVkSRTDataNV;
                          const aInstanceCustomIndex:TVkUInt32;
                          const aMask:TVkUInt32;
                          const aInstanceShaderBindingTableRecordOffset:TVkUInt32;
                          const aFlags:TVkGeometryInstanceFlagsKHR;
                          const aAccelerationStructureReference:TVkUInt64);
      private
       function GetInstanceCustomIndex:TVkUInt32;
       procedure SetInstanceCustomIndex(const aValue:TVkUInt32);
       function GetMask:TVkUInt32;
       procedure SetMask(const aValue:TVkUInt32);
       function GetInstanceShaderBindingTableRecordOffset:TVkUInt32;
       procedure SetInstanceShaderBindingTableRecordOffset(const aValue:TVkUInt32);
       function GetFlags:TVkGeometryInstanceFlagsKHR;
       procedure SetFlags(const aValue:TVkGeometryInstanceFlagsKHR);
      public
       property instanceCustomIndex:TVkUInt32 read GetInstanceCustomIndex write SetInstanceCustomIndex;
       property mask:TVkUInt32 read GetMask write SetMask;
       property instanceShaderBindingTableRecordOffset:TVkUInt32 read GetInstanceShaderBindingTableRecordOffset write SetInstanceShaderBindingTableRecordOffset;
       property flags:TVkGeometryInstanceFlagsKHR read GetFlags write SetFlags;
{$endif}
     end;

     PPVkAccelerationStructureMatrixMotionInstanceNV=^PVkAccelerationStructureMatrixMotionInstanceNV;
     PVkAccelerationStructureMatrixMotionInstanceNV=^TVkAccelerationStructureMatrixMotionInstanceNV;
     TVkAccelerationStructureMatrixMotionInstanceNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       transformT0:TVkTransformMatrixKHR;
       transformT1:TVkTransformMatrixKHR;
       instanceCustomIndexMask:TVkUInt32; // 24 bits of instance custom index, 8 bits of mask
       instanceShaderBindingTableRecordOffsetFlags:TVkUInt32; // 24 bits of instance shader binding table record offset, 8 bits of flags
       accelerationStructureReference:TVkUInt64;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aTransformT0:TVkTransformMatrixKHR;
                          const aTransformT1:TVkTransformMatrixKHR;
                          const aInstanceCustomIndex:TVkUInt32;
                          const aMask:TVkUInt32;
                          const aInstanceShaderBindingTableRecordOffset:TVkUInt32;
                          const aFlags:TVkGeometryInstanceFlagsKHR;
                          const aAccelerationStructureReference:TVkUInt64);
      private
       function GetInstanceCustomIndex:TVkUInt32;
       procedure SetInstanceCustomIndex(const aValue:TVkUInt32);
       function GetMask:TVkUInt32;
       procedure SetMask(const aValue:TVkUInt32);
       function GetInstanceShaderBindingTableRecordOffset:TVkUInt32;
       procedure SetInstanceShaderBindingTableRecordOffset(const aValue:TVkUInt32);
       function GetFlags:TVkGeometryInstanceFlagsKHR;
       procedure SetFlags(const aValue:TVkGeometryInstanceFlagsKHR);
      public
       property instanceCustomIndex:TVkUInt32 read GetInstanceCustomIndex write SetInstanceCustomIndex;
       property mask:TVkUInt32 read GetMask write SetMask;
       property instanceShaderBindingTableRecordOffset:TVkUInt32 read GetInstanceShaderBindingTableRecordOffset write SetInstanceShaderBindingTableRecordOffset;
       property flags:TVkGeometryInstanceFlagsKHR read GetFlags write SetFlags;
{$endif}
     end;

     PPVkAccelerationStructureMotionInstanceDataNV=^PVkAccelerationStructureMotionInstanceDataNV;
     PVkAccelerationStructureMotionInstanceDataNV=^TVkAccelerationStructureMotionInstanceDataNV;
     TVkAccelerationStructureMotionInstanceDataNV=record
      case longint of
       0:(
        staticInstance:TVkAccelerationStructureInstanceKHR;
       );
       1:(
        matrixMotionInstance:TVkAccelerationStructureMatrixMotionInstanceNV;
       );
       2:(
        srtMotionInstance:TVkAccelerationStructureSRTMotionInstanceNV;
       );
     end;

     PPVkAccelerationStructureMotionInstanceNV=^PVkAccelerationStructureMotionInstanceNV;
     PVkAccelerationStructureMotionInstanceNV=^TVkAccelerationStructureMotionInstanceNV;
     TVkAccelerationStructureMotionInstanceNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       type_:TVkAccelerationStructureMotionInstanceTypeNV;
       flags:TVkAccelerationStructureMotionInstanceFlagsNV;
       data:TVkAccelerationStructureMotionInstanceDataNV;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aType_:TVkAccelerationStructureMotionInstanceTypeNV;
                          const aFlags:TVkAccelerationStructureMotionInstanceFlagsNV;
                          const aData:TVkAccelerationStructureMotionInstanceDataNV);
{$endif}
     end;

     PPVkMemoryGetRemoteAddressInfoNV=^PVkMemoryGetRemoteAddressInfoNV;
     PVkMemoryGetRemoteAddressInfoNV=^TVkMemoryGetRemoteAddressInfoNV;
     TVkMemoryGetRemoteAddressInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV
       pNext:PVkVoid;
       memory:TVkDeviceMemory;
       handleType:TVkExternalMemoryHandleTypeFlagBits;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMemory:TVkDeviceMemory;
                          const aHandleType:TVkExternalMemoryHandleTypeFlagBits);
{$endif}
     end;

{$ifdef Fuchsia}
     PPVkImportMemoryBufferCollectionFUCHSIA=^PVkImportMemoryBufferCollectionFUCHSIA;
     PVkImportMemoryBufferCollectionFUCHSIA=^TVkImportMemoryBufferCollectionFUCHSIA;
     TVkImportMemoryBufferCollectionFUCHSIA=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA
       pNext:PVkVoid;
       collection:TVkBufferCollectionFUCHSIA;
       index:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aCollection:TVkBufferCollectionFUCHSIA;
                          const aIndex:TVkUInt32);
{$endif}
     end;
{$endif}

{$ifdef Fuchsia}
     PPVkBufferCollectionImageCreateInfoFUCHSIA=^PVkBufferCollectionImageCreateInfoFUCHSIA;
     PVkBufferCollectionImageCreateInfoFUCHSIA=^TVkBufferCollectionImageCreateInfoFUCHSIA;
     TVkBufferCollectionImageCreateInfoFUCHSIA=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA
       pNext:PVkVoid;
       collection:TVkBufferCollectionFUCHSIA;
       index:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aCollection:TVkBufferCollectionFUCHSIA;
                          const aIndex:TVkUInt32);
{$endif}
     end;
{$endif}

{$ifdef Fuchsia}
     PPVkBufferCollectionBufferCreateInfoFUCHSIA=^PVkBufferCollectionBufferCreateInfoFUCHSIA;
     PVkBufferCollectionBufferCreateInfoFUCHSIA=^TVkBufferCollectionBufferCreateInfoFUCHSIA;
     TVkBufferCollectionBufferCreateInfoFUCHSIA=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA
       pNext:PVkVoid;
       collection:TVkBufferCollectionFUCHSIA;
       index:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aCollection:TVkBufferCollectionFUCHSIA;
                          const aIndex:TVkUInt32);
{$endif}
     end;
{$endif}

{$ifdef Fuchsia}
     PPVkBufferCollectionCreateInfoFUCHSIA=^PVkBufferCollectionCreateInfoFUCHSIA;
     PVkBufferCollectionCreateInfoFUCHSIA=^TVkBufferCollectionCreateInfoFUCHSIA;
     TVkBufferCollectionCreateInfoFUCHSIA=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CREATE_INFO_FUCHSIA
       pNext:PVkVoid;
       collectionToken:TVkFuchsiaZXHandle;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aCollectionToken:TVkFuchsiaZXHandle);
{$endif}
     end;
{$endif}

     PPVkSysmemColorSpaceFUCHSIA=^PVkSysmemColorSpaceFUCHSIA;
     PVkSysmemColorSpaceFUCHSIA=^TVkSysmemColorSpaceFUCHSIA;
     TVkSysmemColorSpaceFUCHSIA=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SYSMEM_COLOR_SPACE_FUCHSIA
       pNext:PVkVoid;
       colorSpace:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aColorSpace:TVkUInt32);
{$endif}
     end;

     PPVkBufferCollectionConstraintsInfoFUCHSIA=^PVkBufferCollectionConstraintsInfoFUCHSIA;
     PVkBufferCollectionConstraintsInfoFUCHSIA=^TVkBufferCollectionConstraintsInfoFUCHSIA;
     TVkBufferCollectionConstraintsInfoFUCHSIA=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CONSTRAINTS_INFO_FUCHSIA
       pNext:PVkVoid;
       minBufferCount:TVkUInt32;
       maxBufferCount:TVkUInt32;
       minBufferCountForCamping:TVkUInt32;
       minBufferCountForDedicatedSlack:TVkUInt32;
       minBufferCountForSharedSlack:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMinBufferCount:TVkUInt32;
                          const aMaxBufferCount:TVkUInt32;
                          const aMinBufferCountForCamping:TVkUInt32;
                          const aMinBufferCountForDedicatedSlack:TVkUInt32;
                          const aMinBufferCountForSharedSlack:TVkUInt32);
{$endif}
     end;

{$ifdef Fuchsia}
     PPVkBufferCollectionPropertiesFUCHSIA=^PVkBufferCollectionPropertiesFUCHSIA;
     PVkBufferCollectionPropertiesFUCHSIA=^TVkBufferCollectionPropertiesFUCHSIA;
     TVkBufferCollectionPropertiesFUCHSIA=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_BUFFER_COLLECTION_PROPERTIES_FUCHSIA
       pNext:PVkVoid;
       memoryTypeBits:TVkUInt32;
       bufferCount:TVkUInt32;
       createInfoIndex:TVkUInt32;
       sysmemPixelFormat:TVkUInt64;
       formatFeatures:TVkFormatFeatureFlags;
       sysmemColorSpaceIndex:TVkSysmemColorSpaceFUCHSIA;
       samplerYcbcrConversionComponents:TVkComponentMapping;
       suggestedYcbcrModel:TVkSamplerYcbcrModelConversion;
       suggestedYcbcrRange:TVkSamplerYcbcrRange;
       suggestedXChromaOffset:TVkChromaLocation;
       suggestedYChromaOffset:TVkChromaLocation;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMemoryTypeBits:TVkUInt32;
                          const aBufferCount:TVkUInt32;
                          const aCreateInfoIndex:TVkUInt32;
                          const aSysmemPixelFormat:TVkUInt64;
                          const aFormatFeatures:TVkFormatFeatureFlags;
                          const aSysmemColorSpaceIndex:TVkSysmemColorSpaceFUCHSIA;
                          const aSamplerYcbcrConversionComponents:TVkComponentMapping;
                          const aSuggestedYcbcrModel:TVkSamplerYcbcrModelConversion;
                          const aSuggestedYcbcrRange:TVkSamplerYcbcrRange;
                          const aSuggestedXChromaOffset:TVkChromaLocation;
                          const aSuggestedYChromaOffset:TVkChromaLocation);
{$endif}
     end;
{$endif}

{$ifdef Fuchsia}
     PPVkImageFormatConstraintsInfoFUCHSIA=^PVkImageFormatConstraintsInfoFUCHSIA;
     PVkImageFormatConstraintsInfoFUCHSIA=^TVkImageFormatConstraintsInfoFUCHSIA;
     TVkImageFormatConstraintsInfoFUCHSIA=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA
       pNext:PVkVoid;
       imageCreateInfo:TVkImageCreateInfo;
       requiredFormatFeatures:TVkFormatFeatureFlags;
       flags:TVkImageFormatConstraintsFlagsFUCHSIA;
       sysmemPixelFormat:TVkUInt64;
       colorSpaceCount:TVkUInt32;
       pColorSpaces:PVkSysmemColorSpaceFUCHSIA;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aImageCreateInfo:TVkImageCreateInfo;
                          const aRequiredFormatFeatures:TVkFormatFeatureFlags;
                          const aFlags:TVkImageFormatConstraintsFlagsFUCHSIA;
                          const aSysmemPixelFormat:TVkUInt64;
                          const aColorSpaceCount:TVkUInt32;
                          const aPColorSpaces:PVkSysmemColorSpaceFUCHSIA);
{$endif}
     end;
{$endif}

{$ifdef Fuchsia}
     PPVkImageConstraintsInfoFUCHSIA=^PVkImageConstraintsInfoFUCHSIA;
     PVkImageConstraintsInfoFUCHSIA=^TVkImageConstraintsInfoFUCHSIA;
     TVkImageConstraintsInfoFUCHSIA=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_IMAGE_CONSTRAINTS_INFO_FUCHSIA
       pNext:PVkVoid;
       formatConstraintsCount:TVkUInt32;
       pFormatConstraints:PVkImageFormatConstraintsInfoFUCHSIA;
       bufferCollectionConstraints:TVkBufferCollectionConstraintsInfoFUCHSIA;
       flags:TVkImageConstraintsInfoFlagsFUCHSIA;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFormatConstraintsCount:TVkUInt32;
                          const aPFormatConstraints:PVkImageFormatConstraintsInfoFUCHSIA;
                          const aBufferCollectionConstraints:TVkBufferCollectionConstraintsInfoFUCHSIA;
                          const aFlags:TVkImageConstraintsInfoFlagsFUCHSIA);
{$endif}
     end;
{$endif}

{$ifdef Fuchsia}
     PPVkBufferConstraintsInfoFUCHSIA=^PVkBufferConstraintsInfoFUCHSIA;
     PVkBufferConstraintsInfoFUCHSIA=^TVkBufferConstraintsInfoFUCHSIA;
     TVkBufferConstraintsInfoFUCHSIA=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_BUFFER_CONSTRAINTS_INFO_FUCHSIA
       pNext:PVkVoid;
       createInfo:TVkBufferCreateInfo;
       requiredFormatFeatures:TVkFormatFeatureFlags;
       bufferCollectionConstraints:TVkBufferCollectionConstraintsInfoFUCHSIA;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aCreateInfo:TVkBufferCreateInfo;
                          const aRequiredFormatFeatures:TVkFormatFeatureFlags;
                          const aBufferCollectionConstraints:TVkBufferCollectionConstraintsInfoFUCHSIA);
{$endif}
     end;
{$endif}

     PPVkPhysicalDeviceRGBA10X6FormatsFeaturesEXT=^PVkPhysicalDeviceRGBA10X6FormatsFeaturesEXT;
     PVkPhysicalDeviceRGBA10X6FormatsFeaturesEXT=^TVkPhysicalDeviceRGBA10X6FormatsFeaturesEXT;
     TVkPhysicalDeviceRGBA10X6FormatsFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT
       pNext:PVkVoid;
       formatRgba10x6WithoutYCbCrSampler:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFormatRgba10x6WithoutYCbCrSampler:TVkBool32);
{$endif}
     end;

     PPVkFormatProperties3=^PVkFormatProperties3;
     PVkFormatProperties3=^TVkFormatProperties3;
     TVkFormatProperties3=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3
       pNext:PVkVoid;
       linearTilingFeatures:TVkFormatFeatureFlags2;
       optimalTilingFeatures:TVkFormatFeatureFlags2;
       bufferFeatures:TVkFormatFeatureFlags2;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aLinearTilingFeatures:TVkFormatFeatureFlags2;
                          const aOptimalTilingFeatures:TVkFormatFeatureFlags2;
                          const aBufferFeatures:TVkFormatFeatureFlags2);
{$endif}
     end;

     PPVkFormatProperties3KHR=^PVkFormatProperties3KHR;
     PVkFormatProperties3KHR=^TVkFormatProperties3KHR;
     TVkFormatProperties3KHR=TVkFormatProperties3;

     PPVkDrmFormatModifierProperties2EXT=^PVkDrmFormatModifierProperties2EXT;
     PVkDrmFormatModifierProperties2EXT=^TVkDrmFormatModifierProperties2EXT;
     TVkDrmFormatModifierProperties2EXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       drmFormatModifier:TVkUInt64;
       drmFormatModifierPlaneCount:TVkUInt32;
       drmFormatModifierTilingFeatures:TVkFormatFeatureFlags2;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDrmFormatModifier:TVkUInt64;
                          const aDrmFormatModifierPlaneCount:TVkUInt32;
                          const aDrmFormatModifierTilingFeatures:TVkFormatFeatureFlags2);
{$endif}
     end;

     PPVkDrmFormatModifierPropertiesList2EXT=^PVkDrmFormatModifierPropertiesList2EXT;
     PVkDrmFormatModifierPropertiesList2EXT=^TVkDrmFormatModifierPropertiesList2EXT;
     TVkDrmFormatModifierPropertiesList2EXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT
       pNext:PVkVoid;
       drmFormatModifierCount:TVkUInt32;
       pDrmFormatModifierProperties:PVkDrmFormatModifierProperties2EXT;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDrmFormatModifierCount:TVkUInt32;
                          const aPDrmFormatModifierProperties:PVkDrmFormatModifierProperties2EXT);
{$endif}
     end;

{$ifdef Android}
     PPVkAndroidHardwareBufferFormatProperties2ANDROID=^PVkAndroidHardwareBufferFormatProperties2ANDROID;
     PVkAndroidHardwareBufferFormatProperties2ANDROID=^TVkAndroidHardwareBufferFormatProperties2ANDROID;
     TVkAndroidHardwareBufferFormatProperties2ANDROID=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID
       pNext:PVkVoid;
       format:TVkFormat;
       externalFormat:TVkUInt64;
       formatFeatures:TVkFormatFeatureFlags2;
       samplerYcbcrConversionComponents:TVkComponentMapping;
       suggestedYcbcrModel:TVkSamplerYcbcrModelConversion;
       suggestedYcbcrRange:TVkSamplerYcbcrRange;
       suggestedXChromaOffset:TVkChromaLocation;
       suggestedYChromaOffset:TVkChromaLocation;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFormat:TVkFormat;
                          const aExternalFormat:TVkUInt64;
                          const aFormatFeatures:TVkFormatFeatureFlags2;
                          const aSamplerYcbcrConversionComponents:TVkComponentMapping;
                          const aSuggestedYcbcrModel:TVkSamplerYcbcrModelConversion;
                          const aSuggestedYcbcrRange:TVkSamplerYcbcrRange;
                          const aSuggestedXChromaOffset:TVkChromaLocation;
                          const aSuggestedYChromaOffset:TVkChromaLocation);
{$endif}
     end;
{$endif}

     PPVkPipelineRenderingCreateInfo=^PVkPipelineRenderingCreateInfo;
     PVkPipelineRenderingCreateInfo=^TVkPipelineRenderingCreateInfo;
     TVkPipelineRenderingCreateInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO
       pNext:PVkVoid;
       viewMask:TVkUInt32;
       colorAttachmentCount:TVkUInt32;
       pColorAttachmentFormats:PVkFormat;
       depthAttachmentFormat:TVkFormat;
       stencilAttachmentFormat:TVkFormat;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aViewMask:TVkUInt32;
                          const aColorAttachmentCount:TVkUInt32;
                          const aPColorAttachmentFormats:PVkFormat;
                          const aDepthAttachmentFormat:TVkFormat;
                          const aStencilAttachmentFormat:TVkFormat);
{$endif}
     end;

     PPVkPipelineRenderingCreateInfoKHR=^PVkPipelineRenderingCreateInfoKHR;
     PVkPipelineRenderingCreateInfoKHR=^TVkPipelineRenderingCreateInfoKHR;
     TVkPipelineRenderingCreateInfoKHR=TVkPipelineRenderingCreateInfo;

     PPVkRenderingAttachmentInfo=^PVkRenderingAttachmentInfo;
     PVkRenderingAttachmentInfo=^TVkRenderingAttachmentInfo;
     TVkRenderingAttachmentInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO
       pNext:PVkVoid;
       imageView:TVkImageView;
       imageLayout:TVkImageLayout;
       resolveMode:TVkResolveModeFlagBits;
       resolveImageView:TVkImageView;
       resolveImageLayout:TVkImageLayout;
       loadOp:TVkAttachmentLoadOp;
       storeOp:TVkAttachmentStoreOp;
       clearValue:TVkClearValue;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aImageView:TVkImageView;
                          const aImageLayout:TVkImageLayout;
                          const aResolveMode:TVkResolveModeFlagBits;
                          const aResolveImageView:TVkImageView;
                          const aResolveImageLayout:TVkImageLayout;
                          const aLoadOp:TVkAttachmentLoadOp;
                          const aStoreOp:TVkAttachmentStoreOp;
                          const aClearValue:TVkClearValue);
{$endif}
     end;

     PPVkRenderingInfo=^PVkRenderingInfo;
     PVkRenderingInfo=^TVkRenderingInfo;
     TVkRenderingInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_RENDERING_INFO
       pNext:PVkVoid;
       flags:TVkRenderingFlags;
       renderArea:TVkRect2D;
       layerCount:TVkUInt32;
       viewMask:TVkUInt32;
       colorAttachmentCount:TVkUInt32;
       pColorAttachments:PVkRenderingAttachmentInfo;
       pDepthAttachment:PVkRenderingAttachmentInfo;
       pStencilAttachment:PVkRenderingAttachmentInfo;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkRenderingFlags;
                          const aRenderArea:TVkRect2D;
                          const aLayerCount:TVkUInt32;
                          const aViewMask:TVkUInt32;
                          const aColorAttachmentCount:TVkUInt32;
                          const aPColorAttachments:PVkRenderingAttachmentInfo;
                          const aPDepthAttachment:PVkRenderingAttachmentInfo;
                          const aPStencilAttachment:PVkRenderingAttachmentInfo);
{$endif}
     end;

     PPVkRenderingInfoKHR=^PVkRenderingInfoKHR;
     PVkRenderingInfoKHR=^TVkRenderingInfoKHR;
     TVkRenderingInfoKHR=TVkRenderingInfo;

     PPVkRenderingAttachmentInfoKHR=^PVkRenderingAttachmentInfoKHR;
     PVkRenderingAttachmentInfoKHR=^TVkRenderingAttachmentInfoKHR;
     TVkRenderingAttachmentInfoKHR=TVkRenderingAttachmentInfo;

     PPVkRenderingFragmentShadingRateAttachmentInfoKHR=^PVkRenderingFragmentShadingRateAttachmentInfoKHR;
     PVkRenderingFragmentShadingRateAttachmentInfoKHR=^TVkRenderingFragmentShadingRateAttachmentInfoKHR;
     TVkRenderingFragmentShadingRateAttachmentInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR
       pNext:PVkVoid;
       imageView:TVkImageView;
       imageLayout:TVkImageLayout;
       shadingRateAttachmentTexelSize:TVkExtent2D;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aImageView:TVkImageView;
                          const aImageLayout:TVkImageLayout;
                          const aShadingRateAttachmentTexelSize:TVkExtent2D);
{$endif}
     end;

     PPVkRenderingFragmentDensityMapAttachmentInfoEXT=^PVkRenderingFragmentDensityMapAttachmentInfoEXT;
     PVkRenderingFragmentDensityMapAttachmentInfoEXT=^TVkRenderingFragmentDensityMapAttachmentInfoEXT;
     TVkRenderingFragmentDensityMapAttachmentInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT
       pNext:PVkVoid;
       imageView:TVkImageView;
       imageLayout:TVkImageLayout;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aImageView:TVkImageView;
                          const aImageLayout:TVkImageLayout);
{$endif}
     end;

     PPVkPhysicalDeviceDynamicRenderingFeatures=^PVkPhysicalDeviceDynamicRenderingFeatures;
     PVkPhysicalDeviceDynamicRenderingFeatures=^TVkPhysicalDeviceDynamicRenderingFeatures;
     TVkPhysicalDeviceDynamicRenderingFeatures=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES
       pNext:PVkVoid;
       dynamicRendering:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDynamicRendering:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceDynamicRenderingFeaturesKHR=^PVkPhysicalDeviceDynamicRenderingFeaturesKHR;
     PVkPhysicalDeviceDynamicRenderingFeaturesKHR=^TVkPhysicalDeviceDynamicRenderingFeaturesKHR;
     TVkPhysicalDeviceDynamicRenderingFeaturesKHR=TVkPhysicalDeviceDynamicRenderingFeatures;

     PPVkCommandBufferInheritanceRenderingInfo=^PVkCommandBufferInheritanceRenderingInfo;
     PVkCommandBufferInheritanceRenderingInfo=^TVkCommandBufferInheritanceRenderingInfo;
     TVkCommandBufferInheritanceRenderingInfo=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO
       pNext:PVkVoid;
       flags:TVkRenderingFlags;
       viewMask:TVkUInt32;
       colorAttachmentCount:TVkUInt32;
       pColorAttachmentFormats:PVkFormat;
       depthAttachmentFormat:TVkFormat;
       stencilAttachmentFormat:TVkFormat;
       rasterizationSamples:TVkSampleCountFlagBits;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkRenderingFlags;
                          const aViewMask:TVkUInt32;
                          const aColorAttachmentCount:TVkUInt32;
                          const aPColorAttachmentFormats:PVkFormat;
                          const aDepthAttachmentFormat:TVkFormat;
                          const aStencilAttachmentFormat:TVkFormat;
                          const aRasterizationSamples:TVkSampleCountFlagBits);
{$endif}
     end;

     PPVkCommandBufferInheritanceRenderingInfoKHR=^PVkCommandBufferInheritanceRenderingInfoKHR;
     PVkCommandBufferInheritanceRenderingInfoKHR=^TVkCommandBufferInheritanceRenderingInfoKHR;
     TVkCommandBufferInheritanceRenderingInfoKHR=TVkCommandBufferInheritanceRenderingInfo;

     PPVkAttachmentSampleCountInfoAMD=^PVkAttachmentSampleCountInfoAMD;
     PVkAttachmentSampleCountInfoAMD=^TVkAttachmentSampleCountInfoAMD;
     TVkAttachmentSampleCountInfoAMD=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD
       pNext:PVkVoid;
       colorAttachmentCount:TVkUInt32;
       pColorAttachmentSamples:PVkSampleCountFlagBits;
       depthStencilAttachmentSamples:TVkSampleCountFlagBits;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aColorAttachmentCount:TVkUInt32;
                          const aPColorAttachmentSamples:PVkSampleCountFlagBits;
                          const aDepthStencilAttachmentSamples:TVkSampleCountFlagBits);
{$endif}
     end;

     PPVkAttachmentSampleCountInfoNV=^PVkAttachmentSampleCountInfoNV;
     PVkAttachmentSampleCountInfoNV=^TVkAttachmentSampleCountInfoNV;
     TVkAttachmentSampleCountInfoNV=TVkAttachmentSampleCountInfoAMD;

     PPVkMultiviewPerViewAttributesInfoNVX=^PVkMultiviewPerViewAttributesInfoNVX;
     PVkMultiviewPerViewAttributesInfoNVX=^TVkMultiviewPerViewAttributesInfoNVX;
     TVkMultiviewPerViewAttributesInfoNVX=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX
       pNext:PVkVoid;
       perViewAttributes:TVkBool32;
       perViewAttributesPositionXOnly:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPerViewAttributes:TVkBool32;
                          const aPerViewAttributesPositionXOnly:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceImageViewMinLodFeaturesEXT=^PVkPhysicalDeviceImageViewMinLodFeaturesEXT;
     PVkPhysicalDeviceImageViewMinLodFeaturesEXT=^TVkPhysicalDeviceImageViewMinLodFeaturesEXT;
     TVkPhysicalDeviceImageViewMinLodFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT
       pNext:PVkVoid;
       minLod:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMinLod:TVkBool32);
{$endif}
     end;

     PPVkImageViewMinLodCreateInfoEXT=^PVkImageViewMinLodCreateInfoEXT;
     PVkImageViewMinLodCreateInfoEXT=^TVkImageViewMinLodCreateInfoEXT;
     TVkImageViewMinLodCreateInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT
       pNext:PVkVoid;
       minLod:TVkFloat;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMinLod:TVkFloat);
{$endif}
     end;

     PPVkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT=^PVkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT;
     PVkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT=^TVkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT;
     TVkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT
       pNext:PVkVoid;
       rasterizationOrderColorAttachmentAccess:TVkBool32;
       rasterizationOrderDepthAttachmentAccess:TVkBool32;
       rasterizationOrderStencilAttachmentAccess:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aRasterizationOrderColorAttachmentAccess:TVkBool32;
                          const aRasterizationOrderDepthAttachmentAccess:TVkBool32;
                          const aRasterizationOrderStencilAttachmentAccess:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM=^PVkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM;
     PVkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM=^TVkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM;
     TVkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM=TVkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT;

     PPVkPhysicalDeviceLinearColorAttachmentFeaturesNV=^PVkPhysicalDeviceLinearColorAttachmentFeaturesNV;
     PVkPhysicalDeviceLinearColorAttachmentFeaturesNV=^TVkPhysicalDeviceLinearColorAttachmentFeaturesNV;
     TVkPhysicalDeviceLinearColorAttachmentFeaturesNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV
       pNext:PVkVoid;
       linearColorAttachment:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aLinearColorAttachment:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT=^PVkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT;
     PVkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT=^TVkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT;
     TVkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT
       pNext:PVkVoid;
       graphicsPipelineLibrary:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aGraphicsPipelineLibrary:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT=^PVkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT;
     PVkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT=^TVkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT;
     TVkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT
       pNext:PVkVoid;
       graphicsPipelineLibraryFastLinking:TVkBool32;
       graphicsPipelineLibraryIndependentInterpolationDecoration:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aGraphicsPipelineLibraryFastLinking:TVkBool32;
                          const aGraphicsPipelineLibraryIndependentInterpolationDecoration:TVkBool32);
{$endif}
     end;

     PPVkGraphicsPipelineLibraryCreateInfoEXT=^PVkGraphicsPipelineLibraryCreateInfoEXT;
     PVkGraphicsPipelineLibraryCreateInfoEXT=^TVkGraphicsPipelineLibraryCreateInfoEXT;
     TVkGraphicsPipelineLibraryCreateInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT
       pNext:PVkVoid;
       flags:TVkGraphicsPipelineLibraryFlagsEXT;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkGraphicsPipelineLibraryFlagsEXT);
{$endif}
     end;

     PPVkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE=^PVkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE;
     PVkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE=^TVkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE;
     TVkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE
       pNext:PVkVoid;
       descriptorSetHostMapping:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDescriptorSetHostMapping:TVkBool32);
{$endif}
     end;

     PPVkDescriptorSetBindingReferenceVALVE=^PVkDescriptorSetBindingReferenceVALVE;
     PVkDescriptorSetBindingReferenceVALVE=^TVkDescriptorSetBindingReferenceVALVE;
     TVkDescriptorSetBindingReferenceVALVE=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE
       pNext:PVkVoid;
       descriptorSetLayout:TVkDescriptorSetLayout;
       binding:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDescriptorSetLayout:TVkDescriptorSetLayout;
                          const aBinding:TVkUInt32);
{$endif}
     end;

     PPVkDescriptorSetLayoutHostMappingInfoVALVE=^PVkDescriptorSetLayoutHostMappingInfoVALVE;
     PVkDescriptorSetLayoutHostMappingInfoVALVE=^TVkDescriptorSetLayoutHostMappingInfoVALVE;
     TVkDescriptorSetLayoutHostMappingInfoVALVE=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE
       pNext:PVkVoid;
       descriptorOffset:TVkSize;
       descriptorSize:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDescriptorOffset:TVkSize;
                          const aDescriptorSize:TVkUInt32);
{$endif}
     end;

     PPVkPhysicalDeviceShaderModuleIdentifierFeaturesEXT=^PVkPhysicalDeviceShaderModuleIdentifierFeaturesEXT;
     PVkPhysicalDeviceShaderModuleIdentifierFeaturesEXT=^TVkPhysicalDeviceShaderModuleIdentifierFeaturesEXT;
     TVkPhysicalDeviceShaderModuleIdentifierFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT
       pNext:PVkVoid;
       shaderModuleIdentifier:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aShaderModuleIdentifier:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceShaderModuleIdentifierPropertiesEXT=^PVkPhysicalDeviceShaderModuleIdentifierPropertiesEXT;
     PVkPhysicalDeviceShaderModuleIdentifierPropertiesEXT=^TVkPhysicalDeviceShaderModuleIdentifierPropertiesEXT;
     TVkPhysicalDeviceShaderModuleIdentifierPropertiesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT
       pNext:PVkVoid;
       shaderModuleIdentifierAlgorithmUUID:array[0..VK_UUID_SIZE-1] of TVkUInt8;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aShaderModuleIdentifierAlgorithmUUID:array of TVkUInt8);
{$endif}
     end;

     PPVkPipelineShaderStageModuleIdentifierCreateInfoEXT=^PVkPipelineShaderStageModuleIdentifierCreateInfoEXT;
     PVkPipelineShaderStageModuleIdentifierCreateInfoEXT=^TVkPipelineShaderStageModuleIdentifierCreateInfoEXT;
     TVkPipelineShaderStageModuleIdentifierCreateInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT
       pNext:PVkVoid;
       identifierSize:TVkUInt32;
       pIdentifier:PVkUInt8;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aIdentifierSize:TVkUInt32;
                          const aPIdentifier:PVkUInt8);
{$endif}
     end;

     PPVkShaderModuleIdentifierEXT=^PVkShaderModuleIdentifierEXT;
     PVkShaderModuleIdentifierEXT=^TVkShaderModuleIdentifierEXT;
     TVkShaderModuleIdentifierEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SHADER_MODULE_IDENTIFIER_EXT
       pNext:PVkVoid;
       identifierSize:TVkUInt32;
       identifier:array[0..VK_MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT-1] of TVkUInt8;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aIdentifierSize:TVkUInt32;
                          const aIdentifier:array of TVkUInt8);
{$endif}
     end;

     PPVkImageCompressionControlEXT=^PVkImageCompressionControlEXT;
     PVkImageCompressionControlEXT=^TVkImageCompressionControlEXT;
     TVkImageCompressionControlEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT
       pNext:PVkVoid;
       flags:TVkImageCompressionFlagsEXT;
       compressionControlPlaneCount:TVkUInt32;
       pFixedRateFlags:PVkImageCompressionFixedRateFlagsEXT;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkImageCompressionFlagsEXT;
                          const aCompressionControlPlaneCount:TVkUInt32;
                          const aPFixedRateFlags:PVkImageCompressionFixedRateFlagsEXT);
{$endif}
     end;

     PPVkPhysicalDeviceImageCompressionControlFeaturesEXT=^PVkPhysicalDeviceImageCompressionControlFeaturesEXT;
     PVkPhysicalDeviceImageCompressionControlFeaturesEXT=^TVkPhysicalDeviceImageCompressionControlFeaturesEXT;
     TVkPhysicalDeviceImageCompressionControlFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT
       pNext:PVkVoid;
       imageCompressionControl:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aImageCompressionControl:TVkBool32);
{$endif}
     end;

     PPVkImageCompressionPropertiesEXT=^PVkImageCompressionPropertiesEXT;
     PVkImageCompressionPropertiesEXT=^TVkImageCompressionPropertiesEXT;
     TVkImageCompressionPropertiesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT
       pNext:PVkVoid;
       imageCompressionFlags:TVkImageCompressionFlagsEXT;
       imageCompressionFixedRateFlags:TVkImageCompressionFixedRateFlagsEXT;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aImageCompressionFlags:TVkImageCompressionFlagsEXT;
                          const aImageCompressionFixedRateFlags:TVkImageCompressionFixedRateFlagsEXT);
{$endif}
     end;

     PPVkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT=^PVkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT;
     PVkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT=^TVkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT;
     TVkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT
       pNext:PVkVoid;
       imageCompressionControlSwapchain:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aImageCompressionControlSwapchain:TVkBool32);
{$endif}
     end;

     PPVkImageSubresource2KHR=^PVkImageSubresource2KHR;
     PVkImageSubresource2KHR=^TVkImageSubresource2KHR;
     TVkImageSubresource2KHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR
       pNext:PVkVoid;
       imageSubresource:TVkImageSubresource;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aImageSubresource:TVkImageSubresource);
{$endif}
     end;

     PPVkImageSubresource2EXT=^PVkImageSubresource2EXT;
     PVkImageSubresource2EXT=^TVkImageSubresource2EXT;
     TVkImageSubresource2EXT=TVkImageSubresource2KHR;

     PPVkSubresourceLayout2KHR=^PVkSubresourceLayout2KHR;
     PVkSubresourceLayout2KHR=^TVkSubresourceLayout2KHR;
     TVkSubresourceLayout2KHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR
       pNext:PVkVoid;
       subresourceLayout:TVkSubresourceLayout;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSubresourceLayout:TVkSubresourceLayout);
{$endif}
     end;

     PPVkSubresourceLayout2EXT=^PVkSubresourceLayout2EXT;
     PVkSubresourceLayout2EXT=^TVkSubresourceLayout2EXT;
     TVkSubresourceLayout2EXT=TVkSubresourceLayout2KHR;

     PPVkRenderPassCreationControlEXT=^PVkRenderPassCreationControlEXT;
     PVkRenderPassCreationControlEXT=^TVkRenderPassCreationControlEXT;
     TVkRenderPassCreationControlEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_CONTROL_EXT
       pNext:PVkVoid;
       disallowMerging:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDisallowMerging:TVkBool32);
{$endif}
     end;

     PPVkRenderPassCreationFeedbackInfoEXT=^PVkRenderPassCreationFeedbackInfoEXT;
     PVkRenderPassCreationFeedbackInfoEXT=^TVkRenderPassCreationFeedbackInfoEXT;
     TVkRenderPassCreationFeedbackInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       postMergeSubpassCount:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPostMergeSubpassCount:TVkUInt32);
{$endif}
     end;

     PPVkRenderPassCreationFeedbackCreateInfoEXT=^PVkRenderPassCreationFeedbackCreateInfoEXT;
     PVkRenderPassCreationFeedbackCreateInfoEXT=^TVkRenderPassCreationFeedbackCreateInfoEXT;
     TVkRenderPassCreationFeedbackCreateInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_FEEDBACK_CREATE_INFO_EXT
       pNext:PVkVoid;
       pRenderPassFeedback:PVkRenderPassCreationFeedbackInfoEXT;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPRenderPassFeedback:PVkRenderPassCreationFeedbackInfoEXT);
{$endif}
     end;

     PPVkRenderPassSubpassFeedbackInfoEXT=^PVkRenderPassSubpassFeedbackInfoEXT;
     PVkRenderPassSubpassFeedbackInfoEXT=^TVkRenderPassSubpassFeedbackInfoEXT;
     TVkRenderPassSubpassFeedbackInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       subpassMergeStatus:TVkSubpassMergeStatusEXT;
       description:array[0..VK_MAX_DESCRIPTION_SIZE-1] of TVkChar;
       postMergeIndex:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSubpassMergeStatus:TVkSubpassMergeStatusEXT;
                          const aDescription:TVkCharString;
                          const aPostMergeIndex:TVkUInt32);
{$endif}
     end;

     PPVkRenderPassSubpassFeedbackCreateInfoEXT=^PVkRenderPassSubpassFeedbackCreateInfoEXT;
     PVkRenderPassSubpassFeedbackCreateInfoEXT=^TVkRenderPassSubpassFeedbackCreateInfoEXT;
     TVkRenderPassSubpassFeedbackCreateInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT
       pNext:PVkVoid;
       pSubpassFeedback:PVkRenderPassSubpassFeedbackInfoEXT;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPSubpassFeedback:PVkRenderPassSubpassFeedbackInfoEXT);
{$endif}
     end;

     PPVkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT=^PVkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT;
     PVkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT=^TVkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT;
     TVkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT
       pNext:PVkVoid;
       subpassMergeFeedback:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSubpassMergeFeedback:TVkBool32);
{$endif}
     end;

     PPVkMicromapUsageEXT=^PVkMicromapUsageEXT;
     PVkMicromapUsageEXT=^TVkMicromapUsageEXT;
     TVkMicromapUsageEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       count:TVkUInt32;
       subdivisionLevel:TVkUInt32;
       format:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aCount:TVkUInt32;
                          const aSubdivisionLevel:TVkUInt32;
                          const aFormat:TVkUInt32);
{$endif}
     end;

     PPVkMicromapCreateInfoEXT=^PVkMicromapCreateInfoEXT;
     PVkMicromapCreateInfoEXT=^TVkMicromapCreateInfoEXT;
     TVkMicromapCreateInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_MICROMAP_CREATE_INFO_EXT
       pNext:PVkVoid;
       createFlags:TVkMicromapCreateFlagsEXT;
       buffer:TVkBuffer;
       offset:TVkDeviceSize;
       size:TVkDeviceSize;
       type_:TVkMicromapTypeEXT;
       deviceAddress:TVkDeviceAddress;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aCreateFlags:TVkMicromapCreateFlagsEXT;
                          const aBuffer:TVkBuffer;
                          const aOffset:TVkDeviceSize;
                          const aSize:TVkDeviceSize;
                          const aType_:TVkMicromapTypeEXT;
                          const aDeviceAddress:TVkDeviceAddress);
{$endif}
     end;

     PPVkMicromapVersionInfoEXT=^PVkMicromapVersionInfoEXT;
     PVkMicromapVersionInfoEXT=^TVkMicromapVersionInfoEXT;
     TVkMicromapVersionInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_MICROMAP_VERSION_INFO_EXT
       pNext:PVkVoid;
       pVersionData:PVkUInt8;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPVersionData:PVkUInt8);
{$endif}
     end;

     PPVkCopyMicromapInfoEXT=^PVkCopyMicromapInfoEXT;
     PVkCopyMicromapInfoEXT=^TVkCopyMicromapInfoEXT;
     TVkCopyMicromapInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_COPY_MICROMAP_INFO_EXT
       pNext:PVkVoid;
       src:TVkMicromapEXT;
       dst:TVkMicromapEXT;
       mode:TVkCopyMicromapModeEXT;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSrc:TVkMicromapEXT;
                          const aDst:TVkMicromapEXT;
                          const aMode:TVkCopyMicromapModeEXT);
{$endif}
     end;

     PPVkCopyMicromapToMemoryInfoEXT=^PVkCopyMicromapToMemoryInfoEXT;
     PVkCopyMicromapToMemoryInfoEXT=^TVkCopyMicromapToMemoryInfoEXT;
     TVkCopyMicromapToMemoryInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_COPY_MICROMAP_TO_MEMORY_INFO_EXT
       pNext:PVkVoid;
       src:TVkMicromapEXT;
       dst:TVkDeviceOrHostAddressKHR;
       mode:TVkCopyMicromapModeEXT;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSrc:TVkMicromapEXT;
                          const aDst:TVkDeviceOrHostAddressKHR;
                          const aMode:TVkCopyMicromapModeEXT);
{$endif}
     end;

     PPVkCopyMemoryToMicromapInfoEXT=^PVkCopyMemoryToMicromapInfoEXT;
     PVkCopyMemoryToMicromapInfoEXT=^TVkCopyMemoryToMicromapInfoEXT;
     TVkCopyMemoryToMicromapInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_COPY_MEMORY_TO_MICROMAP_INFO_EXT
       pNext:PVkVoid;
       src:TVkDeviceOrHostAddressConstKHR;
       dst:TVkMicromapEXT;
       mode:TVkCopyMicromapModeEXT;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSrc:TVkDeviceOrHostAddressConstKHR;
                          const aDst:TVkMicromapEXT;
                          const aMode:TVkCopyMicromapModeEXT);
{$endif}
     end;

     PPVkMicromapBuildSizesInfoEXT=^PVkMicromapBuildSizesInfoEXT;
     PVkMicromapBuildSizesInfoEXT=^TVkMicromapBuildSizesInfoEXT;
     TVkMicromapBuildSizesInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_MICROMAP_BUILD_SIZES_INFO_EXT
       pNext:PVkVoid;
       micromapSize:TVkDeviceSize;
       buildScratchSize:TVkDeviceSize;
       discardable:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMicromapSize:TVkDeviceSize;
                          const aBuildScratchSize:TVkDeviceSize;
                          const aDiscardable:TVkBool32);
{$endif}
     end;

     PPVkMicromapBuildInfoEXT=^PVkMicromapBuildInfoEXT;
     PVkMicromapBuildInfoEXT=^TVkMicromapBuildInfoEXT;
     TVkMicromapBuildInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_MICROMAP_BUILD_INFO_EXT
       pNext:PVkVoid;
       type_:TVkMicromapTypeEXT;
       flags:TVkBuildMicromapFlagsEXT;
       mode:TVkBuildMicromapModeEXT;
       dstMicromap:TVkMicromapEXT;
       usageCountsCount:TVkUInt32;
       pUsageCounts:PVkMicromapUsageEXT;
       ppUsageCounts:PPVkMicromapUsageEXT;
       data:TVkDeviceOrHostAddressConstKHR;
       scratchData:TVkDeviceOrHostAddressKHR;
       triangleArray:TVkDeviceOrHostAddressConstKHR;
       triangleArrayStride:TVkDeviceSize;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aType_:TVkMicromapTypeEXT;
                          const aFlags:TVkBuildMicromapFlagsEXT;
                          const aMode:TVkBuildMicromapModeEXT;
                          const aDstMicromap:TVkMicromapEXT;
                          const aUsageCountsCount:TVkUInt32;
                          const aPUsageCounts:PVkMicromapUsageEXT;
                          const aPpUsageCounts:PPVkMicromapUsageEXT;
                          const aData:TVkDeviceOrHostAddressConstKHR;
                          const aScratchData:TVkDeviceOrHostAddressKHR;
                          const aTriangleArray:TVkDeviceOrHostAddressConstKHR;
                          const aTriangleArrayStride:TVkDeviceSize);
{$endif}
     end;

     PPVkMicromapTriangleEXT=^PVkMicromapTriangleEXT;
     PVkMicromapTriangleEXT=^TVkMicromapTriangleEXT;
     TVkMicromapTriangleEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       dataOffset:TVkUInt32;
       subdivisionLevel:TVkUInt16;
       format:TVkUInt16;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDataOffset:TVkUInt32;
                          const aSubdivisionLevel:TVkUInt16;
                          const aFormat:TVkUInt16);
{$endif}
     end;

     PPVkPhysicalDeviceOpacityMicromapFeaturesEXT=^PVkPhysicalDeviceOpacityMicromapFeaturesEXT;
     PVkPhysicalDeviceOpacityMicromapFeaturesEXT=^TVkPhysicalDeviceOpacityMicromapFeaturesEXT;
     TVkPhysicalDeviceOpacityMicromapFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT
       pNext:PVkVoid;
       micromap:TVkBool32;
       micromapCaptureReplay:TVkBool32;
       micromapHostCommands:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMicromap:TVkBool32;
                          const aMicromapCaptureReplay:TVkBool32;
                          const aMicromapHostCommands:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceOpacityMicromapPropertiesEXT=^PVkPhysicalDeviceOpacityMicromapPropertiesEXT;
     PVkPhysicalDeviceOpacityMicromapPropertiesEXT=^TVkPhysicalDeviceOpacityMicromapPropertiesEXT;
     TVkPhysicalDeviceOpacityMicromapPropertiesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT
       pNext:PVkVoid;
       maxOpacity2StateSubdivisionLevel:TVkUInt32;
       maxOpacity4StateSubdivisionLevel:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMaxOpacity2StateSubdivisionLevel:TVkUInt32;
                          const aMaxOpacity4StateSubdivisionLevel:TVkUInt32);
{$endif}
     end;

     PPVkAccelerationStructureTrianglesOpacityMicromapEXT=^PVkAccelerationStructureTrianglesOpacityMicromapEXT;
     PVkAccelerationStructureTrianglesOpacityMicromapEXT=^TVkAccelerationStructureTrianglesOpacityMicromapEXT;
     TVkAccelerationStructureTrianglesOpacityMicromapEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT
       pNext:PVkVoid;
       indexType:TVkIndexType;
       indexBuffer:TVkDeviceOrHostAddressConstKHR;
       indexStride:TVkDeviceSize;
       baseTriangle:TVkUInt32;
       usageCountsCount:TVkUInt32;
       pUsageCounts:PVkMicromapUsageEXT;
       ppUsageCounts:PPVkMicromapUsageEXT;
       micromap:TVkMicromapEXT;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aIndexType:TVkIndexType;
                          const aIndexBuffer:TVkDeviceOrHostAddressConstKHR;
                          const aIndexStride:TVkDeviceSize;
                          const aBaseTriangle:TVkUInt32;
                          const aUsageCountsCount:TVkUInt32;
                          const aPUsageCounts:PVkMicromapUsageEXT;
                          const aPpUsageCounts:PPVkMicromapUsageEXT;
                          const aMicromap:TVkMicromapEXT);
{$endif}
     end;

     PPVkPhysicalDeviceDisplacementMicromapFeaturesNV=^PVkPhysicalDeviceDisplacementMicromapFeaturesNV;
     PVkPhysicalDeviceDisplacementMicromapFeaturesNV=^TVkPhysicalDeviceDisplacementMicromapFeaturesNV;
     TVkPhysicalDeviceDisplacementMicromapFeaturesNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_FEATURES_NV
       pNext:PVkVoid;
       displacementMicromap:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDisplacementMicromap:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceDisplacementMicromapPropertiesNV=^PVkPhysicalDeviceDisplacementMicromapPropertiesNV;
     PVkPhysicalDeviceDisplacementMicromapPropertiesNV=^TVkPhysicalDeviceDisplacementMicromapPropertiesNV;
     TVkPhysicalDeviceDisplacementMicromapPropertiesNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_PROPERTIES_NV
       pNext:PVkVoid;
       maxDisplacementMicromapSubdivisionLevel:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMaxDisplacementMicromapSubdivisionLevel:TVkUInt32);
{$endif}
     end;

     PPVkAccelerationStructureTrianglesDisplacementMicromapNV=^PVkAccelerationStructureTrianglesDisplacementMicromapNV;
     PVkAccelerationStructureTrianglesDisplacementMicromapNV=^TVkAccelerationStructureTrianglesDisplacementMicromapNV;
     TVkAccelerationStructureTrianglesDisplacementMicromapNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_DISPLACEMENT_MICROMAP_NV
       pNext:PVkVoid;
       displacementBiasAndScaleFormat:TVkFormat;
       displacementVectorFormat:TVkFormat;
       displacementBiasAndScaleBuffer:TVkDeviceOrHostAddressConstKHR;
       displacementBiasAndScaleStride:TVkDeviceSize;
       displacementVectorBuffer:TVkDeviceOrHostAddressConstKHR;
       displacementVectorStride:TVkDeviceSize;
       displacedMicromapPrimitiveFlags:TVkDeviceOrHostAddressConstKHR;
       displacedMicromapPrimitiveFlagsStride:TVkDeviceSize;
       indexType:TVkIndexType;
       indexBuffer:TVkDeviceOrHostAddressConstKHR;
       indexStride:TVkDeviceSize;
       baseTriangle:TVkUInt32;
       usageCountsCount:TVkUInt32;
       pUsageCounts:PVkMicromapUsageEXT;
       ppUsageCounts:PPVkMicromapUsageEXT;
       micromap:TVkMicromapEXT;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDisplacementBiasAndScaleFormat:TVkFormat;
                          const aDisplacementVectorFormat:TVkFormat;
                          const aDisplacementBiasAndScaleBuffer:TVkDeviceOrHostAddressConstKHR;
                          const aDisplacementBiasAndScaleStride:TVkDeviceSize;
                          const aDisplacementVectorBuffer:TVkDeviceOrHostAddressConstKHR;
                          const aDisplacementVectorStride:TVkDeviceSize;
                          const aDisplacedMicromapPrimitiveFlags:TVkDeviceOrHostAddressConstKHR;
                          const aDisplacedMicromapPrimitiveFlagsStride:TVkDeviceSize;
                          const aIndexType:TVkIndexType;
                          const aIndexBuffer:TVkDeviceOrHostAddressConstKHR;
                          const aIndexStride:TVkDeviceSize;
                          const aBaseTriangle:TVkUInt32;
                          const aUsageCountsCount:TVkUInt32;
                          const aPUsageCounts:PVkMicromapUsageEXT;
                          const aPpUsageCounts:PPVkMicromapUsageEXT;
                          const aMicromap:TVkMicromapEXT);
{$endif}
     end;

     PPVkPipelinePropertiesIdentifierEXT=^PVkPipelinePropertiesIdentifierEXT;
     PVkPipelinePropertiesIdentifierEXT=^TVkPipelinePropertiesIdentifierEXT;
     TVkPipelinePropertiesIdentifierEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PIPELINE_PROPERTIES_IDENTIFIER_EXT
       pNext:PVkVoid;
       pipelineIdentifier:array[0..VK_UUID_SIZE-1] of TVkUInt8;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPipelineIdentifier:array of TVkUInt8);
{$endif}
     end;

     PPVkPhysicalDevicePipelinePropertiesFeaturesEXT=^PVkPhysicalDevicePipelinePropertiesFeaturesEXT;
     PVkPhysicalDevicePipelinePropertiesFeaturesEXT=^TVkPhysicalDevicePipelinePropertiesFeaturesEXT;
     TVkPhysicalDevicePipelinePropertiesFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT
       pNext:PVkVoid;
       pipelinePropertiesIdentifier:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPipelinePropertiesIdentifier:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD=^PVkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD;
     PVkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD=^TVkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD;
     TVkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD
       pNext:PVkVoid;
       shaderEarlyAndLateFragmentTests:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aShaderEarlyAndLateFragmentTests:TVkBool32);
{$endif}
     end;

     PPVkExternalMemoryAcquireUnmodifiedEXT=^PVkExternalMemoryAcquireUnmodifiedEXT;
     PVkExternalMemoryAcquireUnmodifiedEXT=^TVkExternalMemoryAcquireUnmodifiedEXT;
     TVkExternalMemoryAcquireUnmodifiedEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT
       pNext:PVkVoid;
       acquireUnmodifiedMemory:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aAcquireUnmodifiedMemory:TVkBool32);
{$endif}
     end;

     PPVkExportMetalObjectCreateInfoEXT=^PVkExportMetalObjectCreateInfoEXT;
     PVkExportMetalObjectCreateInfoEXT=^TVkExportMetalObjectCreateInfoEXT;
     TVkExportMetalObjectCreateInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT
       pNext:PVkVoid;
       exportObjectType:TVkExportMetalObjectTypeFlagBitsEXT;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aExportObjectType:TVkExportMetalObjectTypeFlagBitsEXT);
{$endif}
     end;

     PPVkExportMetalObjectsInfoEXT=^PVkExportMetalObjectsInfoEXT;
     PVkExportMetalObjectsInfoEXT=^TVkExportMetalObjectsInfoEXT;
     TVkExportMetalObjectsInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECTS_INFO_EXT
       pNext:PVkVoid;
{$ifdef HAS_ADVANCED_RECORDS}
{$endif}
     end;

{$ifdef Metal}
     PPVkExportMetalDeviceInfoEXT=^PVkExportMetalDeviceInfoEXT;
     PVkExportMetalDeviceInfoEXT=^TVkExportMetalDeviceInfoEXT;
     TVkExportMetalDeviceInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_EXPORT_METAL_DEVICE_INFO_EXT
       pNext:PVkVoid;
       mtlDevice:TMTLDevice_id;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMtlDevice:TMTLDevice_id);
{$endif}
     end;
{$endif}

{$ifdef Metal}
     PPVkExportMetalCommandQueueInfoEXT=^PVkExportMetalCommandQueueInfoEXT;
     PVkExportMetalCommandQueueInfoEXT=^TVkExportMetalCommandQueueInfoEXT;
     TVkExportMetalCommandQueueInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_EXPORT_METAL_COMMAND_QUEUE_INFO_EXT
       pNext:PVkVoid;
       queue:TVkQueue;
       mtlCommandQueue:TMTLCommandQueue_id;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aQueue:TVkQueue;
                          const aMtlCommandQueue:TMTLCommandQueue_id);
{$endif}
     end;
{$endif}

{$ifdef Metal}
     PPVkExportMetalBufferInfoEXT=^PVkExportMetalBufferInfoEXT;
     PVkExportMetalBufferInfoEXT=^TVkExportMetalBufferInfoEXT;
     TVkExportMetalBufferInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_EXPORT_METAL_BUFFER_INFO_EXT
       pNext:PVkVoid;
       memory:TVkDeviceMemory;
       mtlBuffer:TMTLBuffer_id;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMemory:TVkDeviceMemory;
                          const aMtlBuffer:TMTLBuffer_id);
{$endif}
     end;
{$endif}

{$ifdef Metal}
     PPVkImportMetalBufferInfoEXT=^PVkImportMetalBufferInfoEXT;
     PVkImportMetalBufferInfoEXT=^TVkImportMetalBufferInfoEXT;
     TVkImportMetalBufferInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_IMPORT_METAL_BUFFER_INFO_EXT
       pNext:PVkVoid;
       mtlBuffer:TMTLBuffer_id;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMtlBuffer:TMTLBuffer_id);
{$endif}
     end;
{$endif}

{$ifdef Metal}
     PPVkExportMetalTextureInfoEXT=^PVkExportMetalTextureInfoEXT;
     PVkExportMetalTextureInfoEXT=^TVkExportMetalTextureInfoEXT;
     TVkExportMetalTextureInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_EXPORT_METAL_TEXTURE_INFO_EXT
       pNext:PVkVoid;
       image:TVkImage;
       imageView:TVkImageView;
       bufferView:TVkBufferView;
       plane:TVkImageAspectFlagBits;
       mtlTexture:TMTLTexture_id;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aImage:TVkImage;
                          const aImageView:TVkImageView;
                          const aBufferView:TVkBufferView;
                          const aPlane:TVkImageAspectFlagBits;
                          const aMtlTexture:TMTLTexture_id);
{$endif}
     end;
{$endif}

{$ifdef Metal}
     PPVkImportMetalTextureInfoEXT=^PVkImportMetalTextureInfoEXT;
     PVkImportMetalTextureInfoEXT=^TVkImportMetalTextureInfoEXT;
     TVkImportMetalTextureInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_IMPORT_METAL_TEXTURE_INFO_EXT
       pNext:PVkVoid;
       plane:TVkImageAspectFlagBits;
       mtlTexture:TMTLTexture_id;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPlane:TVkImageAspectFlagBits;
                          const aMtlTexture:TMTLTexture_id);
{$endif}
     end;
{$endif}

     PPVkExportMetalIOSurfaceInfoEXT=^PVkExportMetalIOSurfaceInfoEXT;
     PVkExportMetalIOSurfaceInfoEXT=^TVkExportMetalIOSurfaceInfoEXT;
     TVkExportMetalIOSurfaceInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_EXPORT_METAL_IO_SURFACE_INFO_EXT
       pNext:PVkVoid;
       image:TVkImage;
       ioSurface:TIOSurfaceRef;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aImage:TVkImage;
                          const aIoSurface:TIOSurfaceRef);
{$endif}
     end;

     PPVkImportMetalIOSurfaceInfoEXT=^PVkImportMetalIOSurfaceInfoEXT;
     PVkImportMetalIOSurfaceInfoEXT=^TVkImportMetalIOSurfaceInfoEXT;
     TVkImportMetalIOSurfaceInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_IMPORT_METAL_IO_SURFACE_INFO_EXT
       pNext:PVkVoid;
       ioSurface:TIOSurfaceRef;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aIoSurface:TIOSurfaceRef);
{$endif}
     end;

{$ifdef Metal}
     PPVkExportMetalSharedEventInfoEXT=^PVkExportMetalSharedEventInfoEXT;
     PVkExportMetalSharedEventInfoEXT=^TVkExportMetalSharedEventInfoEXT;
     TVkExportMetalSharedEventInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_EXPORT_METAL_SHARED_EVENT_INFO_EXT
       pNext:PVkVoid;
       semaphore:TVkSemaphore;
       event:TVkEvent;
       mtlSharedEvent:TMTLSharedEvent_id;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSemaphore:TVkSemaphore;
                          const aEvent:TVkEvent;
                          const aMtlSharedEvent:TMTLSharedEvent_id);
{$endif}
     end;
{$endif}

{$ifdef Metal}
     PPVkImportMetalSharedEventInfoEXT=^PVkImportMetalSharedEventInfoEXT;
     PVkImportMetalSharedEventInfoEXT=^TVkImportMetalSharedEventInfoEXT;
     TVkImportMetalSharedEventInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_IMPORT_METAL_SHARED_EVENT_INFO_EXT
       pNext:PVkVoid;
       mtlSharedEvent:TMTLSharedEvent_id;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMtlSharedEvent:TMTLSharedEvent_id);
{$endif}
     end;
{$endif}

     PPVkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT=^PVkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT;
     PVkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT=^TVkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT;
     TVkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT
       pNext:PVkVoid;
       nonSeamlessCubeMap:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aNonSeamlessCubeMap:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDevicePipelineRobustnessFeaturesEXT=^PVkPhysicalDevicePipelineRobustnessFeaturesEXT;
     PVkPhysicalDevicePipelineRobustnessFeaturesEXT=^TVkPhysicalDevicePipelineRobustnessFeaturesEXT;
     TVkPhysicalDevicePipelineRobustnessFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT
       pNext:PVkVoid;
       pipelineRobustness:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPipelineRobustness:TVkBool32);
{$endif}
     end;

     PPVkPipelineRobustnessCreateInfoEXT=^PVkPipelineRobustnessCreateInfoEXT;
     PVkPipelineRobustnessCreateInfoEXT=^TVkPipelineRobustnessCreateInfoEXT;
     TVkPipelineRobustnessCreateInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT
       pNext:PVkVoid;
       storageBuffers:TVkPipelineRobustnessBufferBehaviorEXT;
       uniformBuffers:TVkPipelineRobustnessBufferBehaviorEXT;
       vertexInputs:TVkPipelineRobustnessBufferBehaviorEXT;
       images:TVkPipelineRobustnessImageBehaviorEXT;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aStorageBuffers:TVkPipelineRobustnessBufferBehaviorEXT;
                          const aUniformBuffers:TVkPipelineRobustnessBufferBehaviorEXT;
                          const aVertexInputs:TVkPipelineRobustnessBufferBehaviorEXT;
                          const aImages:TVkPipelineRobustnessImageBehaviorEXT);
{$endif}
     end;

     PPVkPhysicalDevicePipelineRobustnessPropertiesEXT=^PVkPhysicalDevicePipelineRobustnessPropertiesEXT;
     PVkPhysicalDevicePipelineRobustnessPropertiesEXT=^TVkPhysicalDevicePipelineRobustnessPropertiesEXT;
     TVkPhysicalDevicePipelineRobustnessPropertiesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT
       pNext:PVkVoid;
       defaultRobustnessStorageBuffers:TVkPipelineRobustnessBufferBehaviorEXT;
       defaultRobustnessUniformBuffers:TVkPipelineRobustnessBufferBehaviorEXT;
       defaultRobustnessVertexInputs:TVkPipelineRobustnessBufferBehaviorEXT;
       defaultRobustnessImages:TVkPipelineRobustnessImageBehaviorEXT;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDefaultRobustnessStorageBuffers:TVkPipelineRobustnessBufferBehaviorEXT;
                          const aDefaultRobustnessUniformBuffers:TVkPipelineRobustnessBufferBehaviorEXT;
                          const aDefaultRobustnessVertexInputs:TVkPipelineRobustnessBufferBehaviorEXT;
                          const aDefaultRobustnessImages:TVkPipelineRobustnessImageBehaviorEXT);
{$endif}
     end;

     PPVkImageViewSampleWeightCreateInfoQCOM=^PVkImageViewSampleWeightCreateInfoQCOM;
     PVkImageViewSampleWeightCreateInfoQCOM=^TVkImageViewSampleWeightCreateInfoQCOM;
     TVkImageViewSampleWeightCreateInfoQCOM=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM
       pNext:PVkVoid;
       filterCenter:TVkOffset2D;
       filterSize:TVkExtent2D;
       numPhases:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFilterCenter:TVkOffset2D;
                          const aFilterSize:TVkExtent2D;
                          const aNumPhases:TVkUInt32);
{$endif}
     end;

     PPVkPhysicalDeviceImageProcessingFeaturesQCOM=^PVkPhysicalDeviceImageProcessingFeaturesQCOM;
     PVkPhysicalDeviceImageProcessingFeaturesQCOM=^TVkPhysicalDeviceImageProcessingFeaturesQCOM;
     TVkPhysicalDeviceImageProcessingFeaturesQCOM=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM
       pNext:PVkVoid;
       textureSampleWeighted:TVkBool32;
       textureBoxFilter:TVkBool32;
       textureBlockMatch:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aTextureSampleWeighted:TVkBool32;
                          const aTextureBoxFilter:TVkBool32;
                          const aTextureBlockMatch:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceImageProcessingPropertiesQCOM=^PVkPhysicalDeviceImageProcessingPropertiesQCOM;
     PVkPhysicalDeviceImageProcessingPropertiesQCOM=^TVkPhysicalDeviceImageProcessingPropertiesQCOM;
     TVkPhysicalDeviceImageProcessingPropertiesQCOM=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM
       pNext:PVkVoid;
       maxWeightFilterPhases:TVkUInt32;
       maxWeightFilterDimension:TVkExtent2D;
       maxBlockMatchRegion:TVkExtent2D;
       maxBoxFilterBlockSize:TVkExtent2D;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMaxWeightFilterPhases:TVkUInt32;
                          const aMaxWeightFilterDimension:TVkExtent2D;
                          const aMaxBlockMatchRegion:TVkExtent2D;
                          const aMaxBoxFilterBlockSize:TVkExtent2D);
{$endif}
     end;

     PPVkPhysicalDeviceTilePropertiesFeaturesQCOM=^PVkPhysicalDeviceTilePropertiesFeaturesQCOM;
     PVkPhysicalDeviceTilePropertiesFeaturesQCOM=^TVkPhysicalDeviceTilePropertiesFeaturesQCOM;
     TVkPhysicalDeviceTilePropertiesFeaturesQCOM=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM
       pNext:PVkVoid;
       tileProperties:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aTileProperties:TVkBool32);
{$endif}
     end;

     PPVkTilePropertiesQCOM=^PVkTilePropertiesQCOM;
     PVkTilePropertiesQCOM=^TVkTilePropertiesQCOM;
     TVkTilePropertiesQCOM=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_TILE_PROPERTIES_QCOM
       pNext:PVkVoid;
       tileSize:TVkExtent3D;
       apronSize:TVkExtent2D;
       origin:TVkOffset2D;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aTileSize:TVkExtent3D;
                          const aApronSize:TVkExtent2D;
                          const aOrigin:TVkOffset2D);
{$endif}
     end;

     PPVkPhysicalDeviceAmigoProfilingFeaturesSEC=^PVkPhysicalDeviceAmigoProfilingFeaturesSEC;
     PVkPhysicalDeviceAmigoProfilingFeaturesSEC=^TVkPhysicalDeviceAmigoProfilingFeaturesSEC;
     TVkPhysicalDeviceAmigoProfilingFeaturesSEC=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC
       pNext:PVkVoid;
       amigoProfiling:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aAmigoProfiling:TVkBool32);
{$endif}
     end;

     PPVkAmigoProfilingSubmitInfoSEC=^PVkAmigoProfilingSubmitInfoSEC;
     PVkAmigoProfilingSubmitInfoSEC=^TVkAmigoProfilingSubmitInfoSEC;
     TVkAmigoProfilingSubmitInfoSEC=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_AMIGO_PROFILING_SUBMIT_INFO_SEC
       pNext:PVkVoid;
       firstDrawTimestamp:TVkUInt64;
       swapBufferTimestamp:TVkUInt64;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFirstDrawTimestamp:TVkUInt64;
                          const aSwapBufferTimestamp:TVkUInt64);
{$endif}
     end;

     PPVkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT=^PVkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT;
     PVkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT=^TVkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT;
     TVkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT
       pNext:PVkVoid;
       attachmentFeedbackLoopLayout:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aAttachmentFeedbackLoopLayout:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceDepthClampZeroOneFeaturesEXT=^PVkPhysicalDeviceDepthClampZeroOneFeaturesEXT;
     PVkPhysicalDeviceDepthClampZeroOneFeaturesEXT=^TVkPhysicalDeviceDepthClampZeroOneFeaturesEXT;
     TVkPhysicalDeviceDepthClampZeroOneFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT
       pNext:PVkVoid;
       depthClampZeroOne:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDepthClampZeroOne:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceAddressBindingReportFeaturesEXT=^PVkPhysicalDeviceAddressBindingReportFeaturesEXT;
     PVkPhysicalDeviceAddressBindingReportFeaturesEXT=^TVkPhysicalDeviceAddressBindingReportFeaturesEXT;
     TVkPhysicalDeviceAddressBindingReportFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT
       pNext:PVkVoid;
       reportAddressBinding:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aReportAddressBinding:TVkBool32);
{$endif}
     end;

     PPVkDeviceAddressBindingCallbackDataEXT=^PVkDeviceAddressBindingCallbackDataEXT;
     PVkDeviceAddressBindingCallbackDataEXT=^TVkDeviceAddressBindingCallbackDataEXT;
     TVkDeviceAddressBindingCallbackDataEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DEVICE_ADDRESS_BINDING_CALLBACK_DATA_EXT
       pNext:PVkVoid;
       flags:TVkDeviceAddressBindingFlagsEXT;
       baseAddress:TVkDeviceAddress;
       size:TVkDeviceSize;
       bindingType:TVkDeviceAddressBindingTypeEXT;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkDeviceAddressBindingFlagsEXT;
                          const aBaseAddress:TVkDeviceAddress;
                          const aSize:TVkDeviceSize;
                          const aBindingType:TVkDeviceAddressBindingTypeEXT);
{$endif}
     end;

     PPVkPhysicalDeviceOpticalFlowFeaturesNV=^PVkPhysicalDeviceOpticalFlowFeaturesNV;
     PVkPhysicalDeviceOpticalFlowFeaturesNV=^TVkPhysicalDeviceOpticalFlowFeaturesNV;
     TVkPhysicalDeviceOpticalFlowFeaturesNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV
       pNext:PVkVoid;
       opticalFlow:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aOpticalFlow:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceOpticalFlowPropertiesNV=^PVkPhysicalDeviceOpticalFlowPropertiesNV;
     PVkPhysicalDeviceOpticalFlowPropertiesNV=^TVkPhysicalDeviceOpticalFlowPropertiesNV;
     TVkPhysicalDeviceOpticalFlowPropertiesNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_PROPERTIES_NV
       pNext:PVkVoid;
       supportedOutputGridSizes:TVkOpticalFlowGridSizeFlagsNV;
       supportedHintGridSizes:TVkOpticalFlowGridSizeFlagsNV;
       hintSupported:TVkBool32;
       costSupported:TVkBool32;
       bidirectionalFlowSupported:TVkBool32;
       globalFlowSupported:TVkBool32;
       minWidth:TVkUInt32;
       minHeight:TVkUInt32;
       maxWidth:TVkUInt32;
       maxHeight:TVkUInt32;
       maxNumRegionsOfInterest:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSupportedOutputGridSizes:TVkOpticalFlowGridSizeFlagsNV;
                          const aSupportedHintGridSizes:TVkOpticalFlowGridSizeFlagsNV;
                          const aHintSupported:TVkBool32;
                          const aCostSupported:TVkBool32;
                          const aBidirectionalFlowSupported:TVkBool32;
                          const aGlobalFlowSupported:TVkBool32;
                          const aMinWidth:TVkUInt32;
                          const aMinHeight:TVkUInt32;
                          const aMaxWidth:TVkUInt32;
                          const aMaxHeight:TVkUInt32;
                          const aMaxNumRegionsOfInterest:TVkUInt32);
{$endif}
     end;

     PPVkOpticalFlowImageFormatInfoNV=^PVkOpticalFlowImageFormatInfoNV;
     PVkOpticalFlowImageFormatInfoNV=^TVkOpticalFlowImageFormatInfoNV;
     TVkOpticalFlowImageFormatInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_INFO_NV
       pNext:PVkVoid;
       usage:TVkOpticalFlowUsageFlagsNV;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aUsage:TVkOpticalFlowUsageFlagsNV);
{$endif}
     end;

     PPVkOpticalFlowImageFormatPropertiesNV=^PVkOpticalFlowImageFormatPropertiesNV;
     PVkOpticalFlowImageFormatPropertiesNV=^TVkOpticalFlowImageFormatPropertiesNV;
     TVkOpticalFlowImageFormatPropertiesNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_NV
       pNext:PVkVoid;
       format:TVkFormat;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFormat:TVkFormat);
{$endif}
     end;

     PPVkOpticalFlowSessionCreateInfoNV=^PVkOpticalFlowSessionCreateInfoNV;
     PVkOpticalFlowSessionCreateInfoNV=^TVkOpticalFlowSessionCreateInfoNV;
     TVkOpticalFlowSessionCreateInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_INFO_NV
       pNext:PVkVoid;
       width:TVkUInt32;
       height:TVkUInt32;
       imageFormat:TVkFormat;
       flowVectorFormat:TVkFormat;
       costFormat:TVkFormat;
       outputGridSize:TVkOpticalFlowGridSizeFlagsNV;
       hintGridSize:TVkOpticalFlowGridSizeFlagsNV;
       performanceLevel:TVkOpticalFlowPerformanceLevelNV;
       flags:TVkOpticalFlowSessionCreateFlagsNV;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aWidth:TVkUInt32;
                          const aHeight:TVkUInt32;
                          const aImageFormat:TVkFormat;
                          const aFlowVectorFormat:TVkFormat;
                          const aCostFormat:TVkFormat;
                          const aOutputGridSize:TVkOpticalFlowGridSizeFlagsNV;
                          const aHintGridSize:TVkOpticalFlowGridSizeFlagsNV;
                          const aPerformanceLevel:TVkOpticalFlowPerformanceLevelNV;
                          const aFlags:TVkOpticalFlowSessionCreateFlagsNV);
{$endif}
     end;

     PPVkOpticalFlowSessionCreatePrivateDataInfoNV=^PVkOpticalFlowSessionCreatePrivateDataInfoNV;
     PVkOpticalFlowSessionCreatePrivateDataInfoNV=^TVkOpticalFlowSessionCreatePrivateDataInfoNV;
     TVkOpticalFlowSessionCreatePrivateDataInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV
       pNext:PVkVoid;
       id:TVkUInt32;
       size:TVkUInt32;
       pPrivateData:PVkVoid;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aId:TVkUInt32;
                          const aSize:TVkUInt32;
                          const aPPrivateData:PVkVoid);
{$endif}
     end;

     PPVkOpticalFlowExecuteInfoNV=^PVkOpticalFlowExecuteInfoNV;
     PVkOpticalFlowExecuteInfoNV=^TVkOpticalFlowExecuteInfoNV;
     TVkOpticalFlowExecuteInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_OPTICAL_FLOW_EXECUTE_INFO_NV
       pNext:PVkVoid;
       flags:TVkOpticalFlowExecuteFlagsNV;
       regionCount:TVkUInt32;
       pRegions:PVkRect2D;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkOpticalFlowExecuteFlagsNV;
                          const aRegionCount:TVkUInt32;
                          const aPRegions:PVkRect2D);
{$endif}
     end;

     PPVkPhysicalDeviceFaultFeaturesEXT=^PVkPhysicalDeviceFaultFeaturesEXT;
     PVkPhysicalDeviceFaultFeaturesEXT=^TVkPhysicalDeviceFaultFeaturesEXT;
     TVkPhysicalDeviceFaultFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_EXT
       pNext:PVkVoid;
       deviceFault:TVkBool32;
       deviceFaultVendorBinary:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDeviceFault:TVkBool32;
                          const aDeviceFaultVendorBinary:TVkBool32);
{$endif}
     end;

     PPVkDeviceFaultAddressInfoEXT=^PVkDeviceFaultAddressInfoEXT;
     PVkDeviceFaultAddressInfoEXT=^TVkDeviceFaultAddressInfoEXT;
     TVkDeviceFaultAddressInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       addressType:TVkDeviceFaultAddressTypeEXT;
       reportedAddress:TVkDeviceAddress;
       addressPrecision:TVkDeviceSize;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aAddressType:TVkDeviceFaultAddressTypeEXT;
                          const aReportedAddress:TVkDeviceAddress;
                          const aAddressPrecision:TVkDeviceSize);
{$endif}
     end;

     PPVkDeviceFaultVendorInfoEXT=^PVkDeviceFaultVendorInfoEXT;
     PVkDeviceFaultVendorInfoEXT=^TVkDeviceFaultVendorInfoEXT;
     TVkDeviceFaultVendorInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       description:array[0..VK_MAX_DESCRIPTION_SIZE-1] of TVkChar;
       vendorFaultCode:TVkUInt64;
       vendorFaultData:TVkUInt64;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDescription:TVkCharString;
                          const aVendorFaultCode:TVkUInt64;
                          const aVendorFaultData:TVkUInt64);
{$endif}
     end;

     PPVkDeviceFaultCountsEXT=^PVkDeviceFaultCountsEXT;
     PVkDeviceFaultCountsEXT=^TVkDeviceFaultCountsEXT;
     TVkDeviceFaultCountsEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DEVICE_FAULT_COUNTS_EXT
       pNext:PVkVoid;
       addressInfoCount:TVkUInt32;
       vendorInfoCount:TVkUInt32;
       vendorBinarySize:TVkDeviceSize;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aAddressInfoCount:TVkUInt32;
                          const aVendorInfoCount:TVkUInt32;
                          const aVendorBinarySize:TVkDeviceSize);
{$endif}
     end;

     PPVkDeviceFaultInfoEXT=^PVkDeviceFaultInfoEXT;
     PVkDeviceFaultInfoEXT=^TVkDeviceFaultInfoEXT;
     TVkDeviceFaultInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DEVICE_FAULT_INFO_EXT
       pNext:PVkVoid;
       description:array[0..VK_MAX_DESCRIPTION_SIZE-1] of TVkChar;
       pAddressInfos:PVkDeviceFaultAddressInfoEXT;
       pVendorInfos:PVkDeviceFaultVendorInfoEXT;
       pVendorBinaryData:PVkVoid;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDescription:TVkCharString;
                          const aPAddressInfos:PVkDeviceFaultAddressInfoEXT;
                          const aPVendorInfos:PVkDeviceFaultVendorInfoEXT;
                          const aPVendorBinaryData:PVkVoid);
{$endif}
     end;

     PPVkDeviceFaultVendorBinaryHeaderVersionOneEXT=^PVkDeviceFaultVendorBinaryHeaderVersionOneEXT;
     PVkDeviceFaultVendorBinaryHeaderVersionOneEXT=^TVkDeviceFaultVendorBinaryHeaderVersionOneEXT;
     TVkDeviceFaultVendorBinaryHeaderVersionOneEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       headerSize:TVkUInt32;
       headerVersion:TVkDeviceFaultVendorBinaryHeaderVersionEXT;
       vendorID:TVkUInt32;
       deviceID:TVkUInt32;
       driverVersion:TVkUInt32;
       pipelineCacheUUID:array[0..VK_UUID_SIZE-1] of TVkUInt8;
       applicationNameOffset:TVkUInt32;
       applicationVersion:TVkUInt32;
       engineNameOffset:TVkUInt32;
       engineVersion:TVkUInt32;
       apiVersion:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aHeaderSize:TVkUInt32;
                          const aHeaderVersion:TVkDeviceFaultVendorBinaryHeaderVersionEXT;
                          const aVendorID:TVkUInt32;
                          const aDeviceID:TVkUInt32;
                          const aDriverVersion:TVkUInt32;
                          const aPipelineCacheUUID:array of TVkUInt8;
                          const aApplicationNameOffset:TVkUInt32;
                          const aApplicationVersion:TVkUInt32;
                          const aEngineNameOffset:TVkUInt32;
                          const aEngineVersion:TVkUInt32;
                          const aApiVersion:TVkUInt32);
{$endif}
     end;

     PPVkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT=^PVkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT;
     PVkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT=^TVkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT;
     TVkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT
       pNext:PVkVoid;
       pipelineLibraryGroupHandles:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPipelineLibraryGroupHandles:TVkBool32);
{$endif}
     end;

     PPVkDepthBiasInfoEXT=^PVkDepthBiasInfoEXT;
     PVkDepthBiasInfoEXT=^TVkDepthBiasInfoEXT;
     TVkDepthBiasInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DEPTH_BIAS_INFO_EXT
       pNext:PVkVoid;
       depthBiasConstantFactor:TVkFloat;
       depthBiasClamp:TVkFloat;
       depthBiasSlopeFactor:TVkFloat;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDepthBiasConstantFactor:TVkFloat;
                          const aDepthBiasClamp:TVkFloat;
                          const aDepthBiasSlopeFactor:TVkFloat);
{$endif}
     end;

     PPVkDepthBiasRepresentationInfoEXT=^PVkDepthBiasRepresentationInfoEXT;
     PVkDepthBiasRepresentationInfoEXT=^TVkDepthBiasRepresentationInfoEXT;
     TVkDepthBiasRepresentationInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DEPTH_BIAS_REPRESENTATION_INFO_EXT
       pNext:PVkVoid;
       depthBiasRepresentation:TVkDepthBiasRepresentationEXT;
       depthBiasExact:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDepthBiasRepresentation:TVkDepthBiasRepresentationEXT;
                          const aDepthBiasExact:TVkBool32);
{$endif}
     end;

     PPVkDecompressMemoryRegionNV=^PVkDecompressMemoryRegionNV;
     PVkDecompressMemoryRegionNV=^TVkDecompressMemoryRegionNV;
     TVkDecompressMemoryRegionNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       srcAddress:TVkDeviceAddress;
       dstAddress:TVkDeviceAddress;
       compressedSize:TVkDeviceSize;
       decompressedSize:TVkDeviceSize;
       decompressionMethod:TVkMemoryDecompressionMethodFlagsNV;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSrcAddress:TVkDeviceAddress;
                          const aDstAddress:TVkDeviceAddress;
                          const aCompressedSize:TVkDeviceSize;
                          const aDecompressedSize:TVkDeviceSize;
                          const aDecompressionMethod:TVkMemoryDecompressionMethodFlagsNV);
{$endif}
     end;

     PPVkPhysicalDeviceShaderCoreBuiltinsPropertiesARM=^PVkPhysicalDeviceShaderCoreBuiltinsPropertiesARM;
     PVkPhysicalDeviceShaderCoreBuiltinsPropertiesARM=^TVkPhysicalDeviceShaderCoreBuiltinsPropertiesARM;
     TVkPhysicalDeviceShaderCoreBuiltinsPropertiesARM=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM
       pNext:PVkVoid;
       shaderCoreMask:TVkUInt64;
       shaderCoreCount:TVkUInt32;
       shaderWarpsPerCore:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aShaderCoreMask:TVkUInt64;
                          const aShaderCoreCount:TVkUInt32;
                          const aShaderWarpsPerCore:TVkUInt32);
{$endif}
     end;

     PPVkPhysicalDeviceShaderCoreBuiltinsFeaturesARM=^PVkPhysicalDeviceShaderCoreBuiltinsFeaturesARM;
     PVkPhysicalDeviceShaderCoreBuiltinsFeaturesARM=^TVkPhysicalDeviceShaderCoreBuiltinsFeaturesARM;
     TVkPhysicalDeviceShaderCoreBuiltinsFeaturesARM=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM
       pNext:PVkVoid;
       shaderCoreBuiltins:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aShaderCoreBuiltins:TVkBool32);
{$endif}
     end;

     PPVkFrameBoundaryEXT=^PVkFrameBoundaryEXT;
     PVkFrameBoundaryEXT=^TVkFrameBoundaryEXT;
     TVkFrameBoundaryEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_FRAME_BOUNDARY_EXT
       pNext:PVkVoid;
       flags:TVkFrameBoundaryFlagsEXT;
       frameID:TVkUInt64;
       imageCount:TVkUInt32;
       pImages:PVkImage;
       bufferCount:TVkUInt32;
       pBuffers:PVkBuffer;
       tagName:TVkUInt64;
       tagSize:TVkSize;
       pTag:PVkVoid;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkFrameBoundaryFlagsEXT;
                          const aFrameID:TVkUInt64;
                          const aImageCount:TVkUInt32;
                          const aPImages:PVkImage;
                          const aBufferCount:TVkUInt32;
                          const aPBuffers:PVkBuffer;
                          const aTagName:TVkUInt64;
                          const aTagSize:TVkSize;
                          const aPTag:PVkVoid);
{$endif}
     end;

     PPVkPhysicalDeviceFrameBoundaryFeaturesEXT=^PVkPhysicalDeviceFrameBoundaryFeaturesEXT;
     PVkPhysicalDeviceFrameBoundaryFeaturesEXT=^TVkPhysicalDeviceFrameBoundaryFeaturesEXT;
     TVkPhysicalDeviceFrameBoundaryFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT
       pNext:PVkVoid;
       frameBoundary:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFrameBoundary:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT=^PVkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT;
     PVkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT=^TVkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT;
     TVkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT
       pNext:PVkVoid;
       dynamicRenderingUnusedAttachments:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDynamicRenderingUnusedAttachments:TVkBool32);
{$endif}
     end;

     PPVkSurfacePresentModeEXT=^PVkSurfacePresentModeEXT;
     PVkSurfacePresentModeEXT=^TVkSurfacePresentModeEXT;
     TVkSurfacePresentModeEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT
       pNext:PVkVoid;
       presentMode:TVkPresentModeKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPresentMode:TVkPresentModeKHR);
{$endif}
     end;

     PPVkSurfacePresentScalingCapabilitiesEXT=^PVkSurfacePresentScalingCapabilitiesEXT;
     PVkSurfacePresentScalingCapabilitiesEXT=^TVkSurfacePresentScalingCapabilitiesEXT;
     TVkSurfacePresentScalingCapabilitiesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT
       pNext:PVkVoid;
       supportedPresentScaling:TVkPresentScalingFlagsEXT;
       supportedPresentGravityX:TVkPresentGravityFlagsEXT;
       supportedPresentGravityY:TVkPresentGravityFlagsEXT;
       minScaledImageExtent:TVkExtent2D;
       maxScaledImageExtent:TVkExtent2D;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSupportedPresentScaling:TVkPresentScalingFlagsEXT;
                          const aSupportedPresentGravityX:TVkPresentGravityFlagsEXT;
                          const aSupportedPresentGravityY:TVkPresentGravityFlagsEXT;
                          const aMinScaledImageExtent:TVkExtent2D;
                          const aMaxScaledImageExtent:TVkExtent2D);
{$endif}
     end;

     PPVkSurfacePresentModeCompatibilityEXT=^PVkSurfacePresentModeCompatibilityEXT;
     PVkSurfacePresentModeCompatibilityEXT=^TVkSurfacePresentModeCompatibilityEXT;
     TVkSurfacePresentModeCompatibilityEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT
       pNext:PVkVoid;
       presentModeCount:TVkUInt32;
       pPresentModes:PVkPresentModeKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPresentModeCount:TVkUInt32;
                          const aPPresentModes:PVkPresentModeKHR);
{$endif}
     end;

     PPVkPhysicalDeviceSwapchainMaintenance1FeaturesEXT=^PVkPhysicalDeviceSwapchainMaintenance1FeaturesEXT;
     PVkPhysicalDeviceSwapchainMaintenance1FeaturesEXT=^TVkPhysicalDeviceSwapchainMaintenance1FeaturesEXT;
     TVkPhysicalDeviceSwapchainMaintenance1FeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT
       pNext:PVkVoid;
       swapchainMaintenance1:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSwapchainMaintenance1:TVkBool32);
{$endif}
     end;

     PPVkSwapchainPresentFenceInfoEXT=^PVkSwapchainPresentFenceInfoEXT;
     PVkSwapchainPresentFenceInfoEXT=^TVkSwapchainPresentFenceInfoEXT;
     TVkSwapchainPresentFenceInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT
       pNext:PVkVoid;
       swapchainCount:TVkUInt32;
       pFences:PVkFence;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSwapchainCount:TVkUInt32;
                          const aPFences:PVkFence);
{$endif}
     end;

     PPVkSwapchainPresentModesCreateInfoEXT=^PVkSwapchainPresentModesCreateInfoEXT;
     PVkSwapchainPresentModesCreateInfoEXT=^TVkSwapchainPresentModesCreateInfoEXT;
     TVkSwapchainPresentModesCreateInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT
       pNext:PVkVoid;
       presentModeCount:TVkUInt32;
       pPresentModes:PVkPresentModeKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPresentModeCount:TVkUInt32;
                          const aPPresentModes:PVkPresentModeKHR);
{$endif}
     end;

     PPVkSwapchainPresentModeInfoEXT=^PVkSwapchainPresentModeInfoEXT;
     PVkSwapchainPresentModeInfoEXT=^TVkSwapchainPresentModeInfoEXT;
     TVkSwapchainPresentModeInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT
       pNext:PVkVoid;
       swapchainCount:TVkUInt32;
       pPresentModes:PVkPresentModeKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSwapchainCount:TVkUInt32;
                          const aPPresentModes:PVkPresentModeKHR);
{$endif}
     end;

     PPVkSwapchainPresentScalingCreateInfoEXT=^PVkSwapchainPresentScalingCreateInfoEXT;
     PVkSwapchainPresentScalingCreateInfoEXT=^TVkSwapchainPresentScalingCreateInfoEXT;
     TVkSwapchainPresentScalingCreateInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT
       pNext:PVkVoid;
       scalingBehavior:TVkPresentScalingFlagsEXT;
       presentGravityX:TVkPresentGravityFlagsEXT;
       presentGravityY:TVkPresentGravityFlagsEXT;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aScalingBehavior:TVkPresentScalingFlagsEXT;
                          const aPresentGravityX:TVkPresentGravityFlagsEXT;
                          const aPresentGravityY:TVkPresentGravityFlagsEXT);
{$endif}
     end;

     PPVkReleaseSwapchainImagesInfoEXT=^PVkReleaseSwapchainImagesInfoEXT;
     PVkReleaseSwapchainImagesInfoEXT=^TVkReleaseSwapchainImagesInfoEXT;
     TVkReleaseSwapchainImagesInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT
       pNext:PVkVoid;
       swapchain:TVkSwapchainKHR;
       imageIndexCount:TVkUInt32;
       pImageIndices:PVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSwapchain:TVkSwapchainKHR;
                          const aImageIndexCount:TVkUInt32;
                          const aPImageIndices:PVkUInt32);
{$endif}
     end;

     PPVkPhysicalDeviceDepthBiasControlFeaturesEXT=^PVkPhysicalDeviceDepthBiasControlFeaturesEXT;
     PVkPhysicalDeviceDepthBiasControlFeaturesEXT=^TVkPhysicalDeviceDepthBiasControlFeaturesEXT;
     TVkPhysicalDeviceDepthBiasControlFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_FEATURES_EXT
       pNext:PVkVoid;
       depthBiasControl:TVkBool32;
       leastRepresentableValueForceUnormRepresentation:TVkBool32;
       floatRepresentation:TVkBool32;
       depthBiasExact:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDepthBiasControl:TVkBool32;
                          const aLeastRepresentableValueForceUnormRepresentation:TVkBool32;
                          const aFloatRepresentation:TVkBool32;
                          const aDepthBiasExact:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceRayTracingInvocationReorderFeaturesNV=^PVkPhysicalDeviceRayTracingInvocationReorderFeaturesNV;
     PVkPhysicalDeviceRayTracingInvocationReorderFeaturesNV=^TVkPhysicalDeviceRayTracingInvocationReorderFeaturesNV;
     TVkPhysicalDeviceRayTracingInvocationReorderFeaturesNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV
       pNext:PVkVoid;
       rayTracingInvocationReorder:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aRayTracingInvocationReorder:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceRayTracingInvocationReorderPropertiesNV=^PVkPhysicalDeviceRayTracingInvocationReorderPropertiesNV;
     PVkPhysicalDeviceRayTracingInvocationReorderPropertiesNV=^TVkPhysicalDeviceRayTracingInvocationReorderPropertiesNV;
     TVkPhysicalDeviceRayTracingInvocationReorderPropertiesNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV
       pNext:PVkVoid;
       rayTracingInvocationReorderReorderingHint:TVkRayTracingInvocationReorderModeNV;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aRayTracingInvocationReorderReorderingHint:TVkRayTracingInvocationReorderModeNV);
{$endif}
     end;

     PPVkDirectDriverLoadingInfoLUNARG=^PVkDirectDriverLoadingInfoLUNARG;
     PVkDirectDriverLoadingInfoLUNARG=^TVkDirectDriverLoadingInfoLUNARG;
     TVkDirectDriverLoadingInfoLUNARG=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_INFO_LUNARG
       pNext:PVkVoid;
       flags:TVkDirectDriverLoadingFlagsLUNARG;
       pfnGetInstanceProcAddr:TPFN_vkGetInstanceProcAddrLUNARG;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkDirectDriverLoadingFlagsLUNARG;
                          const aPfnGetInstanceProcAddr:TPFN_vkGetInstanceProcAddrLUNARG);
{$endif}
     end;

     PPVkDirectDriverLoadingListLUNARG=^PVkDirectDriverLoadingListLUNARG;
     PVkDirectDriverLoadingListLUNARG=^TVkDirectDriverLoadingListLUNARG;
     TVkDirectDriverLoadingListLUNARG=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_LIST_LUNARG
       pNext:PVkVoid;
       mode:TVkDirectDriverLoadingModeLUNARG;
       driverCount:TVkUInt32;
       pDrivers:PVkDirectDriverLoadingInfoLUNARG;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMode:TVkDirectDriverLoadingModeLUNARG;
                          const aDriverCount:TVkUInt32;
                          const aPDrivers:PVkDirectDriverLoadingInfoLUNARG);
{$endif}
     end;

     PPVkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM=^PVkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM;
     PVkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM=^TVkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM;
     TVkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM
       pNext:PVkVoid;
       multiviewPerViewViewports:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMultiviewPerViewViewports:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceRayTracingPositionFetchFeaturesKHR=^PVkPhysicalDeviceRayTracingPositionFetchFeaturesKHR;
     PVkPhysicalDeviceRayTracingPositionFetchFeaturesKHR=^TVkPhysicalDeviceRayTracingPositionFetchFeaturesKHR;
     TVkPhysicalDeviceRayTracingPositionFetchFeaturesKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR
       pNext:PVkVoid;
       rayTracingPositionFetch:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aRayTracingPositionFetch:TVkBool32);
{$endif}
     end;

     PPVkDeviceImageSubresourceInfoKHR=^PVkDeviceImageSubresourceInfoKHR;
     PVkDeviceImageSubresourceInfoKHR=^TVkDeviceImageSubresourceInfoKHR;
     TVkDeviceImageSubresourceInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO_KHR
       pNext:PVkVoid;
       pCreateInfo:PVkImageCreateInfo;
       pSubresource:PVkImageSubresource2KHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPCreateInfo:PVkImageCreateInfo;
                          const aPSubresource:PVkImageSubresource2KHR);
{$endif}
     end;

     PPVkPhysicalDeviceShaderCorePropertiesARM=^PVkPhysicalDeviceShaderCorePropertiesARM;
     PVkPhysicalDeviceShaderCorePropertiesARM=^TVkPhysicalDeviceShaderCorePropertiesARM;
     TVkPhysicalDeviceShaderCorePropertiesARM=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM
       pNext:PVkVoid;
       pixelRate:TVkUInt32;
       texelRate:TVkUInt32;
       fmaRate:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPixelRate:TVkUInt32;
                          const aTexelRate:TVkUInt32;
                          const aFmaRate:TVkUInt32);
{$endif}
     end;

     PPVkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM=^PVkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM;
     PVkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM=^TVkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM;
     TVkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM
       pNext:PVkVoid;
       multiviewPerViewRenderAreas:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMultiviewPerViewRenderAreas:TVkBool32);
{$endif}
     end;

     PPVkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM=^PVkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM;
     PVkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM=^TVkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM;
     TVkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM
       pNext:PVkVoid;
       perViewRenderAreaCount:TVkUInt32;
       pPerViewRenderAreas:PVkRect2D;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPerViewRenderAreaCount:TVkUInt32;
                          const aPPerViewRenderAreas:PVkRect2D);
{$endif}
     end;

     PPVkQueryLowLatencySupportNV=^PVkQueryLowLatencySupportNV;
     PVkQueryLowLatencySupportNV=^TVkQueryLowLatencySupportNV;
     TVkQueryLowLatencySupportNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_QUERY_LOW_LATENCY_SUPPORT_NV
       pNext:PVkVoid;
       pQueriedLowLatencyData:PVkVoid;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPQueriedLowLatencyData:PVkVoid);
{$endif}
     end;

     PPVkMemoryMapInfoKHR=^PVkMemoryMapInfoKHR;
     PVkMemoryMapInfoKHR=^TVkMemoryMapInfoKHR;
     TVkMemoryMapInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_MEMORY_MAP_INFO_KHR
       pNext:PVkVoid;
       flags:TVkMemoryMapFlags;
       memory:TVkDeviceMemory;
       offset:TVkDeviceSize;
       size:TVkDeviceSize;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkMemoryMapFlags;
                          const aMemory:TVkDeviceMemory;
                          const aOffset:TVkDeviceSize;
                          const aSize:TVkDeviceSize);
{$endif}
     end;

     PPVkMemoryUnmapInfoKHR=^PVkMemoryUnmapInfoKHR;
     PVkMemoryUnmapInfoKHR=^TVkMemoryUnmapInfoKHR;
     TVkMemoryUnmapInfoKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO_KHR
       pNext:PVkVoid;
       flags:TVkMemoryUnmapFlagsKHR;
       memory:TVkDeviceMemory;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkMemoryUnmapFlagsKHR;
                          const aMemory:TVkDeviceMemory);
{$endif}
     end;

     PPVkPhysicalDeviceShaderObjectFeaturesEXT=^PVkPhysicalDeviceShaderObjectFeaturesEXT;
     PVkPhysicalDeviceShaderObjectFeaturesEXT=^TVkPhysicalDeviceShaderObjectFeaturesEXT;
     TVkPhysicalDeviceShaderObjectFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT
       pNext:PVkVoid;
       shaderObject:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aShaderObject:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceShaderObjectPropertiesEXT=^PVkPhysicalDeviceShaderObjectPropertiesEXT;
     PVkPhysicalDeviceShaderObjectPropertiesEXT=^TVkPhysicalDeviceShaderObjectPropertiesEXT;
     TVkPhysicalDeviceShaderObjectPropertiesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT
       pNext:PVkVoid;
       shaderBinaryUUID:array[0..VK_UUID_SIZE-1] of TVkUInt8;
       shaderBinaryVersion:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aShaderBinaryUUID:array of TVkUInt8;
                          const aShaderBinaryVersion:TVkUInt32);
{$endif}
     end;

     PPVkShaderCreateInfoEXT=^PVkShaderCreateInfoEXT;
     PVkShaderCreateInfoEXT=^TVkShaderCreateInfoEXT;
     TVkShaderCreateInfoEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT
       pNext:PVkVoid;
       flags:TVkShaderCreateFlagsEXT;
       stage:TVkShaderStageFlagBits;
       nextStage:TVkShaderStageFlags;
       codeType:TVkShaderCodeTypeEXT;
       codeSize:TVkSize;
       pCode:PVkVoid;
       pName:PVkChar;
       setLayoutCount:TVkUInt32;
       pSetLayouts:PVkDescriptorSetLayout;
       pushConstantRangeCount:TVkUInt32;
       pPushConstantRanges:PVkPushConstantRange;
       pSpecializationInfo:PVkSpecializationInfo;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkShaderCreateFlagsEXT;
                          const aStage:TVkShaderStageFlagBits;
                          const aNextStage:TVkShaderStageFlags;
                          const aCodeType:TVkShaderCodeTypeEXT;
                          const aCodeSize:TVkSize;
                          const aPCode:PVkVoid;
                          const aPName:PVkChar;
                          const aSetLayoutCount:TVkUInt32;
                          const aPSetLayouts:PVkDescriptorSetLayout;
                          const aPushConstantRangeCount:TVkUInt32;
                          const aPPushConstantRanges:PVkPushConstantRange;
                          const aPSpecializationInfo:PVkSpecializationInfo);
{$endif}
     end;

     PPVkPhysicalDeviceShaderTileImageFeaturesEXT=^PVkPhysicalDeviceShaderTileImageFeaturesEXT;
     PVkPhysicalDeviceShaderTileImageFeaturesEXT=^TVkPhysicalDeviceShaderTileImageFeaturesEXT;
     TVkPhysicalDeviceShaderTileImageFeaturesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT
       pNext:PVkVoid;
       shaderTileImageColorReadAccess:TVkBool32;
       shaderTileImageDepthReadAccess:TVkBool32;
       shaderTileImageStencilReadAccess:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aShaderTileImageColorReadAccess:TVkBool32;
                          const aShaderTileImageDepthReadAccess:TVkBool32;
                          const aShaderTileImageStencilReadAccess:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceShaderTileImagePropertiesEXT=^PVkPhysicalDeviceShaderTileImagePropertiesEXT;
     PVkPhysicalDeviceShaderTileImagePropertiesEXT=^TVkPhysicalDeviceShaderTileImagePropertiesEXT;
     TVkPhysicalDeviceShaderTileImagePropertiesEXT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT
       pNext:PVkVoid;
       shaderTileImageCoherentReadAccelerated:TVkBool32;
       shaderTileImageReadSampleFromPixelRateInvocation:TVkBool32;
       shaderTileImageReadFromHelperInvocation:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aShaderTileImageCoherentReadAccelerated:TVkBool32;
                          const aShaderTileImageReadSampleFromPixelRateInvocation:TVkBool32;
                          const aShaderTileImageReadFromHelperInvocation:TVkBool32);
{$endif}
     end;

{$ifdef QNX}
     PPVkImportScreenBufferInfoQNX=^PVkImportScreenBufferInfoQNX;
     PVkImportScreenBufferInfoQNX=^TVkImportScreenBufferInfoQNX;
     TVkImportScreenBufferInfoQNX=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_IMPORT_SCREEN_BUFFER_INFO_QNX
       pNext:PVkVoid;
       buffer:P_screen_buffer;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aBuffer:P_screen_buffer);
{$endif}
     end;
{$endif}

{$ifdef QNX}
     PPVkScreenBufferPropertiesQNX=^PVkScreenBufferPropertiesQNX;
     PVkScreenBufferPropertiesQNX=^TVkScreenBufferPropertiesQNX;
     TVkScreenBufferPropertiesQNX=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SCREEN_BUFFER_PROPERTIES_QNX
       pNext:PVkVoid;
       allocationSize:TVkDeviceSize;
       memoryTypeBits:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aAllocationSize:TVkDeviceSize;
                          const aMemoryTypeBits:TVkUInt32);
{$endif}
     end;
{$endif}

{$ifdef QNX}
     PPVkScreenBufferFormatPropertiesQNX=^PVkScreenBufferFormatPropertiesQNX;
     PVkScreenBufferFormatPropertiesQNX=^TVkScreenBufferFormatPropertiesQNX;
     TVkScreenBufferFormatPropertiesQNX=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SCREEN_BUFFER_FORMAT_PROPERTIES_QNX
       pNext:PVkVoid;
       format:TVkFormat;
       externalFormat:TVkUInt64;
       screenUsage:TVkUInt64;
       formatFeatures:TVkFormatFeatureFlags;
       samplerYcbcrConversionComponents:TVkComponentMapping;
       suggestedYcbcrModel:TVkSamplerYcbcrModelConversion;
       suggestedYcbcrRange:TVkSamplerYcbcrRange;
       suggestedXChromaOffset:TVkChromaLocation;
       suggestedYChromaOffset:TVkChromaLocation;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFormat:TVkFormat;
                          const aExternalFormat:TVkUInt64;
                          const aScreenUsage:TVkUInt64;
                          const aFormatFeatures:TVkFormatFeatureFlags;
                          const aSamplerYcbcrConversionComponents:TVkComponentMapping;
                          const aSuggestedYcbcrModel:TVkSamplerYcbcrModelConversion;
                          const aSuggestedYcbcrRange:TVkSamplerYcbcrRange;
                          const aSuggestedXChromaOffset:TVkChromaLocation;
                          const aSuggestedYChromaOffset:TVkChromaLocation);
{$endif}
     end;
{$endif}

{$ifdef QNX}
     PPVkExternalFormatQNX=^PVkExternalFormatQNX;
     PVkExternalFormatQNX=^TVkExternalFormatQNX;
     TVkExternalFormatQNX=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_QNX
       pNext:PVkVoid;
       externalFormat:TVkUInt64;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aExternalFormat:TVkUInt64);
{$endif}
     end;
{$endif}

{$ifdef QNX}
     PPVkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX=^PVkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX;
     PVkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX=^TVkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX;
     TVkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX
       pNext:PVkVoid;
       screenBufferImport:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aScreenBufferImport:TVkBool32);
{$endif}
     end;
{$endif}

     PPVkPhysicalDeviceCooperativeMatrixFeaturesKHR=^PVkPhysicalDeviceCooperativeMatrixFeaturesKHR;
     PVkPhysicalDeviceCooperativeMatrixFeaturesKHR=^TVkPhysicalDeviceCooperativeMatrixFeaturesKHR;
     TVkPhysicalDeviceCooperativeMatrixFeaturesKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR
       pNext:PVkVoid;
       cooperativeMatrix:TVkBool32;
       cooperativeMatrixRobustBufferAccess:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aCooperativeMatrix:TVkBool32;
                          const aCooperativeMatrixRobustBufferAccess:TVkBool32);
{$endif}
     end;

     PPVkCooperativeMatrixPropertiesKHR=^PVkCooperativeMatrixPropertiesKHR;
     PVkCooperativeMatrixPropertiesKHR=^TVkCooperativeMatrixPropertiesKHR;
     TVkCooperativeMatrixPropertiesKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_KHR
       pNext:PVkVoid;
       MSize:TVkUInt32;
       NSize:TVkUInt32;
       KSize:TVkUInt32;
       AType:TVkComponentTypeKHR;
       BType:TVkComponentTypeKHR;
       CType:TVkComponentTypeKHR;
       ResultType:TVkComponentTypeKHR;
       saturatingAccumulation:TVkBool32;
       scope:TVkScopeKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMSize:TVkUInt32;
                          const aNSize:TVkUInt32;
                          const aKSize:TVkUInt32;
                          const aAType:TVkComponentTypeKHR;
                          const aBType:TVkComponentTypeKHR;
                          const aCType:TVkComponentTypeKHR;
                          const aResultType:TVkComponentTypeKHR;
                          const aSaturatingAccumulation:TVkBool32;
                          const aScope:TVkScopeKHR);
{$endif}
     end;

     PPVkPhysicalDeviceCooperativeMatrixPropertiesKHR=^PVkPhysicalDeviceCooperativeMatrixPropertiesKHR;
     PVkPhysicalDeviceCooperativeMatrixPropertiesKHR=^TVkPhysicalDeviceCooperativeMatrixPropertiesKHR;
     TVkPhysicalDeviceCooperativeMatrixPropertiesKHR=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR
       pNext:PVkVoid;
       cooperativeMatrixSupportedStages:TVkShaderStageFlags;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aCooperativeMatrixSupportedStages:TVkShaderStageFlags);
{$endif}
     end;

     PPVkPhysicalDeviceShaderEnqueuePropertiesAMDX=^PVkPhysicalDeviceShaderEnqueuePropertiesAMDX;
     PVkPhysicalDeviceShaderEnqueuePropertiesAMDX=^TVkPhysicalDeviceShaderEnqueuePropertiesAMDX;
     TVkPhysicalDeviceShaderEnqueuePropertiesAMDX=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_PROPERTIES_AMDX
       pNext:PVkVoid;
       maxExecutionGraphDepth:TVkUInt32;
       maxExecutionGraphShaderOutputNodes:TVkUInt32;
       maxExecutionGraphShaderPayloadSize:TVkUInt32;
       maxExecutionGraphShaderPayloadCount:TVkUInt32;
       executionGraphDispatchAddressAlignment:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMaxExecutionGraphDepth:TVkUInt32;
                          const aMaxExecutionGraphShaderOutputNodes:TVkUInt32;
                          const aMaxExecutionGraphShaderPayloadSize:TVkUInt32;
                          const aMaxExecutionGraphShaderPayloadCount:TVkUInt32;
                          const aExecutionGraphDispatchAddressAlignment:TVkUInt32);
{$endif}
     end;

     PPVkPhysicalDeviceShaderEnqueueFeaturesAMDX=^PVkPhysicalDeviceShaderEnqueueFeaturesAMDX;
     PVkPhysicalDeviceShaderEnqueueFeaturesAMDX=^TVkPhysicalDeviceShaderEnqueueFeaturesAMDX;
     TVkPhysicalDeviceShaderEnqueueFeaturesAMDX=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_FEATURES_AMDX
       pNext:PVkVoid;
       shaderEnqueue:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aShaderEnqueue:TVkBool32);
{$endif}
     end;

     PPVkExecutionGraphPipelineCreateInfoAMDX=^PVkExecutionGraphPipelineCreateInfoAMDX;
     PVkExecutionGraphPipelineCreateInfoAMDX=^TVkExecutionGraphPipelineCreateInfoAMDX;
     TVkExecutionGraphPipelineCreateInfoAMDX=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_CREATE_INFO_AMDX
       pNext:PVkVoid;
       flags:TVkPipelineCreateFlags;
       stageCount:TVkUInt32;
       pStages:PVkPipelineShaderStageCreateInfo;
       pLibraryInfo:PVkPipelineLibraryCreateInfoKHR;
       layout:TVkPipelineLayout;
       basePipelineHandle:TVkPipeline;
       basePipelineIndex:TVkInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aFlags:TVkPipelineCreateFlags;
                          const aStageCount:TVkUInt32;
                          const aPStages:PVkPipelineShaderStageCreateInfo;
                          const aPLibraryInfo:PVkPipelineLibraryCreateInfoKHR;
                          const aLayout:TVkPipelineLayout;
                          const aBasePipelineHandle:TVkPipeline;
                          const aBasePipelineIndex:TVkInt32);
{$endif}
     end;

     PPVkPipelineShaderStageNodeCreateInfoAMDX=^PVkPipelineShaderStageNodeCreateInfoAMDX;
     PVkPipelineShaderStageNodeCreateInfoAMDX=^TVkPipelineShaderStageNodeCreateInfoAMDX;
     TVkPipelineShaderStageNodeCreateInfoAMDX=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_NODE_CREATE_INFO_AMDX
       pNext:PVkVoid;
       pName:PVkChar;
       index:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPName:PVkChar;
                          const aIndex:TVkUInt32);
{$endif}
     end;

     PPVkExecutionGraphPipelineScratchSizeAMDX=^PVkExecutionGraphPipelineScratchSizeAMDX;
     PVkExecutionGraphPipelineScratchSizeAMDX=^TVkExecutionGraphPipelineScratchSizeAMDX;
     TVkExecutionGraphPipelineScratchSizeAMDX=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_SCRATCH_SIZE_AMDX
       pNext:PVkVoid;
       size:TVkDeviceSize;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSize:TVkDeviceSize);
{$endif}
     end;

     PPVkDispatchGraphInfoAMDX=^PVkDispatchGraphInfoAMDX;
     PVkDispatchGraphInfoAMDX=^TVkDispatchGraphInfoAMDX;
     TVkDispatchGraphInfoAMDX=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       nodeIndex:TVkUInt32;
       payloadCount:TVkUInt32;
       payloads:TVkDeviceOrHostAddressConstAMDX;
       payloadStride:TVkUInt64;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aNodeIndex:TVkUInt32;
                          const aPayloadCount:TVkUInt32;
                          const aPayloads:TVkDeviceOrHostAddressConstAMDX;
                          const aPayloadStride:TVkUInt64);
{$endif}
     end;

     PPVkDispatchGraphCountInfoAMDX=^PVkDispatchGraphCountInfoAMDX;
     PVkDispatchGraphCountInfoAMDX=^TVkDispatchGraphCountInfoAMDX;
     TVkDispatchGraphCountInfoAMDX=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       count:TVkUInt32;
       infos:TVkDeviceOrHostAddressConstAMDX;
       stride:TVkUInt64;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aCount:TVkUInt32;
                          const aInfos:TVkDeviceOrHostAddressConstAMDX;
                          const aStride:TVkUInt64);
{$endif}
     end;

     PPVkPhysicalDeviceCubicClampFeaturesQCOM=^PVkPhysicalDeviceCubicClampFeaturesQCOM;
     PVkPhysicalDeviceCubicClampFeaturesQCOM=^TVkPhysicalDeviceCubicClampFeaturesQCOM;
     TVkPhysicalDeviceCubicClampFeaturesQCOM=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM
       pNext:PVkVoid;
       cubicRangeClamp:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aCubicRangeClamp:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceYcbcrDegammaFeaturesQCOM=^PVkPhysicalDeviceYcbcrDegammaFeaturesQCOM;
     PVkPhysicalDeviceYcbcrDegammaFeaturesQCOM=^TVkPhysicalDeviceYcbcrDegammaFeaturesQCOM;
     TVkPhysicalDeviceYcbcrDegammaFeaturesQCOM=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_DEGAMMA_FEATURES_QCOM
       pNext:PVkVoid;
       ycbcrDegamma:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aYcbcrDegamma:TVkBool32);
{$endif}
     end;

     PPVkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM=^PVkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM;
     PVkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM=^TVkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM;
     TVkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_YCBCR_DEGAMMA_CREATE_INFO_QCOM
       pNext:PVkVoid;
       enableYDegamma:TVkBool32;
       enableCbCrDegamma:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aEnableYDegamma:TVkBool32;
                          const aEnableCbCrDegamma:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceCubicWeightsFeaturesQCOM=^PVkPhysicalDeviceCubicWeightsFeaturesQCOM;
     PVkPhysicalDeviceCubicWeightsFeaturesQCOM=^TVkPhysicalDeviceCubicWeightsFeaturesQCOM;
     TVkPhysicalDeviceCubicWeightsFeaturesQCOM=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_WEIGHTS_FEATURES_QCOM
       pNext:PVkVoid;
       selectableCubicWeights:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSelectableCubicWeights:TVkBool32);
{$endif}
     end;

     PPVkSamplerCubicWeightsCreateInfoQCOM=^PVkSamplerCubicWeightsCreateInfoQCOM;
     PVkSamplerCubicWeightsCreateInfoQCOM=^TVkSamplerCubicWeightsCreateInfoQCOM;
     TVkSamplerCubicWeightsCreateInfoQCOM=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SAMPLER_CUBIC_WEIGHTS_CREATE_INFO_QCOM
       pNext:PVkVoid;
       cubicWeights:TVkCubicFilterWeightsQCOM;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aCubicWeights:TVkCubicFilterWeightsQCOM);
{$endif}
     end;

     PPVkBlitImageCubicWeightsInfoQCOM=^PVkBlitImageCubicWeightsInfoQCOM;
     PVkBlitImageCubicWeightsInfoQCOM=^TVkBlitImageCubicWeightsInfoQCOM;
     TVkBlitImageCubicWeightsInfoQCOM=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_BLIT_IMAGE_CUBIC_WEIGHTS_INFO_QCOM
       pNext:PVkVoid;
       cubicWeights:TVkCubicFilterWeightsQCOM;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aCubicWeights:TVkCubicFilterWeightsQCOM);
{$endif}
     end;

     PPVkPhysicalDeviceImageProcessing2FeaturesQCOM=^PVkPhysicalDeviceImageProcessing2FeaturesQCOM;
     PVkPhysicalDeviceImageProcessing2FeaturesQCOM=^TVkPhysicalDeviceImageProcessing2FeaturesQCOM;
     TVkPhysicalDeviceImageProcessing2FeaturesQCOM=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_FEATURES_QCOM
       pNext:PVkVoid;
       textureBlockMatch2:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aTextureBlockMatch2:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceImageProcessing2PropertiesQCOM=^PVkPhysicalDeviceImageProcessing2PropertiesQCOM;
     PVkPhysicalDeviceImageProcessing2PropertiesQCOM=^TVkPhysicalDeviceImageProcessing2PropertiesQCOM;
     TVkPhysicalDeviceImageProcessing2PropertiesQCOM=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_PROPERTIES_QCOM
       pNext:PVkVoid;
       maxBlockMatchWindow:TVkExtent2D;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aMaxBlockMatchWindow:TVkExtent2D);
{$endif}
     end;

     PPVkSamplerBlockMatchWindowCreateInfoQCOM=^PVkSamplerBlockMatchWindowCreateInfoQCOM;
     PVkSamplerBlockMatchWindowCreateInfoQCOM=^TVkSamplerBlockMatchWindowCreateInfoQCOM;
     TVkSamplerBlockMatchWindowCreateInfoQCOM=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SAMPLER_BLOCK_MATCH_WINDOW_CREATE_INFO_QCOM
       pNext:PVkVoid;
       windowExtent:TVkExtent2D;
       windowCompareMode:TVkBlockMatchWindowCompareModeQCOM;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aWindowExtent:TVkExtent2D;
                          const aWindowCompareMode:TVkBlockMatchWindowCompareModeQCOM);
{$endif}
     end;

     PPVkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV=^PVkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV;
     PVkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV=^TVkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV;
     TVkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV
       pNext:PVkVoid;
       descriptorPoolOverallocation:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aDescriptorPoolOverallocation:TVkBool32);
{$endif}
     end;

     PPVkPhysicalDeviceLayeredDriverPropertiesMSFT=^PVkPhysicalDeviceLayeredDriverPropertiesMSFT;
     PVkPhysicalDeviceLayeredDriverPropertiesMSFT=^TVkPhysicalDeviceLayeredDriverPropertiesMSFT;
     TVkPhysicalDeviceLayeredDriverPropertiesMSFT=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_DRIVER_PROPERTIES_MSFT
       pNext:PVkVoid;
       underlyingAPI:TVkLayeredDriverUnderlyingApiMSFT;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aUnderlyingAPI:TVkLayeredDriverUnderlyingApiMSFT);
{$endif}
     end;

{$ifdef Android}
     PPVkPhysicalDeviceExternalFormatResolveFeaturesANDROID=^PVkPhysicalDeviceExternalFormatResolveFeaturesANDROID;
     PVkPhysicalDeviceExternalFormatResolveFeaturesANDROID=^TVkPhysicalDeviceExternalFormatResolveFeaturesANDROID;
     TVkPhysicalDeviceExternalFormatResolveFeaturesANDROID=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID
       pNext:PVkVoid;
       externalFormatResolve:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aExternalFormatResolve:TVkBool32);
{$endif}
     end;
{$endif}

{$ifdef Android}
     PPVkPhysicalDeviceExternalFormatResolvePropertiesANDROID=^PVkPhysicalDeviceExternalFormatResolvePropertiesANDROID;
     PVkPhysicalDeviceExternalFormatResolvePropertiesANDROID=^TVkPhysicalDeviceExternalFormatResolvePropertiesANDROID;
     TVkPhysicalDeviceExternalFormatResolvePropertiesANDROID=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID
       pNext:PVkVoid;
       nullColorAttachmentWithExternalFormatResolve:TVkBool32;
       externalFormatResolveChromaOffsetX:TVkChromaLocation;
       externalFormatResolveChromaOffsetY:TVkChromaLocation;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aNullColorAttachmentWithExternalFormatResolve:TVkBool32;
                          const aExternalFormatResolveChromaOffsetX:TVkChromaLocation;
                          const aExternalFormatResolveChromaOffsetY:TVkChromaLocation);
{$endif}
     end;
{$endif}

{$ifdef Android}
     PPVkAndroidHardwareBufferFormatResolvePropertiesANDROID=^PVkAndroidHardwareBufferFormatResolvePropertiesANDROID;
     PVkAndroidHardwareBufferFormatResolvePropertiesANDROID=^TVkAndroidHardwareBufferFormatResolvePropertiesANDROID;
     TVkAndroidHardwareBufferFormatResolvePropertiesANDROID=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID
       pNext:PVkVoid;
       colorAttachmentFormat:TVkFormat;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aColorAttachmentFormat:TVkFormat);
{$endif}
     end;
{$endif}

     PPVkLatencySleepModeInfoNV=^PVkLatencySleepModeInfoNV;
     PVkLatencySleepModeInfoNV=^TVkLatencySleepModeInfoNV;
     TVkLatencySleepModeInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_LATENCY_SLEEP_MODE_INFO_NV
       pNext:PVkVoid;
       lowLatencyMode:TVkBool32;
       lowLatencyBoost:TVkBool32;
       minimumIntervalUs:TVkUInt32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aLowLatencyMode:TVkBool32;
                          const aLowLatencyBoost:TVkBool32;
                          const aMinimumIntervalUs:TVkUInt32);
{$endif}
     end;

     PPVkLatencySleepInfoNV=^PVkLatencySleepInfoNV;
     PVkLatencySleepInfoNV=^TVkLatencySleepInfoNV;
     TVkLatencySleepInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_LATENCY_SLEEP_INFO_NV
       pNext:PVkVoid;
       signalSemaphore:TVkSemaphore;
       value:TVkUInt64;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aSignalSemaphore:TVkSemaphore;
                          const aValue:TVkUInt64);
{$endif}
     end;

     PPVkSetLatencyMarkerInfoNV=^PVkSetLatencyMarkerInfoNV;
     PVkSetLatencyMarkerInfoNV=^TVkSetLatencyMarkerInfoNV;
     TVkSetLatencyMarkerInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SET_LATENCY_MARKER_INFO_NV
       pNext:PVkVoid;
       presentID:TVkUInt64;
       marker:TVkLatencyMarkerNV;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPresentID:TVkUInt64;
                          const aMarker:TVkLatencyMarkerNV);
{$endif}
     end;

     PPVkLatencyTimingsFrameReportNV=^PVkLatencyTimingsFrameReportNV;
     PVkLatencyTimingsFrameReportNV=^TVkLatencyTimingsFrameReportNV;
     TVkLatencyTimingsFrameReportNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_LATENCY_TIMINGS_FRAME_REPORT_NV
       pNext:PVkVoid;
       presentID:TVkUInt64;
       inputSampleTimeUs:TVkUInt64;
       simStartTimeUs:TVkUInt64;
       simEndTimeUs:TVkUInt64;
       renderSubmitStartTimeUs:TVkUInt64;
       renderSubmitEndTimeUs:TVkUInt64;
       presentStartTimeUs:TVkUInt64;
       presentEndTimeUs:TVkUInt64;
       driverStartTimeUs:TVkUInt64;
       driverEndTimeUs:TVkUInt64;
       osRenderQueueStartTimeUs:TVkUInt64;
       osRenderQueueEndTimeUs:TVkUInt64;
       gpuRenderStartTimeUs:TVkUInt64;
       gpuRenderEndTimeUs:TVkUInt64;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPresentID:TVkUInt64;
                          const aInputSampleTimeUs:TVkUInt64;
                          const aSimStartTimeUs:TVkUInt64;
                          const aSimEndTimeUs:TVkUInt64;
                          const aRenderSubmitStartTimeUs:TVkUInt64;
                          const aRenderSubmitEndTimeUs:TVkUInt64;
                          const aPresentStartTimeUs:TVkUInt64;
                          const aPresentEndTimeUs:TVkUInt64;
                          const aDriverStartTimeUs:TVkUInt64;
                          const aDriverEndTimeUs:TVkUInt64;
                          const aOsRenderQueueStartTimeUs:TVkUInt64;
                          const aOsRenderQueueEndTimeUs:TVkUInt64;
                          const aGpuRenderStartTimeUs:TVkUInt64;
                          const aGpuRenderEndTimeUs:TVkUInt64);
{$endif}
     end;

     PPVkGetLatencyMarkerInfoNV=^PVkGetLatencyMarkerInfoNV;
     PVkGetLatencyMarkerInfoNV=^TVkGetLatencyMarkerInfoNV;
     TVkGetLatencyMarkerInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_GET_LATENCY_MARKER_INFO_NV
       pNext:PVkVoid;
       pTimings:PVkLatencyTimingsFrameReportNV;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPTimings:PVkLatencyTimingsFrameReportNV);
{$endif}
     end;

     PPVkOutOfBandQueueTypeInfoNV=^PVkOutOfBandQueueTypeInfoNV;
     PVkOutOfBandQueueTypeInfoNV=^TVkOutOfBandQueueTypeInfoNV;
     TVkOutOfBandQueueTypeInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_OUT_OF_BAND_QUEUE_TYPE_INFO_NV
       pNext:PVkVoid;
       queueType:TVkOutOfBandQueueTypeNV;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aQueueType:TVkOutOfBandQueueTypeNV);
{$endif}
     end;

     PPVkLatencySubmissionPresentIdNV=^PVkLatencySubmissionPresentIdNV;
     PVkLatencySubmissionPresentIdNV=^TVkLatencySubmissionPresentIdNV;
     TVkLatencySubmissionPresentIdNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_LATENCY_SUBMISSION_PRESENT_ID_NV
       pNext:PVkVoid;
       presentID:TVkUInt64;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPresentID:TVkUInt64);
{$endif}
     end;

     PPVkSwapchainLatencyCreateInfoNV=^PVkSwapchainLatencyCreateInfoNV;
     PVkSwapchainLatencyCreateInfoNV=^TVkSwapchainLatencyCreateInfoNV;
     TVkSwapchainLatencyCreateInfoNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_SWAPCHAIN_LATENCY_CREATE_INFO_NV
       pNext:PVkVoid;
       latencyModeEnable:TVkBool32;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aLatencyModeEnable:TVkBool32);
{$endif}
     end;

     PPVkLatencySurfaceCapabilitiesNV=^PVkLatencySurfaceCapabilitiesNV;
     PVkLatencySurfaceCapabilitiesNV=^TVkLatencySurfaceCapabilitiesNV;
     TVkLatencySurfaceCapabilitiesNV=record
{$ifdef HAS_ADVANCED_RECORDS}
      public
{$endif}
       sType:TVkStructureType; //< Must be VK_STRUCTURE_TYPE_LATENCY_SURFACE_CAPABILITIES_NV
       pNext:PVkVoid;
       presentModeCount:TVkUInt32;
       pPresentModes:PVkPresentModeKHR;
{$ifdef HAS_ADVANCED_RECORDS}
       constructor Create(const aPresentModeCount:TVkUInt32;
                          const aPPresentModes:PVkPresentModeKHR);
{$endif}
     end;

     TvkCreateInstance=function(const pCreateInfo:PVkInstanceCreateInfo;const pAllocator:PVkAllocationCallbacks;pInstance:PVkInstance):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkDestroyInstance=procedure(instance:TVkInstance;const pAllocator:PVkAllocationCallbacks); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkEnumeratePhysicalDevices=function(instance:TVkInstance;pPhysicalDeviceCount:PVkUInt32;pPhysicalDevices:PVkPhysicalDevice):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetDeviceProcAddr=function(device:TVkDevice;const pName:PVkChar):TPFN_vkVoidFunction; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetInstanceProcAddr=function(instance:TVkInstance;const pName:PVkChar):TPFN_vkVoidFunction; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPhysicalDeviceProperties=procedure(physicalDevice:TVkPhysicalDevice;pProperties:PVkPhysicalDeviceProperties); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPhysicalDeviceQueueFamilyProperties=procedure(physicalDevice:TVkPhysicalDevice;pQueueFamilyPropertyCount:PVkUInt32;pQueueFamilyProperties:PVkQueueFamilyProperties); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPhysicalDeviceMemoryProperties=procedure(physicalDevice:TVkPhysicalDevice;pMemoryProperties:PVkPhysicalDeviceMemoryProperties); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPhysicalDeviceFeatures=procedure(physicalDevice:TVkPhysicalDevice;pFeatures:PVkPhysicalDeviceFeatures); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPhysicalDeviceFormatProperties=procedure(physicalDevice:TVkPhysicalDevice;format:TVkFormat;pFormatProperties:PVkFormatProperties); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPhysicalDeviceImageFormatProperties=function(physicalDevice:TVkPhysicalDevice;format:TVkFormat;type_:TVkImageType;tiling:TVkImageTiling;usage:TVkImageUsageFlags;flags:TVkImageCreateFlags;pImageFormatProperties:PVkImageFormatProperties):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCreateDevice=function(physicalDevice:TVkPhysicalDevice;const pCreateInfo:PVkDeviceCreateInfo;const pAllocator:PVkAllocationCallbacks;pDevice:PVkDevice):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkDestroyDevice=procedure(device:TVkDevice;const pAllocator:PVkAllocationCallbacks); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkEnumerateInstanceVersion=function(pApiVersion:PVkUInt32):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkEnumerateInstanceLayerProperties=function(pPropertyCount:PVkUInt32;pProperties:PVkLayerProperties):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkEnumerateInstanceExtensionProperties=function(const pLayerName:PVkChar;pPropertyCount:PVkUInt32;pProperties:PVkExtensionProperties):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkEnumerateDeviceLayerProperties=function(physicalDevice:TVkPhysicalDevice;pPropertyCount:PVkUInt32;pProperties:PVkLayerProperties):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkEnumerateDeviceExtensionProperties=function(physicalDevice:TVkPhysicalDevice;const pLayerName:PVkChar;pPropertyCount:PVkUInt32;pProperties:PVkExtensionProperties):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetDeviceQueue=procedure(device:TVkDevice;queueFamilyIndex:TVkUInt32;queueIndex:TVkUInt32;pQueue:PVkQueue); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkQueueSubmit=function(queue:TVkQueue;submitCount:TVkUInt32;const pSubmits:PVkSubmitInfo;fence:TVkFence):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkQueueWaitIdle=function(queue:TVkQueue):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkDeviceWaitIdle=function(device:TVkDevice):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkAllocateMemory=function(device:TVkDevice;const pAllocateInfo:PVkMemoryAllocateInfo;const pAllocator:PVkAllocationCallbacks;pMemory:PVkDeviceMemory):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkFreeMemory=procedure(device:TVkDevice;memory:TVkDeviceMemory;const pAllocator:PVkAllocationCallbacks); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkMapMemory=function(device:TVkDevice;memory:TVkDeviceMemory;offset:TVkDeviceSize;size:TVkDeviceSize;flags:TVkMemoryMapFlags;ppData:PPVkVoid):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkUnmapMemory=procedure(device:TVkDevice;memory:TVkDeviceMemory); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkFlushMappedMemoryRanges=function(device:TVkDevice;memoryRangeCount:TVkUInt32;const pMemoryRanges:PVkMappedMemoryRange):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkInvalidateMappedMemoryRanges=function(device:TVkDevice;memoryRangeCount:TVkUInt32;const pMemoryRanges:PVkMappedMemoryRange):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetDeviceMemoryCommitment=procedure(device:TVkDevice;memory:TVkDeviceMemory;pCommittedMemoryInBytes:PVkDeviceSize); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetBufferMemoryRequirements=procedure(device:TVkDevice;buffer:TVkBuffer;pMemoryRequirements:PVkMemoryRequirements); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkBindBufferMemory=function(device:TVkDevice;buffer:TVkBuffer;memory:TVkDeviceMemory;memoryOffset:TVkDeviceSize):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetImageMemoryRequirements=procedure(device:TVkDevice;image:TVkImage;pMemoryRequirements:PVkMemoryRequirements); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkBindImageMemory=function(device:TVkDevice;image:TVkImage;memory:TVkDeviceMemory;memoryOffset:TVkDeviceSize):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetImageSparseMemoryRequirements=procedure(device:TVkDevice;image:TVkImage;pSparseMemoryRequirementCount:PVkUInt32;pSparseMemoryRequirements:PVkSparseImageMemoryRequirements); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPhysicalDeviceSparseImageFormatProperties=procedure(physicalDevice:TVkPhysicalDevice;format:TVkFormat;type_:TVkImageType;samples:TVkSampleCountFlagBits;usage:TVkImageUsageFlags;tiling:TVkImageTiling;pPropertyCount:PVkUInt32;pProperties:PVkSparseImageFormatProperties); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkQueueBindSparse=function(queue:TVkQueue;bindInfoCount:TVkUInt32;const pBindInfo:PVkBindSparseInfo;fence:TVkFence):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCreateFence=function(device:TVkDevice;const pCreateInfo:PVkFenceCreateInfo;const pAllocator:PVkAllocationCallbacks;pFence:PVkFence):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkDestroyFence=procedure(device:TVkDevice;fence:TVkFence;const pAllocator:PVkAllocationCallbacks); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkResetFences=function(device:TVkDevice;fenceCount:TVkUInt32;const pFences:PVkFence):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetFenceStatus=function(device:TVkDevice;fence:TVkFence):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkWaitForFences=function(device:TVkDevice;fenceCount:TVkUInt32;const pFences:PVkFence;waitAll:TVkBool32;timeout:TVkUInt64):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCreateSemaphore=function(device:TVkDevice;const pCreateInfo:PVkSemaphoreCreateInfo;const pAllocator:PVkAllocationCallbacks;pSemaphore:PVkSemaphore):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkDestroySemaphore=procedure(device:TVkDevice;semaphore:TVkSemaphore;const pAllocator:PVkAllocationCallbacks); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCreateEvent=function(device:TVkDevice;const pCreateInfo:PVkEventCreateInfo;const pAllocator:PVkAllocationCallbacks;pEvent:PVkEvent):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkDestroyEvent=procedure(device:TVkDevice;event:TVkEvent;const pAllocator:PVkAllocationCallbacks); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetEventStatus=function(device:TVkDevice;event:TVkEvent):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkSetEvent=function(device:TVkDevice;event:TVkEvent):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkResetEvent=function(device:TVkDevice;event:TVkEvent):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCreateQueryPool=function(device:TVkDevice;const pCreateInfo:PVkQueryPoolCreateInfo;const pAllocator:PVkAllocationCallbacks;pQueryPool:PVkQueryPool):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkDestroyQueryPool=procedure(device:TVkDevice;queryPool:TVkQueryPool;const pAllocator:PVkAllocationCallbacks); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetQueryPoolResults=function(device:TVkDevice;queryPool:TVkQueryPool;firstQuery:TVkUInt32;queryCount:TVkUInt32;dataSize:TVkSize;pData:PVkVoid;stride:TVkDeviceSize;flags:TVkQueryResultFlags):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkResetQueryPool=procedure(device:TVkDevice;queryPool:TVkQueryPool;firstQuery:TVkUInt32;queryCount:TVkUInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkResetQueryPoolEXT=procedure(device:TVkDevice;queryPool:TVkQueryPool;firstQuery:TVkUInt32;queryCount:TVkUInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCreateBuffer=function(device:TVkDevice;const pCreateInfo:PVkBufferCreateInfo;const pAllocator:PVkAllocationCallbacks;pBuffer:PVkBuffer):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkDestroyBuffer=procedure(device:TVkDevice;buffer:TVkBuffer;const pAllocator:PVkAllocationCallbacks); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCreateBufferView=function(device:TVkDevice;const pCreateInfo:PVkBufferViewCreateInfo;const pAllocator:PVkAllocationCallbacks;pView:PVkBufferView):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkDestroyBufferView=procedure(device:TVkDevice;bufferView:TVkBufferView;const pAllocator:PVkAllocationCallbacks); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCreateImage=function(device:TVkDevice;const pCreateInfo:PVkImageCreateInfo;const pAllocator:PVkAllocationCallbacks;pImage:PVkImage):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkDestroyImage=procedure(device:TVkDevice;image:TVkImage;const pAllocator:PVkAllocationCallbacks); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetImageSubresourceLayout=procedure(device:TVkDevice;image:TVkImage;const pSubresource:PVkImageSubresource;pLayout:PVkSubresourceLayout); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCreateImageView=function(device:TVkDevice;const pCreateInfo:PVkImageViewCreateInfo;const pAllocator:PVkAllocationCallbacks;pView:PVkImageView):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkDestroyImageView=procedure(device:TVkDevice;imageView:TVkImageView;const pAllocator:PVkAllocationCallbacks); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCreateShaderModule=function(device:TVkDevice;const pCreateInfo:PVkShaderModuleCreateInfo;const pAllocator:PVkAllocationCallbacks;pShaderModule:PVkShaderModule):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkDestroyShaderModule=procedure(device:TVkDevice;shaderModule:TVkShaderModule;const pAllocator:PVkAllocationCallbacks); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCreatePipelineCache=function(device:TVkDevice;const pCreateInfo:PVkPipelineCacheCreateInfo;const pAllocator:PVkAllocationCallbacks;pPipelineCache:PVkPipelineCache):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkDestroyPipelineCache=procedure(device:TVkDevice;pipelineCache:TVkPipelineCache;const pAllocator:PVkAllocationCallbacks); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPipelineCacheData=function(device:TVkDevice;pipelineCache:TVkPipelineCache;pDataSize:PVkSize;pData:PVkVoid):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkMergePipelineCaches=function(device:TVkDevice;dstCache:TVkPipelineCache;srcCacheCount:TVkUInt32;const pSrcCaches:PVkPipelineCache):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCreateGraphicsPipelines=function(device:TVkDevice;pipelineCache:TVkPipelineCache;createInfoCount:TVkUInt32;const pCreateInfos:PVkGraphicsPipelineCreateInfo;const pAllocator:PVkAllocationCallbacks;pPipelines:PVkPipeline):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCreateComputePipelines=function(device:TVkDevice;pipelineCache:TVkPipelineCache;createInfoCount:TVkUInt32;const pCreateInfos:PVkComputePipelineCreateInfo;const pAllocator:PVkAllocationCallbacks;pPipelines:PVkPipeline):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI=function(device:TVkDevice;renderpass:TVkRenderPass;pMaxWorkgroupSize:PVkExtent2D):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkDestroyPipeline=procedure(device:TVkDevice;pipeline:TVkPipeline;const pAllocator:PVkAllocationCallbacks); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCreatePipelineLayout=function(device:TVkDevice;const pCreateInfo:PVkPipelineLayoutCreateInfo;const pAllocator:PVkAllocationCallbacks;pPipelineLayout:PVkPipelineLayout):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkDestroyPipelineLayout=procedure(device:TVkDevice;pipelineLayout:TVkPipelineLayout;const pAllocator:PVkAllocationCallbacks); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCreateSampler=function(device:TVkDevice;const pCreateInfo:PVkSamplerCreateInfo;const pAllocator:PVkAllocationCallbacks;pSampler:PVkSampler):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkDestroySampler=procedure(device:TVkDevice;sampler:TVkSampler;const pAllocator:PVkAllocationCallbacks); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCreateDescriptorSetLayout=function(device:TVkDevice;const pCreateInfo:PVkDescriptorSetLayoutCreateInfo;const pAllocator:PVkAllocationCallbacks;pSetLayout:PVkDescriptorSetLayout):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkDestroyDescriptorSetLayout=procedure(device:TVkDevice;descriptorSetLayout:TVkDescriptorSetLayout;const pAllocator:PVkAllocationCallbacks); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCreateDescriptorPool=function(device:TVkDevice;const pCreateInfo:PVkDescriptorPoolCreateInfo;const pAllocator:PVkAllocationCallbacks;pDescriptorPool:PVkDescriptorPool):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkDestroyDescriptorPool=procedure(device:TVkDevice;descriptorPool:TVkDescriptorPool;const pAllocator:PVkAllocationCallbacks); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkResetDescriptorPool=function(device:TVkDevice;descriptorPool:TVkDescriptorPool;flags:TVkDescriptorPoolResetFlags):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkAllocateDescriptorSets=function(device:TVkDevice;const pAllocateInfo:PVkDescriptorSetAllocateInfo;pDescriptorSets:PVkDescriptorSet):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkFreeDescriptorSets=function(device:TVkDevice;descriptorPool:TVkDescriptorPool;descriptorSetCount:TVkUInt32;const pDescriptorSets:PVkDescriptorSet):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkUpdateDescriptorSets=procedure(device:TVkDevice;descriptorWriteCount:TVkUInt32;const pDescriptorWrites:PVkWriteDescriptorSet;descriptorCopyCount:TVkUInt32;const pDescriptorCopies:PVkCopyDescriptorSet); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCreateFramebuffer=function(device:TVkDevice;const pCreateInfo:PVkFramebufferCreateInfo;const pAllocator:PVkAllocationCallbacks;pFramebuffer:PVkFramebuffer):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkDestroyFramebuffer=procedure(device:TVkDevice;framebuffer:TVkFramebuffer;const pAllocator:PVkAllocationCallbacks); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCreateRenderPass=function(device:TVkDevice;const pCreateInfo:PVkRenderPassCreateInfo;const pAllocator:PVkAllocationCallbacks;pRenderPass:PVkRenderPass):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkDestroyRenderPass=procedure(device:TVkDevice;renderPass:TVkRenderPass;const pAllocator:PVkAllocationCallbacks); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetRenderAreaGranularity=procedure(device:TVkDevice;renderPass:TVkRenderPass;pGranularity:PVkExtent2D); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetRenderingAreaGranularityKHR=procedure(device:TVkDevice;const pRenderingAreaInfo:PVkRenderingAreaInfoKHR;pGranularity:PVkExtent2D); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCreateCommandPool=function(device:TVkDevice;const pCreateInfo:PVkCommandPoolCreateInfo;const pAllocator:PVkAllocationCallbacks;pCommandPool:PVkCommandPool):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkDestroyCommandPool=procedure(device:TVkDevice;commandPool:TVkCommandPool;const pAllocator:PVkAllocationCallbacks); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkResetCommandPool=function(device:TVkDevice;commandPool:TVkCommandPool;flags:TVkCommandPoolResetFlags):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkAllocateCommandBuffers=function(device:TVkDevice;const pAllocateInfo:PVkCommandBufferAllocateInfo;pCommandBuffers:PVkCommandBuffer):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkFreeCommandBuffers=procedure(device:TVkDevice;commandPool:TVkCommandPool;commandBufferCount:TVkUInt32;const pCommandBuffers:PVkCommandBuffer); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkBeginCommandBuffer=function(commandBuffer:TVkCommandBuffer;const pBeginInfo:PVkCommandBufferBeginInfo):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkEndCommandBuffer=function(commandBuffer:TVkCommandBuffer):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkResetCommandBuffer=function(commandBuffer:TVkCommandBuffer;flags:TVkCommandBufferResetFlags):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdBindPipeline=procedure(commandBuffer:TVkCommandBuffer;pipelineBindPoint:TVkPipelineBindPoint;pipeline:TVkPipeline); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetAttachmentFeedbackLoopEnableEXT=procedure(commandBuffer:TVkCommandBuffer;aspectMask:TVkImageAspectFlags); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetViewport=procedure(commandBuffer:TVkCommandBuffer;firstViewport:TVkUInt32;viewportCount:TVkUInt32;const pViewports:PVkViewport); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetScissor=procedure(commandBuffer:TVkCommandBuffer;firstScissor:TVkUInt32;scissorCount:TVkUInt32;const pScissors:PVkRect2D); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetLineWidth=procedure(commandBuffer:TVkCommandBuffer;lineWidth:TVkFloat); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetDepthBias=procedure(commandBuffer:TVkCommandBuffer;depthBiasConstantFactor:TVkFloat;depthBiasClamp:TVkFloat;depthBiasSlopeFactor:TVkFloat); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetBlendConstants=procedure(commandBuffer:TVkCommandBuffer;const blendConstants:TVkFloat); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetDepthBounds=procedure(commandBuffer:TVkCommandBuffer;minDepthBounds:TVkFloat;maxDepthBounds:TVkFloat); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetStencilCompareMask=procedure(commandBuffer:TVkCommandBuffer;faceMask:TVkStencilFaceFlags;compareMask:TVkUInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetStencilWriteMask=procedure(commandBuffer:TVkCommandBuffer;faceMask:TVkStencilFaceFlags;writeMask:TVkUInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetStencilReference=procedure(commandBuffer:TVkCommandBuffer;faceMask:TVkStencilFaceFlags;reference:TVkUInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdBindDescriptorSets=procedure(commandBuffer:TVkCommandBuffer;pipelineBindPoint:TVkPipelineBindPoint;layout:TVkPipelineLayout;firstSet:TVkUInt32;descriptorSetCount:TVkUInt32;const pDescriptorSets:PVkDescriptorSet;dynamicOffsetCount:TVkUInt32;const pDynamicOffsets:PVkUInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdBindIndexBuffer=procedure(commandBuffer:TVkCommandBuffer;buffer:TVkBuffer;offset:TVkDeviceSize;indexType:TVkIndexType); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdBindVertexBuffers=procedure(commandBuffer:TVkCommandBuffer;firstBinding:TVkUInt32;bindingCount:TVkUInt32;const pBuffers:PVkBuffer;const pOffsets:PVkDeviceSize); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdDraw=procedure(commandBuffer:TVkCommandBuffer;vertexCount:TVkUInt32;instanceCount:TVkUInt32;firstVertex:TVkUInt32;firstInstance:TVkUInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdDrawIndexed=procedure(commandBuffer:TVkCommandBuffer;indexCount:TVkUInt32;instanceCount:TVkUInt32;firstIndex:TVkUInt32;vertexOffset:TVkInt32;firstInstance:TVkUInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdDrawMultiEXT=procedure(commandBuffer:TVkCommandBuffer;drawCount:TVkUInt32;const pVertexInfo:PVkMultiDrawInfoEXT;instanceCount:TVkUInt32;firstInstance:TVkUInt32;stride:TVkUInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdDrawMultiIndexedEXT=procedure(commandBuffer:TVkCommandBuffer;drawCount:TVkUInt32;const pIndexInfo:PVkMultiDrawIndexedInfoEXT;instanceCount:TVkUInt32;firstInstance:TVkUInt32;stride:TVkUInt32;const pVertexOffset:PVkInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdDrawIndirect=procedure(commandBuffer:TVkCommandBuffer;buffer:TVkBuffer;offset:TVkDeviceSize;drawCount:TVkUInt32;stride:TVkUInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdDrawIndexedIndirect=procedure(commandBuffer:TVkCommandBuffer;buffer:TVkBuffer;offset:TVkDeviceSize;drawCount:TVkUInt32;stride:TVkUInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdDispatch=procedure(commandBuffer:TVkCommandBuffer;groupCountX:TVkUInt32;groupCountY:TVkUInt32;groupCountZ:TVkUInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdDispatchIndirect=procedure(commandBuffer:TVkCommandBuffer;buffer:TVkBuffer;offset:TVkDeviceSize); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSubpassShadingHUAWEI=procedure(commandBuffer:TVkCommandBuffer); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdDrawClusterHUAWEI=procedure(commandBuffer:TVkCommandBuffer;groupCountX:TVkUInt32;groupCountY:TVkUInt32;groupCountZ:TVkUInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdDrawClusterIndirectHUAWEI=procedure(commandBuffer:TVkCommandBuffer;buffer:TVkBuffer;offset:TVkDeviceSize); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdUpdatePipelineIndirectBufferNV=procedure(commandBuffer:TVkCommandBuffer;pipelineBindPoint:TVkPipelineBindPoint;pipeline:TVkPipeline); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdCopyBuffer=procedure(commandBuffer:TVkCommandBuffer;srcBuffer:TVkBuffer;dstBuffer:TVkBuffer;regionCount:TVkUInt32;const pRegions:PVkBufferCopy); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdCopyImage=procedure(commandBuffer:TVkCommandBuffer;srcImage:TVkImage;srcImageLayout:TVkImageLayout;dstImage:TVkImage;dstImageLayout:TVkImageLayout;regionCount:TVkUInt32;const pRegions:PVkImageCopy); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdBlitImage=procedure(commandBuffer:TVkCommandBuffer;srcImage:TVkImage;srcImageLayout:TVkImageLayout;dstImage:TVkImage;dstImageLayout:TVkImageLayout;regionCount:TVkUInt32;const pRegions:PVkImageBlit;filter:TVkFilter); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdCopyBufferToImage=procedure(commandBuffer:TVkCommandBuffer;srcBuffer:TVkBuffer;dstImage:TVkImage;dstImageLayout:TVkImageLayout;regionCount:TVkUInt32;const pRegions:PVkBufferImageCopy); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdCopyImageToBuffer=procedure(commandBuffer:TVkCommandBuffer;srcImage:TVkImage;srcImageLayout:TVkImageLayout;dstBuffer:TVkBuffer;regionCount:TVkUInt32;const pRegions:PVkBufferImageCopy); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdCopyMemoryIndirectNV=procedure(commandBuffer:TVkCommandBuffer;copyBufferAddress:TVkDeviceAddress;copyCount:TVkUInt32;stride:TVkUInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdCopyMemoryToImageIndirectNV=procedure(commandBuffer:TVkCommandBuffer;copyBufferAddress:TVkDeviceAddress;copyCount:TVkUInt32;stride:TVkUInt32;dstImage:TVkImage;dstImageLayout:TVkImageLayout;const pImageSubresources:PVkImageSubresourceLayers); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdUpdateBuffer=procedure(commandBuffer:TVkCommandBuffer;dstBuffer:TVkBuffer;dstOffset:TVkDeviceSize;dataSize:TVkDeviceSize;const pData:PVkVoid); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdFillBuffer=procedure(commandBuffer:TVkCommandBuffer;dstBuffer:TVkBuffer;dstOffset:TVkDeviceSize;size:TVkDeviceSize;data:TVkUInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdClearColorImage=procedure(commandBuffer:TVkCommandBuffer;image:TVkImage;imageLayout:TVkImageLayout;const pColor:PVkClearColorValue;rangeCount:TVkUInt32;const pRanges:PVkImageSubresourceRange); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdClearDepthStencilImage=procedure(commandBuffer:TVkCommandBuffer;image:TVkImage;imageLayout:TVkImageLayout;const pDepthStencil:PVkClearDepthStencilValue;rangeCount:TVkUInt32;const pRanges:PVkImageSubresourceRange); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdClearAttachments=procedure(commandBuffer:TVkCommandBuffer;attachmentCount:TVkUInt32;const pAttachments:PVkClearAttachment;rectCount:TVkUInt32;const pRects:PVkClearRect); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdResolveImage=procedure(commandBuffer:TVkCommandBuffer;srcImage:TVkImage;srcImageLayout:TVkImageLayout;dstImage:TVkImage;dstImageLayout:TVkImageLayout;regionCount:TVkUInt32;const pRegions:PVkImageResolve); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetEvent=procedure(commandBuffer:TVkCommandBuffer;event:TVkEvent;stageMask:TVkPipelineStageFlags); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdResetEvent=procedure(commandBuffer:TVkCommandBuffer;event:TVkEvent;stageMask:TVkPipelineStageFlags); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdWaitEvents=procedure(commandBuffer:TVkCommandBuffer;eventCount:TVkUInt32;const pEvents:PVkEvent;srcStageMask:TVkPipelineStageFlags;dstStageMask:TVkPipelineStageFlags;memoryBarrierCount:TVkUInt32;const pMemoryBarriers:PVkMemoryBarrier;bufferMemoryBarrierCount:TVkUInt32;const pBufferMemoryBarriers:PVkBufferMemoryBarrier;imageMemoryBarrierCount:TVkUInt32;const pImageMemoryBarriers:PVkImageMemoryBarrier); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdPipelineBarrier=procedure(commandBuffer:TVkCommandBuffer;srcStageMask:TVkPipelineStageFlags;dstStageMask:TVkPipelineStageFlags;dependencyFlags:TVkDependencyFlags;memoryBarrierCount:TVkUInt32;const pMemoryBarriers:PVkMemoryBarrier;bufferMemoryBarrierCount:TVkUInt32;const pBufferMemoryBarriers:PVkBufferMemoryBarrier;imageMemoryBarrierCount:TVkUInt32;const pImageMemoryBarriers:PVkImageMemoryBarrier); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdBeginQuery=procedure(commandBuffer:TVkCommandBuffer;queryPool:TVkQueryPool;query:TVkUInt32;flags:TVkQueryControlFlags); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdEndQuery=procedure(commandBuffer:TVkCommandBuffer;queryPool:TVkQueryPool;query:TVkUInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdBeginConditionalRenderingEXT=procedure(commandBuffer:TVkCommandBuffer;const pConditionalRenderingBegin:PVkConditionalRenderingBeginInfoEXT); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdEndConditionalRenderingEXT=procedure(commandBuffer:TVkCommandBuffer); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdResetQueryPool=procedure(commandBuffer:TVkCommandBuffer;queryPool:TVkQueryPool;firstQuery:TVkUInt32;queryCount:TVkUInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdWriteTimestamp=procedure(commandBuffer:TVkCommandBuffer;pipelineStage:TVkPipelineStageFlagBits;queryPool:TVkQueryPool;query:TVkUInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdCopyQueryPoolResults=procedure(commandBuffer:TVkCommandBuffer;queryPool:TVkQueryPool;firstQuery:TVkUInt32;queryCount:TVkUInt32;dstBuffer:TVkBuffer;dstOffset:TVkDeviceSize;stride:TVkDeviceSize;flags:TVkQueryResultFlags); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdPushConstants=procedure(commandBuffer:TVkCommandBuffer;layout:TVkPipelineLayout;stageFlags:TVkShaderStageFlags;offset:TVkUInt32;size:TVkUInt32;const pValues:PVkVoid); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdBeginRenderPass=procedure(commandBuffer:TVkCommandBuffer;const pRenderPassBegin:PVkRenderPassBeginInfo;contents:TVkSubpassContents); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdNextSubpass=procedure(commandBuffer:TVkCommandBuffer;contents:TVkSubpassContents); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdEndRenderPass=procedure(commandBuffer:TVkCommandBuffer); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdExecuteCommands=procedure(commandBuffer:TVkCommandBuffer;commandBufferCount:TVkUInt32;const pCommandBuffers:PVkCommandBuffer); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

{$ifdef Android}
     TvkCreateAndroidSurfaceKHR=function(instance:TVkInstance;const pCreateInfo:PVkAndroidSurfaceCreateInfoKHR;const pAllocator:PVkAllocationCallbacks;pSurface:PVkSurfaceKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

     TvkGetPhysicalDeviceDisplayPropertiesKHR=function(physicalDevice:TVkPhysicalDevice;pPropertyCount:PVkUInt32;pProperties:PVkDisplayPropertiesKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPhysicalDeviceDisplayPlanePropertiesKHR=function(physicalDevice:TVkPhysicalDevice;pPropertyCount:PVkUInt32;pProperties:PVkDisplayPlanePropertiesKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetDisplayPlaneSupportedDisplaysKHR=function(physicalDevice:TVkPhysicalDevice;planeIndex:TVkUInt32;pDisplayCount:PVkUInt32;pDisplays:PVkDisplayKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetDisplayModePropertiesKHR=function(physicalDevice:TVkPhysicalDevice;display:TVkDisplayKHR;pPropertyCount:PVkUInt32;pProperties:PVkDisplayModePropertiesKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCreateDisplayModeKHR=function(physicalDevice:TVkPhysicalDevice;display:TVkDisplayKHR;const pCreateInfo:PVkDisplayModeCreateInfoKHR;const pAllocator:PVkAllocationCallbacks;pMode:PVkDisplayModeKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetDisplayPlaneCapabilitiesKHR=function(physicalDevice:TVkPhysicalDevice;mode:TVkDisplayModeKHR;planeIndex:TVkUInt32;pCapabilities:PVkDisplayPlaneCapabilitiesKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCreateDisplayPlaneSurfaceKHR=function(instance:TVkInstance;const pCreateInfo:PVkDisplaySurfaceCreateInfoKHR;const pAllocator:PVkAllocationCallbacks;pSurface:PVkSurfaceKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCreateSharedSwapchainsKHR=function(device:TVkDevice;swapchainCount:TVkUInt32;const pCreateInfos:PVkSwapchainCreateInfoKHR;const pAllocator:PVkAllocationCallbacks;pSwapchains:PVkSwapchainKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkDestroySurfaceKHR=procedure(instance:TVkInstance;surface:TVkSurfaceKHR;const pAllocator:PVkAllocationCallbacks); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPhysicalDeviceSurfaceSupportKHR=function(physicalDevice:TVkPhysicalDevice;queueFamilyIndex:TVkUInt32;surface:TVkSurfaceKHR;pSupported:PVkBool32):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPhysicalDeviceSurfaceCapabilitiesKHR=function(physicalDevice:TVkPhysicalDevice;surface:TVkSurfaceKHR;pSurfaceCapabilities:PVkSurfaceCapabilitiesKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPhysicalDeviceSurfaceFormatsKHR=function(physicalDevice:TVkPhysicalDevice;surface:TVkSurfaceKHR;pSurfaceFormatCount:PVkUInt32;pSurfaceFormats:PVkSurfaceFormatKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPhysicalDeviceSurfacePresentModesKHR=function(physicalDevice:TVkPhysicalDevice;surface:TVkSurfaceKHR;pPresentModeCount:PVkUInt32;pPresentModes:PVkPresentModeKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCreateSwapchainKHR=function(device:TVkDevice;const pCreateInfo:PVkSwapchainCreateInfoKHR;const pAllocator:PVkAllocationCallbacks;pSwapchain:PVkSwapchainKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkDestroySwapchainKHR=procedure(device:TVkDevice;swapchain:TVkSwapchainKHR;const pAllocator:PVkAllocationCallbacks); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetSwapchainImagesKHR=function(device:TVkDevice;swapchain:TVkSwapchainKHR;pSwapchainImageCount:PVkUInt32;pSwapchainImages:PVkImage):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkAcquireNextImageKHR=function(device:TVkDevice;swapchain:TVkSwapchainKHR;timeout:TVkUInt64;semaphore:TVkSemaphore;fence:TVkFence;pImageIndex:PVkUInt32):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkQueuePresentKHR=function(queue:TVkQueue;const pPresentInfo:PVkPresentInfoKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCreateViSurfaceNN=function(instance:TVkInstance;const pCreateInfo:PVkViSurfaceCreateInfoNN;const pAllocator:PVkAllocationCallbacks;pSurface:PVkSurfaceKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

{$ifdef Wayland}
     TvkCreateWaylandSurfaceKHR=function(instance:TVkInstance;const pCreateInfo:PVkWaylandSurfaceCreateInfoKHR;const pAllocator:PVkAllocationCallbacks;pSurface:PVkSurfaceKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

{$ifdef Wayland}
     TvkGetPhysicalDeviceWaylandPresentationSupportKHR=function(physicalDevice:TVkPhysicalDevice;queueFamilyIndex:TVkUInt32;display:PVkWaylandDisplay):TVkBool32; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

{$ifdef Windows}
     TvkCreateWin32SurfaceKHR=function(instance:TVkInstance;const pCreateInfo:PVkWin32SurfaceCreateInfoKHR;const pAllocator:PVkAllocationCallbacks;pSurface:PVkSurfaceKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

{$ifdef Windows}
     TvkGetPhysicalDeviceWin32PresentationSupportKHR=function(physicalDevice:TVkPhysicalDevice;queueFamilyIndex:TVkUInt32):TVkBool32; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

{$ifdef XLIB}
     TvkCreateXlibSurfaceKHR=function(instance:TVkInstance;const pCreateInfo:PVkXlibSurfaceCreateInfoKHR;const pAllocator:PVkAllocationCallbacks;pSurface:PVkSurfaceKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

{$ifdef XLIB}
     TvkGetPhysicalDeviceXlibPresentationSupportKHR=function(physicalDevice:TVkPhysicalDevice;queueFamilyIndex:TVkUInt32;dpy:PVkXLIBDisplay;visualID:TVkXLIBVisualID):TVkBool32; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

{$ifdef XCB}
     TvkCreateXcbSurfaceKHR=function(instance:TVkInstance;const pCreateInfo:PVkXcbSurfaceCreateInfoKHR;const pAllocator:PVkAllocationCallbacks;pSurface:PVkSurfaceKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

{$ifdef XCB}
     TvkGetPhysicalDeviceXcbPresentationSupportKHR=function(physicalDevice:TVkPhysicalDevice;queueFamilyIndex:TVkUInt32;connection:PVkXCBConnection;visual_id:TVkXCBVisualID):TVkBool32; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

{$ifdef DirectFB}
     TvkCreateDirectFBSurfaceEXT=function(instance:TVkInstance;const pCreateInfo:PVkDirectFBSurfaceCreateInfoEXT;const pAllocator:PVkAllocationCallbacks;pSurface:PVkSurfaceKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

{$ifdef DirectFB}
     TvkGetPhysicalDeviceDirectFBPresentationSupportEXT=function(physicalDevice:TVkPhysicalDevice;queueFamilyIndex:TVkUInt32;dfb:PVkDirectFBIDirectFB):TVkBool32; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

{$ifdef Fuchsia}
     TvkCreateImagePipeSurfaceFUCHSIA=function(instance:TVkInstance;const pCreateInfo:PVkImagePipeSurfaceCreateInfoFUCHSIA;const pAllocator:PVkAllocationCallbacks;pSurface:PVkSurfaceKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

     TvkCreateStreamDescriptorSurfaceGGP=function(instance:TVkInstance;const pCreateInfo:PVkStreamDescriptorSurfaceCreateInfoGGP;const pAllocator:PVkAllocationCallbacks;pSurface:PVkSurfaceKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

{$ifdef QNX}
     TvkCreateScreenSurfaceQNX=function(instance:TVkInstance;const pCreateInfo:PVkScreenSurfaceCreateInfoQNX;const pAllocator:PVkAllocationCallbacks;pSurface:PVkSurfaceKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

{$ifdef QNX}
     TvkGetPhysicalDeviceScreenPresentationSupportQNX=function(physicalDevice:TVkPhysicalDevice;queueFamilyIndex:TVkUInt32;window:PVkQNXScreenWindow):TVkBool32; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

     TvkCreateDebugReportCallbackEXT=function(instance:TVkInstance;const pCreateInfo:PVkDebugReportCallbackCreateInfoEXT;const pAllocator:PVkAllocationCallbacks;pCallback:PVkDebugReportCallbackEXT):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkDestroyDebugReportCallbackEXT=procedure(instance:TVkInstance;callback:TVkDebugReportCallbackEXT;const pAllocator:PVkAllocationCallbacks); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkDebugReportMessageEXT=procedure(instance:TVkInstance;flags:TVkDebugReportFlagsEXT;objectType:TVkDebugReportObjectTypeEXT;object_:TVkUInt64;location:TVkSize;messageCode:TVkInt32;const pLayerPrefix:PVkChar;const pMessage:PVkChar); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkDebugMarkerSetObjectNameEXT=function(device:TVkDevice;const pNameInfo:PVkDebugMarkerObjectNameInfoEXT):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkDebugMarkerSetObjectTagEXT=function(device:TVkDevice;const pTagInfo:PVkDebugMarkerObjectTagInfoEXT):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdDebugMarkerBeginEXT=procedure(commandBuffer:TVkCommandBuffer;const pMarkerInfo:PVkDebugMarkerMarkerInfoEXT); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdDebugMarkerEndEXT=procedure(commandBuffer:TVkCommandBuffer); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdDebugMarkerInsertEXT=procedure(commandBuffer:TVkCommandBuffer;const pMarkerInfo:PVkDebugMarkerMarkerInfoEXT); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPhysicalDeviceExternalImageFormatPropertiesNV=function(physicalDevice:TVkPhysicalDevice;format:TVkFormat;type_:TVkImageType;tiling:TVkImageTiling;usage:TVkImageUsageFlags;flags:TVkImageCreateFlags;externalHandleType:TVkExternalMemoryHandleTypeFlagsNV;pExternalImageFormatProperties:PVkExternalImageFormatPropertiesNV):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

{$ifdef Windows}
     TvkGetMemoryWin32HandleNV=function(device:TVkDevice;memory:TVkDeviceMemory;handleType:TVkExternalMemoryHandleTypeFlagsNV;pHandle:PHANDLE):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

     TvkCmdExecuteGeneratedCommandsNV=procedure(commandBuffer:TVkCommandBuffer;isPreprocessed:TVkBool32;const pGeneratedCommandsInfo:PVkGeneratedCommandsInfoNV); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdPreprocessGeneratedCommandsNV=procedure(commandBuffer:TVkCommandBuffer;const pGeneratedCommandsInfo:PVkGeneratedCommandsInfoNV); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdBindPipelineShaderGroupNV=procedure(commandBuffer:TVkCommandBuffer;pipelineBindPoint:TVkPipelineBindPoint;pipeline:TVkPipeline;groupIndex:TVkUInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetGeneratedCommandsMemoryRequirementsNV=procedure(device:TVkDevice;const pInfo:PVkGeneratedCommandsMemoryRequirementsInfoNV;pMemoryRequirements:PVkMemoryRequirements2); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCreateIndirectCommandsLayoutNV=function(device:TVkDevice;const pCreateInfo:PVkIndirectCommandsLayoutCreateInfoNV;const pAllocator:PVkAllocationCallbacks;pIndirectCommandsLayout:PVkIndirectCommandsLayoutNV):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkDestroyIndirectCommandsLayoutNV=procedure(device:TVkDevice;indirectCommandsLayout:TVkIndirectCommandsLayoutNV;const pAllocator:PVkAllocationCallbacks); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPhysicalDeviceFeatures2=procedure(physicalDevice:TVkPhysicalDevice;pFeatures:PVkPhysicalDeviceFeatures2); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPhysicalDeviceFeatures2KHR=procedure(physicalDevice:TVkPhysicalDevice;pFeatures:PVkPhysicalDeviceFeatures2); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPhysicalDeviceProperties2=procedure(physicalDevice:TVkPhysicalDevice;pProperties:PVkPhysicalDeviceProperties2); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPhysicalDeviceProperties2KHR=procedure(physicalDevice:TVkPhysicalDevice;pProperties:PVkPhysicalDeviceProperties2); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPhysicalDeviceFormatProperties2=procedure(physicalDevice:TVkPhysicalDevice;format:TVkFormat;pFormatProperties:PVkFormatProperties2); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPhysicalDeviceFormatProperties2KHR=procedure(physicalDevice:TVkPhysicalDevice;format:TVkFormat;pFormatProperties:PVkFormatProperties2); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPhysicalDeviceImageFormatProperties2=function(physicalDevice:TVkPhysicalDevice;const pImageFormatInfo:PVkPhysicalDeviceImageFormatInfo2;pImageFormatProperties:PVkImageFormatProperties2):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPhysicalDeviceImageFormatProperties2KHR=function(physicalDevice:TVkPhysicalDevice;const pImageFormatInfo:PVkPhysicalDeviceImageFormatInfo2;pImageFormatProperties:PVkImageFormatProperties2):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPhysicalDeviceQueueFamilyProperties2=procedure(physicalDevice:TVkPhysicalDevice;pQueueFamilyPropertyCount:PVkUInt32;pQueueFamilyProperties:PVkQueueFamilyProperties2); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPhysicalDeviceQueueFamilyProperties2KHR=procedure(physicalDevice:TVkPhysicalDevice;pQueueFamilyPropertyCount:PVkUInt32;pQueueFamilyProperties:PVkQueueFamilyProperties2); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPhysicalDeviceMemoryProperties2=procedure(physicalDevice:TVkPhysicalDevice;pMemoryProperties:PVkPhysicalDeviceMemoryProperties2); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPhysicalDeviceMemoryProperties2KHR=procedure(physicalDevice:TVkPhysicalDevice;pMemoryProperties:PVkPhysicalDeviceMemoryProperties2); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPhysicalDeviceSparseImageFormatProperties2=procedure(physicalDevice:TVkPhysicalDevice;const pFormatInfo:PVkPhysicalDeviceSparseImageFormatInfo2;pPropertyCount:PVkUInt32;pProperties:PVkSparseImageFormatProperties2); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPhysicalDeviceSparseImageFormatProperties2KHR=procedure(physicalDevice:TVkPhysicalDevice;const pFormatInfo:PVkPhysicalDeviceSparseImageFormatInfo2;pPropertyCount:PVkUInt32;pProperties:PVkSparseImageFormatProperties2); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdPushDescriptorSetKHR=procedure(commandBuffer:TVkCommandBuffer;pipelineBindPoint:TVkPipelineBindPoint;layout:TVkPipelineLayout;set_:TVkUInt32;descriptorWriteCount:TVkUInt32;const pDescriptorWrites:PVkWriteDescriptorSet); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkTrimCommandPool=procedure(device:TVkDevice;commandPool:TVkCommandPool;flags:TVkCommandPoolTrimFlags); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkTrimCommandPoolKHR=procedure(device:TVkDevice;commandPool:TVkCommandPool;flags:TVkCommandPoolTrimFlags); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPhysicalDeviceExternalBufferProperties=procedure(physicalDevice:TVkPhysicalDevice;const pExternalBufferInfo:PVkPhysicalDeviceExternalBufferInfo;pExternalBufferProperties:PVkExternalBufferProperties); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPhysicalDeviceExternalBufferPropertiesKHR=procedure(physicalDevice:TVkPhysicalDevice;const pExternalBufferInfo:PVkPhysicalDeviceExternalBufferInfo;pExternalBufferProperties:PVkExternalBufferProperties); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

{$ifdef Windows}
     TvkGetMemoryWin32HandleKHR=function(device:TVkDevice;const pGetWin32HandleInfo:PVkMemoryGetWin32HandleInfoKHR;pHandle:PHANDLE):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

{$ifdef Windows}
     TvkGetMemoryWin32HandlePropertiesKHR=function(device:TVkDevice;handleType:TVkExternalMemoryHandleTypeFlagBits;handle:THANDLE;pMemoryWin32HandleProperties:PVkMemoryWin32HandlePropertiesKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

     TvkGetMemoryFdKHR=function(device:TVkDevice;const pGetFdInfo:PVkMemoryGetFdInfoKHR;pFd:PVkInt32):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetMemoryFdPropertiesKHR=function(device:TVkDevice;handleType:TVkExternalMemoryHandleTypeFlagBits;fd:TVkInt32;pMemoryFdProperties:PVkMemoryFdPropertiesKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

{$ifdef Fuchsia}
     TvkGetMemoryZirconHandleFUCHSIA=function(device:TVkDevice;const pGetZirconHandleInfo:PVkMemoryGetZirconHandleInfoFUCHSIA;pZirconHandle:PVkFuchsiaZXHandle):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

{$ifdef Fuchsia}
     TvkGetMemoryZirconHandlePropertiesFUCHSIA=function(device:TVkDevice;handleType:TVkExternalMemoryHandleTypeFlagBits;zirconHandle:TVkFuchsiaZXHandle;pMemoryZirconHandleProperties:PVkMemoryZirconHandlePropertiesFUCHSIA):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

     TvkGetMemoryRemoteAddressNV=function(device:TVkDevice;const pMemoryGetRemoteAddressInfo:PVkMemoryGetRemoteAddressInfoNV;pAddress:PVkRemoteAddressNV):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

{$ifdef NvSci}
     TvkGetMemorySciBufNV=function(device:TVkDevice;const pGetSciBufInfo:PVkMemoryGetSciBufInfoNV;pHandle:PNvSciBufObj):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

{$ifdef NvSci}
     TvkGetPhysicalDeviceExternalMemorySciBufPropertiesNV=function(physicalDevice:TVkPhysicalDevice;handleType:TVkExternalMemoryHandleTypeFlagBits;handle:TNvSciBufObj;pMemorySciBufProperties:PVkMemorySciBufPropertiesNV):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

{$ifdef NvSci}
     TvkGetPhysicalDeviceSciBufAttributesNV=function(physicalDevice:TVkPhysicalDevice;pAttributes:TNvSciBufAttrList):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

     TvkGetPhysicalDeviceExternalSemaphoreProperties=procedure(physicalDevice:TVkPhysicalDevice;const pExternalSemaphoreInfo:PVkPhysicalDeviceExternalSemaphoreInfo;pExternalSemaphoreProperties:PVkExternalSemaphoreProperties); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPhysicalDeviceExternalSemaphorePropertiesKHR=procedure(physicalDevice:TVkPhysicalDevice;const pExternalSemaphoreInfo:PVkPhysicalDeviceExternalSemaphoreInfo;pExternalSemaphoreProperties:PVkExternalSemaphoreProperties); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

{$ifdef Windows}
     TvkGetSemaphoreWin32HandleKHR=function(device:TVkDevice;const pGetWin32HandleInfo:PVkSemaphoreGetWin32HandleInfoKHR;pHandle:PHANDLE):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

{$ifdef Windows}
     TvkImportSemaphoreWin32HandleKHR=function(device:TVkDevice;const pImportSemaphoreWin32HandleInfo:PVkImportSemaphoreWin32HandleInfoKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

     TvkGetSemaphoreFdKHR=function(device:TVkDevice;const pGetFdInfo:PVkSemaphoreGetFdInfoKHR;pFd:PVkInt32):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkImportSemaphoreFdKHR=function(device:TVkDevice;const pImportSemaphoreFdInfo:PVkImportSemaphoreFdInfoKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

{$ifdef Fuchsia}
     TvkGetSemaphoreZirconHandleFUCHSIA=function(device:TVkDevice;const pGetZirconHandleInfo:PVkSemaphoreGetZirconHandleInfoFUCHSIA;pZirconHandle:PVkFuchsiaZXHandle):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

{$ifdef Fuchsia}
     TvkImportSemaphoreZirconHandleFUCHSIA=function(device:TVkDevice;const pImportSemaphoreZirconHandleInfo:PVkImportSemaphoreZirconHandleInfoFUCHSIA):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

     TvkGetPhysicalDeviceExternalFenceProperties=procedure(physicalDevice:TVkPhysicalDevice;const pExternalFenceInfo:PVkPhysicalDeviceExternalFenceInfo;pExternalFenceProperties:PVkExternalFenceProperties); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPhysicalDeviceExternalFencePropertiesKHR=procedure(physicalDevice:TVkPhysicalDevice;const pExternalFenceInfo:PVkPhysicalDeviceExternalFenceInfo;pExternalFenceProperties:PVkExternalFenceProperties); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

{$ifdef Windows}
     TvkGetFenceWin32HandleKHR=function(device:TVkDevice;const pGetWin32HandleInfo:PVkFenceGetWin32HandleInfoKHR;pHandle:PHANDLE):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

{$ifdef Windows}
     TvkImportFenceWin32HandleKHR=function(device:TVkDevice;const pImportFenceWin32HandleInfo:PVkImportFenceWin32HandleInfoKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

     TvkGetFenceFdKHR=function(device:TVkDevice;const pGetFdInfo:PVkFenceGetFdInfoKHR;pFd:PVkInt32):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkImportFenceFdKHR=function(device:TVkDevice;const pImportFenceFdInfo:PVkImportFenceFdInfoKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

{$ifdef NvSci}
     TvkGetFenceSciSyncFenceNV=function(device:TVkDevice;const pGetSciSyncHandleInfo:PVkFenceGetSciSyncInfoNV;pHandle:PVkVoid):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

{$ifdef NvSci}
     TvkGetFenceSciSyncObjNV=function(device:TVkDevice;const pGetSciSyncHandleInfo:PVkFenceGetSciSyncInfoNV;pHandle:PVkVoid):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

{$ifdef NvSci}
     TvkImportFenceSciSyncFenceNV=function(device:TVkDevice;const pImportFenceSciSyncInfo:PVkImportFenceSciSyncInfoNV):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

{$ifdef NvSci}
     TvkImportFenceSciSyncObjNV=function(device:TVkDevice;const pImportFenceSciSyncInfo:PVkImportFenceSciSyncInfoNV):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

{$ifdef NvSci}
     TvkGetSemaphoreSciSyncObjNV=function(device:TVkDevice;const pGetSciSyncInfo:PVkSemaphoreGetSciSyncInfoNV;pHandle:PVkVoid):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

{$ifdef NvSci}
     TvkImportSemaphoreSciSyncObjNV=function(device:TVkDevice;const pImportSemaphoreSciSyncInfo:PVkImportSemaphoreSciSyncInfoNV):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

{$ifdef NvSci}
     TvkGetPhysicalDeviceSciSyncAttributesNV=function(physicalDevice:TVkPhysicalDevice;const pSciSyncAttributesInfo:PVkSciSyncAttributesInfoNV;pAttributes:TNvSciSyncAttrList):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

{$ifdef NvSci}
     TvkCreateSemaphoreSciSyncPoolNV=function(device:TVkDevice;const pCreateInfo:PVkSemaphoreSciSyncPoolCreateInfoNV;const pAllocator:PVkAllocationCallbacks;pSemaphorePool:PVkSemaphoreSciSyncPoolNV):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

{$ifdef NvSci}
     TvkDestroySemaphoreSciSyncPoolNV=procedure(device:TVkDevice;semaphorePool:TVkSemaphoreSciSyncPoolNV;const pAllocator:PVkAllocationCallbacks); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

     TvkReleaseDisplayEXT=function(physicalDevice:TVkPhysicalDevice;display:TVkDisplayKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

{$ifdef XLIB}
     TvkAcquireXlibDisplayEXT=function(physicalDevice:TVkPhysicalDevice;dpy:PVkXLIBDisplay;display:TVkDisplayKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

{$ifdef RandR}
     TvkGetRandROutputDisplayEXT=function(physicalDevice:TVkPhysicalDevice;dpy:PVkXLIBDisplay;rrOutput:TRROutput;pDisplay:PVkDisplayKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

     TvkAcquireWinrtDisplayNV=function(physicalDevice:TVkPhysicalDevice;display:TVkDisplayKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetWinrtDisplayNV=function(physicalDevice:TVkPhysicalDevice;deviceRelativeId:TVkUInt32;pDisplay:PVkDisplayKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkDisplayPowerControlEXT=function(device:TVkDevice;display:TVkDisplayKHR;const pDisplayPowerInfo:PVkDisplayPowerInfoEXT):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkRegisterDeviceEventEXT=function(device:TVkDevice;const pDeviceEventInfo:PVkDeviceEventInfoEXT;const pAllocator:PVkAllocationCallbacks;pFence:PVkFence):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkRegisterDisplayEventEXT=function(device:TVkDevice;display:TVkDisplayKHR;const pDisplayEventInfo:PVkDisplayEventInfoEXT;const pAllocator:PVkAllocationCallbacks;pFence:PVkFence):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetSwapchainCounterEXT=function(device:TVkDevice;swapchain:TVkSwapchainKHR;counter:TVkSurfaceCounterFlagBitsEXT;pCounterValue:PVkUInt64):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPhysicalDeviceSurfaceCapabilities2EXT=function(physicalDevice:TVkPhysicalDevice;surface:TVkSurfaceKHR;pSurfaceCapabilities:PVkSurfaceCapabilities2EXT):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkEnumeratePhysicalDeviceGroups=function(instance:TVkInstance;pPhysicalDeviceGroupCount:PVkUInt32;pPhysicalDeviceGroupProperties:PVkPhysicalDeviceGroupProperties):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkEnumeratePhysicalDeviceGroupsKHR=function(instance:TVkInstance;pPhysicalDeviceGroupCount:PVkUInt32;pPhysicalDeviceGroupProperties:PVkPhysicalDeviceGroupProperties):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetDeviceGroupPeerMemoryFeatures=procedure(device:TVkDevice;heapIndex:TVkUInt32;localDeviceIndex:TVkUInt32;remoteDeviceIndex:TVkUInt32;pPeerMemoryFeatures:PVkPeerMemoryFeatureFlags); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetDeviceGroupPeerMemoryFeaturesKHR=procedure(device:TVkDevice;heapIndex:TVkUInt32;localDeviceIndex:TVkUInt32;remoteDeviceIndex:TVkUInt32;pPeerMemoryFeatures:PVkPeerMemoryFeatureFlags); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkBindBufferMemory2=function(device:TVkDevice;bindInfoCount:TVkUInt32;const pBindInfos:PVkBindBufferMemoryInfo):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkBindBufferMemory2KHR=function(device:TVkDevice;bindInfoCount:TVkUInt32;const pBindInfos:PVkBindBufferMemoryInfo):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkBindImageMemory2=function(device:TVkDevice;bindInfoCount:TVkUInt32;const pBindInfos:PVkBindImageMemoryInfo):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkBindImageMemory2KHR=function(device:TVkDevice;bindInfoCount:TVkUInt32;const pBindInfos:PVkBindImageMemoryInfo):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetDeviceMask=procedure(commandBuffer:TVkCommandBuffer;deviceMask:TVkUInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetDeviceMaskKHR=procedure(commandBuffer:TVkCommandBuffer;deviceMask:TVkUInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetDeviceGroupPresentCapabilitiesKHR=function(device:TVkDevice;pDeviceGroupPresentCapabilities:PVkDeviceGroupPresentCapabilitiesKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetDeviceGroupSurfacePresentModesKHR=function(device:TVkDevice;surface:TVkSurfaceKHR;pModes:PVkDeviceGroupPresentModeFlagsKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkAcquireNextImage2KHR=function(device:TVkDevice;const pAcquireInfo:PVkAcquireNextImageInfoKHR;pImageIndex:PVkUInt32):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdDispatchBase=procedure(commandBuffer:TVkCommandBuffer;baseGroupX:TVkUInt32;baseGroupY:TVkUInt32;baseGroupZ:TVkUInt32;groupCountX:TVkUInt32;groupCountY:TVkUInt32;groupCountZ:TVkUInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdDispatchBaseKHR=procedure(commandBuffer:TVkCommandBuffer;baseGroupX:TVkUInt32;baseGroupY:TVkUInt32;baseGroupZ:TVkUInt32;groupCountX:TVkUInt32;groupCountY:TVkUInt32;groupCountZ:TVkUInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPhysicalDevicePresentRectanglesKHR=function(physicalDevice:TVkPhysicalDevice;surface:TVkSurfaceKHR;pRectCount:PVkUInt32;pRects:PVkRect2D):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCreateDescriptorUpdateTemplate=function(device:TVkDevice;const pCreateInfo:PVkDescriptorUpdateTemplateCreateInfo;const pAllocator:PVkAllocationCallbacks;pDescriptorUpdateTemplate:PVkDescriptorUpdateTemplate):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCreateDescriptorUpdateTemplateKHR=function(device:TVkDevice;const pCreateInfo:PVkDescriptorUpdateTemplateCreateInfo;const pAllocator:PVkAllocationCallbacks;pDescriptorUpdateTemplate:PVkDescriptorUpdateTemplate):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkDestroyDescriptorUpdateTemplate=procedure(device:TVkDevice;descriptorUpdateTemplate:TVkDescriptorUpdateTemplate;const pAllocator:PVkAllocationCallbacks); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkDestroyDescriptorUpdateTemplateKHR=procedure(device:TVkDevice;descriptorUpdateTemplate:TVkDescriptorUpdateTemplate;const pAllocator:PVkAllocationCallbacks); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkUpdateDescriptorSetWithTemplate=procedure(device:TVkDevice;descriptorSet:TVkDescriptorSet;descriptorUpdateTemplate:TVkDescriptorUpdateTemplate;const pData:PVkVoid); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkUpdateDescriptorSetWithTemplateKHR=procedure(device:TVkDevice;descriptorSet:TVkDescriptorSet;descriptorUpdateTemplate:TVkDescriptorUpdateTemplate;const pData:PVkVoid); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdPushDescriptorSetWithTemplateKHR=procedure(commandBuffer:TVkCommandBuffer;descriptorUpdateTemplate:TVkDescriptorUpdateTemplate;layout:TVkPipelineLayout;set_:TVkUInt32;const pData:PVkVoid); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkSetHdrMetadataEXT=procedure(device:TVkDevice;swapchainCount:TVkUInt32;const pSwapchains:PVkSwapchainKHR;const pMetadata:PVkHdrMetadataEXT); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetSwapchainStatusKHR=function(device:TVkDevice;swapchain:TVkSwapchainKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetRefreshCycleDurationGOOGLE=function(device:TVkDevice;swapchain:TVkSwapchainKHR;pDisplayTimingProperties:PVkRefreshCycleDurationGOOGLE):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPastPresentationTimingGOOGLE=function(device:TVkDevice;swapchain:TVkSwapchainKHR;pPresentationTimingCount:PVkUInt32;pPresentationTimings:PVkPastPresentationTimingGOOGLE):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

{$ifdef MoltenVK_IOS}
     TvkCreateIOSSurfaceMVK=function(instance:TVkInstance;const pCreateInfo:PVkIOSSurfaceCreateInfoMVK;const pAllocator:PVkAllocationCallbacks;pSurface:PVkSurfaceKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

{$ifdef MoltenVK_MacOS}
     TvkCreateMacOSSurfaceMVK=function(instance:TVkInstance;const pCreateInfo:PVkMacOSSurfaceCreateInfoMVK;const pAllocator:PVkAllocationCallbacks;pSurface:PVkSurfaceKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

     TvkCreateMetalSurfaceEXT=function(instance:TVkInstance;const pCreateInfo:PVkMetalSurfaceCreateInfoEXT;const pAllocator:PVkAllocationCallbacks;pSurface:PVkSurfaceKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetViewportWScalingNV=procedure(commandBuffer:TVkCommandBuffer;firstViewport:TVkUInt32;viewportCount:TVkUInt32;const pViewportWScalings:PVkViewportWScalingNV); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetDiscardRectangleEXT=procedure(commandBuffer:TVkCommandBuffer;firstDiscardRectangle:TVkUInt32;discardRectangleCount:TVkUInt32;const pDiscardRectangles:PVkRect2D); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetDiscardRectangleEnableEXT=procedure(commandBuffer:TVkCommandBuffer;discardRectangleEnable:TVkBool32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetDiscardRectangleModeEXT=procedure(commandBuffer:TVkCommandBuffer;discardRectangleMode:TVkDiscardRectangleModeEXT); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetSampleLocationsEXT=procedure(commandBuffer:TVkCommandBuffer;const pSampleLocationsInfo:PVkSampleLocationsInfoEXT); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPhysicalDeviceMultisamplePropertiesEXT=procedure(physicalDevice:TVkPhysicalDevice;samples:TVkSampleCountFlagBits;pMultisampleProperties:PVkMultisamplePropertiesEXT); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPhysicalDeviceSurfaceCapabilities2KHR=function(physicalDevice:TVkPhysicalDevice;const pSurfaceInfo:PVkPhysicalDeviceSurfaceInfo2KHR;pSurfaceCapabilities:PVkSurfaceCapabilities2KHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPhysicalDeviceSurfaceFormats2KHR=function(physicalDevice:TVkPhysicalDevice;const pSurfaceInfo:PVkPhysicalDeviceSurfaceInfo2KHR;pSurfaceFormatCount:PVkUInt32;pSurfaceFormats:PVkSurfaceFormat2KHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPhysicalDeviceDisplayProperties2KHR=function(physicalDevice:TVkPhysicalDevice;pPropertyCount:PVkUInt32;pProperties:PVkDisplayProperties2KHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPhysicalDeviceDisplayPlaneProperties2KHR=function(physicalDevice:TVkPhysicalDevice;pPropertyCount:PVkUInt32;pProperties:PVkDisplayPlaneProperties2KHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetDisplayModeProperties2KHR=function(physicalDevice:TVkPhysicalDevice;display:TVkDisplayKHR;pPropertyCount:PVkUInt32;pProperties:PVkDisplayModeProperties2KHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetDisplayPlaneCapabilities2KHR=function(physicalDevice:TVkPhysicalDevice;const pDisplayPlaneInfo:PVkDisplayPlaneInfo2KHR;pCapabilities:PVkDisplayPlaneCapabilities2KHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetBufferMemoryRequirements2=procedure(device:TVkDevice;const pInfo:PVkBufferMemoryRequirementsInfo2;pMemoryRequirements:PVkMemoryRequirements2); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetBufferMemoryRequirements2KHR=procedure(device:TVkDevice;const pInfo:PVkBufferMemoryRequirementsInfo2;pMemoryRequirements:PVkMemoryRequirements2); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetImageMemoryRequirements2=procedure(device:TVkDevice;const pInfo:PVkImageMemoryRequirementsInfo2;pMemoryRequirements:PVkMemoryRequirements2); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetImageMemoryRequirements2KHR=procedure(device:TVkDevice;const pInfo:PVkImageMemoryRequirementsInfo2;pMemoryRequirements:PVkMemoryRequirements2); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetImageSparseMemoryRequirements2=procedure(device:TVkDevice;const pInfo:PVkImageSparseMemoryRequirementsInfo2;pSparseMemoryRequirementCount:PVkUInt32;pSparseMemoryRequirements:PVkSparseImageMemoryRequirements2); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetImageSparseMemoryRequirements2KHR=procedure(device:TVkDevice;const pInfo:PVkImageSparseMemoryRequirementsInfo2;pSparseMemoryRequirementCount:PVkUInt32;pSparseMemoryRequirements:PVkSparseImageMemoryRequirements2); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetDeviceBufferMemoryRequirements=procedure(device:TVkDevice;const pInfo:PVkDeviceBufferMemoryRequirements;pMemoryRequirements:PVkMemoryRequirements2); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetDeviceBufferMemoryRequirementsKHR=procedure(device:TVkDevice;const pInfo:PVkDeviceBufferMemoryRequirements;pMemoryRequirements:PVkMemoryRequirements2); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetDeviceImageMemoryRequirements=procedure(device:TVkDevice;const pInfo:PVkDeviceImageMemoryRequirements;pMemoryRequirements:PVkMemoryRequirements2); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetDeviceImageMemoryRequirementsKHR=procedure(device:TVkDevice;const pInfo:PVkDeviceImageMemoryRequirements;pMemoryRequirements:PVkMemoryRequirements2); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetDeviceImageSparseMemoryRequirements=procedure(device:TVkDevice;const pInfo:PVkDeviceImageMemoryRequirements;pSparseMemoryRequirementCount:PVkUInt32;pSparseMemoryRequirements:PVkSparseImageMemoryRequirements2); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetDeviceImageSparseMemoryRequirementsKHR=procedure(device:TVkDevice;const pInfo:PVkDeviceImageMemoryRequirements;pSparseMemoryRequirementCount:PVkUInt32;pSparseMemoryRequirements:PVkSparseImageMemoryRequirements2); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCreateSamplerYcbcrConversion=function(device:TVkDevice;const pCreateInfo:PVkSamplerYcbcrConversionCreateInfo;const pAllocator:PVkAllocationCallbacks;pYcbcrConversion:PVkSamplerYcbcrConversion):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCreateSamplerYcbcrConversionKHR=function(device:TVkDevice;const pCreateInfo:PVkSamplerYcbcrConversionCreateInfo;const pAllocator:PVkAllocationCallbacks;pYcbcrConversion:PVkSamplerYcbcrConversion):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkDestroySamplerYcbcrConversion=procedure(device:TVkDevice;ycbcrConversion:TVkSamplerYcbcrConversion;const pAllocator:PVkAllocationCallbacks); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkDestroySamplerYcbcrConversionKHR=procedure(device:TVkDevice;ycbcrConversion:TVkSamplerYcbcrConversion;const pAllocator:PVkAllocationCallbacks); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetDeviceQueue2=procedure(device:TVkDevice;const pQueueInfo:PVkDeviceQueueInfo2;pQueue:PVkQueue); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCreateValidationCacheEXT=function(device:TVkDevice;const pCreateInfo:PVkValidationCacheCreateInfoEXT;const pAllocator:PVkAllocationCallbacks;pValidationCache:PVkValidationCacheEXT):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkDestroyValidationCacheEXT=procedure(device:TVkDevice;validationCache:TVkValidationCacheEXT;const pAllocator:PVkAllocationCallbacks); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetValidationCacheDataEXT=function(device:TVkDevice;validationCache:TVkValidationCacheEXT;pDataSize:PVkSize;pData:PVkVoid):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkMergeValidationCachesEXT=function(device:TVkDevice;dstCache:TVkValidationCacheEXT;srcCacheCount:TVkUInt32;const pSrcCaches:PVkValidationCacheEXT):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetDescriptorSetLayoutSupport=procedure(device:TVkDevice;const pCreateInfo:PVkDescriptorSetLayoutCreateInfo;pSupport:PVkDescriptorSetLayoutSupport); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetDescriptorSetLayoutSupportKHR=procedure(device:TVkDevice;const pCreateInfo:PVkDescriptorSetLayoutCreateInfo;pSupport:PVkDescriptorSetLayoutSupport); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetSwapchainGrallocUsageANDROID=function(device:TVkDevice;format:TVkFormat;imageUsage:TVkImageUsageFlags;grallocUsage:PVkInt32):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

{$ifdef Android}
     TvkGetSwapchainGrallocUsage2ANDROID=function(device:TVkDevice;format:TVkFormat;imageUsage:TVkImageUsageFlags;swapchainImageUsage:TVkSwapchainImageUsageFlagsANDROID;grallocConsumerUsage:PVkUInt64;grallocProducerUsage:PVkUInt64):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

     TvkAcquireImageANDROID=function(device:TVkDevice;image:TVkImage;nativeFenceFd:TVkInt32;semaphore:TVkSemaphore;fence:TVkFence):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkQueueSignalReleaseImageANDROID=function(queue:TVkQueue;waitSemaphoreCount:TVkUInt32;const pWaitSemaphores:PVkSemaphore;image:TVkImage;pNativeFenceFd:PVkInt32):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetShaderInfoAMD=function(device:TVkDevice;pipeline:TVkPipeline;shaderStage:TVkShaderStageFlagBits;infoType:TVkShaderInfoTypeAMD;pInfoSize:PVkSize;pInfo:PVkVoid):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkSetLocalDimmingAMD=procedure(device:TVkDevice;swapChain:TVkSwapchainKHR;localDimmingEnable:TVkBool32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPhysicalDeviceCalibrateableTimeDomainsEXT=function(physicalDevice:TVkPhysicalDevice;pTimeDomainCount:PVkUInt32;pTimeDomains:PVkTimeDomainEXT):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetCalibratedTimestampsEXT=function(device:TVkDevice;timestampCount:TVkUInt32;const pTimestampInfos:PVkCalibratedTimestampInfoEXT;pTimestamps:PVkUInt64;pMaxDeviation:PVkUInt64):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkSetDebugUtilsObjectNameEXT=function(device:TVkDevice;const pNameInfo:PVkDebugUtilsObjectNameInfoEXT):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkSetDebugUtilsObjectTagEXT=function(device:TVkDevice;const pTagInfo:PVkDebugUtilsObjectTagInfoEXT):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkQueueBeginDebugUtilsLabelEXT=procedure(queue:TVkQueue;const pLabelInfo:PVkDebugUtilsLabelEXT); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkQueueEndDebugUtilsLabelEXT=procedure(queue:TVkQueue); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkQueueInsertDebugUtilsLabelEXT=procedure(queue:TVkQueue;const pLabelInfo:PVkDebugUtilsLabelEXT); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdBeginDebugUtilsLabelEXT=procedure(commandBuffer:TVkCommandBuffer;const pLabelInfo:PVkDebugUtilsLabelEXT); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdEndDebugUtilsLabelEXT=procedure(commandBuffer:TVkCommandBuffer); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdInsertDebugUtilsLabelEXT=procedure(commandBuffer:TVkCommandBuffer;const pLabelInfo:PVkDebugUtilsLabelEXT); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCreateDebugUtilsMessengerEXT=function(instance:TVkInstance;const pCreateInfo:PVkDebugUtilsMessengerCreateInfoEXT;const pAllocator:PVkAllocationCallbacks;pMessenger:PVkDebugUtilsMessengerEXT):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkDestroyDebugUtilsMessengerEXT=procedure(instance:TVkInstance;messenger:TVkDebugUtilsMessengerEXT;const pAllocator:PVkAllocationCallbacks); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkSubmitDebugUtilsMessageEXT=procedure(instance:TVkInstance;messageSeverity:TVkDebugUtilsMessageSeverityFlagBitsEXT;messageTypes:TVkDebugUtilsMessageTypeFlagsEXT;const pCallbackData:PVkDebugUtilsMessengerCallbackDataEXT); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetMemoryHostPointerPropertiesEXT=function(device:TVkDevice;handleType:TVkExternalMemoryHandleTypeFlagBits;const pHostPointer:PVkVoid;pMemoryHostPointerProperties:PVkMemoryHostPointerPropertiesEXT):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdWriteBufferMarkerAMD=procedure(commandBuffer:TVkCommandBuffer;pipelineStage:TVkPipelineStageFlagBits;dstBuffer:TVkBuffer;dstOffset:TVkDeviceSize;marker:TVkUInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCreateRenderPass2=function(device:TVkDevice;const pCreateInfo:PVkRenderPassCreateInfo2;const pAllocator:PVkAllocationCallbacks;pRenderPass:PVkRenderPass):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCreateRenderPass2KHR=function(device:TVkDevice;const pCreateInfo:PVkRenderPassCreateInfo2;const pAllocator:PVkAllocationCallbacks;pRenderPass:PVkRenderPass):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdBeginRenderPass2=procedure(commandBuffer:TVkCommandBuffer;const pRenderPassBegin:PVkRenderPassBeginInfo;const pSubpassBeginInfo:PVkSubpassBeginInfo); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdBeginRenderPass2KHR=procedure(commandBuffer:TVkCommandBuffer;const pRenderPassBegin:PVkRenderPassBeginInfo;const pSubpassBeginInfo:PVkSubpassBeginInfo); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdNextSubpass2=procedure(commandBuffer:TVkCommandBuffer;const pSubpassBeginInfo:PVkSubpassBeginInfo;const pSubpassEndInfo:PVkSubpassEndInfo); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdNextSubpass2KHR=procedure(commandBuffer:TVkCommandBuffer;const pSubpassBeginInfo:PVkSubpassBeginInfo;const pSubpassEndInfo:PVkSubpassEndInfo); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdEndRenderPass2=procedure(commandBuffer:TVkCommandBuffer;const pSubpassEndInfo:PVkSubpassEndInfo); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdEndRenderPass2KHR=procedure(commandBuffer:TVkCommandBuffer;const pSubpassEndInfo:PVkSubpassEndInfo); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetSemaphoreCounterValue=function(device:TVkDevice;semaphore:TVkSemaphore;pValue:PVkUInt64):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetSemaphoreCounterValueKHR=function(device:TVkDevice;semaphore:TVkSemaphore;pValue:PVkUInt64):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkWaitSemaphores=function(device:TVkDevice;const pWaitInfo:PVkSemaphoreWaitInfo;timeout:TVkUInt64):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkWaitSemaphoresKHR=function(device:TVkDevice;const pWaitInfo:PVkSemaphoreWaitInfo;timeout:TVkUInt64):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkSignalSemaphore=function(device:TVkDevice;const pSignalInfo:PVkSemaphoreSignalInfo):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkSignalSemaphoreKHR=function(device:TVkDevice;const pSignalInfo:PVkSemaphoreSignalInfo):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

{$ifdef Android}
     TvkGetAndroidHardwareBufferPropertiesANDROID=function(device:TVkDevice;const buffer:PVkAndroidAHardwareBuffer;pProperties:PVkAndroidHardwareBufferPropertiesANDROID):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

{$ifdef Android}
     TvkGetMemoryAndroidHardwareBufferANDROID=function(device:TVkDevice;const pInfo:PVkMemoryGetAndroidHardwareBufferInfoANDROID;pBuffer:PPVkAndroidAHardwareBuffer):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

     TvkCmdDrawIndirectCount=procedure(commandBuffer:TVkCommandBuffer;buffer:TVkBuffer;offset:TVkDeviceSize;countBuffer:TVkBuffer;countBufferOffset:TVkDeviceSize;maxDrawCount:TVkUInt32;stride:TVkUInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdDrawIndirectCountKHR=procedure(commandBuffer:TVkCommandBuffer;buffer:TVkBuffer;offset:TVkDeviceSize;countBuffer:TVkBuffer;countBufferOffset:TVkDeviceSize;maxDrawCount:TVkUInt32;stride:TVkUInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdDrawIndirectCountAMD=procedure(commandBuffer:TVkCommandBuffer;buffer:TVkBuffer;offset:TVkDeviceSize;countBuffer:TVkBuffer;countBufferOffset:TVkDeviceSize;maxDrawCount:TVkUInt32;stride:TVkUInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdDrawIndexedIndirectCount=procedure(commandBuffer:TVkCommandBuffer;buffer:TVkBuffer;offset:TVkDeviceSize;countBuffer:TVkBuffer;countBufferOffset:TVkDeviceSize;maxDrawCount:TVkUInt32;stride:TVkUInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdDrawIndexedIndirectCountKHR=procedure(commandBuffer:TVkCommandBuffer;buffer:TVkBuffer;offset:TVkDeviceSize;countBuffer:TVkBuffer;countBufferOffset:TVkDeviceSize;maxDrawCount:TVkUInt32;stride:TVkUInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdDrawIndexedIndirectCountAMD=procedure(commandBuffer:TVkCommandBuffer;buffer:TVkBuffer;offset:TVkDeviceSize;countBuffer:TVkBuffer;countBufferOffset:TVkDeviceSize;maxDrawCount:TVkUInt32;stride:TVkUInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetCheckpointNV=procedure(commandBuffer:TVkCommandBuffer;const pCheckpointMarker:PVkVoid); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetQueueCheckpointDataNV=procedure(queue:TVkQueue;pCheckpointDataCount:PVkUInt32;pCheckpointData:PVkCheckpointDataNV); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdBindTransformFeedbackBuffersEXT=procedure(commandBuffer:TVkCommandBuffer;firstBinding:TVkUInt32;bindingCount:TVkUInt32;const pBuffers:PVkBuffer;const pOffsets:PVkDeviceSize;const pSizes:PVkDeviceSize); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdBeginTransformFeedbackEXT=procedure(commandBuffer:TVkCommandBuffer;firstCounterBuffer:TVkUInt32;counterBufferCount:TVkUInt32;const pCounterBuffers:PVkBuffer;const pCounterBufferOffsets:PVkDeviceSize); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdEndTransformFeedbackEXT=procedure(commandBuffer:TVkCommandBuffer;firstCounterBuffer:TVkUInt32;counterBufferCount:TVkUInt32;const pCounterBuffers:PVkBuffer;const pCounterBufferOffsets:PVkDeviceSize); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdBeginQueryIndexedEXT=procedure(commandBuffer:TVkCommandBuffer;queryPool:TVkQueryPool;query:TVkUInt32;flags:TVkQueryControlFlags;index:TVkUInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdEndQueryIndexedEXT=procedure(commandBuffer:TVkCommandBuffer;queryPool:TVkQueryPool;query:TVkUInt32;index:TVkUInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdDrawIndirectByteCountEXT=procedure(commandBuffer:TVkCommandBuffer;instanceCount:TVkUInt32;firstInstance:TVkUInt32;counterBuffer:TVkBuffer;counterBufferOffset:TVkDeviceSize;counterOffset:TVkUInt32;vertexStride:TVkUInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetExclusiveScissorNV=procedure(commandBuffer:TVkCommandBuffer;firstExclusiveScissor:TVkUInt32;exclusiveScissorCount:TVkUInt32;const pExclusiveScissors:PVkRect2D); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetExclusiveScissorEnableNV=procedure(commandBuffer:TVkCommandBuffer;firstExclusiveScissor:TVkUInt32;exclusiveScissorCount:TVkUInt32;const pExclusiveScissorEnables:PVkBool32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdBindShadingRateImageNV=procedure(commandBuffer:TVkCommandBuffer;imageView:TVkImageView;imageLayout:TVkImageLayout); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetViewportShadingRatePaletteNV=procedure(commandBuffer:TVkCommandBuffer;firstViewport:TVkUInt32;viewportCount:TVkUInt32;const pShadingRatePalettes:PVkShadingRatePaletteNV); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetCoarseSampleOrderNV=procedure(commandBuffer:TVkCommandBuffer;sampleOrderType:TVkCoarseSampleOrderTypeNV;customSampleOrderCount:TVkUInt32;const pCustomSampleOrders:PVkCoarseSampleOrderCustomNV); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdDrawMeshTasksNV=procedure(commandBuffer:TVkCommandBuffer;taskCount:TVkUInt32;firstTask:TVkUInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdDrawMeshTasksIndirectNV=procedure(commandBuffer:TVkCommandBuffer;buffer:TVkBuffer;offset:TVkDeviceSize;drawCount:TVkUInt32;stride:TVkUInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdDrawMeshTasksIndirectCountNV=procedure(commandBuffer:TVkCommandBuffer;buffer:TVkBuffer;offset:TVkDeviceSize;countBuffer:TVkBuffer;countBufferOffset:TVkDeviceSize;maxDrawCount:TVkUInt32;stride:TVkUInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdDrawMeshTasksEXT=procedure(commandBuffer:TVkCommandBuffer;groupCountX:TVkUInt32;groupCountY:TVkUInt32;groupCountZ:TVkUInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdDrawMeshTasksIndirectEXT=procedure(commandBuffer:TVkCommandBuffer;buffer:TVkBuffer;offset:TVkDeviceSize;drawCount:TVkUInt32;stride:TVkUInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdDrawMeshTasksIndirectCountEXT=procedure(commandBuffer:TVkCommandBuffer;buffer:TVkBuffer;offset:TVkDeviceSize;countBuffer:TVkBuffer;countBufferOffset:TVkDeviceSize;maxDrawCount:TVkUInt32;stride:TVkUInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCompileDeferredNV=function(device:TVkDevice;pipeline:TVkPipeline;shader:TVkUInt32):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCreateAccelerationStructureNV=function(device:TVkDevice;const pCreateInfo:PVkAccelerationStructureCreateInfoNV;const pAllocator:PVkAllocationCallbacks;pAccelerationStructure:PVkAccelerationStructureNV):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdBindInvocationMaskHUAWEI=procedure(commandBuffer:TVkCommandBuffer;imageView:TVkImageView;imageLayout:TVkImageLayout); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkDestroyAccelerationStructureKHR=procedure(device:TVkDevice;accelerationStructure:TVkAccelerationStructureKHR;const pAllocator:PVkAllocationCallbacks); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkDestroyAccelerationStructureNV=procedure(device:TVkDevice;accelerationStructure:TVkAccelerationStructureNV;const pAllocator:PVkAllocationCallbacks); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetAccelerationStructureMemoryRequirementsNV=procedure(device:TVkDevice;const pInfo:PVkAccelerationStructureMemoryRequirementsInfoNV;pMemoryRequirements:PVkMemoryRequirements2KHR); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkBindAccelerationStructureMemoryNV=function(device:TVkDevice;bindInfoCount:TVkUInt32;const pBindInfos:PVkBindAccelerationStructureMemoryInfoNV):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdCopyAccelerationStructureNV=procedure(commandBuffer:TVkCommandBuffer;dst:TVkAccelerationStructureNV;src:TVkAccelerationStructureNV;mode:TVkCopyAccelerationStructureModeKHR); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdCopyAccelerationStructureKHR=procedure(commandBuffer:TVkCommandBuffer;const pInfo:PVkCopyAccelerationStructureInfoKHR); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCopyAccelerationStructureKHR=function(device:TVkDevice;deferredOperation:TVkDeferredOperationKHR;const pInfo:PVkCopyAccelerationStructureInfoKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdCopyAccelerationStructureToMemoryKHR=procedure(commandBuffer:TVkCommandBuffer;const pInfo:PVkCopyAccelerationStructureToMemoryInfoKHR); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCopyAccelerationStructureToMemoryKHR=function(device:TVkDevice;deferredOperation:TVkDeferredOperationKHR;const pInfo:PVkCopyAccelerationStructureToMemoryInfoKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdCopyMemoryToAccelerationStructureKHR=procedure(commandBuffer:TVkCommandBuffer;const pInfo:PVkCopyMemoryToAccelerationStructureInfoKHR); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCopyMemoryToAccelerationStructureKHR=function(device:TVkDevice;deferredOperation:TVkDeferredOperationKHR;const pInfo:PVkCopyMemoryToAccelerationStructureInfoKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdWriteAccelerationStructuresPropertiesKHR=procedure(commandBuffer:TVkCommandBuffer;accelerationStructureCount:TVkUInt32;const pAccelerationStructures:PVkAccelerationStructureKHR;queryType:TVkQueryType;queryPool:TVkQueryPool;firstQuery:TVkUInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdWriteAccelerationStructuresPropertiesNV=procedure(commandBuffer:TVkCommandBuffer;accelerationStructureCount:TVkUInt32;const pAccelerationStructures:PVkAccelerationStructureNV;queryType:TVkQueryType;queryPool:TVkQueryPool;firstQuery:TVkUInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdBuildAccelerationStructureNV=procedure(commandBuffer:TVkCommandBuffer;const pInfo:PVkAccelerationStructureInfoNV;instanceData:TVkBuffer;instanceOffset:TVkDeviceSize;update:TVkBool32;dst:TVkAccelerationStructureNV;src:TVkAccelerationStructureNV;scratch:TVkBuffer;scratchOffset:TVkDeviceSize); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkWriteAccelerationStructuresPropertiesKHR=function(device:TVkDevice;accelerationStructureCount:TVkUInt32;const pAccelerationStructures:PVkAccelerationStructureKHR;queryType:TVkQueryType;dataSize:TVkSize;pData:PVkVoid;stride:TVkSize):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdTraceRaysKHR=procedure(commandBuffer:TVkCommandBuffer;const pRaygenShaderBindingTable:PVkStridedDeviceAddressRegionKHR;const pMissShaderBindingTable:PVkStridedDeviceAddressRegionKHR;const pHitShaderBindingTable:PVkStridedDeviceAddressRegionKHR;const pCallableShaderBindingTable:PVkStridedDeviceAddressRegionKHR;width:TVkUInt32;height:TVkUInt32;depth:TVkUInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdTraceRaysNV=procedure(commandBuffer:TVkCommandBuffer;raygenShaderBindingTableBuffer:TVkBuffer;raygenShaderBindingOffset:TVkDeviceSize;missShaderBindingTableBuffer:TVkBuffer;missShaderBindingOffset:TVkDeviceSize;missShaderBindingStride:TVkDeviceSize;hitShaderBindingTableBuffer:TVkBuffer;hitShaderBindingOffset:TVkDeviceSize;hitShaderBindingStride:TVkDeviceSize;callableShaderBindingTableBuffer:TVkBuffer;callableShaderBindingOffset:TVkDeviceSize;callableShaderBindingStride:TVkDeviceSize;width:TVkUInt32;height:TVkUInt32;depth:TVkUInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetRayTracingShaderGroupHandlesKHR=function(device:TVkDevice;pipeline:TVkPipeline;firstGroup:TVkUInt32;groupCount:TVkUInt32;dataSize:TVkSize;pData:PVkVoid):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetRayTracingShaderGroupHandlesNV=function(device:TVkDevice;pipeline:TVkPipeline;firstGroup:TVkUInt32;groupCount:TVkUInt32;dataSize:TVkSize;pData:PVkVoid):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetRayTracingCaptureReplayShaderGroupHandlesKHR=function(device:TVkDevice;pipeline:TVkPipeline;firstGroup:TVkUInt32;groupCount:TVkUInt32;dataSize:TVkSize;pData:PVkVoid):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetAccelerationStructureHandleNV=function(device:TVkDevice;accelerationStructure:TVkAccelerationStructureNV;dataSize:TVkSize;pData:PVkVoid):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCreateRayTracingPipelinesNV=function(device:TVkDevice;pipelineCache:TVkPipelineCache;createInfoCount:TVkUInt32;const pCreateInfos:PVkRayTracingPipelineCreateInfoNV;const pAllocator:PVkAllocationCallbacks;pPipelines:PVkPipeline):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCreateRayTracingPipelinesKHR=function(device:TVkDevice;deferredOperation:TVkDeferredOperationKHR;pipelineCache:TVkPipelineCache;createInfoCount:TVkUInt32;const pCreateInfos:PVkRayTracingPipelineCreateInfoKHR;const pAllocator:PVkAllocationCallbacks;pPipelines:PVkPipeline):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPhysicalDeviceCooperativeMatrixPropertiesNV=function(physicalDevice:TVkPhysicalDevice;pPropertyCount:PVkUInt32;pProperties:PVkCooperativeMatrixPropertiesNV):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdTraceRaysIndirectKHR=procedure(commandBuffer:TVkCommandBuffer;const pRaygenShaderBindingTable:PVkStridedDeviceAddressRegionKHR;const pMissShaderBindingTable:PVkStridedDeviceAddressRegionKHR;const pHitShaderBindingTable:PVkStridedDeviceAddressRegionKHR;const pCallableShaderBindingTable:PVkStridedDeviceAddressRegionKHR;indirectDeviceAddress:TVkDeviceAddress); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdTraceRaysIndirect2KHR=procedure(commandBuffer:TVkCommandBuffer;indirectDeviceAddress:TVkDeviceAddress); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetDeviceAccelerationStructureCompatibilityKHR=procedure(device:TVkDevice;const pVersionInfo:PVkAccelerationStructureVersionInfoKHR;pCompatibility:PVkAccelerationStructureCompatibilityKHR); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetRayTracingShaderGroupStackSizeKHR=function(device:TVkDevice;pipeline:TVkPipeline;group:TVkUInt32;groupShader:TVkShaderGroupShaderKHR):TVkDeviceSize; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetRayTracingPipelineStackSizeKHR=procedure(commandBuffer:TVkCommandBuffer;pipelineStackSize:TVkUInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetImageViewHandleNVX=function(device:TVkDevice;const pInfo:PVkImageViewHandleInfoNVX):TVkUInt32; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetImageViewAddressNVX=function(device:TVkDevice;imageView:TVkImageView;pProperties:PVkImageViewAddressPropertiesNVX):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPhysicalDeviceSurfacePresentModes2EXT=function(physicalDevice:TVkPhysicalDevice;const pSurfaceInfo:PVkPhysicalDeviceSurfaceInfo2KHR;pPresentModeCount:PVkUInt32;pPresentModes:PVkPresentModeKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetDeviceGroupSurfacePresentModes2EXT=function(device:TVkDevice;const pSurfaceInfo:PVkPhysicalDeviceSurfaceInfo2KHR;pModes:PVkDeviceGroupPresentModeFlagsKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkAcquireFullScreenExclusiveModeEXT=function(device:TVkDevice;swapchain:TVkSwapchainKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkReleaseFullScreenExclusiveModeEXT=function(device:TVkDevice;swapchain:TVkSwapchainKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR=function(physicalDevice:TVkPhysicalDevice;queueFamilyIndex:TVkUInt32;pCounterCount:PVkUInt32;pCounters:PVkPerformanceCounterKHR;pCounterDescriptions:PVkPerformanceCounterDescriptionKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR=procedure(physicalDevice:TVkPhysicalDevice;const pPerformanceQueryCreateInfo:PVkQueryPoolPerformanceCreateInfoKHR;pNumPasses:PVkUInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkAcquireProfilingLockKHR=function(device:TVkDevice;const pInfo:PVkAcquireProfilingLockInfoKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkReleaseProfilingLockKHR=procedure(device:TVkDevice); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetImageDrmFormatModifierPropertiesEXT=function(device:TVkDevice;image:TVkImage;pProperties:PVkImageDrmFormatModifierPropertiesEXT):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetBufferOpaqueCaptureAddress=function(device:TVkDevice;const pInfo:PVkBufferDeviceAddressInfo):TVkUInt64; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetBufferOpaqueCaptureAddressKHR=function(device:TVkDevice;const pInfo:PVkBufferDeviceAddressInfo):TVkUInt64; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetBufferDeviceAddress=function(device:TVkDevice;const pInfo:PVkBufferDeviceAddressInfo):TVkDeviceAddress; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetBufferDeviceAddressKHR=function(device:TVkDevice;const pInfo:PVkBufferDeviceAddressInfo):TVkDeviceAddress; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetBufferDeviceAddressEXT=function(device:TVkDevice;const pInfo:PVkBufferDeviceAddressInfo):TVkDeviceAddress; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCreateHeadlessSurfaceEXT=function(instance:TVkInstance;const pCreateInfo:PVkHeadlessSurfaceCreateInfoEXT;const pAllocator:PVkAllocationCallbacks;pSurface:PVkSurfaceKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV=function(physicalDevice:TVkPhysicalDevice;pCombinationCount:PVkUInt32;pCombinations:PVkFramebufferMixedSamplesCombinationNV):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkInitializePerformanceApiINTEL=function(device:TVkDevice;const pInitializeInfo:PVkInitializePerformanceApiInfoINTEL):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkUninitializePerformanceApiINTEL=procedure(device:TVkDevice); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetPerformanceMarkerINTEL=function(commandBuffer:TVkCommandBuffer;const pMarkerInfo:PVkPerformanceMarkerInfoINTEL):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetPerformanceStreamMarkerINTEL=function(commandBuffer:TVkCommandBuffer;const pMarkerInfo:PVkPerformanceStreamMarkerInfoINTEL):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetPerformanceOverrideINTEL=function(commandBuffer:TVkCommandBuffer;const pOverrideInfo:PVkPerformanceOverrideInfoINTEL):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkAcquirePerformanceConfigurationINTEL=function(device:TVkDevice;const pAcquireInfo:PVkPerformanceConfigurationAcquireInfoINTEL;pConfiguration:PVkPerformanceConfigurationINTEL):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkReleasePerformanceConfigurationINTEL=function(device:TVkDevice;configuration:TVkPerformanceConfigurationINTEL):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkQueueSetPerformanceConfigurationINTEL=function(queue:TVkQueue;configuration:TVkPerformanceConfigurationINTEL):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPerformanceParameterINTEL=function(device:TVkDevice;parameter:TVkPerformanceParameterTypeINTEL;pValue:PVkPerformanceValueINTEL):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetDeviceMemoryOpaqueCaptureAddress=function(device:TVkDevice;const pInfo:PVkDeviceMemoryOpaqueCaptureAddressInfo):TVkUInt64; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetDeviceMemoryOpaqueCaptureAddressKHR=function(device:TVkDevice;const pInfo:PVkDeviceMemoryOpaqueCaptureAddressInfo):TVkUInt64; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPipelineExecutablePropertiesKHR=function(device:TVkDevice;const pPipelineInfo:PVkPipelineInfoKHR;pExecutableCount:PVkUInt32;pProperties:PVkPipelineExecutablePropertiesKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPipelineExecutableStatisticsKHR=function(device:TVkDevice;const pExecutableInfo:PVkPipelineExecutableInfoKHR;pStatisticCount:PVkUInt32;pStatistics:PVkPipelineExecutableStatisticKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPipelineExecutableInternalRepresentationsKHR=function(device:TVkDevice;const pExecutableInfo:PVkPipelineExecutableInfoKHR;pInternalRepresentationCount:PVkUInt32;pInternalRepresentations:PVkPipelineExecutableInternalRepresentationKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetLineStippleEXT=procedure(commandBuffer:TVkCommandBuffer;lineStippleFactor:TVkUInt32;lineStipplePattern:TVkUInt16); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

{$ifdef VulkanSC}
     TvkGetFaultData=function(device:TVkDevice;faultQueryBehavior:TVkFaultQueryBehavior;pUnrecordedFaults:PVkBool32;pFaultCount:PVkUInt32;pFaults:PVkFaultData):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

     TvkGetPhysicalDeviceToolProperties=function(physicalDevice:TVkPhysicalDevice;pToolCount:PVkUInt32;pToolProperties:PVkPhysicalDeviceToolProperties):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPhysicalDeviceToolPropertiesEXT=function(physicalDevice:TVkPhysicalDevice;pToolCount:PVkUInt32;pToolProperties:PVkPhysicalDeviceToolProperties):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCreateAccelerationStructureKHR=function(device:TVkDevice;const pCreateInfo:PVkAccelerationStructureCreateInfoKHR;const pAllocator:PVkAllocationCallbacks;pAccelerationStructure:PVkAccelerationStructureKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdBuildAccelerationStructuresKHR=procedure(commandBuffer:TVkCommandBuffer;infoCount:TVkUInt32;const pInfos:PVkAccelerationStructureBuildGeometryInfoKHR;const ppBuildRangeInfos:PPVkAccelerationStructureBuildRangeInfoKHR); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdBuildAccelerationStructuresIndirectKHR=procedure(commandBuffer:TVkCommandBuffer;infoCount:TVkUInt32;const pInfos:PVkAccelerationStructureBuildGeometryInfoKHR;const pIndirectDeviceAddresses:PVkDeviceAddress;const pIndirectStrides:PVkUInt32;const ppMaxPrimitiveCounts:PPVkUInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkBuildAccelerationStructuresKHR=function(device:TVkDevice;deferredOperation:TVkDeferredOperationKHR;infoCount:TVkUInt32;const pInfos:PVkAccelerationStructureBuildGeometryInfoKHR;const ppBuildRangeInfos:PPVkAccelerationStructureBuildRangeInfoKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetAccelerationStructureDeviceAddressKHR=function(device:TVkDevice;const pInfo:PVkAccelerationStructureDeviceAddressInfoKHR):TVkDeviceAddress; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCreateDeferredOperationKHR=function(device:TVkDevice;const pAllocator:PVkAllocationCallbacks;pDeferredOperation:PVkDeferredOperationKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkDestroyDeferredOperationKHR=procedure(device:TVkDevice;operation:TVkDeferredOperationKHR;const pAllocator:PVkAllocationCallbacks); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetDeferredOperationMaxConcurrencyKHR=function(device:TVkDevice;operation:TVkDeferredOperationKHR):TVkUInt32; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetDeferredOperationResultKHR=function(device:TVkDevice;operation:TVkDeferredOperationKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkDeferredOperationJoinKHR=function(device:TVkDevice;operation:TVkDeferredOperationKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPipelineIndirectMemoryRequirementsNV=procedure(device:TVkDevice;const pCreateInfo:PVkComputePipelineCreateInfo;pMemoryRequirements:PVkMemoryRequirements2); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPipelineIndirectDeviceAddressNV=function(device:TVkDevice;const pInfo:PVkPipelineIndirectDeviceAddressInfoNV):TVkDeviceAddress; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetCullMode=procedure(commandBuffer:TVkCommandBuffer;cullMode:TVkCullModeFlags); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetCullModeEXT=procedure(commandBuffer:TVkCommandBuffer;cullMode:TVkCullModeFlags); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetFrontFace=procedure(commandBuffer:TVkCommandBuffer;frontFace:TVkFrontFace); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetFrontFaceEXT=procedure(commandBuffer:TVkCommandBuffer;frontFace:TVkFrontFace); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetPrimitiveTopology=procedure(commandBuffer:TVkCommandBuffer;primitiveTopology:TVkPrimitiveTopology); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetPrimitiveTopologyEXT=procedure(commandBuffer:TVkCommandBuffer;primitiveTopology:TVkPrimitiveTopology); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetViewportWithCount=procedure(commandBuffer:TVkCommandBuffer;viewportCount:TVkUInt32;const pViewports:PVkViewport); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetViewportWithCountEXT=procedure(commandBuffer:TVkCommandBuffer;viewportCount:TVkUInt32;const pViewports:PVkViewport); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetScissorWithCount=procedure(commandBuffer:TVkCommandBuffer;scissorCount:TVkUInt32;const pScissors:PVkRect2D); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetScissorWithCountEXT=procedure(commandBuffer:TVkCommandBuffer;scissorCount:TVkUInt32;const pScissors:PVkRect2D); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdBindIndexBuffer2KHR=procedure(commandBuffer:TVkCommandBuffer;buffer:TVkBuffer;offset:TVkDeviceSize;size:TVkDeviceSize;indexType:TVkIndexType); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdBindVertexBuffers2=procedure(commandBuffer:TVkCommandBuffer;firstBinding:TVkUInt32;bindingCount:TVkUInt32;const pBuffers:PVkBuffer;const pOffsets:PVkDeviceSize;const pSizes:PVkDeviceSize;const pStrides:PVkDeviceSize); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdBindVertexBuffers2EXT=procedure(commandBuffer:TVkCommandBuffer;firstBinding:TVkUInt32;bindingCount:TVkUInt32;const pBuffers:PVkBuffer;const pOffsets:PVkDeviceSize;const pSizes:PVkDeviceSize;const pStrides:PVkDeviceSize); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetDepthTestEnable=procedure(commandBuffer:TVkCommandBuffer;depthTestEnable:TVkBool32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetDepthTestEnableEXT=procedure(commandBuffer:TVkCommandBuffer;depthTestEnable:TVkBool32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetDepthWriteEnable=procedure(commandBuffer:TVkCommandBuffer;depthWriteEnable:TVkBool32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetDepthWriteEnableEXT=procedure(commandBuffer:TVkCommandBuffer;depthWriteEnable:TVkBool32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetDepthCompareOp=procedure(commandBuffer:TVkCommandBuffer;depthCompareOp:TVkCompareOp); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetDepthCompareOpEXT=procedure(commandBuffer:TVkCommandBuffer;depthCompareOp:TVkCompareOp); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetDepthBoundsTestEnable=procedure(commandBuffer:TVkCommandBuffer;depthBoundsTestEnable:TVkBool32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetDepthBoundsTestEnableEXT=procedure(commandBuffer:TVkCommandBuffer;depthBoundsTestEnable:TVkBool32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetStencilTestEnable=procedure(commandBuffer:TVkCommandBuffer;stencilTestEnable:TVkBool32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetStencilTestEnableEXT=procedure(commandBuffer:TVkCommandBuffer;stencilTestEnable:TVkBool32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetStencilOp=procedure(commandBuffer:TVkCommandBuffer;faceMask:TVkStencilFaceFlags;failOp:TVkStencilOp;passOp:TVkStencilOp;depthFailOp:TVkStencilOp;compareOp:TVkCompareOp); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetStencilOpEXT=procedure(commandBuffer:TVkCommandBuffer;faceMask:TVkStencilFaceFlags;failOp:TVkStencilOp;passOp:TVkStencilOp;depthFailOp:TVkStencilOp;compareOp:TVkCompareOp); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetPatchControlPointsEXT=procedure(commandBuffer:TVkCommandBuffer;patchControlPoints:TVkUInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetRasterizerDiscardEnable=procedure(commandBuffer:TVkCommandBuffer;rasterizerDiscardEnable:TVkBool32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetRasterizerDiscardEnableEXT=procedure(commandBuffer:TVkCommandBuffer;rasterizerDiscardEnable:TVkBool32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetDepthBiasEnable=procedure(commandBuffer:TVkCommandBuffer;depthBiasEnable:TVkBool32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetDepthBiasEnableEXT=procedure(commandBuffer:TVkCommandBuffer;depthBiasEnable:TVkBool32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetLogicOpEXT=procedure(commandBuffer:TVkCommandBuffer;logicOp:TVkLogicOp); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetPrimitiveRestartEnable=procedure(commandBuffer:TVkCommandBuffer;primitiveRestartEnable:TVkBool32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetPrimitiveRestartEnableEXT=procedure(commandBuffer:TVkCommandBuffer;primitiveRestartEnable:TVkBool32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetTessellationDomainOriginEXT=procedure(commandBuffer:TVkCommandBuffer;domainOrigin:TVkTessellationDomainOrigin); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetDepthClampEnableEXT=procedure(commandBuffer:TVkCommandBuffer;depthClampEnable:TVkBool32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetPolygonModeEXT=procedure(commandBuffer:TVkCommandBuffer;polygonMode:TVkPolygonMode); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetRasterizationSamplesEXT=procedure(commandBuffer:TVkCommandBuffer;rasterizationSamples:TVkSampleCountFlagBits); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetSampleMaskEXT=procedure(commandBuffer:TVkCommandBuffer;samples:TVkSampleCountFlagBits;const pSampleMask:PVkSampleMask); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetAlphaToCoverageEnableEXT=procedure(commandBuffer:TVkCommandBuffer;alphaToCoverageEnable:TVkBool32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetAlphaToOneEnableEXT=procedure(commandBuffer:TVkCommandBuffer;alphaToOneEnable:TVkBool32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetLogicOpEnableEXT=procedure(commandBuffer:TVkCommandBuffer;logicOpEnable:TVkBool32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetColorBlendEnableEXT=procedure(commandBuffer:TVkCommandBuffer;firstAttachment:TVkUInt32;attachmentCount:TVkUInt32;const pColorBlendEnables:PVkBool32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetColorBlendEquationEXT=procedure(commandBuffer:TVkCommandBuffer;firstAttachment:TVkUInt32;attachmentCount:TVkUInt32;const pColorBlendEquations:PVkColorBlendEquationEXT); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetColorWriteMaskEXT=procedure(commandBuffer:TVkCommandBuffer;firstAttachment:TVkUInt32;attachmentCount:TVkUInt32;const pColorWriteMasks:PVkColorComponentFlags); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetRasterizationStreamEXT=procedure(commandBuffer:TVkCommandBuffer;rasterizationStream:TVkUInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetConservativeRasterizationModeEXT=procedure(commandBuffer:TVkCommandBuffer;conservativeRasterizationMode:TVkConservativeRasterizationModeEXT); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetExtraPrimitiveOverestimationSizeEXT=procedure(commandBuffer:TVkCommandBuffer;extraPrimitiveOverestimationSize:TVkFloat); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetDepthClipEnableEXT=procedure(commandBuffer:TVkCommandBuffer;depthClipEnable:TVkBool32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetSampleLocationsEnableEXT=procedure(commandBuffer:TVkCommandBuffer;sampleLocationsEnable:TVkBool32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetColorBlendAdvancedEXT=procedure(commandBuffer:TVkCommandBuffer;firstAttachment:TVkUInt32;attachmentCount:TVkUInt32;const pColorBlendAdvanced:PVkColorBlendAdvancedEXT); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetProvokingVertexModeEXT=procedure(commandBuffer:TVkCommandBuffer;provokingVertexMode:TVkProvokingVertexModeEXT); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetLineRasterizationModeEXT=procedure(commandBuffer:TVkCommandBuffer;lineRasterizationMode:TVkLineRasterizationModeEXT); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetLineStippleEnableEXT=procedure(commandBuffer:TVkCommandBuffer;stippledLineEnable:TVkBool32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetDepthClipNegativeOneToOneEXT=procedure(commandBuffer:TVkCommandBuffer;negativeOneToOne:TVkBool32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetViewportWScalingEnableNV=procedure(commandBuffer:TVkCommandBuffer;viewportWScalingEnable:TVkBool32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetViewportSwizzleNV=procedure(commandBuffer:TVkCommandBuffer;firstViewport:TVkUInt32;viewportCount:TVkUInt32;const pViewportSwizzles:PVkViewportSwizzleNV); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetCoverageToColorEnableNV=procedure(commandBuffer:TVkCommandBuffer;coverageToColorEnable:TVkBool32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetCoverageToColorLocationNV=procedure(commandBuffer:TVkCommandBuffer;coverageToColorLocation:TVkUInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetCoverageModulationModeNV=procedure(commandBuffer:TVkCommandBuffer;coverageModulationMode:TVkCoverageModulationModeNV); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetCoverageModulationTableEnableNV=procedure(commandBuffer:TVkCommandBuffer;coverageModulationTableEnable:TVkBool32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetCoverageModulationTableNV=procedure(commandBuffer:TVkCommandBuffer;coverageModulationTableCount:TVkUInt32;const pCoverageModulationTable:PVkFloat); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetShadingRateImageEnableNV=procedure(commandBuffer:TVkCommandBuffer;shadingRateImageEnable:TVkBool32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetCoverageReductionModeNV=procedure(commandBuffer:TVkCommandBuffer;coverageReductionMode:TVkCoverageReductionModeNV); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetRepresentativeFragmentTestEnableNV=procedure(commandBuffer:TVkCommandBuffer;representativeFragmentTestEnable:TVkBool32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCreatePrivateDataSlot=function(device:TVkDevice;const pCreateInfo:PVkPrivateDataSlotCreateInfo;const pAllocator:PVkAllocationCallbacks;pPrivateDataSlot:PVkPrivateDataSlot):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCreatePrivateDataSlotEXT=function(device:TVkDevice;const pCreateInfo:PVkPrivateDataSlotCreateInfo;const pAllocator:PVkAllocationCallbacks;pPrivateDataSlot:PVkPrivateDataSlot):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkDestroyPrivateDataSlot=procedure(device:TVkDevice;privateDataSlot:TVkPrivateDataSlot;const pAllocator:PVkAllocationCallbacks); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkDestroyPrivateDataSlotEXT=procedure(device:TVkDevice;privateDataSlot:TVkPrivateDataSlot;const pAllocator:PVkAllocationCallbacks); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkSetPrivateData=function(device:TVkDevice;objectType:TVkObjectType;objectHandle:TVkUInt64;privateDataSlot:TVkPrivateDataSlot;data:TVkUInt64):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkSetPrivateDataEXT=function(device:TVkDevice;objectType:TVkObjectType;objectHandle:TVkUInt64;privateDataSlot:TVkPrivateDataSlot;data:TVkUInt64):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPrivateData=procedure(device:TVkDevice;objectType:TVkObjectType;objectHandle:TVkUInt64;privateDataSlot:TVkPrivateDataSlot;pData:PVkUInt64); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPrivateDataEXT=procedure(device:TVkDevice;objectType:TVkObjectType;objectHandle:TVkUInt64;privateDataSlot:TVkPrivateDataSlot;pData:PVkUInt64); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdCopyBuffer2=procedure(commandBuffer:TVkCommandBuffer;const pCopyBufferInfo:PVkCopyBufferInfo2); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdCopyBuffer2KHR=procedure(commandBuffer:TVkCommandBuffer;const pCopyBufferInfo:PVkCopyBufferInfo2); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdCopyImage2=procedure(commandBuffer:TVkCommandBuffer;const pCopyImageInfo:PVkCopyImageInfo2); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdCopyImage2KHR=procedure(commandBuffer:TVkCommandBuffer;const pCopyImageInfo:PVkCopyImageInfo2); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdBlitImage2=procedure(commandBuffer:TVkCommandBuffer;const pBlitImageInfo:PVkBlitImageInfo2); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdBlitImage2KHR=procedure(commandBuffer:TVkCommandBuffer;const pBlitImageInfo:PVkBlitImageInfo2); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdCopyBufferToImage2=procedure(commandBuffer:TVkCommandBuffer;const pCopyBufferToImageInfo:PVkCopyBufferToImageInfo2); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdCopyBufferToImage2KHR=procedure(commandBuffer:TVkCommandBuffer;const pCopyBufferToImageInfo:PVkCopyBufferToImageInfo2); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdCopyImageToBuffer2=procedure(commandBuffer:TVkCommandBuffer;const pCopyImageToBufferInfo:PVkCopyImageToBufferInfo2); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdCopyImageToBuffer2KHR=procedure(commandBuffer:TVkCommandBuffer;const pCopyImageToBufferInfo:PVkCopyImageToBufferInfo2); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdResolveImage2=procedure(commandBuffer:TVkCommandBuffer;const pResolveImageInfo:PVkResolveImageInfo2); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdResolveImage2KHR=procedure(commandBuffer:TVkCommandBuffer;const pResolveImageInfo:PVkResolveImageInfo2); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdRefreshObjectsKHR=procedure(commandBuffer:TVkCommandBuffer;const pRefreshObjects:PVkRefreshObjectListKHR); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPhysicalDeviceRefreshableObjectTypesKHR=function(physicalDevice:TVkPhysicalDevice;pRefreshableObjectTypeCount:PVkUInt32;pRefreshableObjectTypes:PVkObjectType):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetFragmentShadingRateKHR=procedure(commandBuffer:TVkCommandBuffer;const pFragmentSize:PVkExtent2D;const combinerOps:TVkFragmentShadingRateCombinerOpKHR); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPhysicalDeviceFragmentShadingRatesKHR=function(physicalDevice:TVkPhysicalDevice;pFragmentShadingRateCount:PVkUInt32;pFragmentShadingRates:PVkPhysicalDeviceFragmentShadingRateKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetFragmentShadingRateEnumNV=procedure(commandBuffer:TVkCommandBuffer;shadingRate:TVkFragmentShadingRateNV;const combinerOps:TVkFragmentShadingRateCombinerOpKHR); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetAccelerationStructureBuildSizesKHR=procedure(device:TVkDevice;buildType:TVkAccelerationStructureBuildTypeKHR;const pBuildInfo:PVkAccelerationStructureBuildGeometryInfoKHR;const pMaxPrimitiveCounts:PVkUInt32;pSizeInfo:PVkAccelerationStructureBuildSizesInfoKHR); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetVertexInputEXT=procedure(commandBuffer:TVkCommandBuffer;vertexBindingDescriptionCount:TVkUInt32;const pVertexBindingDescriptions:PVkVertexInputBindingDescription2EXT;vertexAttributeDescriptionCount:TVkUInt32;const pVertexAttributeDescriptions:PVkVertexInputAttributeDescription2EXT); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetColorWriteEnableEXT=procedure(commandBuffer:TVkCommandBuffer;attachmentCount:TVkUInt32;const pColorWriteEnables:PVkBool32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetEvent2=procedure(commandBuffer:TVkCommandBuffer;event:TVkEvent;const pDependencyInfo:PVkDependencyInfo); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetEvent2KHR=procedure(commandBuffer:TVkCommandBuffer;event:TVkEvent;const pDependencyInfo:PVkDependencyInfo); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdResetEvent2=procedure(commandBuffer:TVkCommandBuffer;event:TVkEvent;stageMask:TVkPipelineStageFlags2); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdResetEvent2KHR=procedure(commandBuffer:TVkCommandBuffer;event:TVkEvent;stageMask:TVkPipelineStageFlags2); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdWaitEvents2=procedure(commandBuffer:TVkCommandBuffer;eventCount:TVkUInt32;const pEvents:PVkEvent;const pDependencyInfos:PVkDependencyInfo); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdWaitEvents2KHR=procedure(commandBuffer:TVkCommandBuffer;eventCount:TVkUInt32;const pEvents:PVkEvent;const pDependencyInfos:PVkDependencyInfo); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdPipelineBarrier2=procedure(commandBuffer:TVkCommandBuffer;const pDependencyInfo:PVkDependencyInfo); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdPipelineBarrier2KHR=procedure(commandBuffer:TVkCommandBuffer;const pDependencyInfo:PVkDependencyInfo); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkQueueSubmit2=function(queue:TVkQueue;submitCount:TVkUInt32;const pSubmits:PVkSubmitInfo2;fence:TVkFence):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkQueueSubmit2KHR=function(queue:TVkQueue;submitCount:TVkUInt32;const pSubmits:PVkSubmitInfo2;fence:TVkFence):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdWriteTimestamp2=procedure(commandBuffer:TVkCommandBuffer;stage:TVkPipelineStageFlags2;queryPool:TVkQueryPool;query:TVkUInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdWriteTimestamp2KHR=procedure(commandBuffer:TVkCommandBuffer;stage:TVkPipelineStageFlags2;queryPool:TVkQueryPool;query:TVkUInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdWriteBufferMarker2AMD=procedure(commandBuffer:TVkCommandBuffer;stage:TVkPipelineStageFlags2;dstBuffer:TVkBuffer;dstOffset:TVkDeviceSize;marker:TVkUInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetQueueCheckpointData2NV=procedure(queue:TVkQueue;pCheckpointDataCount:PVkUInt32;pCheckpointData:PVkCheckpointData2NV); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCopyMemoryToImageEXT=function(device:TVkDevice;const pCopyMemoryToImageInfo:PVkCopyMemoryToImageInfoEXT):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCopyImageToMemoryEXT=function(device:TVkDevice;const pCopyImageToMemoryInfo:PVkCopyImageToMemoryInfoEXT):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCopyImageToImageEXT=function(device:TVkDevice;const pCopyImageToImageInfo:PVkCopyImageToImageInfoEXT):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkTransitionImageLayoutEXT=function(device:TVkDevice;transitionCount:TVkUInt32;const pTransitions:PVkHostImageLayoutTransitionInfoEXT):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

{$ifdef VulkanSC}
     TvkGetCommandPoolMemoryConsumption=procedure(device:TVkDevice;commandPool:TVkCommandPool;commandBuffer:TVkCommandBuffer;pConsumption:PVkCommandPoolMemoryConsumption); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

{$ifdef VkVideo}
     TvkGetPhysicalDeviceVideoCapabilitiesKHR=function(physicalDevice:TVkPhysicalDevice;const pVideoProfile:PVkVideoProfileInfoKHR;pCapabilities:PVkVideoCapabilitiesKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

{$ifdef VkVideo}
     TvkGetPhysicalDeviceVideoFormatPropertiesKHR=function(physicalDevice:TVkPhysicalDevice;const pVideoFormatInfo:PVkPhysicalDeviceVideoFormatInfoKHR;pVideoFormatPropertyCount:PVkUInt32;pVideoFormatProperties:PVkVideoFormatPropertiesKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

{$ifdef VkVideo}
     TvkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR=function(physicalDevice:TVkPhysicalDevice;const pQualityLevelInfo:PVkPhysicalDeviceVideoEncodeQualityLevelInfoKHR;pQualityLevelProperties:PVkVideoEncodeQualityLevelPropertiesKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

{$ifdef VkVideo}
     TvkCreateVideoSessionKHR=function(device:TVkDevice;const pCreateInfo:PVkVideoSessionCreateInfoKHR;const pAllocator:PVkAllocationCallbacks;pVideoSession:PVkVideoSessionKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

{$ifdef VkVideo}
     TvkDestroyVideoSessionKHR=procedure(device:TVkDevice;videoSession:TVkVideoSessionKHR;const pAllocator:PVkAllocationCallbacks); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

{$ifdef VkVideo}
     TvkCreateVideoSessionParametersKHR=function(device:TVkDevice;const pCreateInfo:PVkVideoSessionParametersCreateInfoKHR;const pAllocator:PVkAllocationCallbacks;pVideoSessionParameters:PVkVideoSessionParametersKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

{$ifdef VkVideo}
     TvkUpdateVideoSessionParametersKHR=function(device:TVkDevice;videoSessionParameters:TVkVideoSessionParametersKHR;const pUpdateInfo:PVkVideoSessionParametersUpdateInfoKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

{$ifdef VkVideo}
     TvkGetEncodedVideoSessionParametersKHR=function(device:TVkDevice;const pVideoSessionParametersInfo:PVkVideoEncodeSessionParametersGetInfoKHR;pFeedbackInfo:PVkVideoEncodeSessionParametersFeedbackInfoKHR;pDataSize:PVkSize;pData:PVkVoid):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

{$ifdef VkVideo}
     TvkDestroyVideoSessionParametersKHR=procedure(device:TVkDevice;videoSessionParameters:TVkVideoSessionParametersKHR;const pAllocator:PVkAllocationCallbacks); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

{$ifdef VkVideo}
     TvkGetVideoSessionMemoryRequirementsKHR=function(device:TVkDevice;videoSession:TVkVideoSessionKHR;pMemoryRequirementsCount:PVkUInt32;pMemoryRequirements:PVkVideoSessionMemoryRequirementsKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

{$ifdef VkVideo}
     TvkBindVideoSessionMemoryKHR=function(device:TVkDevice;videoSession:TVkVideoSessionKHR;bindSessionMemoryInfoCount:TVkUInt32;const pBindSessionMemoryInfos:PVkBindVideoSessionMemoryInfoKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

{$ifdef VkVideo}
     TvkCmdDecodeVideoKHR=procedure(commandBuffer:TVkCommandBuffer;const pDecodeInfo:PVkVideoDecodeInfoKHR); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

{$ifdef VkVideo}
     TvkCmdBeginVideoCodingKHR=procedure(commandBuffer:TVkCommandBuffer;const pBeginInfo:PVkVideoBeginCodingInfoKHR); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

{$ifdef VkVideo}
     TvkCmdControlVideoCodingKHR=procedure(commandBuffer:TVkCommandBuffer;const pCodingControlInfo:PVkVideoCodingControlInfoKHR); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

{$ifdef VkVideo}
     TvkCmdEndVideoCodingKHR=procedure(commandBuffer:TVkCommandBuffer;const pEndCodingInfo:PVkVideoEndCodingInfoKHR); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

{$ifdef VkVideo}
     TvkCmdEncodeVideoKHR=procedure(commandBuffer:TVkCommandBuffer;const pEncodeInfo:PVkVideoEncodeInfoKHR); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

     TvkCmdDecompressMemoryNV=procedure(commandBuffer:TVkCommandBuffer;decompressRegionCount:TVkUInt32;const pDecompressMemoryRegions:PVkDecompressMemoryRegionNV); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdDecompressMemoryIndirectCountNV=procedure(commandBuffer:TVkCommandBuffer;indirectCommandsAddress:TVkDeviceAddress;indirectCommandsCountAddress:TVkDeviceAddress;stride:TVkUInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCreateCuModuleNVX=function(device:TVkDevice;const pCreateInfo:PVkCuModuleCreateInfoNVX;const pAllocator:PVkAllocationCallbacks;pModule:PVkCuModuleNVX):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCreateCuFunctionNVX=function(device:TVkDevice;const pCreateInfo:PVkCuFunctionCreateInfoNVX;const pAllocator:PVkAllocationCallbacks;pFunction:PVkCuFunctionNVX):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkDestroyCuModuleNVX=procedure(device:TVkDevice;module:TVkCuModuleNVX;const pAllocator:PVkAllocationCallbacks); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkDestroyCuFunctionNVX=procedure(device:TVkDevice;function_:TVkCuFunctionNVX;const pAllocator:PVkAllocationCallbacks); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdCuLaunchKernelNVX=procedure(commandBuffer:TVkCommandBuffer;const pLaunchInfo:PVkCuLaunchInfoNVX); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetDescriptorSetLayoutSizeEXT=procedure(device:TVkDevice;layout:TVkDescriptorSetLayout;pLayoutSizeInBytes:PVkDeviceSize); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetDescriptorSetLayoutBindingOffsetEXT=procedure(device:TVkDevice;layout:TVkDescriptorSetLayout;binding:TVkUInt32;pOffset:PVkDeviceSize); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetDescriptorEXT=procedure(device:TVkDevice;const pDescriptorInfo:PVkDescriptorGetInfoEXT;dataSize:TVkSize;pDescriptor:PVkVoid); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdBindDescriptorBuffersEXT=procedure(commandBuffer:TVkCommandBuffer;bufferCount:TVkUInt32;const pBindingInfos:PVkDescriptorBufferBindingInfoEXT); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetDescriptorBufferOffsetsEXT=procedure(commandBuffer:TVkCommandBuffer;pipelineBindPoint:TVkPipelineBindPoint;layout:TVkPipelineLayout;firstSet:TVkUInt32;setCount:TVkUInt32;const pBufferIndices:PVkUInt32;const pOffsets:PVkDeviceSize); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdBindDescriptorBufferEmbeddedSamplersEXT=procedure(commandBuffer:TVkCommandBuffer;pipelineBindPoint:TVkPipelineBindPoint;layout:TVkPipelineLayout;set_:TVkUInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetBufferOpaqueCaptureDescriptorDataEXT=function(device:TVkDevice;const pInfo:PVkBufferCaptureDescriptorDataInfoEXT;pData:PVkVoid):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetImageOpaqueCaptureDescriptorDataEXT=function(device:TVkDevice;const pInfo:PVkImageCaptureDescriptorDataInfoEXT;pData:PVkVoid):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetImageViewOpaqueCaptureDescriptorDataEXT=function(device:TVkDevice;const pInfo:PVkImageViewCaptureDescriptorDataInfoEXT;pData:PVkVoid):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetSamplerOpaqueCaptureDescriptorDataEXT=function(device:TVkDevice;const pInfo:PVkSamplerCaptureDescriptorDataInfoEXT;pData:PVkVoid):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT=function(device:TVkDevice;const pInfo:PVkAccelerationStructureCaptureDescriptorDataInfoEXT;pData:PVkVoid):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkSetDeviceMemoryPriorityEXT=procedure(device:TVkDevice;memory:TVkDeviceMemory;priority:TVkFloat); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkAcquireDrmDisplayEXT=function(physicalDevice:TVkPhysicalDevice;drmFd:TVkInt32;display:TVkDisplayKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetDrmDisplayEXT=function(physicalDevice:TVkPhysicalDevice;drmFd:TVkInt32;connectorId:TVkUInt32;display:PVkDisplayKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkWaitForPresentKHR=function(device:TVkDevice;swapchain:TVkSwapchainKHR;presentId:TVkUInt64;timeout:TVkUInt64):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

{$ifdef Fuchsia}
     TvkCreateBufferCollectionFUCHSIA=function(device:TVkDevice;const pCreateInfo:PVkBufferCollectionCreateInfoFUCHSIA;const pAllocator:PVkAllocationCallbacks;pCollection:PVkBufferCollectionFUCHSIA):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

{$ifdef Fuchsia}
     TvkSetBufferCollectionBufferConstraintsFUCHSIA=function(device:TVkDevice;collection:TVkBufferCollectionFUCHSIA;const pBufferConstraintsInfo:PVkBufferConstraintsInfoFUCHSIA):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

{$ifdef Fuchsia}
     TvkSetBufferCollectionImageConstraintsFUCHSIA=function(device:TVkDevice;collection:TVkBufferCollectionFUCHSIA;const pImageConstraintsInfo:PVkImageConstraintsInfoFUCHSIA):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

{$ifdef Fuchsia}
     TvkDestroyBufferCollectionFUCHSIA=procedure(device:TVkDevice;collection:TVkBufferCollectionFUCHSIA;const pAllocator:PVkAllocationCallbacks); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

{$ifdef Fuchsia}
     TvkGetBufferCollectionPropertiesFUCHSIA=function(device:TVkDevice;collection:TVkBufferCollectionFUCHSIA;pProperties:PVkBufferCollectionPropertiesFUCHSIA):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

     TvkCmdBeginRendering=procedure(commandBuffer:TVkCommandBuffer;const pRenderingInfo:PVkRenderingInfo); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdBeginRenderingKHR=procedure(commandBuffer:TVkCommandBuffer;const pRenderingInfo:PVkRenderingInfo); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdEndRendering=procedure(commandBuffer:TVkCommandBuffer); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdEndRenderingKHR=procedure(commandBuffer:TVkCommandBuffer); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetDescriptorSetLayoutHostMappingInfoVALVE=procedure(device:TVkDevice;const pBindingReference:PVkDescriptorSetBindingReferenceVALVE;pHostMapping:PVkDescriptorSetLayoutHostMappingInfoVALVE); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetDescriptorSetHostMappingVALVE=procedure(device:TVkDevice;descriptorSet:TVkDescriptorSet;ppData:PPVkVoid); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCreateMicromapEXT=function(device:TVkDevice;const pCreateInfo:PVkMicromapCreateInfoEXT;const pAllocator:PVkAllocationCallbacks;pMicromap:PVkMicromapEXT):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdBuildMicromapsEXT=procedure(commandBuffer:TVkCommandBuffer;infoCount:TVkUInt32;const pInfos:PVkMicromapBuildInfoEXT); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkBuildMicromapsEXT=function(device:TVkDevice;deferredOperation:TVkDeferredOperationKHR;infoCount:TVkUInt32;const pInfos:PVkMicromapBuildInfoEXT):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkDestroyMicromapEXT=procedure(device:TVkDevice;micromap:TVkMicromapEXT;const pAllocator:PVkAllocationCallbacks); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdCopyMicromapEXT=procedure(commandBuffer:TVkCommandBuffer;const pInfo:PVkCopyMicromapInfoEXT); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCopyMicromapEXT=function(device:TVkDevice;deferredOperation:TVkDeferredOperationKHR;const pInfo:PVkCopyMicromapInfoEXT):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdCopyMicromapToMemoryEXT=procedure(commandBuffer:TVkCommandBuffer;const pInfo:PVkCopyMicromapToMemoryInfoEXT); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCopyMicromapToMemoryEXT=function(device:TVkDevice;deferredOperation:TVkDeferredOperationKHR;const pInfo:PVkCopyMicromapToMemoryInfoEXT):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdCopyMemoryToMicromapEXT=procedure(commandBuffer:TVkCommandBuffer;const pInfo:PVkCopyMemoryToMicromapInfoEXT); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCopyMemoryToMicromapEXT=function(device:TVkDevice;deferredOperation:TVkDeferredOperationKHR;const pInfo:PVkCopyMemoryToMicromapInfoEXT):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdWriteMicromapsPropertiesEXT=procedure(commandBuffer:TVkCommandBuffer;micromapCount:TVkUInt32;const pMicromaps:PVkMicromapEXT;queryType:TVkQueryType;queryPool:TVkQueryPool;firstQuery:TVkUInt32); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkWriteMicromapsPropertiesEXT=function(device:TVkDevice;micromapCount:TVkUInt32;const pMicromaps:PVkMicromapEXT;queryType:TVkQueryType;dataSize:TVkSize;pData:PVkVoid;stride:TVkSize):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetDeviceMicromapCompatibilityEXT=procedure(device:TVkDevice;const pVersionInfo:PVkMicromapVersionInfoEXT;pCompatibility:PVkAccelerationStructureCompatibilityKHR); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetMicromapBuildSizesEXT=procedure(device:TVkDevice;buildType:TVkAccelerationStructureBuildTypeKHR;const pBuildInfo:PVkMicromapBuildInfoEXT;pSizeInfo:PVkMicromapBuildSizesInfoEXT); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetShaderModuleIdentifierEXT=procedure(device:TVkDevice;shaderModule:TVkShaderModule;pIdentifier:PVkShaderModuleIdentifierEXT); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetShaderModuleCreateInfoIdentifierEXT=procedure(device:TVkDevice;const pCreateInfo:PVkShaderModuleCreateInfo;pIdentifier:PVkShaderModuleIdentifierEXT); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetImageSubresourceLayout2KHR=procedure(device:TVkDevice;image:TVkImage;const pSubresource:PVkImageSubresource2KHR;pLayout:PVkSubresourceLayout2KHR); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetImageSubresourceLayout2EXT=procedure(device:TVkDevice;image:TVkImage;const pSubresource:PVkImageSubresource2KHR;pLayout:PVkSubresourceLayout2KHR); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPipelinePropertiesEXT=function(device:TVkDevice;const pPipelineInfo:PVkPipelineInfoEXT;pPipelineProperties:PVkBaseOutStructure):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkExportMetalObjectsEXT=procedure(device:TVkDevice;pMetalObjectsInfo:PVkExportMetalObjectsInfoEXT); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetFramebufferTilePropertiesQCOM=function(device:TVkDevice;framebuffer:TVkFramebuffer;pPropertiesCount:PVkUInt32;pProperties:PVkTilePropertiesQCOM):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetDynamicRenderingTilePropertiesQCOM=function(device:TVkDevice;const pRenderingInfo:PVkRenderingInfo;pProperties:PVkTilePropertiesQCOM):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetPhysicalDeviceOpticalFlowImageFormatsNV=function(physicalDevice:TVkPhysicalDevice;const pOpticalFlowImageFormatInfo:PVkOpticalFlowImageFormatInfoNV;pFormatCount:PVkUInt32;pImageFormatProperties:PVkOpticalFlowImageFormatPropertiesNV):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCreateOpticalFlowSessionNV=function(device:TVkDevice;const pCreateInfo:PVkOpticalFlowSessionCreateInfoNV;const pAllocator:PVkAllocationCallbacks;pSession:PVkOpticalFlowSessionNV):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkDestroyOpticalFlowSessionNV=procedure(device:TVkDevice;session:TVkOpticalFlowSessionNV;const pAllocator:PVkAllocationCallbacks); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkBindOpticalFlowSessionImageNV=function(device:TVkDevice;session:TVkOpticalFlowSessionNV;bindingPoint:TVkOpticalFlowSessionBindingPointNV;view:TVkImageView;layout:TVkImageLayout):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdOpticalFlowExecuteNV=procedure(commandBuffer:TVkCommandBuffer;session:TVkOpticalFlowSessionNV;const pExecuteInfo:PVkOpticalFlowExecuteInfoNV); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetDeviceFaultInfoEXT=function(device:TVkDevice;pFaultCounts:PVkDeviceFaultCountsEXT;pFaultInfo:PVkDeviceFaultInfoEXT):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdSetDepthBias2EXT=procedure(commandBuffer:TVkCommandBuffer;const pDepthBiasInfo:PVkDepthBiasInfoEXT); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkReleaseSwapchainImagesEXT=function(device:TVkDevice;const pReleaseInfo:PVkReleaseSwapchainImagesInfoEXT):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetDeviceImageSubresourceLayoutKHR=procedure(device:TVkDevice;const pInfo:PVkDeviceImageSubresourceInfoKHR;pLayout:PVkSubresourceLayout2KHR); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkMapMemory2KHR=function(device:TVkDevice;const pMemoryMapInfo:PVkMemoryMapInfoKHR;ppData:PPVkVoid):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkUnmapMemory2KHR=function(device:TVkDevice;const pMemoryUnmapInfo:PVkMemoryUnmapInfoKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCreateShadersEXT=function(device:TVkDevice;createInfoCount:TVkUInt32;const pCreateInfos:PVkShaderCreateInfoEXT;const pAllocator:PVkAllocationCallbacks;pShaders:PVkShaderEXT):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkDestroyShaderEXT=procedure(device:TVkDevice;shader:TVkShaderEXT;const pAllocator:PVkAllocationCallbacks); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetShaderBinaryDataEXT=function(device:TVkDevice;shader:TVkShaderEXT;pDataSize:PVkSize;pData:PVkVoid):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdBindShadersEXT=procedure(commandBuffer:TVkCommandBuffer;stageCount:TVkUInt32;const pStages:PVkShaderStageFlagBits;const pShaders:PVkShaderEXT); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

{$ifdef QNX}
     TvkGetScreenBufferPropertiesQNX=function(device:TVkDevice;const buffer:P_screen_buffer;pProperties:PVkScreenBufferPropertiesQNX):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}
{$endif}

     TvkGetPhysicalDeviceCooperativeMatrixPropertiesKHR=function(physicalDevice:TVkPhysicalDevice;pPropertyCount:PVkUInt32;pProperties:PVkCooperativeMatrixPropertiesKHR):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetExecutionGraphPipelineScratchSizeAMDX=function(device:TVkDevice;executionGraph:TVkPipeline;pSizeInfo:PVkExecutionGraphPipelineScratchSizeAMDX):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetExecutionGraphPipelineNodeIndexAMDX=function(device:TVkDevice;executionGraph:TVkPipeline;const pNodeInfo:PVkPipelineShaderStageNodeCreateInfoAMDX;pNodeIndex:PVkUInt32):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCreateExecutionGraphPipelinesAMDX=function(device:TVkDevice;pipelineCache:TVkPipelineCache;createInfoCount:TVkUInt32;const pCreateInfos:PVkExecutionGraphPipelineCreateInfoAMDX;const pAllocator:PVkAllocationCallbacks;pPipelines:PVkPipeline):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdInitializeGraphScratchMemoryAMDX=procedure(commandBuffer:TVkCommandBuffer;scratch:TVkDeviceAddress); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdDispatchGraphAMDX=procedure(commandBuffer:TVkCommandBuffer;scratch:TVkDeviceAddress;const pCountInfo:PVkDispatchGraphCountInfoAMDX); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdDispatchGraphIndirectAMDX=procedure(commandBuffer:TVkCommandBuffer;scratch:TVkDeviceAddress;const pCountInfo:PVkDispatchGraphCountInfoAMDX); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkCmdDispatchGraphIndirectCountAMDX=procedure(commandBuffer:TVkCommandBuffer;scratch:TVkDeviceAddress;countInfo:TVkDeviceAddress); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkSetLatencySleepModeNV=function(device:TVkDevice;swapchain:TVkSwapchainKHR;pSleepModeInfo:PVkLatencySleepModeInfoNV):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkLatencySleepNV=function(device:TVkDevice;swapchain:TVkSwapchainKHR;pSleepInfo:PVkLatencySleepInfoNV):TVkResult; {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkSetLatencyMarkerNV=procedure(device:TVkDevice;swapchain:TVkSwapchainKHR;pLatencyMarkerInfo:PVkSetLatencyMarkerInfoNV); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkGetLatencyTimingsNV=procedure(device:TVkDevice;swapchain:TVkSwapchainKHR;pTimingCount:PVkUInt32;pLatencyMarkerInfo:PVkGetLatencyMarkerInfoNV); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}

     TvkQueueNotifyOutOfBandNV=procedure(queue:TVkQueue;pQueueTypeInfo:TVkOutOfBandQueueTypeInfoNV); {$ifdef Windows}stdcall;{$else}{$ifdef Android}{$ifdef cpuarm}hardfloat;{$else}cdecl;{$endif}{$else}cdecl;{$endif}{$endif}


     PPVulkanCommands=^PVulkanCommands;
     PVulkanCommands=^TVulkanCommands;
     TVulkanCommands=record
      CreateInstance:TvkCreateInstance;

      DestroyInstance:TvkDestroyInstance;

      EnumeratePhysicalDevices:TvkEnumeratePhysicalDevices;

      GetDeviceProcAddr:TvkGetDeviceProcAddr;

      GetInstanceProcAddr:TvkGetInstanceProcAddr;

      GetPhysicalDeviceProperties:TvkGetPhysicalDeviceProperties;

      GetPhysicalDeviceQueueFamilyProperties:TvkGetPhysicalDeviceQueueFamilyProperties;

      GetPhysicalDeviceMemoryProperties:TvkGetPhysicalDeviceMemoryProperties;

      GetPhysicalDeviceFeatures:TvkGetPhysicalDeviceFeatures;

      GetPhysicalDeviceFormatProperties:TvkGetPhysicalDeviceFormatProperties;

      GetPhysicalDeviceImageFormatProperties:TvkGetPhysicalDeviceImageFormatProperties;

      CreateDevice:TvkCreateDevice;

      DestroyDevice:TvkDestroyDevice;

      EnumerateInstanceVersion:TvkEnumerateInstanceVersion;

      EnumerateInstanceLayerProperties:TvkEnumerateInstanceLayerProperties;

      EnumerateInstanceExtensionProperties:TvkEnumerateInstanceExtensionProperties;

      EnumerateDeviceLayerProperties:TvkEnumerateDeviceLayerProperties;

      EnumerateDeviceExtensionProperties:TvkEnumerateDeviceExtensionProperties;

      GetDeviceQueue:TvkGetDeviceQueue;

      QueueSubmit:TvkQueueSubmit;

      QueueWaitIdle:TvkQueueWaitIdle;

      DeviceWaitIdle:TvkDeviceWaitIdle;

      AllocateMemory:TvkAllocateMemory;

      FreeMemory:TvkFreeMemory;

      MapMemory:TvkMapMemory;

      UnmapMemory:TvkUnmapMemory;

      FlushMappedMemoryRanges:TvkFlushMappedMemoryRanges;

      InvalidateMappedMemoryRanges:TvkInvalidateMappedMemoryRanges;

      GetDeviceMemoryCommitment:TvkGetDeviceMemoryCommitment;

      GetBufferMemoryRequirements:TvkGetBufferMemoryRequirements;

      BindBufferMemory:TvkBindBufferMemory;

      GetImageMemoryRequirements:TvkGetImageMemoryRequirements;

      BindImageMemory:TvkBindImageMemory;

      GetImageSparseMemoryRequirements:TvkGetImageSparseMemoryRequirements;

      GetPhysicalDeviceSparseImageFormatProperties:TvkGetPhysicalDeviceSparseImageFormatProperties;

      QueueBindSparse:TvkQueueBindSparse;

      CreateFence:TvkCreateFence;

      DestroyFence:TvkDestroyFence;

      ResetFences:TvkResetFences;

      GetFenceStatus:TvkGetFenceStatus;

      WaitForFences:TvkWaitForFences;

      CreateSemaphore:TvkCreateSemaphore;

      DestroySemaphore:TvkDestroySemaphore;

      CreateEvent:TvkCreateEvent;

      DestroyEvent:TvkDestroyEvent;

      GetEventStatus:TvkGetEventStatus;

      SetEvent:TvkSetEvent;

      ResetEvent:TvkResetEvent;

      CreateQueryPool:TvkCreateQueryPool;

      DestroyQueryPool:TvkDestroyQueryPool;

      GetQueryPoolResults:TvkGetQueryPoolResults;

      ResetQueryPool:TvkResetQueryPool;

      ResetQueryPoolEXT:TvkResetQueryPoolEXT;

      CreateBuffer:TvkCreateBuffer;

      DestroyBuffer:TvkDestroyBuffer;

      CreateBufferView:TvkCreateBufferView;

      DestroyBufferView:TvkDestroyBufferView;

      CreateImage:TvkCreateImage;

      DestroyImage:TvkDestroyImage;

      GetImageSubresourceLayout:TvkGetImageSubresourceLayout;

      CreateImageView:TvkCreateImageView;

      DestroyImageView:TvkDestroyImageView;

      CreateShaderModule:TvkCreateShaderModule;

      DestroyShaderModule:TvkDestroyShaderModule;

      CreatePipelineCache:TvkCreatePipelineCache;

      DestroyPipelineCache:TvkDestroyPipelineCache;

      GetPipelineCacheData:TvkGetPipelineCacheData;

      MergePipelineCaches:TvkMergePipelineCaches;

      CreateGraphicsPipelines:TvkCreateGraphicsPipelines;

      CreateComputePipelines:TvkCreateComputePipelines;

      GetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI:TvkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI;

      DestroyPipeline:TvkDestroyPipeline;

      CreatePipelineLayout:TvkCreatePipelineLayout;

      DestroyPipelineLayout:TvkDestroyPipelineLayout;

      CreateSampler:TvkCreateSampler;

      DestroySampler:TvkDestroySampler;

      CreateDescriptorSetLayout:TvkCreateDescriptorSetLayout;

      DestroyDescriptorSetLayout:TvkDestroyDescriptorSetLayout;

      CreateDescriptorPool:TvkCreateDescriptorPool;

      DestroyDescriptorPool:TvkDestroyDescriptorPool;

      ResetDescriptorPool:TvkResetDescriptorPool;

      AllocateDescriptorSets:TvkAllocateDescriptorSets;

      FreeDescriptorSets:TvkFreeDescriptorSets;

      UpdateDescriptorSets:TvkUpdateDescriptorSets;

      CreateFramebuffer:TvkCreateFramebuffer;

      DestroyFramebuffer:TvkDestroyFramebuffer;

      CreateRenderPass:TvkCreateRenderPass;

      DestroyRenderPass:TvkDestroyRenderPass;

      GetRenderAreaGranularity:TvkGetRenderAreaGranularity;

      GetRenderingAreaGranularityKHR:TvkGetRenderingAreaGranularityKHR;

      CreateCommandPool:TvkCreateCommandPool;

      DestroyCommandPool:TvkDestroyCommandPool;

      ResetCommandPool:TvkResetCommandPool;

      AllocateCommandBuffers:TvkAllocateCommandBuffers;

      FreeCommandBuffers:TvkFreeCommandBuffers;

      BeginCommandBuffer:TvkBeginCommandBuffer;

      EndCommandBuffer:TvkEndCommandBuffer;

      ResetCommandBuffer:TvkResetCommandBuffer;

      CmdBindPipeline:TvkCmdBindPipeline;

      CmdSetAttachmentFeedbackLoopEnableEXT:TvkCmdSetAttachmentFeedbackLoopEnableEXT;

      CmdSetViewport:TvkCmdSetViewport;

      CmdSetScissor:TvkCmdSetScissor;

      CmdSetLineWidth:TvkCmdSetLineWidth;

      CmdSetDepthBias:TvkCmdSetDepthBias;

      CmdSetBlendConstants:TvkCmdSetBlendConstants;

      CmdSetDepthBounds:TvkCmdSetDepthBounds;

      CmdSetStencilCompareMask:TvkCmdSetStencilCompareMask;

      CmdSetStencilWriteMask:TvkCmdSetStencilWriteMask;

      CmdSetStencilReference:TvkCmdSetStencilReference;

      CmdBindDescriptorSets:TvkCmdBindDescriptorSets;

      CmdBindIndexBuffer:TvkCmdBindIndexBuffer;

      CmdBindVertexBuffers:TvkCmdBindVertexBuffers;

      CmdDraw:TvkCmdDraw;

      CmdDrawIndexed:TvkCmdDrawIndexed;

      CmdDrawMultiEXT:TvkCmdDrawMultiEXT;

      CmdDrawMultiIndexedEXT:TvkCmdDrawMultiIndexedEXT;

      CmdDrawIndirect:TvkCmdDrawIndirect;

      CmdDrawIndexedIndirect:TvkCmdDrawIndexedIndirect;

      CmdDispatch:TvkCmdDispatch;

      CmdDispatchIndirect:TvkCmdDispatchIndirect;

      CmdSubpassShadingHUAWEI:TvkCmdSubpassShadingHUAWEI;

      CmdDrawClusterHUAWEI:TvkCmdDrawClusterHUAWEI;

      CmdDrawClusterIndirectHUAWEI:TvkCmdDrawClusterIndirectHUAWEI;

      CmdUpdatePipelineIndirectBufferNV:TvkCmdUpdatePipelineIndirectBufferNV;

      CmdCopyBuffer:TvkCmdCopyBuffer;

      CmdCopyImage:TvkCmdCopyImage;

      CmdBlitImage:TvkCmdBlitImage;

      CmdCopyBufferToImage:TvkCmdCopyBufferToImage;

      CmdCopyImageToBuffer:TvkCmdCopyImageToBuffer;

      CmdCopyMemoryIndirectNV:TvkCmdCopyMemoryIndirectNV;

      CmdCopyMemoryToImageIndirectNV:TvkCmdCopyMemoryToImageIndirectNV;

      CmdUpdateBuffer:TvkCmdUpdateBuffer;

      CmdFillBuffer:TvkCmdFillBuffer;

      CmdClearColorImage:TvkCmdClearColorImage;

      CmdClearDepthStencilImage:TvkCmdClearDepthStencilImage;

      CmdClearAttachments:TvkCmdClearAttachments;

      CmdResolveImage:TvkCmdResolveImage;

      CmdSetEvent:TvkCmdSetEvent;

      CmdResetEvent:TvkCmdResetEvent;

      CmdWaitEvents:TvkCmdWaitEvents;

      CmdPipelineBarrier:TvkCmdPipelineBarrier;

      CmdBeginQuery:TvkCmdBeginQuery;

      CmdEndQuery:TvkCmdEndQuery;

      CmdBeginConditionalRenderingEXT:TvkCmdBeginConditionalRenderingEXT;

      CmdEndConditionalRenderingEXT:TvkCmdEndConditionalRenderingEXT;

      CmdResetQueryPool:TvkCmdResetQueryPool;

      CmdWriteTimestamp:TvkCmdWriteTimestamp;

      CmdCopyQueryPoolResults:TvkCmdCopyQueryPoolResults;

      CmdPushConstants:TvkCmdPushConstants;

      CmdBeginRenderPass:TvkCmdBeginRenderPass;

      CmdNextSubpass:TvkCmdNextSubpass;

      CmdEndRenderPass:TvkCmdEndRenderPass;

      CmdExecuteCommands:TvkCmdExecuteCommands;

{$ifdef Android}
      CreateAndroidSurfaceKHR:TvkCreateAndroidSurfaceKHR;
{$endif}

      GetPhysicalDeviceDisplayPropertiesKHR:TvkGetPhysicalDeviceDisplayPropertiesKHR;

      GetPhysicalDeviceDisplayPlanePropertiesKHR:TvkGetPhysicalDeviceDisplayPlanePropertiesKHR;

      GetDisplayPlaneSupportedDisplaysKHR:TvkGetDisplayPlaneSupportedDisplaysKHR;

      GetDisplayModePropertiesKHR:TvkGetDisplayModePropertiesKHR;

      CreateDisplayModeKHR:TvkCreateDisplayModeKHR;

      GetDisplayPlaneCapabilitiesKHR:TvkGetDisplayPlaneCapabilitiesKHR;

      CreateDisplayPlaneSurfaceKHR:TvkCreateDisplayPlaneSurfaceKHR;

      CreateSharedSwapchainsKHR:TvkCreateSharedSwapchainsKHR;

      DestroySurfaceKHR:TvkDestroySurfaceKHR;

      GetPhysicalDeviceSurfaceSupportKHR:TvkGetPhysicalDeviceSurfaceSupportKHR;

      GetPhysicalDeviceSurfaceCapabilitiesKHR:TvkGetPhysicalDeviceSurfaceCapabilitiesKHR;

      GetPhysicalDeviceSurfaceFormatsKHR:TvkGetPhysicalDeviceSurfaceFormatsKHR;

      GetPhysicalDeviceSurfacePresentModesKHR:TvkGetPhysicalDeviceSurfacePresentModesKHR;

      CreateSwapchainKHR:TvkCreateSwapchainKHR;

      DestroySwapchainKHR:TvkDestroySwapchainKHR;

      GetSwapchainImagesKHR:TvkGetSwapchainImagesKHR;

      AcquireNextImageKHR:TvkAcquireNextImageKHR;

      QueuePresentKHR:TvkQueuePresentKHR;

      CreateViSurfaceNN:TvkCreateViSurfaceNN;

{$ifdef Wayland}
      CreateWaylandSurfaceKHR:TvkCreateWaylandSurfaceKHR;
{$endif}

{$ifdef Wayland}
      GetPhysicalDeviceWaylandPresentationSupportKHR:TvkGetPhysicalDeviceWaylandPresentationSupportKHR;
{$endif}

{$ifdef Windows}
      CreateWin32SurfaceKHR:TvkCreateWin32SurfaceKHR;
{$endif}

{$ifdef Windows}
      GetPhysicalDeviceWin32PresentationSupportKHR:TvkGetPhysicalDeviceWin32PresentationSupportKHR;
{$endif}

{$ifdef XLIB}
      CreateXlibSurfaceKHR:TvkCreateXlibSurfaceKHR;
{$endif}

{$ifdef XLIB}
      GetPhysicalDeviceXlibPresentationSupportKHR:TvkGetPhysicalDeviceXlibPresentationSupportKHR;
{$endif}

{$ifdef XCB}
      CreateXcbSurfaceKHR:TvkCreateXcbSurfaceKHR;
{$endif}

{$ifdef XCB}
      GetPhysicalDeviceXcbPresentationSupportKHR:TvkGetPhysicalDeviceXcbPresentationSupportKHR;
{$endif}

{$ifdef DirectFB}
      CreateDirectFBSurfaceEXT:TvkCreateDirectFBSurfaceEXT;
{$endif}

{$ifdef DirectFB}
      GetPhysicalDeviceDirectFBPresentationSupportEXT:TvkGetPhysicalDeviceDirectFBPresentationSupportEXT;
{$endif}

{$ifdef Fuchsia}
      CreateImagePipeSurfaceFUCHSIA:TvkCreateImagePipeSurfaceFUCHSIA;
{$endif}

      CreateStreamDescriptorSurfaceGGP:TvkCreateStreamDescriptorSurfaceGGP;

{$ifdef QNX}
      CreateScreenSurfaceQNX:TvkCreateScreenSurfaceQNX;
{$endif}

{$ifdef QNX}
      GetPhysicalDeviceScreenPresentationSupportQNX:TvkGetPhysicalDeviceScreenPresentationSupportQNX;
{$endif}

      CreateDebugReportCallbackEXT:TvkCreateDebugReportCallbackEXT;

      DestroyDebugReportCallbackEXT:TvkDestroyDebugReportCallbackEXT;

      DebugReportMessageEXT:TvkDebugReportMessageEXT;

      DebugMarkerSetObjectNameEXT:TvkDebugMarkerSetObjectNameEXT;

      DebugMarkerSetObjectTagEXT:TvkDebugMarkerSetObjectTagEXT;

      CmdDebugMarkerBeginEXT:TvkCmdDebugMarkerBeginEXT;

      CmdDebugMarkerEndEXT:TvkCmdDebugMarkerEndEXT;

      CmdDebugMarkerInsertEXT:TvkCmdDebugMarkerInsertEXT;

      GetPhysicalDeviceExternalImageFormatPropertiesNV:TvkGetPhysicalDeviceExternalImageFormatPropertiesNV;

{$ifdef Windows}
      GetMemoryWin32HandleNV:TvkGetMemoryWin32HandleNV;
{$endif}

      CmdExecuteGeneratedCommandsNV:TvkCmdExecuteGeneratedCommandsNV;

      CmdPreprocessGeneratedCommandsNV:TvkCmdPreprocessGeneratedCommandsNV;

      CmdBindPipelineShaderGroupNV:TvkCmdBindPipelineShaderGroupNV;

      GetGeneratedCommandsMemoryRequirementsNV:TvkGetGeneratedCommandsMemoryRequirementsNV;

      CreateIndirectCommandsLayoutNV:TvkCreateIndirectCommandsLayoutNV;

      DestroyIndirectCommandsLayoutNV:TvkDestroyIndirectCommandsLayoutNV;

      GetPhysicalDeviceFeatures2:TvkGetPhysicalDeviceFeatures2;

      GetPhysicalDeviceFeatures2KHR:TvkGetPhysicalDeviceFeatures2KHR;

      GetPhysicalDeviceProperties2:TvkGetPhysicalDeviceProperties2;

      GetPhysicalDeviceProperties2KHR:TvkGetPhysicalDeviceProperties2KHR;

      GetPhysicalDeviceFormatProperties2:TvkGetPhysicalDeviceFormatProperties2;

      GetPhysicalDeviceFormatProperties2KHR:TvkGetPhysicalDeviceFormatProperties2KHR;

      GetPhysicalDeviceImageFormatProperties2:TvkGetPhysicalDeviceImageFormatProperties2;

      GetPhysicalDeviceImageFormatProperties2KHR:TvkGetPhysicalDeviceImageFormatProperties2KHR;

      GetPhysicalDeviceQueueFamilyProperties2:TvkGetPhysicalDeviceQueueFamilyProperties2;

      GetPhysicalDeviceQueueFamilyProperties2KHR:TvkGetPhysicalDeviceQueueFamilyProperties2KHR;

      GetPhysicalDeviceMemoryProperties2:TvkGetPhysicalDeviceMemoryProperties2;

      GetPhysicalDeviceMemoryProperties2KHR:TvkGetPhysicalDeviceMemoryProperties2KHR;

      GetPhysicalDeviceSparseImageFormatProperties2:TvkGetPhysicalDeviceSparseImageFormatProperties2;

      GetPhysicalDeviceSparseImageFormatProperties2KHR:TvkGetPhysicalDeviceSparseImageFormatProperties2KHR;

      CmdPushDescriptorSetKHR:TvkCmdPushDescriptorSetKHR;

      TrimCommandPool:TvkTrimCommandPool;

      TrimCommandPoolKHR:TvkTrimCommandPoolKHR;

      GetPhysicalDeviceExternalBufferProperties:TvkGetPhysicalDeviceExternalBufferProperties;

      GetPhysicalDeviceExternalBufferPropertiesKHR:TvkGetPhysicalDeviceExternalBufferPropertiesKHR;

{$ifdef Windows}
      GetMemoryWin32HandleKHR:TvkGetMemoryWin32HandleKHR;
{$endif}

{$ifdef Windows}
      GetMemoryWin32HandlePropertiesKHR:TvkGetMemoryWin32HandlePropertiesKHR;
{$endif}

      GetMemoryFdKHR:TvkGetMemoryFdKHR;

      GetMemoryFdPropertiesKHR:TvkGetMemoryFdPropertiesKHR;

{$ifdef Fuchsia}
      GetMemoryZirconHandleFUCHSIA:TvkGetMemoryZirconHandleFUCHSIA;
{$endif}

{$ifdef Fuchsia}
      GetMemoryZirconHandlePropertiesFUCHSIA:TvkGetMemoryZirconHandlePropertiesFUCHSIA;
{$endif}

      GetMemoryRemoteAddressNV:TvkGetMemoryRemoteAddressNV;

{$ifdef NvSci}
      GetMemorySciBufNV:TvkGetMemorySciBufNV;
{$endif}

{$ifdef NvSci}
      GetPhysicalDeviceExternalMemorySciBufPropertiesNV:TvkGetPhysicalDeviceExternalMemorySciBufPropertiesNV;
{$endif}

{$ifdef NvSci}
      GetPhysicalDeviceSciBufAttributesNV:TvkGetPhysicalDeviceSciBufAttributesNV;
{$endif}

      GetPhysicalDeviceExternalSemaphoreProperties:TvkGetPhysicalDeviceExternalSemaphoreProperties;

      GetPhysicalDeviceExternalSemaphorePropertiesKHR:TvkGetPhysicalDeviceExternalSemaphorePropertiesKHR;

{$ifdef Windows}
      GetSemaphoreWin32HandleKHR:TvkGetSemaphoreWin32HandleKHR;
{$endif}

{$ifdef Windows}
      ImportSemaphoreWin32HandleKHR:TvkImportSemaphoreWin32HandleKHR;
{$endif}

      GetSemaphoreFdKHR:TvkGetSemaphoreFdKHR;

      ImportSemaphoreFdKHR:TvkImportSemaphoreFdKHR;

{$ifdef Fuchsia}
      GetSemaphoreZirconHandleFUCHSIA:TvkGetSemaphoreZirconHandleFUCHSIA;
{$endif}

{$ifdef Fuchsia}
      ImportSemaphoreZirconHandleFUCHSIA:TvkImportSemaphoreZirconHandleFUCHSIA;
{$endif}

      GetPhysicalDeviceExternalFenceProperties:TvkGetPhysicalDeviceExternalFenceProperties;

      GetPhysicalDeviceExternalFencePropertiesKHR:TvkGetPhysicalDeviceExternalFencePropertiesKHR;

{$ifdef Windows}
      GetFenceWin32HandleKHR:TvkGetFenceWin32HandleKHR;
{$endif}

{$ifdef Windows}
      ImportFenceWin32HandleKHR:TvkImportFenceWin32HandleKHR;
{$endif}

      GetFenceFdKHR:TvkGetFenceFdKHR;

      ImportFenceFdKHR:TvkImportFenceFdKHR;

{$ifdef NvSci}
      GetFenceSciSyncFenceNV:TvkGetFenceSciSyncFenceNV;
{$endif}

{$ifdef NvSci}
      GetFenceSciSyncObjNV:TvkGetFenceSciSyncObjNV;
{$endif}

{$ifdef NvSci}
      ImportFenceSciSyncFenceNV:TvkImportFenceSciSyncFenceNV;
{$endif}

{$ifdef NvSci}
      ImportFenceSciSyncObjNV:TvkImportFenceSciSyncObjNV;
{$endif}

{$ifdef NvSci}
      GetSemaphoreSciSyncObjNV:TvkGetSemaphoreSciSyncObjNV;
{$endif}

{$ifdef NvSci}
      ImportSemaphoreSciSyncObjNV:TvkImportSemaphoreSciSyncObjNV;
{$endif}

{$ifdef NvSci}
      GetPhysicalDeviceSciSyncAttributesNV:TvkGetPhysicalDeviceSciSyncAttributesNV;
{$endif}

{$ifdef NvSci}
      CreateSemaphoreSciSyncPoolNV:TvkCreateSemaphoreSciSyncPoolNV;
{$endif}

{$ifdef NvSci}
      DestroySemaphoreSciSyncPoolNV:TvkDestroySemaphoreSciSyncPoolNV;
{$endif}

      ReleaseDisplayEXT:TvkReleaseDisplayEXT;

{$ifdef XLIB}
      AcquireXlibDisplayEXT:TvkAcquireXlibDisplayEXT;
{$endif}

{$ifdef RandR}
      GetRandROutputDisplayEXT:TvkGetRandROutputDisplayEXT;
{$endif}

      AcquireWinrtDisplayNV:TvkAcquireWinrtDisplayNV;

      GetWinrtDisplayNV:TvkGetWinrtDisplayNV;

      DisplayPowerControlEXT:TvkDisplayPowerControlEXT;

      RegisterDeviceEventEXT:TvkRegisterDeviceEventEXT;

      RegisterDisplayEventEXT:TvkRegisterDisplayEventEXT;

      GetSwapchainCounterEXT:TvkGetSwapchainCounterEXT;

      GetPhysicalDeviceSurfaceCapabilities2EXT:TvkGetPhysicalDeviceSurfaceCapabilities2EXT;

      EnumeratePhysicalDeviceGroups:TvkEnumeratePhysicalDeviceGroups;

      EnumeratePhysicalDeviceGroupsKHR:TvkEnumeratePhysicalDeviceGroupsKHR;

      GetDeviceGroupPeerMemoryFeatures:TvkGetDeviceGroupPeerMemoryFeatures;

      GetDeviceGroupPeerMemoryFeaturesKHR:TvkGetDeviceGroupPeerMemoryFeaturesKHR;

      BindBufferMemory2:TvkBindBufferMemory2;

      BindBufferMemory2KHR:TvkBindBufferMemory2KHR;

      BindImageMemory2:TvkBindImageMemory2;

      BindImageMemory2KHR:TvkBindImageMemory2KHR;

      CmdSetDeviceMask:TvkCmdSetDeviceMask;

      CmdSetDeviceMaskKHR:TvkCmdSetDeviceMaskKHR;

      GetDeviceGroupPresentCapabilitiesKHR:TvkGetDeviceGroupPresentCapabilitiesKHR;

      GetDeviceGroupSurfacePresentModesKHR:TvkGetDeviceGroupSurfacePresentModesKHR;

      AcquireNextImage2KHR:TvkAcquireNextImage2KHR;

      CmdDispatchBase:TvkCmdDispatchBase;

      CmdDispatchBaseKHR:TvkCmdDispatchBaseKHR;

      GetPhysicalDevicePresentRectanglesKHR:TvkGetPhysicalDevicePresentRectanglesKHR;

      CreateDescriptorUpdateTemplate:TvkCreateDescriptorUpdateTemplate;

      CreateDescriptorUpdateTemplateKHR:TvkCreateDescriptorUpdateTemplateKHR;

      DestroyDescriptorUpdateTemplate:TvkDestroyDescriptorUpdateTemplate;

      DestroyDescriptorUpdateTemplateKHR:TvkDestroyDescriptorUpdateTemplateKHR;

      UpdateDescriptorSetWithTemplate:TvkUpdateDescriptorSetWithTemplate;

      UpdateDescriptorSetWithTemplateKHR:TvkUpdateDescriptorSetWithTemplateKHR;

      CmdPushDescriptorSetWithTemplateKHR:TvkCmdPushDescriptorSetWithTemplateKHR;

      SetHdrMetadataEXT:TvkSetHdrMetadataEXT;

      GetSwapchainStatusKHR:TvkGetSwapchainStatusKHR;

      GetRefreshCycleDurationGOOGLE:TvkGetRefreshCycleDurationGOOGLE;

      GetPastPresentationTimingGOOGLE:TvkGetPastPresentationTimingGOOGLE;

{$ifdef MoltenVK_IOS}
      CreateIOSSurfaceMVK:TvkCreateIOSSurfaceMVK;
{$endif}

{$ifdef MoltenVK_MacOS}
      CreateMacOSSurfaceMVK:TvkCreateMacOSSurfaceMVK;
{$endif}

      CreateMetalSurfaceEXT:TvkCreateMetalSurfaceEXT;

      CmdSetViewportWScalingNV:TvkCmdSetViewportWScalingNV;

      CmdSetDiscardRectangleEXT:TvkCmdSetDiscardRectangleEXT;

      CmdSetDiscardRectangleEnableEXT:TvkCmdSetDiscardRectangleEnableEXT;

      CmdSetDiscardRectangleModeEXT:TvkCmdSetDiscardRectangleModeEXT;

      CmdSetSampleLocationsEXT:TvkCmdSetSampleLocationsEXT;

      GetPhysicalDeviceMultisamplePropertiesEXT:TvkGetPhysicalDeviceMultisamplePropertiesEXT;

      GetPhysicalDeviceSurfaceCapabilities2KHR:TvkGetPhysicalDeviceSurfaceCapabilities2KHR;

      GetPhysicalDeviceSurfaceFormats2KHR:TvkGetPhysicalDeviceSurfaceFormats2KHR;

      GetPhysicalDeviceDisplayProperties2KHR:TvkGetPhysicalDeviceDisplayProperties2KHR;

      GetPhysicalDeviceDisplayPlaneProperties2KHR:TvkGetPhysicalDeviceDisplayPlaneProperties2KHR;

      GetDisplayModeProperties2KHR:TvkGetDisplayModeProperties2KHR;

      GetDisplayPlaneCapabilities2KHR:TvkGetDisplayPlaneCapabilities2KHR;

      GetBufferMemoryRequirements2:TvkGetBufferMemoryRequirements2;

      GetBufferMemoryRequirements2KHR:TvkGetBufferMemoryRequirements2KHR;

      GetImageMemoryRequirements2:TvkGetImageMemoryRequirements2;

      GetImageMemoryRequirements2KHR:TvkGetImageMemoryRequirements2KHR;

      GetImageSparseMemoryRequirements2:TvkGetImageSparseMemoryRequirements2;

      GetImageSparseMemoryRequirements2KHR:TvkGetImageSparseMemoryRequirements2KHR;

      GetDeviceBufferMemoryRequirements:TvkGetDeviceBufferMemoryRequirements;

      GetDeviceBufferMemoryRequirementsKHR:TvkGetDeviceBufferMemoryRequirementsKHR;

      GetDeviceImageMemoryRequirements:TvkGetDeviceImageMemoryRequirements;

      GetDeviceImageMemoryRequirementsKHR:TvkGetDeviceImageMemoryRequirementsKHR;

      GetDeviceImageSparseMemoryRequirements:TvkGetDeviceImageSparseMemoryRequirements;

      GetDeviceImageSparseMemoryRequirementsKHR:TvkGetDeviceImageSparseMemoryRequirementsKHR;

      CreateSamplerYcbcrConversion:TvkCreateSamplerYcbcrConversion;

      CreateSamplerYcbcrConversionKHR:TvkCreateSamplerYcbcrConversionKHR;

      DestroySamplerYcbcrConversion:TvkDestroySamplerYcbcrConversion;

      DestroySamplerYcbcrConversionKHR:TvkDestroySamplerYcbcrConversionKHR;

      GetDeviceQueue2:TvkGetDeviceQueue2;

      CreateValidationCacheEXT:TvkCreateValidationCacheEXT;

      DestroyValidationCacheEXT:TvkDestroyValidationCacheEXT;

      GetValidationCacheDataEXT:TvkGetValidationCacheDataEXT;

      MergeValidationCachesEXT:TvkMergeValidationCachesEXT;

      GetDescriptorSetLayoutSupport:TvkGetDescriptorSetLayoutSupport;

      GetDescriptorSetLayoutSupportKHR:TvkGetDescriptorSetLayoutSupportKHR;

      GetSwapchainGrallocUsageANDROID:TvkGetSwapchainGrallocUsageANDROID;

{$ifdef Android}
      GetSwapchainGrallocUsage2ANDROID:TvkGetSwapchainGrallocUsage2ANDROID;
{$endif}

      AcquireImageANDROID:TvkAcquireImageANDROID;

      QueueSignalReleaseImageANDROID:TvkQueueSignalReleaseImageANDROID;

      GetShaderInfoAMD:TvkGetShaderInfoAMD;

      SetLocalDimmingAMD:TvkSetLocalDimmingAMD;

      GetPhysicalDeviceCalibrateableTimeDomainsEXT:TvkGetPhysicalDeviceCalibrateableTimeDomainsEXT;

      GetCalibratedTimestampsEXT:TvkGetCalibratedTimestampsEXT;

      SetDebugUtilsObjectNameEXT:TvkSetDebugUtilsObjectNameEXT;

      SetDebugUtilsObjectTagEXT:TvkSetDebugUtilsObjectTagEXT;

      QueueBeginDebugUtilsLabelEXT:TvkQueueBeginDebugUtilsLabelEXT;

      QueueEndDebugUtilsLabelEXT:TvkQueueEndDebugUtilsLabelEXT;

      QueueInsertDebugUtilsLabelEXT:TvkQueueInsertDebugUtilsLabelEXT;

      CmdBeginDebugUtilsLabelEXT:TvkCmdBeginDebugUtilsLabelEXT;

      CmdEndDebugUtilsLabelEXT:TvkCmdEndDebugUtilsLabelEXT;

      CmdInsertDebugUtilsLabelEXT:TvkCmdInsertDebugUtilsLabelEXT;

      CreateDebugUtilsMessengerEXT:TvkCreateDebugUtilsMessengerEXT;

      DestroyDebugUtilsMessengerEXT:TvkDestroyDebugUtilsMessengerEXT;

      SubmitDebugUtilsMessageEXT:TvkSubmitDebugUtilsMessageEXT;

      GetMemoryHostPointerPropertiesEXT:TvkGetMemoryHostPointerPropertiesEXT;

      CmdWriteBufferMarkerAMD:TvkCmdWriteBufferMarkerAMD;

      CreateRenderPass2:TvkCreateRenderPass2;

      CreateRenderPass2KHR:TvkCreateRenderPass2KHR;

      CmdBeginRenderPass2:TvkCmdBeginRenderPass2;

      CmdBeginRenderPass2KHR:TvkCmdBeginRenderPass2KHR;

      CmdNextSubpass2:TvkCmdNextSubpass2;

      CmdNextSubpass2KHR:TvkCmdNextSubpass2KHR;

      CmdEndRenderPass2:TvkCmdEndRenderPass2;

      CmdEndRenderPass2KHR:TvkCmdEndRenderPass2KHR;

      GetSemaphoreCounterValue:TvkGetSemaphoreCounterValue;

      GetSemaphoreCounterValueKHR:TvkGetSemaphoreCounterValueKHR;

      WaitSemaphores:TvkWaitSemaphores;

      WaitSemaphoresKHR:TvkWaitSemaphoresKHR;

      SignalSemaphore:TvkSignalSemaphore;

      SignalSemaphoreKHR:TvkSignalSemaphoreKHR;

{$ifdef Android}
      GetAndroidHardwareBufferPropertiesANDROID:TvkGetAndroidHardwareBufferPropertiesANDROID;
{$endif}

{$ifdef Android}
      GetMemoryAndroidHardwareBufferANDROID:TvkGetMemoryAndroidHardwareBufferANDROID;
{$endif}

      CmdDrawIndirectCount:TvkCmdDrawIndirectCount;

      CmdDrawIndirectCountKHR:TvkCmdDrawIndirectCountKHR;

      CmdDrawIndirectCountAMD:TvkCmdDrawIndirectCountAMD;

      CmdDrawIndexedIndirectCount:TvkCmdDrawIndexedIndirectCount;

      CmdDrawIndexedIndirectCountKHR:TvkCmdDrawIndexedIndirectCountKHR;

      CmdDrawIndexedIndirectCountAMD:TvkCmdDrawIndexedIndirectCountAMD;

      CmdSetCheckpointNV:TvkCmdSetCheckpointNV;

      GetQueueCheckpointDataNV:TvkGetQueueCheckpointDataNV;

      CmdBindTransformFeedbackBuffersEXT:TvkCmdBindTransformFeedbackBuffersEXT;

      CmdBeginTransformFeedbackEXT:TvkCmdBeginTransformFeedbackEXT;

      CmdEndTransformFeedbackEXT:TvkCmdEndTransformFeedbackEXT;

      CmdBeginQueryIndexedEXT:TvkCmdBeginQueryIndexedEXT;

      CmdEndQueryIndexedEXT:TvkCmdEndQueryIndexedEXT;

      CmdDrawIndirectByteCountEXT:TvkCmdDrawIndirectByteCountEXT;

      CmdSetExclusiveScissorNV:TvkCmdSetExclusiveScissorNV;

      CmdSetExclusiveScissorEnableNV:TvkCmdSetExclusiveScissorEnableNV;

      CmdBindShadingRateImageNV:TvkCmdBindShadingRateImageNV;

      CmdSetViewportShadingRatePaletteNV:TvkCmdSetViewportShadingRatePaletteNV;

      CmdSetCoarseSampleOrderNV:TvkCmdSetCoarseSampleOrderNV;

      CmdDrawMeshTasksNV:TvkCmdDrawMeshTasksNV;

      CmdDrawMeshTasksIndirectNV:TvkCmdDrawMeshTasksIndirectNV;

      CmdDrawMeshTasksIndirectCountNV:TvkCmdDrawMeshTasksIndirectCountNV;

      CmdDrawMeshTasksEXT:TvkCmdDrawMeshTasksEXT;

      CmdDrawMeshTasksIndirectEXT:TvkCmdDrawMeshTasksIndirectEXT;

      CmdDrawMeshTasksIndirectCountEXT:TvkCmdDrawMeshTasksIndirectCountEXT;

      CompileDeferredNV:TvkCompileDeferredNV;

      CreateAccelerationStructureNV:TvkCreateAccelerationStructureNV;

      CmdBindInvocationMaskHUAWEI:TvkCmdBindInvocationMaskHUAWEI;

      DestroyAccelerationStructureKHR:TvkDestroyAccelerationStructureKHR;

      DestroyAccelerationStructureNV:TvkDestroyAccelerationStructureNV;

      GetAccelerationStructureMemoryRequirementsNV:TvkGetAccelerationStructureMemoryRequirementsNV;

      BindAccelerationStructureMemoryNV:TvkBindAccelerationStructureMemoryNV;

      CmdCopyAccelerationStructureNV:TvkCmdCopyAccelerationStructureNV;

      CmdCopyAccelerationStructureKHR:TvkCmdCopyAccelerationStructureKHR;

      CopyAccelerationStructureKHR:TvkCopyAccelerationStructureKHR;

      CmdCopyAccelerationStructureToMemoryKHR:TvkCmdCopyAccelerationStructureToMemoryKHR;

      CopyAccelerationStructureToMemoryKHR:TvkCopyAccelerationStructureToMemoryKHR;

      CmdCopyMemoryToAccelerationStructureKHR:TvkCmdCopyMemoryToAccelerationStructureKHR;

      CopyMemoryToAccelerationStructureKHR:TvkCopyMemoryToAccelerationStructureKHR;

      CmdWriteAccelerationStructuresPropertiesKHR:TvkCmdWriteAccelerationStructuresPropertiesKHR;

      CmdWriteAccelerationStructuresPropertiesNV:TvkCmdWriteAccelerationStructuresPropertiesNV;

      CmdBuildAccelerationStructureNV:TvkCmdBuildAccelerationStructureNV;

      WriteAccelerationStructuresPropertiesKHR:TvkWriteAccelerationStructuresPropertiesKHR;

      CmdTraceRaysKHR:TvkCmdTraceRaysKHR;

      CmdTraceRaysNV:TvkCmdTraceRaysNV;

      GetRayTracingShaderGroupHandlesKHR:TvkGetRayTracingShaderGroupHandlesKHR;

      GetRayTracingShaderGroupHandlesNV:TvkGetRayTracingShaderGroupHandlesNV;

      GetRayTracingCaptureReplayShaderGroupHandlesKHR:TvkGetRayTracingCaptureReplayShaderGroupHandlesKHR;

      GetAccelerationStructureHandleNV:TvkGetAccelerationStructureHandleNV;

      CreateRayTracingPipelinesNV:TvkCreateRayTracingPipelinesNV;

      CreateRayTracingPipelinesKHR:TvkCreateRayTracingPipelinesKHR;

      GetPhysicalDeviceCooperativeMatrixPropertiesNV:TvkGetPhysicalDeviceCooperativeMatrixPropertiesNV;

      CmdTraceRaysIndirectKHR:TvkCmdTraceRaysIndirectKHR;

      CmdTraceRaysIndirect2KHR:TvkCmdTraceRaysIndirect2KHR;

      GetDeviceAccelerationStructureCompatibilityKHR:TvkGetDeviceAccelerationStructureCompatibilityKHR;

      GetRayTracingShaderGroupStackSizeKHR:TvkGetRayTracingShaderGroupStackSizeKHR;

      CmdSetRayTracingPipelineStackSizeKHR:TvkCmdSetRayTracingPipelineStackSizeKHR;

      GetImageViewHandleNVX:TvkGetImageViewHandleNVX;

      GetImageViewAddressNVX:TvkGetImageViewAddressNVX;

      GetPhysicalDeviceSurfacePresentModes2EXT:TvkGetPhysicalDeviceSurfacePresentModes2EXT;

      GetDeviceGroupSurfacePresentModes2EXT:TvkGetDeviceGroupSurfacePresentModes2EXT;

      AcquireFullScreenExclusiveModeEXT:TvkAcquireFullScreenExclusiveModeEXT;

      ReleaseFullScreenExclusiveModeEXT:TvkReleaseFullScreenExclusiveModeEXT;

      EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR:TvkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR;

      GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR:TvkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR;

      AcquireProfilingLockKHR:TvkAcquireProfilingLockKHR;

      ReleaseProfilingLockKHR:TvkReleaseProfilingLockKHR;

      GetImageDrmFormatModifierPropertiesEXT:TvkGetImageDrmFormatModifierPropertiesEXT;

      GetBufferOpaqueCaptureAddress:TvkGetBufferOpaqueCaptureAddress;

      GetBufferOpaqueCaptureAddressKHR:TvkGetBufferOpaqueCaptureAddressKHR;

      GetBufferDeviceAddress:TvkGetBufferDeviceAddress;

      GetBufferDeviceAddressKHR:TvkGetBufferDeviceAddressKHR;

      GetBufferDeviceAddressEXT:TvkGetBufferDeviceAddressEXT;

      CreateHeadlessSurfaceEXT:TvkCreateHeadlessSurfaceEXT;

      GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV:TvkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV;

      InitializePerformanceApiINTEL:TvkInitializePerformanceApiINTEL;

      UninitializePerformanceApiINTEL:TvkUninitializePerformanceApiINTEL;

      CmdSetPerformanceMarkerINTEL:TvkCmdSetPerformanceMarkerINTEL;

      CmdSetPerformanceStreamMarkerINTEL:TvkCmdSetPerformanceStreamMarkerINTEL;

      CmdSetPerformanceOverrideINTEL:TvkCmdSetPerformanceOverrideINTEL;

      AcquirePerformanceConfigurationINTEL:TvkAcquirePerformanceConfigurationINTEL;

      ReleasePerformanceConfigurationINTEL:TvkReleasePerformanceConfigurationINTEL;

      QueueSetPerformanceConfigurationINTEL:TvkQueueSetPerformanceConfigurationINTEL;

      GetPerformanceParameterINTEL:TvkGetPerformanceParameterINTEL;

      GetDeviceMemoryOpaqueCaptureAddress:TvkGetDeviceMemoryOpaqueCaptureAddress;

      GetDeviceMemoryOpaqueCaptureAddressKHR:TvkGetDeviceMemoryOpaqueCaptureAddressKHR;

      GetPipelineExecutablePropertiesKHR:TvkGetPipelineExecutablePropertiesKHR;

      GetPipelineExecutableStatisticsKHR:TvkGetPipelineExecutableStatisticsKHR;

      GetPipelineExecutableInternalRepresentationsKHR:TvkGetPipelineExecutableInternalRepresentationsKHR;

      CmdSetLineStippleEXT:TvkCmdSetLineStippleEXT;

{$ifdef VulkanSC}
      GetFaultData:TvkGetFaultData;
{$endif}

      GetPhysicalDeviceToolProperties:TvkGetPhysicalDeviceToolProperties;

      GetPhysicalDeviceToolPropertiesEXT:TvkGetPhysicalDeviceToolPropertiesEXT;

      CreateAccelerationStructureKHR:TvkCreateAccelerationStructureKHR;

      CmdBuildAccelerationStructuresKHR:TvkCmdBuildAccelerationStructuresKHR;

      CmdBuildAccelerationStructuresIndirectKHR:TvkCmdBuildAccelerationStructuresIndirectKHR;

      BuildAccelerationStructuresKHR:TvkBuildAccelerationStructuresKHR;

      GetAccelerationStructureDeviceAddressKHR:TvkGetAccelerationStructureDeviceAddressKHR;

      CreateDeferredOperationKHR:TvkCreateDeferredOperationKHR;

      DestroyDeferredOperationKHR:TvkDestroyDeferredOperationKHR;

      GetDeferredOperationMaxConcurrencyKHR:TvkGetDeferredOperationMaxConcurrencyKHR;

      GetDeferredOperationResultKHR:TvkGetDeferredOperationResultKHR;

      DeferredOperationJoinKHR:TvkDeferredOperationJoinKHR;

      GetPipelineIndirectMemoryRequirementsNV:TvkGetPipelineIndirectMemoryRequirementsNV;

      GetPipelineIndirectDeviceAddressNV:TvkGetPipelineIndirectDeviceAddressNV;

      CmdSetCullMode:TvkCmdSetCullMode;

      CmdSetCullModeEXT:TvkCmdSetCullModeEXT;

      CmdSetFrontFace:TvkCmdSetFrontFace;

      CmdSetFrontFaceEXT:TvkCmdSetFrontFaceEXT;

      CmdSetPrimitiveTopology:TvkCmdSetPrimitiveTopology;

      CmdSetPrimitiveTopologyEXT:TvkCmdSetPrimitiveTopologyEXT;

      CmdSetViewportWithCount:TvkCmdSetViewportWithCount;

      CmdSetViewportWithCountEXT:TvkCmdSetViewportWithCountEXT;

      CmdSetScissorWithCount:TvkCmdSetScissorWithCount;

      CmdSetScissorWithCountEXT:TvkCmdSetScissorWithCountEXT;

      CmdBindIndexBuffer2KHR:TvkCmdBindIndexBuffer2KHR;

      CmdBindVertexBuffers2:TvkCmdBindVertexBuffers2;

      CmdBindVertexBuffers2EXT:TvkCmdBindVertexBuffers2EXT;

      CmdSetDepthTestEnable:TvkCmdSetDepthTestEnable;

      CmdSetDepthTestEnableEXT:TvkCmdSetDepthTestEnableEXT;

      CmdSetDepthWriteEnable:TvkCmdSetDepthWriteEnable;

      CmdSetDepthWriteEnableEXT:TvkCmdSetDepthWriteEnableEXT;

      CmdSetDepthCompareOp:TvkCmdSetDepthCompareOp;

      CmdSetDepthCompareOpEXT:TvkCmdSetDepthCompareOpEXT;

      CmdSetDepthBoundsTestEnable:TvkCmdSetDepthBoundsTestEnable;

      CmdSetDepthBoundsTestEnableEXT:TvkCmdSetDepthBoundsTestEnableEXT;

      CmdSetStencilTestEnable:TvkCmdSetStencilTestEnable;

      CmdSetStencilTestEnableEXT:TvkCmdSetStencilTestEnableEXT;

      CmdSetStencilOp:TvkCmdSetStencilOp;

      CmdSetStencilOpEXT:TvkCmdSetStencilOpEXT;

      CmdSetPatchControlPointsEXT:TvkCmdSetPatchControlPointsEXT;

      CmdSetRasterizerDiscardEnable:TvkCmdSetRasterizerDiscardEnable;

      CmdSetRasterizerDiscardEnableEXT:TvkCmdSetRasterizerDiscardEnableEXT;

      CmdSetDepthBiasEnable:TvkCmdSetDepthBiasEnable;

      CmdSetDepthBiasEnableEXT:TvkCmdSetDepthBiasEnableEXT;

      CmdSetLogicOpEXT:TvkCmdSetLogicOpEXT;

      CmdSetPrimitiveRestartEnable:TvkCmdSetPrimitiveRestartEnable;

      CmdSetPrimitiveRestartEnableEXT:TvkCmdSetPrimitiveRestartEnableEXT;

      CmdSetTessellationDomainOriginEXT:TvkCmdSetTessellationDomainOriginEXT;

      CmdSetDepthClampEnableEXT:TvkCmdSetDepthClampEnableEXT;

      CmdSetPolygonModeEXT:TvkCmdSetPolygonModeEXT;

      CmdSetRasterizationSamplesEXT:TvkCmdSetRasterizationSamplesEXT;

      CmdSetSampleMaskEXT:TvkCmdSetSampleMaskEXT;

      CmdSetAlphaToCoverageEnableEXT:TvkCmdSetAlphaToCoverageEnableEXT;

      CmdSetAlphaToOneEnableEXT:TvkCmdSetAlphaToOneEnableEXT;

      CmdSetLogicOpEnableEXT:TvkCmdSetLogicOpEnableEXT;

      CmdSetColorBlendEnableEXT:TvkCmdSetColorBlendEnableEXT;

      CmdSetColorBlendEquationEXT:TvkCmdSetColorBlendEquationEXT;

      CmdSetColorWriteMaskEXT:TvkCmdSetColorWriteMaskEXT;

      CmdSetRasterizationStreamEXT:TvkCmdSetRasterizationStreamEXT;

      CmdSetConservativeRasterizationModeEXT:TvkCmdSetConservativeRasterizationModeEXT;

      CmdSetExtraPrimitiveOverestimationSizeEXT:TvkCmdSetExtraPrimitiveOverestimationSizeEXT;

      CmdSetDepthClipEnableEXT:TvkCmdSetDepthClipEnableEXT;

      CmdSetSampleLocationsEnableEXT:TvkCmdSetSampleLocationsEnableEXT;

      CmdSetColorBlendAdvancedEXT:TvkCmdSetColorBlendAdvancedEXT;

      CmdSetProvokingVertexModeEXT:TvkCmdSetProvokingVertexModeEXT;

      CmdSetLineRasterizationModeEXT:TvkCmdSetLineRasterizationModeEXT;

      CmdSetLineStippleEnableEXT:TvkCmdSetLineStippleEnableEXT;

      CmdSetDepthClipNegativeOneToOneEXT:TvkCmdSetDepthClipNegativeOneToOneEXT;

      CmdSetViewportWScalingEnableNV:TvkCmdSetViewportWScalingEnableNV;

      CmdSetViewportSwizzleNV:TvkCmdSetViewportSwizzleNV;

      CmdSetCoverageToColorEnableNV:TvkCmdSetCoverageToColorEnableNV;

      CmdSetCoverageToColorLocationNV:TvkCmdSetCoverageToColorLocationNV;

      CmdSetCoverageModulationModeNV:TvkCmdSetCoverageModulationModeNV;

      CmdSetCoverageModulationTableEnableNV:TvkCmdSetCoverageModulationTableEnableNV;

      CmdSetCoverageModulationTableNV:TvkCmdSetCoverageModulationTableNV;

      CmdSetShadingRateImageEnableNV:TvkCmdSetShadingRateImageEnableNV;

      CmdSetCoverageReductionModeNV:TvkCmdSetCoverageReductionModeNV;

      CmdSetRepresentativeFragmentTestEnableNV:TvkCmdSetRepresentativeFragmentTestEnableNV;

      CreatePrivateDataSlot:TvkCreatePrivateDataSlot;

      CreatePrivateDataSlotEXT:TvkCreatePrivateDataSlotEXT;

      DestroyPrivateDataSlot:TvkDestroyPrivateDataSlot;

      DestroyPrivateDataSlotEXT:TvkDestroyPrivateDataSlotEXT;

      SetPrivateData:TvkSetPrivateData;

      SetPrivateDataEXT:TvkSetPrivateDataEXT;

      GetPrivateData:TvkGetPrivateData;

      GetPrivateDataEXT:TvkGetPrivateDataEXT;

      CmdCopyBuffer2:TvkCmdCopyBuffer2;

      CmdCopyBuffer2KHR:TvkCmdCopyBuffer2KHR;

      CmdCopyImage2:TvkCmdCopyImage2;

      CmdCopyImage2KHR:TvkCmdCopyImage2KHR;

      CmdBlitImage2:TvkCmdBlitImage2;

      CmdBlitImage2KHR:TvkCmdBlitImage2KHR;

      CmdCopyBufferToImage2:TvkCmdCopyBufferToImage2;

      CmdCopyBufferToImage2KHR:TvkCmdCopyBufferToImage2KHR;

      CmdCopyImageToBuffer2:TvkCmdCopyImageToBuffer2;

      CmdCopyImageToBuffer2KHR:TvkCmdCopyImageToBuffer2KHR;

      CmdResolveImage2:TvkCmdResolveImage2;

      CmdResolveImage2KHR:TvkCmdResolveImage2KHR;

      CmdRefreshObjectsKHR:TvkCmdRefreshObjectsKHR;

      GetPhysicalDeviceRefreshableObjectTypesKHR:TvkGetPhysicalDeviceRefreshableObjectTypesKHR;

      CmdSetFragmentShadingRateKHR:TvkCmdSetFragmentShadingRateKHR;

      GetPhysicalDeviceFragmentShadingRatesKHR:TvkGetPhysicalDeviceFragmentShadingRatesKHR;

      CmdSetFragmentShadingRateEnumNV:TvkCmdSetFragmentShadingRateEnumNV;

      GetAccelerationStructureBuildSizesKHR:TvkGetAccelerationStructureBuildSizesKHR;

      CmdSetVertexInputEXT:TvkCmdSetVertexInputEXT;

      CmdSetColorWriteEnableEXT:TvkCmdSetColorWriteEnableEXT;

      CmdSetEvent2:TvkCmdSetEvent2;

      CmdSetEvent2KHR:TvkCmdSetEvent2KHR;

      CmdResetEvent2:TvkCmdResetEvent2;

      CmdResetEvent2KHR:TvkCmdResetEvent2KHR;

      CmdWaitEvents2:TvkCmdWaitEvents2;

      CmdWaitEvents2KHR:TvkCmdWaitEvents2KHR;

      CmdPipelineBarrier2:TvkCmdPipelineBarrier2;

      CmdPipelineBarrier2KHR:TvkCmdPipelineBarrier2KHR;

      QueueSubmit2:TvkQueueSubmit2;

      QueueSubmit2KHR:TvkQueueSubmit2KHR;

      CmdWriteTimestamp2:TvkCmdWriteTimestamp2;

      CmdWriteTimestamp2KHR:TvkCmdWriteTimestamp2KHR;

      CmdWriteBufferMarker2AMD:TvkCmdWriteBufferMarker2AMD;

      GetQueueCheckpointData2NV:TvkGetQueueCheckpointData2NV;

      CopyMemoryToImageEXT:TvkCopyMemoryToImageEXT;

      CopyImageToMemoryEXT:TvkCopyImageToMemoryEXT;

      CopyImageToImageEXT:TvkCopyImageToImageEXT;

      TransitionImageLayoutEXT:TvkTransitionImageLayoutEXT;

{$ifdef VulkanSC}
      GetCommandPoolMemoryConsumption:TvkGetCommandPoolMemoryConsumption;
{$endif}

{$ifdef VkVideo}
      GetPhysicalDeviceVideoCapabilitiesKHR:TvkGetPhysicalDeviceVideoCapabilitiesKHR;
{$endif}

{$ifdef VkVideo}
      GetPhysicalDeviceVideoFormatPropertiesKHR:TvkGetPhysicalDeviceVideoFormatPropertiesKHR;
{$endif}

{$ifdef VkVideo}
      GetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR:TvkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR;
{$endif}

{$ifdef VkVideo}
      CreateVideoSessionKHR:TvkCreateVideoSessionKHR;
{$endif}

{$ifdef VkVideo}
      DestroyVideoSessionKHR:TvkDestroyVideoSessionKHR;
{$endif}

{$ifdef VkVideo}
      CreateVideoSessionParametersKHR:TvkCreateVideoSessionParametersKHR;
{$endif}

{$ifdef VkVideo}
      UpdateVideoSessionParametersKHR:TvkUpdateVideoSessionParametersKHR;
{$endif}

{$ifdef VkVideo}
      GetEncodedVideoSessionParametersKHR:TvkGetEncodedVideoSessionParametersKHR;
{$endif}

{$ifdef VkVideo}
      DestroyVideoSessionParametersKHR:TvkDestroyVideoSessionParametersKHR;
{$endif}

{$ifdef VkVideo}
      GetVideoSessionMemoryRequirementsKHR:TvkGetVideoSessionMemoryRequirementsKHR;
{$endif}

{$ifdef VkVideo}
      BindVideoSessionMemoryKHR:TvkBindVideoSessionMemoryKHR;
{$endif}

{$ifdef VkVideo}
      CmdDecodeVideoKHR:TvkCmdDecodeVideoKHR;
{$endif}

{$ifdef VkVideo}
      CmdBeginVideoCodingKHR:TvkCmdBeginVideoCodingKHR;
{$endif}

{$ifdef VkVideo}
      CmdControlVideoCodingKHR:TvkCmdControlVideoCodingKHR;
{$endif}

{$ifdef VkVideo}
      CmdEndVideoCodingKHR:TvkCmdEndVideoCodingKHR;
{$endif}

{$ifdef VkVideo}
      CmdEncodeVideoKHR:TvkCmdEncodeVideoKHR;
{$endif}

      CmdDecompressMemoryNV:TvkCmdDecompressMemoryNV;

      CmdDecompressMemoryIndirectCountNV:TvkCmdDecompressMemoryIndirectCountNV;

      CreateCuModuleNVX:TvkCreateCuModuleNVX;

      CreateCuFunctionNVX:TvkCreateCuFunctionNVX;

      DestroyCuModuleNVX:TvkDestroyCuModuleNVX;

      DestroyCuFunctionNVX:TvkDestroyCuFunctionNVX;

      CmdCuLaunchKernelNVX:TvkCmdCuLaunchKernelNVX;

      GetDescriptorSetLayoutSizeEXT:TvkGetDescriptorSetLayoutSizeEXT;

      GetDescriptorSetLayoutBindingOffsetEXT:TvkGetDescriptorSetLayoutBindingOffsetEXT;

      GetDescriptorEXT:TvkGetDescriptorEXT;

      CmdBindDescriptorBuffersEXT:TvkCmdBindDescriptorBuffersEXT;

      CmdSetDescriptorBufferOffsetsEXT:TvkCmdSetDescriptorBufferOffsetsEXT;

      CmdBindDescriptorBufferEmbeddedSamplersEXT:TvkCmdBindDescriptorBufferEmbeddedSamplersEXT;

      GetBufferOpaqueCaptureDescriptorDataEXT:TvkGetBufferOpaqueCaptureDescriptorDataEXT;

      GetImageOpaqueCaptureDescriptorDataEXT:TvkGetImageOpaqueCaptureDescriptorDataEXT;

      GetImageViewOpaqueCaptureDescriptorDataEXT:TvkGetImageViewOpaqueCaptureDescriptorDataEXT;

      GetSamplerOpaqueCaptureDescriptorDataEXT:TvkGetSamplerOpaqueCaptureDescriptorDataEXT;

      GetAccelerationStructureOpaqueCaptureDescriptorDataEXT:TvkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT;

      SetDeviceMemoryPriorityEXT:TvkSetDeviceMemoryPriorityEXT;

      AcquireDrmDisplayEXT:TvkAcquireDrmDisplayEXT;

      GetDrmDisplayEXT:TvkGetDrmDisplayEXT;

      WaitForPresentKHR:TvkWaitForPresentKHR;

{$ifdef Fuchsia}
      CreateBufferCollectionFUCHSIA:TvkCreateBufferCollectionFUCHSIA;
{$endif}

{$ifdef Fuchsia}
      SetBufferCollectionBufferConstraintsFUCHSIA:TvkSetBufferCollectionBufferConstraintsFUCHSIA;
{$endif}

{$ifdef Fuchsia}
      SetBufferCollectionImageConstraintsFUCHSIA:TvkSetBufferCollectionImageConstraintsFUCHSIA;
{$endif}

{$ifdef Fuchsia}
      DestroyBufferCollectionFUCHSIA:TvkDestroyBufferCollectionFUCHSIA;
{$endif}

{$ifdef Fuchsia}
      GetBufferCollectionPropertiesFUCHSIA:TvkGetBufferCollectionPropertiesFUCHSIA;
{$endif}

      CmdBeginRendering:TvkCmdBeginRendering;

      CmdBeginRenderingKHR:TvkCmdBeginRenderingKHR;

      CmdEndRendering:TvkCmdEndRendering;

      CmdEndRenderingKHR:TvkCmdEndRenderingKHR;

      GetDescriptorSetLayoutHostMappingInfoVALVE:TvkGetDescriptorSetLayoutHostMappingInfoVALVE;

      GetDescriptorSetHostMappingVALVE:TvkGetDescriptorSetHostMappingVALVE;

      CreateMicromapEXT:TvkCreateMicromapEXT;

      CmdBuildMicromapsEXT:TvkCmdBuildMicromapsEXT;

      BuildMicromapsEXT:TvkBuildMicromapsEXT;

      DestroyMicromapEXT:TvkDestroyMicromapEXT;

      CmdCopyMicromapEXT:TvkCmdCopyMicromapEXT;

      CopyMicromapEXT:TvkCopyMicromapEXT;

      CmdCopyMicromapToMemoryEXT:TvkCmdCopyMicromapToMemoryEXT;

      CopyMicromapToMemoryEXT:TvkCopyMicromapToMemoryEXT;

      CmdCopyMemoryToMicromapEXT:TvkCmdCopyMemoryToMicromapEXT;

      CopyMemoryToMicromapEXT:TvkCopyMemoryToMicromapEXT;

      CmdWriteMicromapsPropertiesEXT:TvkCmdWriteMicromapsPropertiesEXT;

      WriteMicromapsPropertiesEXT:TvkWriteMicromapsPropertiesEXT;

      GetDeviceMicromapCompatibilityEXT:TvkGetDeviceMicromapCompatibilityEXT;

      GetMicromapBuildSizesEXT:TvkGetMicromapBuildSizesEXT;

      GetShaderModuleIdentifierEXT:TvkGetShaderModuleIdentifierEXT;

      GetShaderModuleCreateInfoIdentifierEXT:TvkGetShaderModuleCreateInfoIdentifierEXT;

      GetImageSubresourceLayout2KHR:TvkGetImageSubresourceLayout2KHR;

      GetImageSubresourceLayout2EXT:TvkGetImageSubresourceLayout2EXT;

      GetPipelinePropertiesEXT:TvkGetPipelinePropertiesEXT;

      ExportMetalObjectsEXT:TvkExportMetalObjectsEXT;

      GetFramebufferTilePropertiesQCOM:TvkGetFramebufferTilePropertiesQCOM;

      GetDynamicRenderingTilePropertiesQCOM:TvkGetDynamicRenderingTilePropertiesQCOM;

      GetPhysicalDeviceOpticalFlowImageFormatsNV:TvkGetPhysicalDeviceOpticalFlowImageFormatsNV;

      CreateOpticalFlowSessionNV:TvkCreateOpticalFlowSessionNV;

      DestroyOpticalFlowSessionNV:TvkDestroyOpticalFlowSessionNV;

      BindOpticalFlowSessionImageNV:TvkBindOpticalFlowSessionImageNV;

      CmdOpticalFlowExecuteNV:TvkCmdOpticalFlowExecuteNV;

      GetDeviceFaultInfoEXT:TvkGetDeviceFaultInfoEXT;

      CmdSetDepthBias2EXT:TvkCmdSetDepthBias2EXT;

      ReleaseSwapchainImagesEXT:TvkReleaseSwapchainImagesEXT;

      GetDeviceImageSubresourceLayoutKHR:TvkGetDeviceImageSubresourceLayoutKHR;

      MapMemory2KHR:TvkMapMemory2KHR;

      UnmapMemory2KHR:TvkUnmapMemory2KHR;

      CreateShadersEXT:TvkCreateShadersEXT;

      DestroyShaderEXT:TvkDestroyShaderEXT;

      GetShaderBinaryDataEXT:TvkGetShaderBinaryDataEXT;

      CmdBindShadersEXT:TvkCmdBindShadersEXT;

{$ifdef QNX}
      GetScreenBufferPropertiesQNX:TvkGetScreenBufferPropertiesQNX;
{$endif}

      GetPhysicalDeviceCooperativeMatrixPropertiesKHR:TvkGetPhysicalDeviceCooperativeMatrixPropertiesKHR;

      GetExecutionGraphPipelineScratchSizeAMDX:TvkGetExecutionGraphPipelineScratchSizeAMDX;

      GetExecutionGraphPipelineNodeIndexAMDX:TvkGetExecutionGraphPipelineNodeIndexAMDX;

      CreateExecutionGraphPipelinesAMDX:TvkCreateExecutionGraphPipelinesAMDX;

      CmdInitializeGraphScratchMemoryAMDX:TvkCmdInitializeGraphScratchMemoryAMDX;

      CmdDispatchGraphAMDX:TvkCmdDispatchGraphAMDX;

      CmdDispatchGraphIndirectAMDX:TvkCmdDispatchGraphIndirectAMDX;

      CmdDispatchGraphIndirectCountAMDX:TvkCmdDispatchGraphIndirectCountAMDX;

      SetLatencySleepModeNV:TvkSetLatencySleepModeNV;

      LatencySleepNV:TvkLatencySleepNV;

      SetLatencyMarkerNV:TvkSetLatencyMarkerNV;

      GetLatencyTimingsNV:TvkGetLatencyTimingsNV;

      QueueNotifyOutOfBandNV:TvkQueueNotifyOutOfBandNV;

     end;

     TVulkan=class
      private
       fCommands:TVulkanCommands;
      public
       constructor Create; reintroduce; overload;
       constructor Create(const AVulkanCommands:TVulkanCommands); reintroduce; overload;
       destructor Destroy; override;
       function CreateInstance(const pCreateInfo:PVkInstanceCreateInfo;const pAllocator:PVkAllocationCallbacks;pInstance:PVkInstance):TVkResult; virtual;

       procedure DestroyInstance(instance:TVkInstance;const pAllocator:PVkAllocationCallbacks); virtual;

       function EnumeratePhysicalDevices(instance:TVkInstance;pPhysicalDeviceCount:PVkUInt32;pPhysicalDevices:PVkPhysicalDevice):TVkResult; virtual;

       function GetDeviceProcAddr(device:TVkDevice;const pName:PVkChar):TPFN_vkVoidFunction; virtual;

       function GetInstanceProcAddr(instance:TVkInstance;const pName:PVkChar):TPFN_vkVoidFunction; virtual;

       procedure GetPhysicalDeviceProperties(physicalDevice:TVkPhysicalDevice;pProperties:PVkPhysicalDeviceProperties); virtual;

       procedure GetPhysicalDeviceQueueFamilyProperties(physicalDevice:TVkPhysicalDevice;pQueueFamilyPropertyCount:PVkUInt32;pQueueFamilyProperties:PVkQueueFamilyProperties); virtual;

       procedure GetPhysicalDeviceMemoryProperties(physicalDevice:TVkPhysicalDevice;pMemoryProperties:PVkPhysicalDeviceMemoryProperties); virtual;

       procedure GetPhysicalDeviceFeatures(physicalDevice:TVkPhysicalDevice;pFeatures:PVkPhysicalDeviceFeatures); virtual;

       procedure GetPhysicalDeviceFormatProperties(physicalDevice:TVkPhysicalDevice;format:TVkFormat;pFormatProperties:PVkFormatProperties); virtual;

       function GetPhysicalDeviceImageFormatProperties(physicalDevice:TVkPhysicalDevice;format:TVkFormat;type_:TVkImageType;tiling:TVkImageTiling;usage:TVkImageUsageFlags;flags:TVkImageCreateFlags;pImageFormatProperties:PVkImageFormatProperties):TVkResult; virtual;

       function CreateDevice(physicalDevice:TVkPhysicalDevice;const pCreateInfo:PVkDeviceCreateInfo;const pAllocator:PVkAllocationCallbacks;pDevice:PVkDevice):TVkResult; virtual;

       procedure DestroyDevice(device:TVkDevice;const pAllocator:PVkAllocationCallbacks); virtual;

       function EnumerateInstanceVersion(pApiVersion:PVkUInt32):TVkResult; virtual;

       function EnumerateInstanceLayerProperties(pPropertyCount:PVkUInt32;pProperties:PVkLayerProperties):TVkResult; virtual;

       function EnumerateInstanceExtensionProperties(const pLayerName:PVkChar;pPropertyCount:PVkUInt32;pProperties:PVkExtensionProperties):TVkResult; virtual;

       function EnumerateDeviceLayerProperties(physicalDevice:TVkPhysicalDevice;pPropertyCount:PVkUInt32;pProperties:PVkLayerProperties):TVkResult; virtual;

       function EnumerateDeviceExtensionProperties(physicalDevice:TVkPhysicalDevice;const pLayerName:PVkChar;pPropertyCount:PVkUInt32;pProperties:PVkExtensionProperties):TVkResult; virtual;

       procedure GetDeviceQueue(device:TVkDevice;queueFamilyIndex:TVkUInt32;queueIndex:TVkUInt32;pQueue:PVkQueue); virtual;

       function QueueSubmit(queue:TVkQueue;submitCount:TVkUInt32;const pSubmits:PVkSubmitInfo;fence:TVkFence):TVkResult; virtual;

       function QueueWaitIdle(queue:TVkQueue):TVkResult; virtual;

       function DeviceWaitIdle(device:TVkDevice):TVkResult; virtual;

       function AllocateMemory(device:TVkDevice;const pAllocateInfo:PVkMemoryAllocateInfo;const pAllocator:PVkAllocationCallbacks;pMemory:PVkDeviceMemory):TVkResult; virtual;

       procedure FreeMemory(device:TVkDevice;memory:TVkDeviceMemory;const pAllocator:PVkAllocationCallbacks); virtual;

       function MapMemory(device:TVkDevice;memory:TVkDeviceMemory;offset:TVkDeviceSize;size:TVkDeviceSize;flags:TVkMemoryMapFlags;ppData:PPVkVoid):TVkResult; virtual;

       procedure UnmapMemory(device:TVkDevice;memory:TVkDeviceMemory); virtual;

       function FlushMappedMemoryRanges(device:TVkDevice;memoryRangeCount:TVkUInt32;const pMemoryRanges:PVkMappedMemoryRange):TVkResult; virtual;

       function InvalidateMappedMemoryRanges(device:TVkDevice;memoryRangeCount:TVkUInt32;const pMemoryRanges:PVkMappedMemoryRange):TVkResult; virtual;

       procedure GetDeviceMemoryCommitment(device:TVkDevice;memory:TVkDeviceMemory;pCommittedMemoryInBytes:PVkDeviceSize); virtual;

       procedure GetBufferMemoryRequirements(device:TVkDevice;buffer:TVkBuffer;pMemoryRequirements:PVkMemoryRequirements); virtual;

       function BindBufferMemory(device:TVkDevice;buffer:TVkBuffer;memory:TVkDeviceMemory;memoryOffset:TVkDeviceSize):TVkResult; virtual;

       procedure GetImageMemoryRequirements(device:TVkDevice;image:TVkImage;pMemoryRequirements:PVkMemoryRequirements); virtual;

       function BindImageMemory(device:TVkDevice;image:TVkImage;memory:TVkDeviceMemory;memoryOffset:TVkDeviceSize):TVkResult; virtual;

       procedure GetImageSparseMemoryRequirements(device:TVkDevice;image:TVkImage;pSparseMemoryRequirementCount:PVkUInt32;pSparseMemoryRequirements:PVkSparseImageMemoryRequirements); virtual;

       procedure GetPhysicalDeviceSparseImageFormatProperties(physicalDevice:TVkPhysicalDevice;format:TVkFormat;type_:TVkImageType;samples:TVkSampleCountFlagBits;usage:TVkImageUsageFlags;tiling:TVkImageTiling;pPropertyCount:PVkUInt32;pProperties:PVkSparseImageFormatProperties); virtual;

       function QueueBindSparse(queue:TVkQueue;bindInfoCount:TVkUInt32;const pBindInfo:PVkBindSparseInfo;fence:TVkFence):TVkResult; virtual;

       function CreateFence(device:TVkDevice;const pCreateInfo:PVkFenceCreateInfo;const pAllocator:PVkAllocationCallbacks;pFence:PVkFence):TVkResult; virtual;

       procedure DestroyFence(device:TVkDevice;fence:TVkFence;const pAllocator:PVkAllocationCallbacks); virtual;

       function ResetFences(device:TVkDevice;fenceCount:TVkUInt32;const pFences:PVkFence):TVkResult; virtual;

       function GetFenceStatus(device:TVkDevice;fence:TVkFence):TVkResult; virtual;

       function WaitForFences(device:TVkDevice;fenceCount:TVkUInt32;const pFences:PVkFence;waitAll:TVkBool32;timeout:TVkUInt64):TVkResult; virtual;

       function CreateSemaphore(device:TVkDevice;const pCreateInfo:PVkSemaphoreCreateInfo;const pAllocator:PVkAllocationCallbacks;pSemaphore:PVkSemaphore):TVkResult; virtual;

       procedure DestroySemaphore(device:TVkDevice;semaphore:TVkSemaphore;const pAllocator:PVkAllocationCallbacks); virtual;

       function CreateEvent(device:TVkDevice;const pCreateInfo:PVkEventCreateInfo;const pAllocator:PVkAllocationCallbacks;pEvent:PVkEvent):TVkResult; virtual;

       procedure DestroyEvent(device:TVkDevice;event:TVkEvent;const pAllocator:PVkAllocationCallbacks); virtual;

       function GetEventStatus(device:TVkDevice;event:TVkEvent):TVkResult; virtual;

       function SetEvent(device:TVkDevice;event:TVkEvent):TVkResult; virtual;

       function ResetEvent(device:TVkDevice;event:TVkEvent):TVkResult; virtual;

       function CreateQueryPool(device:TVkDevice;const pCreateInfo:PVkQueryPoolCreateInfo;const pAllocator:PVkAllocationCallbacks;pQueryPool:PVkQueryPool):TVkResult; virtual;

       procedure DestroyQueryPool(device:TVkDevice;queryPool:TVkQueryPool;const pAllocator:PVkAllocationCallbacks); virtual;

       function GetQueryPoolResults(device:TVkDevice;queryPool:TVkQueryPool;firstQuery:TVkUInt32;queryCount:TVkUInt32;dataSize:TVkSize;pData:PVkVoid;stride:TVkDeviceSize;flags:TVkQueryResultFlags):TVkResult; virtual;

       procedure ResetQueryPool(device:TVkDevice;queryPool:TVkQueryPool;firstQuery:TVkUInt32;queryCount:TVkUInt32); virtual;

       procedure ResetQueryPoolEXT(device:TVkDevice;queryPool:TVkQueryPool;firstQuery:TVkUInt32;queryCount:TVkUInt32); virtual;

       function CreateBuffer(device:TVkDevice;const pCreateInfo:PVkBufferCreateInfo;const pAllocator:PVkAllocationCallbacks;pBuffer:PVkBuffer):TVkResult; virtual;

       procedure DestroyBuffer(device:TVkDevice;buffer:TVkBuffer;const pAllocator:PVkAllocationCallbacks); virtual;

       function CreateBufferView(device:TVkDevice;const pCreateInfo:PVkBufferViewCreateInfo;const pAllocator:PVkAllocationCallbacks;pView:PVkBufferView):TVkResult; virtual;

       procedure DestroyBufferView(device:TVkDevice;bufferView:TVkBufferView;const pAllocator:PVkAllocationCallbacks); virtual;

       function CreateImage(device:TVkDevice;const pCreateInfo:PVkImageCreateInfo;const pAllocator:PVkAllocationCallbacks;pImage:PVkImage):TVkResult; virtual;

       procedure DestroyImage(device:TVkDevice;image:TVkImage;const pAllocator:PVkAllocationCallbacks); virtual;

       procedure GetImageSubresourceLayout(device:TVkDevice;image:TVkImage;const pSubresource:PVkImageSubresource;pLayout:PVkSubresourceLayout); virtual;

       function CreateImageView(device:TVkDevice;const pCreateInfo:PVkImageViewCreateInfo;const pAllocator:PVkAllocationCallbacks;pView:PVkImageView):TVkResult; virtual;

       procedure DestroyImageView(device:TVkDevice;imageView:TVkImageView;const pAllocator:PVkAllocationCallbacks); virtual;

       function CreateShaderModule(device:TVkDevice;const pCreateInfo:PVkShaderModuleCreateInfo;const pAllocator:PVkAllocationCallbacks;pShaderModule:PVkShaderModule):TVkResult; virtual;

       procedure DestroyShaderModule(device:TVkDevice;shaderModule:TVkShaderModule;const pAllocator:PVkAllocationCallbacks); virtual;

       function CreatePipelineCache(device:TVkDevice;const pCreateInfo:PVkPipelineCacheCreateInfo;const pAllocator:PVkAllocationCallbacks;pPipelineCache:PVkPipelineCache):TVkResult; virtual;

       procedure DestroyPipelineCache(device:TVkDevice;pipelineCache:TVkPipelineCache;const pAllocator:PVkAllocationCallbacks); virtual;

       function GetPipelineCacheData(device:TVkDevice;pipelineCache:TVkPipelineCache;pDataSize:PVkSize;pData:PVkVoid):TVkResult; virtual;

       function MergePipelineCaches(device:TVkDevice;dstCache:TVkPipelineCache;srcCacheCount:TVkUInt32;const pSrcCaches:PVkPipelineCache):TVkResult; virtual;

       function CreateGraphicsPipelines(device:TVkDevice;pipelineCache:TVkPipelineCache;createInfoCount:TVkUInt32;const pCreateInfos:PVkGraphicsPipelineCreateInfo;const pAllocator:PVkAllocationCallbacks;pPipelines:PVkPipeline):TVkResult; virtual;

       function CreateComputePipelines(device:TVkDevice;pipelineCache:TVkPipelineCache;createInfoCount:TVkUInt32;const pCreateInfos:PVkComputePipelineCreateInfo;const pAllocator:PVkAllocationCallbacks;pPipelines:PVkPipeline):TVkResult; virtual;

       function GetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device:TVkDevice;renderpass:TVkRenderPass;pMaxWorkgroupSize:PVkExtent2D):TVkResult; virtual;

       procedure DestroyPipeline(device:TVkDevice;pipeline:TVkPipeline;const pAllocator:PVkAllocationCallbacks); virtual;

       function CreatePipelineLayout(device:TVkDevice;const pCreateInfo:PVkPipelineLayoutCreateInfo;const pAllocator:PVkAllocationCallbacks;pPipelineLayout:PVkPipelineLayout):TVkResult; virtual;

       procedure DestroyPipelineLayout(device:TVkDevice;pipelineLayout:TVkPipelineLayout;const pAllocator:PVkAllocationCallbacks); virtual;

       function CreateSampler(device:TVkDevice;const pCreateInfo:PVkSamplerCreateInfo;const pAllocator:PVkAllocationCallbacks;pSampler:PVkSampler):TVkResult; virtual;

       procedure DestroySampler(device:TVkDevice;sampler:TVkSampler;const pAllocator:PVkAllocationCallbacks); virtual;

       function CreateDescriptorSetLayout(device:TVkDevice;const pCreateInfo:PVkDescriptorSetLayoutCreateInfo;const pAllocator:PVkAllocationCallbacks;pSetLayout:PVkDescriptorSetLayout):TVkResult; virtual;

       procedure DestroyDescriptorSetLayout(device:TVkDevice;descriptorSetLayout:TVkDescriptorSetLayout;const pAllocator:PVkAllocationCallbacks); virtual;

       function CreateDescriptorPool(device:TVkDevice;const pCreateInfo:PVkDescriptorPoolCreateInfo;const pAllocator:PVkAllocationCallbacks;pDescriptorPool:PVkDescriptorPool):TVkResult; virtual;

       procedure DestroyDescriptorPool(device:TVkDevice;descriptorPool:TVkDescriptorPool;const pAllocator:PVkAllocationCallbacks); virtual;

       function ResetDescriptorPool(device:TVkDevice;descriptorPool:TVkDescriptorPool;flags:TVkDescriptorPoolResetFlags):TVkResult; virtual;

       function AllocateDescriptorSets(device:TVkDevice;const pAllocateInfo:PVkDescriptorSetAllocateInfo;pDescriptorSets:PVkDescriptorSet):TVkResult; virtual;

       function FreeDescriptorSets(device:TVkDevice;descriptorPool:TVkDescriptorPool;descriptorSetCount:TVkUInt32;const pDescriptorSets:PVkDescriptorSet):TVkResult; virtual;

       procedure UpdateDescriptorSets(device:TVkDevice;descriptorWriteCount:TVkUInt32;const pDescriptorWrites:PVkWriteDescriptorSet;descriptorCopyCount:TVkUInt32;const pDescriptorCopies:PVkCopyDescriptorSet); virtual;

       function CreateFramebuffer(device:TVkDevice;const pCreateInfo:PVkFramebufferCreateInfo;const pAllocator:PVkAllocationCallbacks;pFramebuffer:PVkFramebuffer):TVkResult; virtual;

       procedure DestroyFramebuffer(device:TVkDevice;framebuffer:TVkFramebuffer;const pAllocator:PVkAllocationCallbacks); virtual;

       function CreateRenderPass(device:TVkDevice;const pCreateInfo:PVkRenderPassCreateInfo;const pAllocator:PVkAllocationCallbacks;pRenderPass:PVkRenderPass):TVkResult; virtual;

       procedure DestroyRenderPass(device:TVkDevice;renderPass:TVkRenderPass;const pAllocator:PVkAllocationCallbacks); virtual;

       procedure GetRenderAreaGranularity(device:TVkDevice;renderPass:TVkRenderPass;pGranularity:PVkExtent2D); virtual;

       procedure GetRenderingAreaGranularityKHR(device:TVkDevice;const pRenderingAreaInfo:PVkRenderingAreaInfoKHR;pGranularity:PVkExtent2D); virtual;

       function CreateCommandPool(device:TVkDevice;const pCreateInfo:PVkCommandPoolCreateInfo;const pAllocator:PVkAllocationCallbacks;pCommandPool:PVkCommandPool):TVkResult; virtual;

       procedure DestroyCommandPool(device:TVkDevice;commandPool:TVkCommandPool;const pAllocator:PVkAllocationCallbacks); virtual;

       function ResetCommandPool(device:TVkDevice;commandPool:TVkCommandPool;flags:TVkCommandPoolResetFlags):TVkResult; virtual;

       function AllocateCommandBuffers(device:TVkDevice;const pAllocateInfo:PVkCommandBufferAllocateInfo;pCommandBuffers:PVkCommandBuffer):TVkResult; virtual;

       procedure FreeCommandBuffers(device:TVkDevice;commandPool:TVkCommandPool;commandBufferCount:TVkUInt32;const pCommandBuffers:PVkCommandBuffer); virtual;

       function BeginCommandBuffer(commandBuffer:TVkCommandBuffer;const pBeginInfo:PVkCommandBufferBeginInfo):TVkResult; virtual;

       function EndCommandBuffer(commandBuffer:TVkCommandBuffer):TVkResult; virtual;

       function ResetCommandBuffer(commandBuffer:TVkCommandBuffer;flags:TVkCommandBufferResetFlags):TVkResult; virtual;

       procedure CmdBindPipeline(commandBuffer:TVkCommandBuffer;pipelineBindPoint:TVkPipelineBindPoint;pipeline:TVkPipeline); virtual;

       procedure CmdSetAttachmentFeedbackLoopEnableEXT(commandBuffer:TVkCommandBuffer;aspectMask:TVkImageAspectFlags); virtual;

       procedure CmdSetViewport(commandBuffer:TVkCommandBuffer;firstViewport:TVkUInt32;viewportCount:TVkUInt32;const pViewports:PVkViewport); virtual;

       procedure CmdSetScissor(commandBuffer:TVkCommandBuffer;firstScissor:TVkUInt32;scissorCount:TVkUInt32;const pScissors:PVkRect2D); virtual;

       procedure CmdSetLineWidth(commandBuffer:TVkCommandBuffer;lineWidth:TVkFloat); virtual;

       procedure CmdSetDepthBias(commandBuffer:TVkCommandBuffer;depthBiasConstantFactor:TVkFloat;depthBiasClamp:TVkFloat;depthBiasSlopeFactor:TVkFloat); virtual;

       procedure CmdSetBlendConstants(commandBuffer:TVkCommandBuffer;const blendConstants:TVkFloat); virtual;

       procedure CmdSetDepthBounds(commandBuffer:TVkCommandBuffer;minDepthBounds:TVkFloat;maxDepthBounds:TVkFloat); virtual;

       procedure CmdSetStencilCompareMask(commandBuffer:TVkCommandBuffer;faceMask:TVkStencilFaceFlags;compareMask:TVkUInt32); virtual;

       procedure CmdSetStencilWriteMask(commandBuffer:TVkCommandBuffer;faceMask:TVkStencilFaceFlags;writeMask:TVkUInt32); virtual;

       procedure CmdSetStencilReference(commandBuffer:TVkCommandBuffer;faceMask:TVkStencilFaceFlags;reference:TVkUInt32); virtual;

       procedure CmdBindDescriptorSets(commandBuffer:TVkCommandBuffer;pipelineBindPoint:TVkPipelineBindPoint;layout:TVkPipelineLayout;firstSet:TVkUInt32;descriptorSetCount:TVkUInt32;const pDescriptorSets:PVkDescriptorSet;dynamicOffsetCount:TVkUInt32;const pDynamicOffsets:PVkUInt32); virtual;

       procedure CmdBindIndexBuffer(commandBuffer:TVkCommandBuffer;buffer:TVkBuffer;offset:TVkDeviceSize;indexType:TVkIndexType); virtual;

       procedure CmdBindVertexBuffers(commandBuffer:TVkCommandBuffer;firstBinding:TVkUInt32;bindingCount:TVkUInt32;const pBuffers:PVkBuffer;const pOffsets:PVkDeviceSize); virtual;

       procedure CmdDraw(commandBuffer:TVkCommandBuffer;vertexCount:TVkUInt32;instanceCount:TVkUInt32;firstVertex:TVkUInt32;firstInstance:TVkUInt32); virtual;

       procedure CmdDrawIndexed(commandBuffer:TVkCommandBuffer;indexCount:TVkUInt32;instanceCount:TVkUInt32;firstIndex:TVkUInt32;vertexOffset:TVkInt32;firstInstance:TVkUInt32); virtual;

       procedure CmdDrawMultiEXT(commandBuffer:TVkCommandBuffer;drawCount:TVkUInt32;const pVertexInfo:PVkMultiDrawInfoEXT;instanceCount:TVkUInt32;firstInstance:TVkUInt32;stride:TVkUInt32); virtual;

       procedure CmdDrawMultiIndexedEXT(commandBuffer:TVkCommandBuffer;drawCount:TVkUInt32;const pIndexInfo:PVkMultiDrawIndexedInfoEXT;instanceCount:TVkUInt32;firstInstance:TVkUInt32;stride:TVkUInt32;const pVertexOffset:PVkInt32); virtual;

       procedure CmdDrawIndirect(commandBuffer:TVkCommandBuffer;buffer:TVkBuffer;offset:TVkDeviceSize;drawCount:TVkUInt32;stride:TVkUInt32); virtual;

       procedure CmdDrawIndexedIndirect(commandBuffer:TVkCommandBuffer;buffer:TVkBuffer;offset:TVkDeviceSize;drawCount:TVkUInt32;stride:TVkUInt32); virtual;

       procedure CmdDispatch(commandBuffer:TVkCommandBuffer;groupCountX:TVkUInt32;groupCountY:TVkUInt32;groupCountZ:TVkUInt32); virtual;

       procedure CmdDispatchIndirect(commandBuffer:TVkCommandBuffer;buffer:TVkBuffer;offset:TVkDeviceSize); virtual;

       procedure CmdSubpassShadingHUAWEI(commandBuffer:TVkCommandBuffer); virtual;

       procedure CmdDrawClusterHUAWEI(commandBuffer:TVkCommandBuffer;groupCountX:TVkUInt32;groupCountY:TVkUInt32;groupCountZ:TVkUInt32); virtual;

       procedure CmdDrawClusterIndirectHUAWEI(commandBuffer:TVkCommandBuffer;buffer:TVkBuffer;offset:TVkDeviceSize); virtual;

       procedure CmdUpdatePipelineIndirectBufferNV(commandBuffer:TVkCommandBuffer;pipelineBindPoint:TVkPipelineBindPoint;pipeline:TVkPipeline); virtual;

       procedure CmdCopyBuffer(commandBuffer:TVkCommandBuffer;srcBuffer:TVkBuffer;dstBuffer:TVkBuffer;regionCount:TVkUInt32;const pRegions:PVkBufferCopy); virtual;

       procedure CmdCopyImage(commandBuffer:TVkCommandBuffer;srcImage:TVkImage;srcImageLayout:TVkImageLayout;dstImage:TVkImage;dstImageLayout:TVkImageLayout;regionCount:TVkUInt32;const pRegions:PVkImageCopy); virtual;

       procedure CmdBlitImage(commandBuffer:TVkCommandBuffer;srcImage:TVkImage;srcImageLayout:TVkImageLayout;dstImage:TVkImage;dstImageLayout:TVkImageLayout;regionCount:TVkUInt32;const pRegions:PVkImageBlit;filter:TVkFilter); virtual;

       procedure CmdCopyBufferToImage(commandBuffer:TVkCommandBuffer;srcBuffer:TVkBuffer;dstImage:TVkImage;dstImageLayout:TVkImageLayout;regionCount:TVkUInt32;const pRegions:PVkBufferImageCopy); virtual;

       procedure CmdCopyImageToBuffer(commandBuffer:TVkCommandBuffer;srcImage:TVkImage;srcImageLayout:TVkImageLayout;dstBuffer:TVkBuffer;regionCount:TVkUInt32;const pRegions:PVkBufferImageCopy); virtual;

       procedure CmdCopyMemoryIndirectNV(commandBuffer:TVkCommandBuffer;copyBufferAddress:TVkDeviceAddress;copyCount:TVkUInt32;stride:TVkUInt32); virtual;

       procedure CmdCopyMemoryToImageIndirectNV(commandBuffer:TVkCommandBuffer;copyBufferAddress:TVkDeviceAddress;copyCount:TVkUInt32;stride:TVkUInt32;dstImage:TVkImage;dstImageLayout:TVkImageLayout;const pImageSubresources:PVkImageSubresourceLayers); virtual;

       procedure CmdUpdateBuffer(commandBuffer:TVkCommandBuffer;dstBuffer:TVkBuffer;dstOffset:TVkDeviceSize;dataSize:TVkDeviceSize;const pData:PVkVoid); virtual;

       procedure CmdFillBuffer(commandBuffer:TVkCommandBuffer;dstBuffer:TVkBuffer;dstOffset:TVkDeviceSize;size:TVkDeviceSize;data:TVkUInt32); virtual;

       procedure CmdClearColorImage(commandBuffer:TVkCommandBuffer;image:TVkImage;imageLayout:TVkImageLayout;const pColor:PVkClearColorValue;rangeCount:TVkUInt32;const pRanges:PVkImageSubresourceRange); virtual;

       procedure CmdClearDepthStencilImage(commandBuffer:TVkCommandBuffer;image:TVkImage;imageLayout:TVkImageLayout;const pDepthStencil:PVkClearDepthStencilValue;rangeCount:TVkUInt32;const pRanges:PVkImageSubresourceRange); virtual;

       procedure CmdClearAttachments(commandBuffer:TVkCommandBuffer;attachmentCount:TVkUInt32;const pAttachments:PVkClearAttachment;rectCount:TVkUInt32;const pRects:PVkClearRect); virtual;

       procedure CmdResolveImage(commandBuffer:TVkCommandBuffer;srcImage:TVkImage;srcImageLayout:TVkImageLayout;dstImage:TVkImage;dstImageLayout:TVkImageLayout;regionCount:TVkUInt32;const pRegions:PVkImageResolve); virtual;

       procedure CmdSetEvent(commandBuffer:TVkCommandBuffer;event:TVkEvent;stageMask:TVkPipelineStageFlags); virtual;

       procedure CmdResetEvent(commandBuffer:TVkCommandBuffer;event:TVkEvent;stageMask:TVkPipelineStageFlags); virtual;

       procedure CmdWaitEvents(commandBuffer:TVkCommandBuffer;eventCount:TVkUInt32;const pEvents:PVkEvent;srcStageMask:TVkPipelineStageFlags;dstStageMask:TVkPipelineStageFlags;memoryBarrierCount:TVkUInt32;const pMemoryBarriers:PVkMemoryBarrier;bufferMemoryBarrierCount:TVkUInt32;const pBufferMemoryBarriers:PVkBufferMemoryBarrier;imageMemoryBarrierCount:TVkUInt32;const pImageMemoryBarriers:PVkImageMemoryBarrier); virtual;

       procedure CmdPipelineBarrier(commandBuffer:TVkCommandBuffer;srcStageMask:TVkPipelineStageFlags;dstStageMask:TVkPipelineStageFlags;dependencyFlags:TVkDependencyFlags;memoryBarrierCount:TVkUInt32;const pMemoryBarriers:PVkMemoryBarrier;bufferMemoryBarrierCount:TVkUInt32;const pBufferMemoryBarriers:PVkBufferMemoryBarrier;imageMemoryBarrierCount:TVkUInt32;const pImageMemoryBarriers:PVkImageMemoryBarrier); virtual;

       procedure CmdBeginQuery(commandBuffer:TVkCommandBuffer;queryPool:TVkQueryPool;query:TVkUInt32;flags:TVkQueryControlFlags); virtual;

       procedure CmdEndQuery(commandBuffer:TVkCommandBuffer;queryPool:TVkQueryPool;query:TVkUInt32); virtual;

       procedure CmdBeginConditionalRenderingEXT(commandBuffer:TVkCommandBuffer;const pConditionalRenderingBegin:PVkConditionalRenderingBeginInfoEXT); virtual;

       procedure CmdEndConditionalRenderingEXT(commandBuffer:TVkCommandBuffer); virtual;

       procedure CmdResetQueryPool(commandBuffer:TVkCommandBuffer;queryPool:TVkQueryPool;firstQuery:TVkUInt32;queryCount:TVkUInt32); virtual;

       procedure CmdWriteTimestamp(commandBuffer:TVkCommandBuffer;pipelineStage:TVkPipelineStageFlagBits;queryPool:TVkQueryPool;query:TVkUInt32); virtual;

       procedure CmdCopyQueryPoolResults(commandBuffer:TVkCommandBuffer;queryPool:TVkQueryPool;firstQuery:TVkUInt32;queryCount:TVkUInt32;dstBuffer:TVkBuffer;dstOffset:TVkDeviceSize;stride:TVkDeviceSize;flags:TVkQueryResultFlags); virtual;

       procedure CmdPushConstants(commandBuffer:TVkCommandBuffer;layout:TVkPipelineLayout;stageFlags:TVkShaderStageFlags;offset:TVkUInt32;size:TVkUInt32;const pValues:PVkVoid); virtual;

       procedure CmdBeginRenderPass(commandBuffer:TVkCommandBuffer;const pRenderPassBegin:PVkRenderPassBeginInfo;contents:TVkSubpassContents); virtual;

       procedure CmdNextSubpass(commandBuffer:TVkCommandBuffer;contents:TVkSubpassContents); virtual;

       procedure CmdEndRenderPass(commandBuffer:TVkCommandBuffer); virtual;

       procedure CmdExecuteCommands(commandBuffer:TVkCommandBuffer;commandBufferCount:TVkUInt32;const pCommandBuffers:PVkCommandBuffer); virtual;

{$ifdef Android}
       function CreateAndroidSurfaceKHR(instance:TVkInstance;const pCreateInfo:PVkAndroidSurfaceCreateInfoKHR;const pAllocator:PVkAllocationCallbacks;pSurface:PVkSurfaceKHR):TVkResult; virtual;
{$endif}

       function GetPhysicalDeviceDisplayPropertiesKHR(physicalDevice:TVkPhysicalDevice;pPropertyCount:PVkUInt32;pProperties:PVkDisplayPropertiesKHR):TVkResult; virtual;

       function GetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice:TVkPhysicalDevice;pPropertyCount:PVkUInt32;pProperties:PVkDisplayPlanePropertiesKHR):TVkResult; virtual;

       function GetDisplayPlaneSupportedDisplaysKHR(physicalDevice:TVkPhysicalDevice;planeIndex:TVkUInt32;pDisplayCount:PVkUInt32;pDisplays:PVkDisplayKHR):TVkResult; virtual;

       function GetDisplayModePropertiesKHR(physicalDevice:TVkPhysicalDevice;display:TVkDisplayKHR;pPropertyCount:PVkUInt32;pProperties:PVkDisplayModePropertiesKHR):TVkResult; virtual;

       function CreateDisplayModeKHR(physicalDevice:TVkPhysicalDevice;display:TVkDisplayKHR;const pCreateInfo:PVkDisplayModeCreateInfoKHR;const pAllocator:PVkAllocationCallbacks;pMode:PVkDisplayModeKHR):TVkResult; virtual;

       function GetDisplayPlaneCapabilitiesKHR(physicalDevice:TVkPhysicalDevice;mode:TVkDisplayModeKHR;planeIndex:TVkUInt32;pCapabilities:PVkDisplayPlaneCapabilitiesKHR):TVkResult; virtual;

       function CreateDisplayPlaneSurfaceKHR(instance:TVkInstance;const pCreateInfo:PVkDisplaySurfaceCreateInfoKHR;const pAllocator:PVkAllocationCallbacks;pSurface:PVkSurfaceKHR):TVkResult; virtual;

       function CreateSharedSwapchainsKHR(device:TVkDevice;swapchainCount:TVkUInt32;const pCreateInfos:PVkSwapchainCreateInfoKHR;const pAllocator:PVkAllocationCallbacks;pSwapchains:PVkSwapchainKHR):TVkResult; virtual;

       procedure DestroySurfaceKHR(instance:TVkInstance;surface:TVkSurfaceKHR;const pAllocator:PVkAllocationCallbacks); virtual;

       function GetPhysicalDeviceSurfaceSupportKHR(physicalDevice:TVkPhysicalDevice;queueFamilyIndex:TVkUInt32;surface:TVkSurfaceKHR;pSupported:PVkBool32):TVkResult; virtual;

       function GetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice:TVkPhysicalDevice;surface:TVkSurfaceKHR;pSurfaceCapabilities:PVkSurfaceCapabilitiesKHR):TVkResult; virtual;

       function GetPhysicalDeviceSurfaceFormatsKHR(physicalDevice:TVkPhysicalDevice;surface:TVkSurfaceKHR;pSurfaceFormatCount:PVkUInt32;pSurfaceFormats:PVkSurfaceFormatKHR):TVkResult; virtual;

       function GetPhysicalDeviceSurfacePresentModesKHR(physicalDevice:TVkPhysicalDevice;surface:TVkSurfaceKHR;pPresentModeCount:PVkUInt32;pPresentModes:PVkPresentModeKHR):TVkResult; virtual;

       function CreateSwapchainKHR(device:TVkDevice;const pCreateInfo:PVkSwapchainCreateInfoKHR;const pAllocator:PVkAllocationCallbacks;pSwapchain:PVkSwapchainKHR):TVkResult; virtual;

       procedure DestroySwapchainKHR(device:TVkDevice;swapchain:TVkSwapchainKHR;const pAllocator:PVkAllocationCallbacks); virtual;

       function GetSwapchainImagesKHR(device:TVkDevice;swapchain:TVkSwapchainKHR;pSwapchainImageCount:PVkUInt32;pSwapchainImages:PVkImage):TVkResult; virtual;

       function AcquireNextImageKHR(device:TVkDevice;swapchain:TVkSwapchainKHR;timeout:TVkUInt64;semaphore:TVkSemaphore;fence:TVkFence;pImageIndex:PVkUInt32):TVkResult; virtual;

       function QueuePresentKHR(queue:TVkQueue;const pPresentInfo:PVkPresentInfoKHR):TVkResult; virtual;

       function CreateViSurfaceNN(instance:TVkInstance;const pCreateInfo:PVkViSurfaceCreateInfoNN;const pAllocator:PVkAllocationCallbacks;pSurface:PVkSurfaceKHR):TVkResult; virtual;

{$ifdef Wayland}
       function CreateWaylandSurfaceKHR(instance:TVkInstance;const pCreateInfo:PVkWaylandSurfaceCreateInfoKHR;const pAllocator:PVkAllocationCallbacks;pSurface:PVkSurfaceKHR):TVkResult; virtual;
{$endif}

{$ifdef Wayland}
       function GetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice:TVkPhysicalDevice;queueFamilyIndex:TVkUInt32;display:PVkWaylandDisplay):TVkBool32; virtual;
{$endif}

{$ifdef Windows}
       function CreateWin32SurfaceKHR(instance:TVkInstance;const pCreateInfo:PVkWin32SurfaceCreateInfoKHR;const pAllocator:PVkAllocationCallbacks;pSurface:PVkSurfaceKHR):TVkResult; virtual;
{$endif}

{$ifdef Windows}
       function GetPhysicalDeviceWin32PresentationSupportKHR(physicalDevice:TVkPhysicalDevice;queueFamilyIndex:TVkUInt32):TVkBool32; virtual;
{$endif}

{$ifdef XLIB}
       function CreateXlibSurfaceKHR(instance:TVkInstance;const pCreateInfo:PVkXlibSurfaceCreateInfoKHR;const pAllocator:PVkAllocationCallbacks;pSurface:PVkSurfaceKHR):TVkResult; virtual;
{$endif}

{$ifdef XLIB}
       function GetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice:TVkPhysicalDevice;queueFamilyIndex:TVkUInt32;dpy:PVkXLIBDisplay;visualID:TVkXLIBVisualID):TVkBool32; virtual;
{$endif}

{$ifdef XCB}
       function CreateXcbSurfaceKHR(instance:TVkInstance;const pCreateInfo:PVkXcbSurfaceCreateInfoKHR;const pAllocator:PVkAllocationCallbacks;pSurface:PVkSurfaceKHR):TVkResult; virtual;
{$endif}

{$ifdef XCB}
       function GetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice:TVkPhysicalDevice;queueFamilyIndex:TVkUInt32;connection:PVkXCBConnection;visual_id:TVkXCBVisualID):TVkBool32; virtual;
{$endif}

{$ifdef DirectFB}
       function CreateDirectFBSurfaceEXT(instance:TVkInstance;const pCreateInfo:PVkDirectFBSurfaceCreateInfoEXT;const pAllocator:PVkAllocationCallbacks;pSurface:PVkSurfaceKHR):TVkResult; virtual;
{$endif}

{$ifdef DirectFB}
       function GetPhysicalDeviceDirectFBPresentationSupportEXT(physicalDevice:TVkPhysicalDevice;queueFamilyIndex:TVkUInt32;dfb:PVkDirectFBIDirectFB):TVkBool32; virtual;
{$endif}

{$ifdef Fuchsia}
       function CreateImagePipeSurfaceFUCHSIA(instance:TVkInstance;const pCreateInfo:PVkImagePipeSurfaceCreateInfoFUCHSIA;const pAllocator:PVkAllocationCallbacks;pSurface:PVkSurfaceKHR):TVkResult; virtual;
{$endif}

       function CreateStreamDescriptorSurfaceGGP(instance:TVkInstance;const pCreateInfo:PVkStreamDescriptorSurfaceCreateInfoGGP;const pAllocator:PVkAllocationCallbacks;pSurface:PVkSurfaceKHR):TVkResult; virtual;

{$ifdef QNX}
       function CreateScreenSurfaceQNX(instance:TVkInstance;const pCreateInfo:PVkScreenSurfaceCreateInfoQNX;const pAllocator:PVkAllocationCallbacks;pSurface:PVkSurfaceKHR):TVkResult; virtual;
{$endif}

{$ifdef QNX}
       function GetPhysicalDeviceScreenPresentationSupportQNX(physicalDevice:TVkPhysicalDevice;queueFamilyIndex:TVkUInt32;window:PVkQNXScreenWindow):TVkBool32; virtual;
{$endif}

       function CreateDebugReportCallbackEXT(instance:TVkInstance;const pCreateInfo:PVkDebugReportCallbackCreateInfoEXT;const pAllocator:PVkAllocationCallbacks;pCallback:PVkDebugReportCallbackEXT):TVkResult; virtual;

       procedure DestroyDebugReportCallbackEXT(instance:TVkInstance;callback:TVkDebugReportCallbackEXT;const pAllocator:PVkAllocationCallbacks); virtual;

       procedure DebugReportMessageEXT(instance:TVkInstance;flags:TVkDebugReportFlagsEXT;objectType:TVkDebugReportObjectTypeEXT;object_:TVkUInt64;location:TVkSize;messageCode:TVkInt32;const pLayerPrefix:PVkChar;const pMessage:PVkChar); virtual;

       function DebugMarkerSetObjectNameEXT(device:TVkDevice;const pNameInfo:PVkDebugMarkerObjectNameInfoEXT):TVkResult; virtual;

       function DebugMarkerSetObjectTagEXT(device:TVkDevice;const pTagInfo:PVkDebugMarkerObjectTagInfoEXT):TVkResult; virtual;

       procedure CmdDebugMarkerBeginEXT(commandBuffer:TVkCommandBuffer;const pMarkerInfo:PVkDebugMarkerMarkerInfoEXT); virtual;

       procedure CmdDebugMarkerEndEXT(commandBuffer:TVkCommandBuffer); virtual;

       procedure CmdDebugMarkerInsertEXT(commandBuffer:TVkCommandBuffer;const pMarkerInfo:PVkDebugMarkerMarkerInfoEXT); virtual;

       function GetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice:TVkPhysicalDevice;format:TVkFormat;type_:TVkImageType;tiling:TVkImageTiling;usage:TVkImageUsageFlags;flags:TVkImageCreateFlags;externalHandleType:TVkExternalMemoryHandleTypeFlagsNV;pExternalImageFormatProperties:PVkExternalImageFormatPropertiesNV):TVkResult; virtual;

{$ifdef Windows}
       function GetMemoryWin32HandleNV(device:TVkDevice;memory:TVkDeviceMemory;handleType:TVkExternalMemoryHandleTypeFlagsNV;pHandle:PHANDLE):TVkResult; virtual;
{$endif}

       procedure CmdExecuteGeneratedCommandsNV(commandBuffer:TVkCommandBuffer;isPreprocessed:TVkBool32;const pGeneratedCommandsInfo:PVkGeneratedCommandsInfoNV); virtual;

       procedure CmdPreprocessGeneratedCommandsNV(commandBuffer:TVkCommandBuffer;const pGeneratedCommandsInfo:PVkGeneratedCommandsInfoNV); virtual;

       procedure CmdBindPipelineShaderGroupNV(commandBuffer:TVkCommandBuffer;pipelineBindPoint:TVkPipelineBindPoint;pipeline:TVkPipeline;groupIndex:TVkUInt32); virtual;

       procedure GetGeneratedCommandsMemoryRequirementsNV(device:TVkDevice;const pInfo:PVkGeneratedCommandsMemoryRequirementsInfoNV;pMemoryRequirements:PVkMemoryRequirements2); virtual;

       function CreateIndirectCommandsLayoutNV(device:TVkDevice;const pCreateInfo:PVkIndirectCommandsLayoutCreateInfoNV;const pAllocator:PVkAllocationCallbacks;pIndirectCommandsLayout:PVkIndirectCommandsLayoutNV):TVkResult; virtual;

       procedure DestroyIndirectCommandsLayoutNV(device:TVkDevice;indirectCommandsLayout:TVkIndirectCommandsLayoutNV;const pAllocator:PVkAllocationCallbacks); virtual;

       procedure GetPhysicalDeviceFeatures2(physicalDevice:TVkPhysicalDevice;pFeatures:PVkPhysicalDeviceFeatures2); virtual;

       procedure GetPhysicalDeviceFeatures2KHR(physicalDevice:TVkPhysicalDevice;pFeatures:PVkPhysicalDeviceFeatures2); virtual;

       procedure GetPhysicalDeviceProperties2(physicalDevice:TVkPhysicalDevice;pProperties:PVkPhysicalDeviceProperties2); virtual;

       procedure GetPhysicalDeviceProperties2KHR(physicalDevice:TVkPhysicalDevice;pProperties:PVkPhysicalDeviceProperties2); virtual;

       procedure GetPhysicalDeviceFormatProperties2(physicalDevice:TVkPhysicalDevice;format:TVkFormat;pFormatProperties:PVkFormatProperties2); virtual;

       procedure GetPhysicalDeviceFormatProperties2KHR(physicalDevice:TVkPhysicalDevice;format:TVkFormat;pFormatProperties:PVkFormatProperties2); virtual;

       function GetPhysicalDeviceImageFormatProperties2(physicalDevice:TVkPhysicalDevice;const pImageFormatInfo:PVkPhysicalDeviceImageFormatInfo2;pImageFormatProperties:PVkImageFormatProperties2):TVkResult; virtual;

       function GetPhysicalDeviceImageFormatProperties2KHR(physicalDevice:TVkPhysicalDevice;const pImageFormatInfo:PVkPhysicalDeviceImageFormatInfo2;pImageFormatProperties:PVkImageFormatProperties2):TVkResult; virtual;

       procedure GetPhysicalDeviceQueueFamilyProperties2(physicalDevice:TVkPhysicalDevice;pQueueFamilyPropertyCount:PVkUInt32;pQueueFamilyProperties:PVkQueueFamilyProperties2); virtual;

       procedure GetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice:TVkPhysicalDevice;pQueueFamilyPropertyCount:PVkUInt32;pQueueFamilyProperties:PVkQueueFamilyProperties2); virtual;

       procedure GetPhysicalDeviceMemoryProperties2(physicalDevice:TVkPhysicalDevice;pMemoryProperties:PVkPhysicalDeviceMemoryProperties2); virtual;

       procedure GetPhysicalDeviceMemoryProperties2KHR(physicalDevice:TVkPhysicalDevice;pMemoryProperties:PVkPhysicalDeviceMemoryProperties2); virtual;

       procedure GetPhysicalDeviceSparseImageFormatProperties2(physicalDevice:TVkPhysicalDevice;const pFormatInfo:PVkPhysicalDeviceSparseImageFormatInfo2;pPropertyCount:PVkUInt32;pProperties:PVkSparseImageFormatProperties2); virtual;

       procedure GetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice:TVkPhysicalDevice;const pFormatInfo:PVkPhysicalDeviceSparseImageFormatInfo2;pPropertyCount:PVkUInt32;pProperties:PVkSparseImageFormatProperties2); virtual;

       procedure CmdPushDescriptorSetKHR(commandBuffer:TVkCommandBuffer;pipelineBindPoint:TVkPipelineBindPoint;layout:TVkPipelineLayout;set_:TVkUInt32;descriptorWriteCount:TVkUInt32;const pDescriptorWrites:PVkWriteDescriptorSet); virtual;

       procedure TrimCommandPool(device:TVkDevice;commandPool:TVkCommandPool;flags:TVkCommandPoolTrimFlags); virtual;

       procedure TrimCommandPoolKHR(device:TVkDevice;commandPool:TVkCommandPool;flags:TVkCommandPoolTrimFlags); virtual;

       procedure GetPhysicalDeviceExternalBufferProperties(physicalDevice:TVkPhysicalDevice;const pExternalBufferInfo:PVkPhysicalDeviceExternalBufferInfo;pExternalBufferProperties:PVkExternalBufferProperties); virtual;

       procedure GetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice:TVkPhysicalDevice;const pExternalBufferInfo:PVkPhysicalDeviceExternalBufferInfo;pExternalBufferProperties:PVkExternalBufferProperties); virtual;

{$ifdef Windows}
       function GetMemoryWin32HandleKHR(device:TVkDevice;const pGetWin32HandleInfo:PVkMemoryGetWin32HandleInfoKHR;pHandle:PHANDLE):TVkResult; virtual;
{$endif}

{$ifdef Windows}
       function GetMemoryWin32HandlePropertiesKHR(device:TVkDevice;handleType:TVkExternalMemoryHandleTypeFlagBits;handle:THANDLE;pMemoryWin32HandleProperties:PVkMemoryWin32HandlePropertiesKHR):TVkResult; virtual;
{$endif}

       function GetMemoryFdKHR(device:TVkDevice;const pGetFdInfo:PVkMemoryGetFdInfoKHR;pFd:PVkInt32):TVkResult; virtual;

       function GetMemoryFdPropertiesKHR(device:TVkDevice;handleType:TVkExternalMemoryHandleTypeFlagBits;fd:TVkInt32;pMemoryFdProperties:PVkMemoryFdPropertiesKHR):TVkResult; virtual;

{$ifdef Fuchsia}
       function GetMemoryZirconHandleFUCHSIA(device:TVkDevice;const pGetZirconHandleInfo:PVkMemoryGetZirconHandleInfoFUCHSIA;pZirconHandle:PVkFuchsiaZXHandle):TVkResult; virtual;
{$endif}

{$ifdef Fuchsia}
       function GetMemoryZirconHandlePropertiesFUCHSIA(device:TVkDevice;handleType:TVkExternalMemoryHandleTypeFlagBits;zirconHandle:TVkFuchsiaZXHandle;pMemoryZirconHandleProperties:PVkMemoryZirconHandlePropertiesFUCHSIA):TVkResult; virtual;
{$endif}

       function GetMemoryRemoteAddressNV(device:TVkDevice;const pMemoryGetRemoteAddressInfo:PVkMemoryGetRemoteAddressInfoNV;pAddress:PVkRemoteAddressNV):TVkResult; virtual;

{$ifdef NvSci}
       function GetMemorySciBufNV(device:TVkDevice;const pGetSciBufInfo:PVkMemoryGetSciBufInfoNV;pHandle:PNvSciBufObj):TVkResult; virtual;
{$endif}

{$ifdef NvSci}
       function GetPhysicalDeviceExternalMemorySciBufPropertiesNV(physicalDevice:TVkPhysicalDevice;handleType:TVkExternalMemoryHandleTypeFlagBits;handle:TNvSciBufObj;pMemorySciBufProperties:PVkMemorySciBufPropertiesNV):TVkResult; virtual;
{$endif}

{$ifdef NvSci}
       function GetPhysicalDeviceSciBufAttributesNV(physicalDevice:TVkPhysicalDevice;pAttributes:TNvSciBufAttrList):TVkResult; virtual;
{$endif}

       procedure GetPhysicalDeviceExternalSemaphoreProperties(physicalDevice:TVkPhysicalDevice;const pExternalSemaphoreInfo:PVkPhysicalDeviceExternalSemaphoreInfo;pExternalSemaphoreProperties:PVkExternalSemaphoreProperties); virtual;

       procedure GetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice:TVkPhysicalDevice;const pExternalSemaphoreInfo:PVkPhysicalDeviceExternalSemaphoreInfo;pExternalSemaphoreProperties:PVkExternalSemaphoreProperties); virtual;

{$ifdef Windows}
       function GetSemaphoreWin32HandleKHR(device:TVkDevice;const pGetWin32HandleInfo:PVkSemaphoreGetWin32HandleInfoKHR;pHandle:PHANDLE):TVkResult; virtual;
{$endif}

{$ifdef Windows}
       function ImportSemaphoreWin32HandleKHR(device:TVkDevice;const pImportSemaphoreWin32HandleInfo:PVkImportSemaphoreWin32HandleInfoKHR):TVkResult; virtual;
{$endif}

       function GetSemaphoreFdKHR(device:TVkDevice;const pGetFdInfo:PVkSemaphoreGetFdInfoKHR;pFd:PVkInt32):TVkResult; virtual;

       function ImportSemaphoreFdKHR(device:TVkDevice;const pImportSemaphoreFdInfo:PVkImportSemaphoreFdInfoKHR):TVkResult; virtual;

{$ifdef Fuchsia}
       function GetSemaphoreZirconHandleFUCHSIA(device:TVkDevice;const pGetZirconHandleInfo:PVkSemaphoreGetZirconHandleInfoFUCHSIA;pZirconHandle:PVkFuchsiaZXHandle):TVkResult; virtual;
{$endif}

{$ifdef Fuchsia}
       function ImportSemaphoreZirconHandleFUCHSIA(device:TVkDevice;const pImportSemaphoreZirconHandleInfo:PVkImportSemaphoreZirconHandleInfoFUCHSIA):TVkResult; virtual;
{$endif}

       procedure GetPhysicalDeviceExternalFenceProperties(physicalDevice:TVkPhysicalDevice;const pExternalFenceInfo:PVkPhysicalDeviceExternalFenceInfo;pExternalFenceProperties:PVkExternalFenceProperties); virtual;

       procedure GetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice:TVkPhysicalDevice;const pExternalFenceInfo:PVkPhysicalDeviceExternalFenceInfo;pExternalFenceProperties:PVkExternalFenceProperties); virtual;

{$ifdef Windows}
       function GetFenceWin32HandleKHR(device:TVkDevice;const pGetWin32HandleInfo:PVkFenceGetWin32HandleInfoKHR;pHandle:PHANDLE):TVkResult; virtual;
{$endif}

{$ifdef Windows}
       function ImportFenceWin32HandleKHR(device:TVkDevice;const pImportFenceWin32HandleInfo:PVkImportFenceWin32HandleInfoKHR):TVkResult; virtual;
{$endif}

       function GetFenceFdKHR(device:TVkDevice;const pGetFdInfo:PVkFenceGetFdInfoKHR;pFd:PVkInt32):TVkResult; virtual;

       function ImportFenceFdKHR(device:TVkDevice;const pImportFenceFdInfo:PVkImportFenceFdInfoKHR):TVkResult; virtual;

{$ifdef NvSci}
       function GetFenceSciSyncFenceNV(device:TVkDevice;const pGetSciSyncHandleInfo:PVkFenceGetSciSyncInfoNV;pHandle:PVkVoid):TVkResult; virtual;
{$endif}

{$ifdef NvSci}
       function GetFenceSciSyncObjNV(device:TVkDevice;const pGetSciSyncHandleInfo:PVkFenceGetSciSyncInfoNV;pHandle:PVkVoid):TVkResult; virtual;
{$endif}

{$ifdef NvSci}
       function ImportFenceSciSyncFenceNV(device:TVkDevice;const pImportFenceSciSyncInfo:PVkImportFenceSciSyncInfoNV):TVkResult; virtual;
{$endif}

{$ifdef NvSci}
       function ImportFenceSciSyncObjNV(device:TVkDevice;const pImportFenceSciSyncInfo:PVkImportFenceSciSyncInfoNV):TVkResult; virtual;
{$endif}

{$ifdef NvSci}
       function GetSemaphoreSciSyncObjNV(device:TVkDevice;const pGetSciSyncInfo:PVkSemaphoreGetSciSyncInfoNV;pHandle:PVkVoid):TVkResult; virtual;
{$endif}

{$ifdef NvSci}
       function ImportSemaphoreSciSyncObjNV(device:TVkDevice;const pImportSemaphoreSciSyncInfo:PVkImportSemaphoreSciSyncInfoNV):TVkResult; virtual;
{$endif}

{$ifdef NvSci}
       function GetPhysicalDeviceSciSyncAttributesNV(physicalDevice:TVkPhysicalDevice;const pSciSyncAttributesInfo:PVkSciSyncAttributesInfoNV;pAttributes:TNvSciSyncAttrList):TVkResult; virtual;
{$endif}

{$ifdef NvSci}
       function CreateSemaphoreSciSyncPoolNV(device:TVkDevice;const pCreateInfo:PVkSemaphoreSciSyncPoolCreateInfoNV;const pAllocator:PVkAllocationCallbacks;pSemaphorePool:PVkSemaphoreSciSyncPoolNV):TVkResult; virtual;
{$endif}

{$ifdef NvSci}
       procedure DestroySemaphoreSciSyncPoolNV(device:TVkDevice;semaphorePool:TVkSemaphoreSciSyncPoolNV;const pAllocator:PVkAllocationCallbacks); virtual;
{$endif}

       function ReleaseDisplayEXT(physicalDevice:TVkPhysicalDevice;display:TVkDisplayKHR):TVkResult; virtual;

{$ifdef XLIB}
       function AcquireXlibDisplayEXT(physicalDevice:TVkPhysicalDevice;dpy:PVkXLIBDisplay;display:TVkDisplayKHR):TVkResult; virtual;
{$endif}

{$ifdef RandR}
       function GetRandROutputDisplayEXT(physicalDevice:TVkPhysicalDevice;dpy:PVkXLIBDisplay;rrOutput:TRROutput;pDisplay:PVkDisplayKHR):TVkResult; virtual;
{$endif}

       function AcquireWinrtDisplayNV(physicalDevice:TVkPhysicalDevice;display:TVkDisplayKHR):TVkResult; virtual;

       function GetWinrtDisplayNV(physicalDevice:TVkPhysicalDevice;deviceRelativeId:TVkUInt32;pDisplay:PVkDisplayKHR):TVkResult; virtual;

       function DisplayPowerControlEXT(device:TVkDevice;display:TVkDisplayKHR;const pDisplayPowerInfo:PVkDisplayPowerInfoEXT):TVkResult; virtual;

       function RegisterDeviceEventEXT(device:TVkDevice;const pDeviceEventInfo:PVkDeviceEventInfoEXT;const pAllocator:PVkAllocationCallbacks;pFence:PVkFence):TVkResult; virtual;

       function RegisterDisplayEventEXT(device:TVkDevice;display:TVkDisplayKHR;const pDisplayEventInfo:PVkDisplayEventInfoEXT;const pAllocator:PVkAllocationCallbacks;pFence:PVkFence):TVkResult; virtual;

       function GetSwapchainCounterEXT(device:TVkDevice;swapchain:TVkSwapchainKHR;counter:TVkSurfaceCounterFlagBitsEXT;pCounterValue:PVkUInt64):TVkResult; virtual;

       function GetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice:TVkPhysicalDevice;surface:TVkSurfaceKHR;pSurfaceCapabilities:PVkSurfaceCapabilities2EXT):TVkResult; virtual;

       function EnumeratePhysicalDeviceGroups(instance:TVkInstance;pPhysicalDeviceGroupCount:PVkUInt32;pPhysicalDeviceGroupProperties:PVkPhysicalDeviceGroupProperties):TVkResult; virtual;

       function EnumeratePhysicalDeviceGroupsKHR(instance:TVkInstance;pPhysicalDeviceGroupCount:PVkUInt32;pPhysicalDeviceGroupProperties:PVkPhysicalDeviceGroupProperties):TVkResult; virtual;

       procedure GetDeviceGroupPeerMemoryFeatures(device:TVkDevice;heapIndex:TVkUInt32;localDeviceIndex:TVkUInt32;remoteDeviceIndex:TVkUInt32;pPeerMemoryFeatures:PVkPeerMemoryFeatureFlags); virtual;

       procedure GetDeviceGroupPeerMemoryFeaturesKHR(device:TVkDevice;heapIndex:TVkUInt32;localDeviceIndex:TVkUInt32;remoteDeviceIndex:TVkUInt32;pPeerMemoryFeatures:PVkPeerMemoryFeatureFlags); virtual;

       function BindBufferMemory2(device:TVkDevice;bindInfoCount:TVkUInt32;const pBindInfos:PVkBindBufferMemoryInfo):TVkResult; virtual;

       function BindBufferMemory2KHR(device:TVkDevice;bindInfoCount:TVkUInt32;const pBindInfos:PVkBindBufferMemoryInfo):TVkResult; virtual;

       function BindImageMemory2(device:TVkDevice;bindInfoCount:TVkUInt32;const pBindInfos:PVkBindImageMemoryInfo):TVkResult; virtual;

       function BindImageMemory2KHR(device:TVkDevice;bindInfoCount:TVkUInt32;const pBindInfos:PVkBindImageMemoryInfo):TVkResult; virtual;

       procedure CmdSetDeviceMask(commandBuffer:TVkCommandBuffer;deviceMask:TVkUInt32); virtual;

       procedure CmdSetDeviceMaskKHR(commandBuffer:TVkCommandBuffer;deviceMask:TVkUInt32); virtual;

       function GetDeviceGroupPresentCapabilitiesKHR(device:TVkDevice;pDeviceGroupPresentCapabilities:PVkDeviceGroupPresentCapabilitiesKHR):TVkResult; virtual;

       function GetDeviceGroupSurfacePresentModesKHR(device:TVkDevice;surface:TVkSurfaceKHR;pModes:PVkDeviceGroupPresentModeFlagsKHR):TVkResult; virtual;

       function AcquireNextImage2KHR(device:TVkDevice;const pAcquireInfo:PVkAcquireNextImageInfoKHR;pImageIndex:PVkUInt32):TVkResult; virtual;

       procedure CmdDispatchBase(commandBuffer:TVkCommandBuffer;baseGroupX:TVkUInt32;baseGroupY:TVkUInt32;baseGroupZ:TVkUInt32;groupCountX:TVkUInt32;groupCountY:TVkUInt32;groupCountZ:TVkUInt32); virtual;

       procedure CmdDispatchBaseKHR(commandBuffer:TVkCommandBuffer;baseGroupX:TVkUInt32;baseGroupY:TVkUInt32;baseGroupZ:TVkUInt32;groupCountX:TVkUInt32;groupCountY:TVkUInt32;groupCountZ:TVkUInt32); virtual;

       function GetPhysicalDevicePresentRectanglesKHR(physicalDevice:TVkPhysicalDevice;surface:TVkSurfaceKHR;pRectCount:PVkUInt32;pRects:PVkRect2D):TVkResult; virtual;

       function CreateDescriptorUpdateTemplate(device:TVkDevice;const pCreateInfo:PVkDescriptorUpdateTemplateCreateInfo;const pAllocator:PVkAllocationCallbacks;pDescriptorUpdateTemplate:PVkDescriptorUpdateTemplate):TVkResult; virtual;

       function CreateDescriptorUpdateTemplateKHR(device:TVkDevice;const pCreateInfo:PVkDescriptorUpdateTemplateCreateInfo;const pAllocator:PVkAllocationCallbacks;pDescriptorUpdateTemplate:PVkDescriptorUpdateTemplate):TVkResult; virtual;

       procedure DestroyDescriptorUpdateTemplate(device:TVkDevice;descriptorUpdateTemplate:TVkDescriptorUpdateTemplate;const pAllocator:PVkAllocationCallbacks); virtual;

       procedure DestroyDescriptorUpdateTemplateKHR(device:TVkDevice;descriptorUpdateTemplate:TVkDescriptorUpdateTemplate;const pAllocator:PVkAllocationCallbacks); virtual;

       procedure UpdateDescriptorSetWithTemplate(device:TVkDevice;descriptorSet:TVkDescriptorSet;descriptorUpdateTemplate:TVkDescriptorUpdateTemplate;const pData:PVkVoid); virtual;

       procedure UpdateDescriptorSetWithTemplateKHR(device:TVkDevice;descriptorSet:TVkDescriptorSet;descriptorUpdateTemplate:TVkDescriptorUpdateTemplate;const pData:PVkVoid); virtual;

       procedure CmdPushDescriptorSetWithTemplateKHR(commandBuffer:TVkCommandBuffer;descriptorUpdateTemplate:TVkDescriptorUpdateTemplate;layout:TVkPipelineLayout;set_:TVkUInt32;const pData:PVkVoid); virtual;

       procedure SetHdrMetadataEXT(device:TVkDevice;swapchainCount:TVkUInt32;const pSwapchains:PVkSwapchainKHR;const pMetadata:PVkHdrMetadataEXT); virtual;

       function GetSwapchainStatusKHR(device:TVkDevice;swapchain:TVkSwapchainKHR):TVkResult; virtual;

       function GetRefreshCycleDurationGOOGLE(device:TVkDevice;swapchain:TVkSwapchainKHR;pDisplayTimingProperties:PVkRefreshCycleDurationGOOGLE):TVkResult; virtual;

       function GetPastPresentationTimingGOOGLE(device:TVkDevice;swapchain:TVkSwapchainKHR;pPresentationTimingCount:PVkUInt32;pPresentationTimings:PVkPastPresentationTimingGOOGLE):TVkResult; virtual;

{$ifdef MoltenVK_IOS}
       function CreateIOSSurfaceMVK(instance:TVkInstance;const pCreateInfo:PVkIOSSurfaceCreateInfoMVK;const pAllocator:PVkAllocationCallbacks;pSurface:PVkSurfaceKHR):TVkResult; virtual;
{$endif}

{$ifdef MoltenVK_MacOS}
       function CreateMacOSSurfaceMVK(instance:TVkInstance;const pCreateInfo:PVkMacOSSurfaceCreateInfoMVK;const pAllocator:PVkAllocationCallbacks;pSurface:PVkSurfaceKHR):TVkResult; virtual;
{$endif}

       function CreateMetalSurfaceEXT(instance:TVkInstance;const pCreateInfo:PVkMetalSurfaceCreateInfoEXT;const pAllocator:PVkAllocationCallbacks;pSurface:PVkSurfaceKHR):TVkResult; virtual;

       procedure CmdSetViewportWScalingNV(commandBuffer:TVkCommandBuffer;firstViewport:TVkUInt32;viewportCount:TVkUInt32;const pViewportWScalings:PVkViewportWScalingNV); virtual;

       procedure CmdSetDiscardRectangleEXT(commandBuffer:TVkCommandBuffer;firstDiscardRectangle:TVkUInt32;discardRectangleCount:TVkUInt32;const pDiscardRectangles:PVkRect2D); virtual;

       procedure CmdSetDiscardRectangleEnableEXT(commandBuffer:TVkCommandBuffer;discardRectangleEnable:TVkBool32); virtual;

       procedure CmdSetDiscardRectangleModeEXT(commandBuffer:TVkCommandBuffer;discardRectangleMode:TVkDiscardRectangleModeEXT); virtual;

       procedure CmdSetSampleLocationsEXT(commandBuffer:TVkCommandBuffer;const pSampleLocationsInfo:PVkSampleLocationsInfoEXT); virtual;

       procedure GetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice:TVkPhysicalDevice;samples:TVkSampleCountFlagBits;pMultisampleProperties:PVkMultisamplePropertiesEXT); virtual;

       function GetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice:TVkPhysicalDevice;const pSurfaceInfo:PVkPhysicalDeviceSurfaceInfo2KHR;pSurfaceCapabilities:PVkSurfaceCapabilities2KHR):TVkResult; virtual;

       function GetPhysicalDeviceSurfaceFormats2KHR(physicalDevice:TVkPhysicalDevice;const pSurfaceInfo:PVkPhysicalDeviceSurfaceInfo2KHR;pSurfaceFormatCount:PVkUInt32;pSurfaceFormats:PVkSurfaceFormat2KHR):TVkResult; virtual;

       function GetPhysicalDeviceDisplayProperties2KHR(physicalDevice:TVkPhysicalDevice;pPropertyCount:PVkUInt32;pProperties:PVkDisplayProperties2KHR):TVkResult; virtual;

       function GetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice:TVkPhysicalDevice;pPropertyCount:PVkUInt32;pProperties:PVkDisplayPlaneProperties2KHR):TVkResult; virtual;

       function GetDisplayModeProperties2KHR(physicalDevice:TVkPhysicalDevice;display:TVkDisplayKHR;pPropertyCount:PVkUInt32;pProperties:PVkDisplayModeProperties2KHR):TVkResult; virtual;

       function GetDisplayPlaneCapabilities2KHR(physicalDevice:TVkPhysicalDevice;const pDisplayPlaneInfo:PVkDisplayPlaneInfo2KHR;pCapabilities:PVkDisplayPlaneCapabilities2KHR):TVkResult; virtual;

       procedure GetBufferMemoryRequirements2(device:TVkDevice;const pInfo:PVkBufferMemoryRequirementsInfo2;pMemoryRequirements:PVkMemoryRequirements2); virtual;

       procedure GetBufferMemoryRequirements2KHR(device:TVkDevice;const pInfo:PVkBufferMemoryRequirementsInfo2;pMemoryRequirements:PVkMemoryRequirements2); virtual;

       procedure GetImageMemoryRequirements2(device:TVkDevice;const pInfo:PVkImageMemoryRequirementsInfo2;pMemoryRequirements:PVkMemoryRequirements2); virtual;

       procedure GetImageMemoryRequirements2KHR(device:TVkDevice;const pInfo:PVkImageMemoryRequirementsInfo2;pMemoryRequirements:PVkMemoryRequirements2); virtual;

       procedure GetImageSparseMemoryRequirements2(device:TVkDevice;const pInfo:PVkImageSparseMemoryRequirementsInfo2;pSparseMemoryRequirementCount:PVkUInt32;pSparseMemoryRequirements:PVkSparseImageMemoryRequirements2); virtual;

       procedure GetImageSparseMemoryRequirements2KHR(device:TVkDevice;const pInfo:PVkImageSparseMemoryRequirementsInfo2;pSparseMemoryRequirementCount:PVkUInt32;pSparseMemoryRequirements:PVkSparseImageMemoryRequirements2); virtual;

       procedure GetDeviceBufferMemoryRequirements(device:TVkDevice;const pInfo:PVkDeviceBufferMemoryRequirements;pMemoryRequirements:PVkMemoryRequirements2); virtual;

       procedure GetDeviceBufferMemoryRequirementsKHR(device:TVkDevice;const pInfo:PVkDeviceBufferMemoryRequirements;pMemoryRequirements:PVkMemoryRequirements2); virtual;

       procedure GetDeviceImageMemoryRequirements(device:TVkDevice;const pInfo:PVkDeviceImageMemoryRequirements;pMemoryRequirements:PVkMemoryRequirements2); virtual;

       procedure GetDeviceImageMemoryRequirementsKHR(device:TVkDevice;const pInfo:PVkDeviceImageMemoryRequirements;pMemoryRequirements:PVkMemoryRequirements2); virtual;

       procedure GetDeviceImageSparseMemoryRequirements(device:TVkDevice;const pInfo:PVkDeviceImageMemoryRequirements;pSparseMemoryRequirementCount:PVkUInt32;pSparseMemoryRequirements:PVkSparseImageMemoryRequirements2); virtual;

       procedure GetDeviceImageSparseMemoryRequirementsKHR(device:TVkDevice;const pInfo:PVkDeviceImageMemoryRequirements;pSparseMemoryRequirementCount:PVkUInt32;pSparseMemoryRequirements:PVkSparseImageMemoryRequirements2); virtual;

       function CreateSamplerYcbcrConversion(device:TVkDevice;const pCreateInfo:PVkSamplerYcbcrConversionCreateInfo;const pAllocator:PVkAllocationCallbacks;pYcbcrConversion:PVkSamplerYcbcrConversion):TVkResult; virtual;

       function CreateSamplerYcbcrConversionKHR(device:TVkDevice;const pCreateInfo:PVkSamplerYcbcrConversionCreateInfo;const pAllocator:PVkAllocationCallbacks;pYcbcrConversion:PVkSamplerYcbcrConversion):TVkResult; virtual;

       procedure DestroySamplerYcbcrConversion(device:TVkDevice;ycbcrConversion:TVkSamplerYcbcrConversion;const pAllocator:PVkAllocationCallbacks); virtual;

       procedure DestroySamplerYcbcrConversionKHR(device:TVkDevice;ycbcrConversion:TVkSamplerYcbcrConversion;const pAllocator:PVkAllocationCallbacks); virtual;

       procedure GetDeviceQueue2(device:TVkDevice;const pQueueInfo:PVkDeviceQueueInfo2;pQueue:PVkQueue); virtual;

       function CreateValidationCacheEXT(device:TVkDevice;const pCreateInfo:PVkValidationCacheCreateInfoEXT;const pAllocator:PVkAllocationCallbacks;pValidationCache:PVkValidationCacheEXT):TVkResult; virtual;

       procedure DestroyValidationCacheEXT(device:TVkDevice;validationCache:TVkValidationCacheEXT;const pAllocator:PVkAllocationCallbacks); virtual;

       function GetValidationCacheDataEXT(device:TVkDevice;validationCache:TVkValidationCacheEXT;pDataSize:PVkSize;pData:PVkVoid):TVkResult; virtual;

       function MergeValidationCachesEXT(device:TVkDevice;dstCache:TVkValidationCacheEXT;srcCacheCount:TVkUInt32;const pSrcCaches:PVkValidationCacheEXT):TVkResult; virtual;

       procedure GetDescriptorSetLayoutSupport(device:TVkDevice;const pCreateInfo:PVkDescriptorSetLayoutCreateInfo;pSupport:PVkDescriptorSetLayoutSupport); virtual;

       procedure GetDescriptorSetLayoutSupportKHR(device:TVkDevice;const pCreateInfo:PVkDescriptorSetLayoutCreateInfo;pSupport:PVkDescriptorSetLayoutSupport); virtual;

       function GetSwapchainGrallocUsageANDROID(device:TVkDevice;format:TVkFormat;imageUsage:TVkImageUsageFlags;grallocUsage:PVkInt32):TVkResult; virtual;

{$ifdef Android}
       function GetSwapchainGrallocUsage2ANDROID(device:TVkDevice;format:TVkFormat;imageUsage:TVkImageUsageFlags;swapchainImageUsage:TVkSwapchainImageUsageFlagsANDROID;grallocConsumerUsage:PVkUInt64;grallocProducerUsage:PVkUInt64):TVkResult; virtual;
{$endif}

       function AcquireImageANDROID(device:TVkDevice;image:TVkImage;nativeFenceFd:TVkInt32;semaphore:TVkSemaphore;fence:TVkFence):TVkResult; virtual;

       function QueueSignalReleaseImageANDROID(queue:TVkQueue;waitSemaphoreCount:TVkUInt32;const pWaitSemaphores:PVkSemaphore;image:TVkImage;pNativeFenceFd:PVkInt32):TVkResult; virtual;

       function GetShaderInfoAMD(device:TVkDevice;pipeline:TVkPipeline;shaderStage:TVkShaderStageFlagBits;infoType:TVkShaderInfoTypeAMD;pInfoSize:PVkSize;pInfo:PVkVoid):TVkResult; virtual;

       procedure SetLocalDimmingAMD(device:TVkDevice;swapChain:TVkSwapchainKHR;localDimmingEnable:TVkBool32); virtual;

       function GetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice:TVkPhysicalDevice;pTimeDomainCount:PVkUInt32;pTimeDomains:PVkTimeDomainEXT):TVkResult; virtual;

       function GetCalibratedTimestampsEXT(device:TVkDevice;timestampCount:TVkUInt32;const pTimestampInfos:PVkCalibratedTimestampInfoEXT;pTimestamps:PVkUInt64;pMaxDeviation:PVkUInt64):TVkResult; virtual;

       function SetDebugUtilsObjectNameEXT(device:TVkDevice;const pNameInfo:PVkDebugUtilsObjectNameInfoEXT):TVkResult; virtual;

       function SetDebugUtilsObjectTagEXT(device:TVkDevice;const pTagInfo:PVkDebugUtilsObjectTagInfoEXT):TVkResult; virtual;

       procedure QueueBeginDebugUtilsLabelEXT(queue:TVkQueue;const pLabelInfo:PVkDebugUtilsLabelEXT); virtual;

       procedure QueueEndDebugUtilsLabelEXT(queue:TVkQueue); virtual;

       procedure QueueInsertDebugUtilsLabelEXT(queue:TVkQueue;const pLabelInfo:PVkDebugUtilsLabelEXT); virtual;

       procedure CmdBeginDebugUtilsLabelEXT(commandBuffer:TVkCommandBuffer;const pLabelInfo:PVkDebugUtilsLabelEXT); virtual;

       procedure CmdEndDebugUtilsLabelEXT(commandBuffer:TVkCommandBuffer); virtual;

       procedure CmdInsertDebugUtilsLabelEXT(commandBuffer:TVkCommandBuffer;const pLabelInfo:PVkDebugUtilsLabelEXT); virtual;

       function CreateDebugUtilsMessengerEXT(instance:TVkInstance;const pCreateInfo:PVkDebugUtilsMessengerCreateInfoEXT;const pAllocator:PVkAllocationCallbacks;pMessenger:PVkDebugUtilsMessengerEXT):TVkResult; virtual;

       procedure DestroyDebugUtilsMessengerEXT(instance:TVkInstance;messenger:TVkDebugUtilsMessengerEXT;const pAllocator:PVkAllocationCallbacks); virtual;

       procedure SubmitDebugUtilsMessageEXT(instance:TVkInstance;messageSeverity:TVkDebugUtilsMessageSeverityFlagBitsEXT;messageTypes:TVkDebugUtilsMessageTypeFlagsEXT;const pCallbackData:PVkDebugUtilsMessengerCallbackDataEXT); virtual;

       function GetMemoryHostPointerPropertiesEXT(device:TVkDevice;handleType:TVkExternalMemoryHandleTypeFlagBits;const pHostPointer:PVkVoid;pMemoryHostPointerProperties:PVkMemoryHostPointerPropertiesEXT):TVkResult; virtual;

       procedure CmdWriteBufferMarkerAMD(commandBuffer:TVkCommandBuffer;pipelineStage:TVkPipelineStageFlagBits;dstBuffer:TVkBuffer;dstOffset:TVkDeviceSize;marker:TVkUInt32); virtual;

       function CreateRenderPass2(device:TVkDevice;const pCreateInfo:PVkRenderPassCreateInfo2;const pAllocator:PVkAllocationCallbacks;pRenderPass:PVkRenderPass):TVkResult; virtual;

       function CreateRenderPass2KHR(device:TVkDevice;const pCreateInfo:PVkRenderPassCreateInfo2;const pAllocator:PVkAllocationCallbacks;pRenderPass:PVkRenderPass):TVkResult; virtual;

       procedure CmdBeginRenderPass2(commandBuffer:TVkCommandBuffer;const pRenderPassBegin:PVkRenderPassBeginInfo;const pSubpassBeginInfo:PVkSubpassBeginInfo); virtual;

       procedure CmdBeginRenderPass2KHR(commandBuffer:TVkCommandBuffer;const pRenderPassBegin:PVkRenderPassBeginInfo;const pSubpassBeginInfo:PVkSubpassBeginInfo); virtual;

       procedure CmdNextSubpass2(commandBuffer:TVkCommandBuffer;const pSubpassBeginInfo:PVkSubpassBeginInfo;const pSubpassEndInfo:PVkSubpassEndInfo); virtual;

       procedure CmdNextSubpass2KHR(commandBuffer:TVkCommandBuffer;const pSubpassBeginInfo:PVkSubpassBeginInfo;const pSubpassEndInfo:PVkSubpassEndInfo); virtual;

       procedure CmdEndRenderPass2(commandBuffer:TVkCommandBuffer;const pSubpassEndInfo:PVkSubpassEndInfo); virtual;

       procedure CmdEndRenderPass2KHR(commandBuffer:TVkCommandBuffer;const pSubpassEndInfo:PVkSubpassEndInfo); virtual;

       function GetSemaphoreCounterValue(device:TVkDevice;semaphore:TVkSemaphore;pValue:PVkUInt64):TVkResult; virtual;

       function GetSemaphoreCounterValueKHR(device:TVkDevice;semaphore:TVkSemaphore;pValue:PVkUInt64):TVkResult; virtual;

       function WaitSemaphores(device:TVkDevice;const pWaitInfo:PVkSemaphoreWaitInfo;timeout:TVkUInt64):TVkResult; virtual;

       function WaitSemaphoresKHR(device:TVkDevice;const pWaitInfo:PVkSemaphoreWaitInfo;timeout:TVkUInt64):TVkResult; virtual;

       function SignalSemaphore(device:TVkDevice;const pSignalInfo:PVkSemaphoreSignalInfo):TVkResult; virtual;

       function SignalSemaphoreKHR(device:TVkDevice;const pSignalInfo:PVkSemaphoreSignalInfo):TVkResult; virtual;

{$ifdef Android}
       function GetAndroidHardwareBufferPropertiesANDROID(device:TVkDevice;const buffer:PVkAndroidAHardwareBuffer;pProperties:PVkAndroidHardwareBufferPropertiesANDROID):TVkResult; virtual;
{$endif}

{$ifdef Android}
       function GetMemoryAndroidHardwareBufferANDROID(device:TVkDevice;const pInfo:PVkMemoryGetAndroidHardwareBufferInfoANDROID;pBuffer:PPVkAndroidAHardwareBuffer):TVkResult; virtual;
{$endif}

       procedure CmdDrawIndirectCount(commandBuffer:TVkCommandBuffer;buffer:TVkBuffer;offset:TVkDeviceSize;countBuffer:TVkBuffer;countBufferOffset:TVkDeviceSize;maxDrawCount:TVkUInt32;stride:TVkUInt32); virtual;

       procedure CmdDrawIndirectCountKHR(commandBuffer:TVkCommandBuffer;buffer:TVkBuffer;offset:TVkDeviceSize;countBuffer:TVkBuffer;countBufferOffset:TVkDeviceSize;maxDrawCount:TVkUInt32;stride:TVkUInt32); virtual;

       procedure CmdDrawIndirectCountAMD(commandBuffer:TVkCommandBuffer;buffer:TVkBuffer;offset:TVkDeviceSize;countBuffer:TVkBuffer;countBufferOffset:TVkDeviceSize;maxDrawCount:TVkUInt32;stride:TVkUInt32); virtual;

       procedure CmdDrawIndexedIndirectCount(commandBuffer:TVkCommandBuffer;buffer:TVkBuffer;offset:TVkDeviceSize;countBuffer:TVkBuffer;countBufferOffset:TVkDeviceSize;maxDrawCount:TVkUInt32;stride:TVkUInt32); virtual;

       procedure CmdDrawIndexedIndirectCountKHR(commandBuffer:TVkCommandBuffer;buffer:TVkBuffer;offset:TVkDeviceSize;countBuffer:TVkBuffer;countBufferOffset:TVkDeviceSize;maxDrawCount:TVkUInt32;stride:TVkUInt32); virtual;

       procedure CmdDrawIndexedIndirectCountAMD(commandBuffer:TVkCommandBuffer;buffer:TVkBuffer;offset:TVkDeviceSize;countBuffer:TVkBuffer;countBufferOffset:TVkDeviceSize;maxDrawCount:TVkUInt32;stride:TVkUInt32); virtual;

       procedure CmdSetCheckpointNV(commandBuffer:TVkCommandBuffer;const pCheckpointMarker:PVkVoid); virtual;

       procedure GetQueueCheckpointDataNV(queue:TVkQueue;pCheckpointDataCount:PVkUInt32;pCheckpointData:PVkCheckpointDataNV); virtual;

       procedure CmdBindTransformFeedbackBuffersEXT(commandBuffer:TVkCommandBuffer;firstBinding:TVkUInt32;bindingCount:TVkUInt32;const pBuffers:PVkBuffer;const pOffsets:PVkDeviceSize;const pSizes:PVkDeviceSize); virtual;

       procedure CmdBeginTransformFeedbackEXT(commandBuffer:TVkCommandBuffer;firstCounterBuffer:TVkUInt32;counterBufferCount:TVkUInt32;const pCounterBuffers:PVkBuffer;const pCounterBufferOffsets:PVkDeviceSize); virtual;

       procedure CmdEndTransformFeedbackEXT(commandBuffer:TVkCommandBuffer;firstCounterBuffer:TVkUInt32;counterBufferCount:TVkUInt32;const pCounterBuffers:PVkBuffer;const pCounterBufferOffsets:PVkDeviceSize); virtual;

       procedure CmdBeginQueryIndexedEXT(commandBuffer:TVkCommandBuffer;queryPool:TVkQueryPool;query:TVkUInt32;flags:TVkQueryControlFlags;index:TVkUInt32); virtual;

       procedure CmdEndQueryIndexedEXT(commandBuffer:TVkCommandBuffer;queryPool:TVkQueryPool;query:TVkUInt32;index:TVkUInt32); virtual;

       procedure CmdDrawIndirectByteCountEXT(commandBuffer:TVkCommandBuffer;instanceCount:TVkUInt32;firstInstance:TVkUInt32;counterBuffer:TVkBuffer;counterBufferOffset:TVkDeviceSize;counterOffset:TVkUInt32;vertexStride:TVkUInt32); virtual;

       procedure CmdSetExclusiveScissorNV(commandBuffer:TVkCommandBuffer;firstExclusiveScissor:TVkUInt32;exclusiveScissorCount:TVkUInt32;const pExclusiveScissors:PVkRect2D); virtual;

       procedure CmdSetExclusiveScissorEnableNV(commandBuffer:TVkCommandBuffer;firstExclusiveScissor:TVkUInt32;exclusiveScissorCount:TVkUInt32;const pExclusiveScissorEnables:PVkBool32); virtual;

       procedure CmdBindShadingRateImageNV(commandBuffer:TVkCommandBuffer;imageView:TVkImageView;imageLayout:TVkImageLayout); virtual;

       procedure CmdSetViewportShadingRatePaletteNV(commandBuffer:TVkCommandBuffer;firstViewport:TVkUInt32;viewportCount:TVkUInt32;const pShadingRatePalettes:PVkShadingRatePaletteNV); virtual;

       procedure CmdSetCoarseSampleOrderNV(commandBuffer:TVkCommandBuffer;sampleOrderType:TVkCoarseSampleOrderTypeNV;customSampleOrderCount:TVkUInt32;const pCustomSampleOrders:PVkCoarseSampleOrderCustomNV); virtual;

       procedure CmdDrawMeshTasksNV(commandBuffer:TVkCommandBuffer;taskCount:TVkUInt32;firstTask:TVkUInt32); virtual;

       procedure CmdDrawMeshTasksIndirectNV(commandBuffer:TVkCommandBuffer;buffer:TVkBuffer;offset:TVkDeviceSize;drawCount:TVkUInt32;stride:TVkUInt32); virtual;

       procedure CmdDrawMeshTasksIndirectCountNV(commandBuffer:TVkCommandBuffer;buffer:TVkBuffer;offset:TVkDeviceSize;countBuffer:TVkBuffer;countBufferOffset:TVkDeviceSize;maxDrawCount:TVkUInt32;stride:TVkUInt32); virtual;

       procedure CmdDrawMeshTasksEXT(commandBuffer:TVkCommandBuffer;groupCountX:TVkUInt32;groupCountY:TVkUInt32;groupCountZ:TVkUInt32); virtual;

       procedure CmdDrawMeshTasksIndirectEXT(commandBuffer:TVkCommandBuffer;buffer:TVkBuffer;offset:TVkDeviceSize;drawCount:TVkUInt32;stride:TVkUInt32); virtual;

       procedure CmdDrawMeshTasksIndirectCountEXT(commandBuffer:TVkCommandBuffer;buffer:TVkBuffer;offset:TVkDeviceSize;countBuffer:TVkBuffer;countBufferOffset:TVkDeviceSize;maxDrawCount:TVkUInt32;stride:TVkUInt32); virtual;

       function CompileDeferredNV(device:TVkDevice;pipeline:TVkPipeline;shader:TVkUInt32):TVkResult; virtual;

       function CreateAccelerationStructureNV(device:TVkDevice;const pCreateInfo:PVkAccelerationStructureCreateInfoNV;const pAllocator:PVkAllocationCallbacks;pAccelerationStructure:PVkAccelerationStructureNV):TVkResult; virtual;

       procedure CmdBindInvocationMaskHUAWEI(commandBuffer:TVkCommandBuffer;imageView:TVkImageView;imageLayout:TVkImageLayout); virtual;

       procedure DestroyAccelerationStructureKHR(device:TVkDevice;accelerationStructure:TVkAccelerationStructureKHR;const pAllocator:PVkAllocationCallbacks); virtual;

       procedure DestroyAccelerationStructureNV(device:TVkDevice;accelerationStructure:TVkAccelerationStructureNV;const pAllocator:PVkAllocationCallbacks); virtual;

       procedure GetAccelerationStructureMemoryRequirementsNV(device:TVkDevice;const pInfo:PVkAccelerationStructureMemoryRequirementsInfoNV;pMemoryRequirements:PVkMemoryRequirements2KHR); virtual;

       function BindAccelerationStructureMemoryNV(device:TVkDevice;bindInfoCount:TVkUInt32;const pBindInfos:PVkBindAccelerationStructureMemoryInfoNV):TVkResult; virtual;

       procedure CmdCopyAccelerationStructureNV(commandBuffer:TVkCommandBuffer;dst:TVkAccelerationStructureNV;src:TVkAccelerationStructureNV;mode:TVkCopyAccelerationStructureModeKHR); virtual;

       procedure CmdCopyAccelerationStructureKHR(commandBuffer:TVkCommandBuffer;const pInfo:PVkCopyAccelerationStructureInfoKHR); virtual;

       function CopyAccelerationStructureKHR(device:TVkDevice;deferredOperation:TVkDeferredOperationKHR;const pInfo:PVkCopyAccelerationStructureInfoKHR):TVkResult; virtual;

       procedure CmdCopyAccelerationStructureToMemoryKHR(commandBuffer:TVkCommandBuffer;const pInfo:PVkCopyAccelerationStructureToMemoryInfoKHR); virtual;

       function CopyAccelerationStructureToMemoryKHR(device:TVkDevice;deferredOperation:TVkDeferredOperationKHR;const pInfo:PVkCopyAccelerationStructureToMemoryInfoKHR):TVkResult; virtual;

       procedure CmdCopyMemoryToAccelerationStructureKHR(commandBuffer:TVkCommandBuffer;const pInfo:PVkCopyMemoryToAccelerationStructureInfoKHR); virtual;

       function CopyMemoryToAccelerationStructureKHR(device:TVkDevice;deferredOperation:TVkDeferredOperationKHR;const pInfo:PVkCopyMemoryToAccelerationStructureInfoKHR):TVkResult; virtual;

       procedure CmdWriteAccelerationStructuresPropertiesKHR(commandBuffer:TVkCommandBuffer;accelerationStructureCount:TVkUInt32;const pAccelerationStructures:PVkAccelerationStructureKHR;queryType:TVkQueryType;queryPool:TVkQueryPool;firstQuery:TVkUInt32); virtual;

       procedure CmdWriteAccelerationStructuresPropertiesNV(commandBuffer:TVkCommandBuffer;accelerationStructureCount:TVkUInt32;const pAccelerationStructures:PVkAccelerationStructureNV;queryType:TVkQueryType;queryPool:TVkQueryPool;firstQuery:TVkUInt32); virtual;

       procedure CmdBuildAccelerationStructureNV(commandBuffer:TVkCommandBuffer;const pInfo:PVkAccelerationStructureInfoNV;instanceData:TVkBuffer;instanceOffset:TVkDeviceSize;update:TVkBool32;dst:TVkAccelerationStructureNV;src:TVkAccelerationStructureNV;scratch:TVkBuffer;scratchOffset:TVkDeviceSize); virtual;

       function WriteAccelerationStructuresPropertiesKHR(device:TVkDevice;accelerationStructureCount:TVkUInt32;const pAccelerationStructures:PVkAccelerationStructureKHR;queryType:TVkQueryType;dataSize:TVkSize;pData:PVkVoid;stride:TVkSize):TVkResult; virtual;

       procedure CmdTraceRaysKHR(commandBuffer:TVkCommandBuffer;const pRaygenShaderBindingTable:PVkStridedDeviceAddressRegionKHR;const pMissShaderBindingTable:PVkStridedDeviceAddressRegionKHR;const pHitShaderBindingTable:PVkStridedDeviceAddressRegionKHR;const pCallableShaderBindingTable:PVkStridedDeviceAddressRegionKHR;width:TVkUInt32;height:TVkUInt32;depth:TVkUInt32); virtual;

       procedure CmdTraceRaysNV(commandBuffer:TVkCommandBuffer;raygenShaderBindingTableBuffer:TVkBuffer;raygenShaderBindingOffset:TVkDeviceSize;missShaderBindingTableBuffer:TVkBuffer;missShaderBindingOffset:TVkDeviceSize;missShaderBindingStride:TVkDeviceSize;hitShaderBindingTableBuffer:TVkBuffer;hitShaderBindingOffset:TVkDeviceSize;hitShaderBindingStride:TVkDeviceSize;callableShaderBindingTableBuffer:TVkBuffer;callableShaderBindingOffset:TVkDeviceSize;callableShaderBindingStride:TVkDeviceSize;width:TVkUInt32;height:TVkUInt32;depth:TVkUInt32); virtual;

       function GetRayTracingShaderGroupHandlesKHR(device:TVkDevice;pipeline:TVkPipeline;firstGroup:TVkUInt32;groupCount:TVkUInt32;dataSize:TVkSize;pData:PVkVoid):TVkResult; virtual;

       function GetRayTracingShaderGroupHandlesNV(device:TVkDevice;pipeline:TVkPipeline;firstGroup:TVkUInt32;groupCount:TVkUInt32;dataSize:TVkSize;pData:PVkVoid):TVkResult; virtual;

       function GetRayTracingCaptureReplayShaderGroupHandlesKHR(device:TVkDevice;pipeline:TVkPipeline;firstGroup:TVkUInt32;groupCount:TVkUInt32;dataSize:TVkSize;pData:PVkVoid):TVkResult; virtual;

       function GetAccelerationStructureHandleNV(device:TVkDevice;accelerationStructure:TVkAccelerationStructureNV;dataSize:TVkSize;pData:PVkVoid):TVkResult; virtual;

       function CreateRayTracingPipelinesNV(device:TVkDevice;pipelineCache:TVkPipelineCache;createInfoCount:TVkUInt32;const pCreateInfos:PVkRayTracingPipelineCreateInfoNV;const pAllocator:PVkAllocationCallbacks;pPipelines:PVkPipeline):TVkResult; virtual;

       function CreateRayTracingPipelinesKHR(device:TVkDevice;deferredOperation:TVkDeferredOperationKHR;pipelineCache:TVkPipelineCache;createInfoCount:TVkUInt32;const pCreateInfos:PVkRayTracingPipelineCreateInfoKHR;const pAllocator:PVkAllocationCallbacks;pPipelines:PVkPipeline):TVkResult; virtual;

       function GetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice:TVkPhysicalDevice;pPropertyCount:PVkUInt32;pProperties:PVkCooperativeMatrixPropertiesNV):TVkResult; virtual;

       procedure CmdTraceRaysIndirectKHR(commandBuffer:TVkCommandBuffer;const pRaygenShaderBindingTable:PVkStridedDeviceAddressRegionKHR;const pMissShaderBindingTable:PVkStridedDeviceAddressRegionKHR;const pHitShaderBindingTable:PVkStridedDeviceAddressRegionKHR;const pCallableShaderBindingTable:PVkStridedDeviceAddressRegionKHR;indirectDeviceAddress:TVkDeviceAddress); virtual;

       procedure CmdTraceRaysIndirect2KHR(commandBuffer:TVkCommandBuffer;indirectDeviceAddress:TVkDeviceAddress); virtual;

       procedure GetDeviceAccelerationStructureCompatibilityKHR(device:TVkDevice;const pVersionInfo:PVkAccelerationStructureVersionInfoKHR;pCompatibility:PVkAccelerationStructureCompatibilityKHR); virtual;

       function GetRayTracingShaderGroupStackSizeKHR(device:TVkDevice;pipeline:TVkPipeline;group:TVkUInt32;groupShader:TVkShaderGroupShaderKHR):TVkDeviceSize; virtual;

       procedure CmdSetRayTracingPipelineStackSizeKHR(commandBuffer:TVkCommandBuffer;pipelineStackSize:TVkUInt32); virtual;

       function GetImageViewHandleNVX(device:TVkDevice;const pInfo:PVkImageViewHandleInfoNVX):TVkUInt32; virtual;

       function GetImageViewAddressNVX(device:TVkDevice;imageView:TVkImageView;pProperties:PVkImageViewAddressPropertiesNVX):TVkResult; virtual;

       function GetPhysicalDeviceSurfacePresentModes2EXT(physicalDevice:TVkPhysicalDevice;const pSurfaceInfo:PVkPhysicalDeviceSurfaceInfo2KHR;pPresentModeCount:PVkUInt32;pPresentModes:PVkPresentModeKHR):TVkResult; virtual;

       function GetDeviceGroupSurfacePresentModes2EXT(device:TVkDevice;const pSurfaceInfo:PVkPhysicalDeviceSurfaceInfo2KHR;pModes:PVkDeviceGroupPresentModeFlagsKHR):TVkResult; virtual;

       function AcquireFullScreenExclusiveModeEXT(device:TVkDevice;swapchain:TVkSwapchainKHR):TVkResult; virtual;

       function ReleaseFullScreenExclusiveModeEXT(device:TVkDevice;swapchain:TVkSwapchainKHR):TVkResult; virtual;

       function EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice:TVkPhysicalDevice;queueFamilyIndex:TVkUInt32;pCounterCount:PVkUInt32;pCounters:PVkPerformanceCounterKHR;pCounterDescriptions:PVkPerformanceCounterDescriptionKHR):TVkResult; virtual;

       procedure GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice:TVkPhysicalDevice;const pPerformanceQueryCreateInfo:PVkQueryPoolPerformanceCreateInfoKHR;pNumPasses:PVkUInt32); virtual;

       function AcquireProfilingLockKHR(device:TVkDevice;const pInfo:PVkAcquireProfilingLockInfoKHR):TVkResult; virtual;

       procedure ReleaseProfilingLockKHR(device:TVkDevice); virtual;

       function GetImageDrmFormatModifierPropertiesEXT(device:TVkDevice;image:TVkImage;pProperties:PVkImageDrmFormatModifierPropertiesEXT):TVkResult; virtual;

       function GetBufferOpaqueCaptureAddress(device:TVkDevice;const pInfo:PVkBufferDeviceAddressInfo):TVkUInt64; virtual;

       function GetBufferOpaqueCaptureAddressKHR(device:TVkDevice;const pInfo:PVkBufferDeviceAddressInfo):TVkUInt64; virtual;

       function GetBufferDeviceAddress(device:TVkDevice;const pInfo:PVkBufferDeviceAddressInfo):TVkDeviceAddress; virtual;

       function GetBufferDeviceAddressKHR(device:TVkDevice;const pInfo:PVkBufferDeviceAddressInfo):TVkDeviceAddress; virtual;

       function GetBufferDeviceAddressEXT(device:TVkDevice;const pInfo:PVkBufferDeviceAddressInfo):TVkDeviceAddress; virtual;

       function CreateHeadlessSurfaceEXT(instance:TVkInstance;const pCreateInfo:PVkHeadlessSurfaceCreateInfoEXT;const pAllocator:PVkAllocationCallbacks;pSurface:PVkSurfaceKHR):TVkResult; virtual;

       function GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice:TVkPhysicalDevice;pCombinationCount:PVkUInt32;pCombinations:PVkFramebufferMixedSamplesCombinationNV):TVkResult; virtual;

       function InitializePerformanceApiINTEL(device:TVkDevice;const pInitializeInfo:PVkInitializePerformanceApiInfoINTEL):TVkResult; virtual;

       procedure UninitializePerformanceApiINTEL(device:TVkDevice); virtual;

       function CmdSetPerformanceMarkerINTEL(commandBuffer:TVkCommandBuffer;const pMarkerInfo:PVkPerformanceMarkerInfoINTEL):TVkResult; virtual;

       function CmdSetPerformanceStreamMarkerINTEL(commandBuffer:TVkCommandBuffer;const pMarkerInfo:PVkPerformanceStreamMarkerInfoINTEL):TVkResult; virtual;

       function CmdSetPerformanceOverrideINTEL(commandBuffer:TVkCommandBuffer;const pOverrideInfo:PVkPerformanceOverrideInfoINTEL):TVkResult; virtual;

       function AcquirePerformanceConfigurationINTEL(device:TVkDevice;const pAcquireInfo:PVkPerformanceConfigurationAcquireInfoINTEL;pConfiguration:PVkPerformanceConfigurationINTEL):TVkResult; virtual;

       function ReleasePerformanceConfigurationINTEL(device:TVkDevice;configuration:TVkPerformanceConfigurationINTEL):TVkResult; virtual;

       function QueueSetPerformanceConfigurationINTEL(queue:TVkQueue;configuration:TVkPerformanceConfigurationINTEL):TVkResult; virtual;

       function GetPerformanceParameterINTEL(device:TVkDevice;parameter:TVkPerformanceParameterTypeINTEL;pValue:PVkPerformanceValueINTEL):TVkResult; virtual;

       function GetDeviceMemoryOpaqueCaptureAddress(device:TVkDevice;const pInfo:PVkDeviceMemoryOpaqueCaptureAddressInfo):TVkUInt64; virtual;

       function GetDeviceMemoryOpaqueCaptureAddressKHR(device:TVkDevice;const pInfo:PVkDeviceMemoryOpaqueCaptureAddressInfo):TVkUInt64; virtual;

       function GetPipelineExecutablePropertiesKHR(device:TVkDevice;const pPipelineInfo:PVkPipelineInfoKHR;pExecutableCount:PVkUInt32;pProperties:PVkPipelineExecutablePropertiesKHR):TVkResult; virtual;

       function GetPipelineExecutableStatisticsKHR(device:TVkDevice;const pExecutableInfo:PVkPipelineExecutableInfoKHR;pStatisticCount:PVkUInt32;pStatistics:PVkPipelineExecutableStatisticKHR):TVkResult; virtual;

       function GetPipelineExecutableInternalRepresentationsKHR(device:TVkDevice;const pExecutableInfo:PVkPipelineExecutableInfoKHR;pInternalRepresentationCount:PVkUInt32;pInternalRepresentations:PVkPipelineExecutableInternalRepresentationKHR):TVkResult; virtual;

       procedure CmdSetLineStippleEXT(commandBuffer:TVkCommandBuffer;lineStippleFactor:TVkUInt32;lineStipplePattern:TVkUInt16); virtual;

{$ifdef VulkanSC}
       function GetFaultData(device:TVkDevice;faultQueryBehavior:TVkFaultQueryBehavior;pUnrecordedFaults:PVkBool32;pFaultCount:PVkUInt32;pFaults:PVkFaultData):TVkResult; virtual;
{$endif}

       function GetPhysicalDeviceToolProperties(physicalDevice:TVkPhysicalDevice;pToolCount:PVkUInt32;pToolProperties:PVkPhysicalDeviceToolProperties):TVkResult; virtual;

       function GetPhysicalDeviceToolPropertiesEXT(physicalDevice:TVkPhysicalDevice;pToolCount:PVkUInt32;pToolProperties:PVkPhysicalDeviceToolProperties):TVkResult; virtual;

       function CreateAccelerationStructureKHR(device:TVkDevice;const pCreateInfo:PVkAccelerationStructureCreateInfoKHR;const pAllocator:PVkAllocationCallbacks;pAccelerationStructure:PVkAccelerationStructureKHR):TVkResult; virtual;

       procedure CmdBuildAccelerationStructuresKHR(commandBuffer:TVkCommandBuffer;infoCount:TVkUInt32;const pInfos:PVkAccelerationStructureBuildGeometryInfoKHR;const ppBuildRangeInfos:PPVkAccelerationStructureBuildRangeInfoKHR); virtual;

       procedure CmdBuildAccelerationStructuresIndirectKHR(commandBuffer:TVkCommandBuffer;infoCount:TVkUInt32;const pInfos:PVkAccelerationStructureBuildGeometryInfoKHR;const pIndirectDeviceAddresses:PVkDeviceAddress;const pIndirectStrides:PVkUInt32;const ppMaxPrimitiveCounts:PPVkUInt32); virtual;

       function BuildAccelerationStructuresKHR(device:TVkDevice;deferredOperation:TVkDeferredOperationKHR;infoCount:TVkUInt32;const pInfos:PVkAccelerationStructureBuildGeometryInfoKHR;const ppBuildRangeInfos:PPVkAccelerationStructureBuildRangeInfoKHR):TVkResult; virtual;

       function GetAccelerationStructureDeviceAddressKHR(device:TVkDevice;const pInfo:PVkAccelerationStructureDeviceAddressInfoKHR):TVkDeviceAddress; virtual;

       function CreateDeferredOperationKHR(device:TVkDevice;const pAllocator:PVkAllocationCallbacks;pDeferredOperation:PVkDeferredOperationKHR):TVkResult; virtual;

       procedure DestroyDeferredOperationKHR(device:TVkDevice;operation:TVkDeferredOperationKHR;const pAllocator:PVkAllocationCallbacks); virtual;

       function GetDeferredOperationMaxConcurrencyKHR(device:TVkDevice;operation:TVkDeferredOperationKHR):TVkUInt32; virtual;

       function GetDeferredOperationResultKHR(device:TVkDevice;operation:TVkDeferredOperationKHR):TVkResult; virtual;

       function DeferredOperationJoinKHR(device:TVkDevice;operation:TVkDeferredOperationKHR):TVkResult; virtual;

       procedure GetPipelineIndirectMemoryRequirementsNV(device:TVkDevice;const pCreateInfo:PVkComputePipelineCreateInfo;pMemoryRequirements:PVkMemoryRequirements2); virtual;

       function GetPipelineIndirectDeviceAddressNV(device:TVkDevice;const pInfo:PVkPipelineIndirectDeviceAddressInfoNV):TVkDeviceAddress; virtual;

       procedure CmdSetCullMode(commandBuffer:TVkCommandBuffer;cullMode:TVkCullModeFlags); virtual;

       procedure CmdSetCullModeEXT(commandBuffer:TVkCommandBuffer;cullMode:TVkCullModeFlags); virtual;

       procedure CmdSetFrontFace(commandBuffer:TVkCommandBuffer;frontFace:TVkFrontFace); virtual;

       procedure CmdSetFrontFaceEXT(commandBuffer:TVkCommandBuffer;frontFace:TVkFrontFace); virtual;

       procedure CmdSetPrimitiveTopology(commandBuffer:TVkCommandBuffer;primitiveTopology:TVkPrimitiveTopology); virtual;

       procedure CmdSetPrimitiveTopologyEXT(commandBuffer:TVkCommandBuffer;primitiveTopology:TVkPrimitiveTopology); virtual;

       procedure CmdSetViewportWithCount(commandBuffer:TVkCommandBuffer;viewportCount:TVkUInt32;const pViewports:PVkViewport); virtual;

       procedure CmdSetViewportWithCountEXT(commandBuffer:TVkCommandBuffer;viewportCount:TVkUInt32;const pViewports:PVkViewport); virtual;

       procedure CmdSetScissorWithCount(commandBuffer:TVkCommandBuffer;scissorCount:TVkUInt32;const pScissors:PVkRect2D); virtual;

       procedure CmdSetScissorWithCountEXT(commandBuffer:TVkCommandBuffer;scissorCount:TVkUInt32;const pScissors:PVkRect2D); virtual;

       procedure CmdBindIndexBuffer2KHR(commandBuffer:TVkCommandBuffer;buffer:TVkBuffer;offset:TVkDeviceSize;size:TVkDeviceSize;indexType:TVkIndexType); virtual;

       procedure CmdBindVertexBuffers2(commandBuffer:TVkCommandBuffer;firstBinding:TVkUInt32;bindingCount:TVkUInt32;const pBuffers:PVkBuffer;const pOffsets:PVkDeviceSize;const pSizes:PVkDeviceSize;const pStrides:PVkDeviceSize); virtual;

       procedure CmdBindVertexBuffers2EXT(commandBuffer:TVkCommandBuffer;firstBinding:TVkUInt32;bindingCount:TVkUInt32;const pBuffers:PVkBuffer;const pOffsets:PVkDeviceSize;const pSizes:PVkDeviceSize;const pStrides:PVkDeviceSize); virtual;

       procedure CmdSetDepthTestEnable(commandBuffer:TVkCommandBuffer;depthTestEnable:TVkBool32); virtual;

       procedure CmdSetDepthTestEnableEXT(commandBuffer:TVkCommandBuffer;depthTestEnable:TVkBool32); virtual;

       procedure CmdSetDepthWriteEnable(commandBuffer:TVkCommandBuffer;depthWriteEnable:TVkBool32); virtual;

       procedure CmdSetDepthWriteEnableEXT(commandBuffer:TVkCommandBuffer;depthWriteEnable:TVkBool32); virtual;

       procedure CmdSetDepthCompareOp(commandBuffer:TVkCommandBuffer;depthCompareOp:TVkCompareOp); virtual;

       procedure CmdSetDepthCompareOpEXT(commandBuffer:TVkCommandBuffer;depthCompareOp:TVkCompareOp); virtual;

       procedure CmdSetDepthBoundsTestEnable(commandBuffer:TVkCommandBuffer;depthBoundsTestEnable:TVkBool32); virtual;

       procedure CmdSetDepthBoundsTestEnableEXT(commandBuffer:TVkCommandBuffer;depthBoundsTestEnable:TVkBool32); virtual;

       procedure CmdSetStencilTestEnable(commandBuffer:TVkCommandBuffer;stencilTestEnable:TVkBool32); virtual;

       procedure CmdSetStencilTestEnableEXT(commandBuffer:TVkCommandBuffer;stencilTestEnable:TVkBool32); virtual;

       procedure CmdSetStencilOp(commandBuffer:TVkCommandBuffer;faceMask:TVkStencilFaceFlags;failOp:TVkStencilOp;passOp:TVkStencilOp;depthFailOp:TVkStencilOp;compareOp:TVkCompareOp); virtual;

       procedure CmdSetStencilOpEXT(commandBuffer:TVkCommandBuffer;faceMask:TVkStencilFaceFlags;failOp:TVkStencilOp;passOp:TVkStencilOp;depthFailOp:TVkStencilOp;compareOp:TVkCompareOp); virtual;

       procedure CmdSetPatchControlPointsEXT(commandBuffer:TVkCommandBuffer;patchControlPoints:TVkUInt32); virtual;

       procedure CmdSetRasterizerDiscardEnable(commandBuffer:TVkCommandBuffer;rasterizerDiscardEnable:TVkBool32); virtual;

       procedure CmdSetRasterizerDiscardEnableEXT(commandBuffer:TVkCommandBuffer;rasterizerDiscardEnable:TVkBool32); virtual;

       procedure CmdSetDepthBiasEnable(commandBuffer:TVkCommandBuffer;depthBiasEnable:TVkBool32); virtual;

       procedure CmdSetDepthBiasEnableEXT(commandBuffer:TVkCommandBuffer;depthBiasEnable:TVkBool32); virtual;

       procedure CmdSetLogicOpEXT(commandBuffer:TVkCommandBuffer;logicOp:TVkLogicOp); virtual;

       procedure CmdSetPrimitiveRestartEnable(commandBuffer:TVkCommandBuffer;primitiveRestartEnable:TVkBool32); virtual;

       procedure CmdSetPrimitiveRestartEnableEXT(commandBuffer:TVkCommandBuffer;primitiveRestartEnable:TVkBool32); virtual;

       procedure CmdSetTessellationDomainOriginEXT(commandBuffer:TVkCommandBuffer;domainOrigin:TVkTessellationDomainOrigin); virtual;

       procedure CmdSetDepthClampEnableEXT(commandBuffer:TVkCommandBuffer;depthClampEnable:TVkBool32); virtual;

       procedure CmdSetPolygonModeEXT(commandBuffer:TVkCommandBuffer;polygonMode:TVkPolygonMode); virtual;

       procedure CmdSetRasterizationSamplesEXT(commandBuffer:TVkCommandBuffer;rasterizationSamples:TVkSampleCountFlagBits); virtual;

       procedure CmdSetSampleMaskEXT(commandBuffer:TVkCommandBuffer;samples:TVkSampleCountFlagBits;const pSampleMask:PVkSampleMask); virtual;

       procedure CmdSetAlphaToCoverageEnableEXT(commandBuffer:TVkCommandBuffer;alphaToCoverageEnable:TVkBool32); virtual;

       procedure CmdSetAlphaToOneEnableEXT(commandBuffer:TVkCommandBuffer;alphaToOneEnable:TVkBool32); virtual;

       procedure CmdSetLogicOpEnableEXT(commandBuffer:TVkCommandBuffer;logicOpEnable:TVkBool32); virtual;

       procedure CmdSetColorBlendEnableEXT(commandBuffer:TVkCommandBuffer;firstAttachment:TVkUInt32;attachmentCount:TVkUInt32;const pColorBlendEnables:PVkBool32); virtual;

       procedure CmdSetColorBlendEquationEXT(commandBuffer:TVkCommandBuffer;firstAttachment:TVkUInt32;attachmentCount:TVkUInt32;const pColorBlendEquations:PVkColorBlendEquationEXT); virtual;

       procedure CmdSetColorWriteMaskEXT(commandBuffer:TVkCommandBuffer;firstAttachment:TVkUInt32;attachmentCount:TVkUInt32;const pColorWriteMasks:PVkColorComponentFlags); virtual;

       procedure CmdSetRasterizationStreamEXT(commandBuffer:TVkCommandBuffer;rasterizationStream:TVkUInt32); virtual;

       procedure CmdSetConservativeRasterizationModeEXT(commandBuffer:TVkCommandBuffer;conservativeRasterizationMode:TVkConservativeRasterizationModeEXT); virtual;

       procedure CmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer:TVkCommandBuffer;extraPrimitiveOverestimationSize:TVkFloat); virtual;

       procedure CmdSetDepthClipEnableEXT(commandBuffer:TVkCommandBuffer;depthClipEnable:TVkBool32); virtual;

       procedure CmdSetSampleLocationsEnableEXT(commandBuffer:TVkCommandBuffer;sampleLocationsEnable:TVkBool32); virtual;

       procedure CmdSetColorBlendAdvancedEXT(commandBuffer:TVkCommandBuffer;firstAttachment:TVkUInt32;attachmentCount:TVkUInt32;const pColorBlendAdvanced:PVkColorBlendAdvancedEXT); virtual;

       procedure CmdSetProvokingVertexModeEXT(commandBuffer:TVkCommandBuffer;provokingVertexMode:TVkProvokingVertexModeEXT); virtual;

       procedure CmdSetLineRasterizationModeEXT(commandBuffer:TVkCommandBuffer;lineRasterizationMode:TVkLineRasterizationModeEXT); virtual;

       procedure CmdSetLineStippleEnableEXT(commandBuffer:TVkCommandBuffer;stippledLineEnable:TVkBool32); virtual;

       procedure CmdSetDepthClipNegativeOneToOneEXT(commandBuffer:TVkCommandBuffer;negativeOneToOne:TVkBool32); virtual;

       procedure CmdSetViewportWScalingEnableNV(commandBuffer:TVkCommandBuffer;viewportWScalingEnable:TVkBool32); virtual;

       procedure CmdSetViewportSwizzleNV(commandBuffer:TVkCommandBuffer;firstViewport:TVkUInt32;viewportCount:TVkUInt32;const pViewportSwizzles:PVkViewportSwizzleNV); virtual;

       procedure CmdSetCoverageToColorEnableNV(commandBuffer:TVkCommandBuffer;coverageToColorEnable:TVkBool32); virtual;

       procedure CmdSetCoverageToColorLocationNV(commandBuffer:TVkCommandBuffer;coverageToColorLocation:TVkUInt32); virtual;

       procedure CmdSetCoverageModulationModeNV(commandBuffer:TVkCommandBuffer;coverageModulationMode:TVkCoverageModulationModeNV); virtual;

       procedure CmdSetCoverageModulationTableEnableNV(commandBuffer:TVkCommandBuffer;coverageModulationTableEnable:TVkBool32); virtual;

       procedure CmdSetCoverageModulationTableNV(commandBuffer:TVkCommandBuffer;coverageModulationTableCount:TVkUInt32;const pCoverageModulationTable:PVkFloat); virtual;

       procedure CmdSetShadingRateImageEnableNV(commandBuffer:TVkCommandBuffer;shadingRateImageEnable:TVkBool32); virtual;

       procedure CmdSetCoverageReductionModeNV(commandBuffer:TVkCommandBuffer;coverageReductionMode:TVkCoverageReductionModeNV); virtual;

       procedure CmdSetRepresentativeFragmentTestEnableNV(commandBuffer:TVkCommandBuffer;representativeFragmentTestEnable:TVkBool32); virtual;

       function CreatePrivateDataSlot(device:TVkDevice;const pCreateInfo:PVkPrivateDataSlotCreateInfo;const pAllocator:PVkAllocationCallbacks;pPrivateDataSlot:PVkPrivateDataSlot):TVkResult; virtual;

       function CreatePrivateDataSlotEXT(device:TVkDevice;const pCreateInfo:PVkPrivateDataSlotCreateInfo;const pAllocator:PVkAllocationCallbacks;pPrivateDataSlot:PVkPrivateDataSlot):TVkResult; virtual;

       procedure DestroyPrivateDataSlot(device:TVkDevice;privateDataSlot:TVkPrivateDataSlot;const pAllocator:PVkAllocationCallbacks); virtual;

       procedure DestroyPrivateDataSlotEXT(device:TVkDevice;privateDataSlot:TVkPrivateDataSlot;const pAllocator:PVkAllocationCallbacks); virtual;

       function SetPrivateData(device:TVkDevice;objectType:TVkObjectType;objectHandle:TVkUInt64;privateDataSlot:TVkPrivateDataSlot;data:TVkUInt64):TVkResult; virtual;

       function SetPrivateDataEXT(device:TVkDevice;objectType:TVkObjectType;objectHandle:TVkUInt64;privateDataSlot:TVkPrivateDataSlot;data:TVkUInt64):TVkResult; virtual;

       procedure GetPrivateData(device:TVkDevice;objectType:TVkObjectType;objectHandle:TVkUInt64;privateDataSlot:TVkPrivateDataSlot;pData:PVkUInt64); virtual;

       procedure GetPrivateDataEXT(device:TVkDevice;objectType:TVkObjectType;objectHandle:TVkUInt64;privateDataSlot:TVkPrivateDataSlot;pData:PVkUInt64); virtual;

       procedure CmdCopyBuffer2(commandBuffer:TVkCommandBuffer;const pCopyBufferInfo:PVkCopyBufferInfo2); virtual;

       procedure CmdCopyBuffer2KHR(commandBuffer:TVkCommandBuffer;const pCopyBufferInfo:PVkCopyBufferInfo2); virtual;

       procedure CmdCopyImage2(commandBuffer:TVkCommandBuffer;const pCopyImageInfo:PVkCopyImageInfo2); virtual;

       procedure CmdCopyImage2KHR(commandBuffer:TVkCommandBuffer;const pCopyImageInfo:PVkCopyImageInfo2); virtual;

       procedure CmdBlitImage2(commandBuffer:TVkCommandBuffer;const pBlitImageInfo:PVkBlitImageInfo2); virtual;

       procedure CmdBlitImage2KHR(commandBuffer:TVkCommandBuffer;const pBlitImageInfo:PVkBlitImageInfo2); virtual;

       procedure CmdCopyBufferToImage2(commandBuffer:TVkCommandBuffer;const pCopyBufferToImageInfo:PVkCopyBufferToImageInfo2); virtual;

       procedure CmdCopyBufferToImage2KHR(commandBuffer:TVkCommandBuffer;const pCopyBufferToImageInfo:PVkCopyBufferToImageInfo2); virtual;

       procedure CmdCopyImageToBuffer2(commandBuffer:TVkCommandBuffer;const pCopyImageToBufferInfo:PVkCopyImageToBufferInfo2); virtual;

       procedure CmdCopyImageToBuffer2KHR(commandBuffer:TVkCommandBuffer;const pCopyImageToBufferInfo:PVkCopyImageToBufferInfo2); virtual;

       procedure CmdResolveImage2(commandBuffer:TVkCommandBuffer;const pResolveImageInfo:PVkResolveImageInfo2); virtual;

       procedure CmdResolveImage2KHR(commandBuffer:TVkCommandBuffer;const pResolveImageInfo:PVkResolveImageInfo2); virtual;

       procedure CmdRefreshObjectsKHR(commandBuffer:TVkCommandBuffer;const pRefreshObjects:PVkRefreshObjectListKHR); virtual;

       function GetPhysicalDeviceRefreshableObjectTypesKHR(physicalDevice:TVkPhysicalDevice;pRefreshableObjectTypeCount:PVkUInt32;pRefreshableObjectTypes:PVkObjectType):TVkResult; virtual;

       procedure CmdSetFragmentShadingRateKHR(commandBuffer:TVkCommandBuffer;const pFragmentSize:PVkExtent2D;const combinerOps:TVkFragmentShadingRateCombinerOpKHR); virtual;

       function GetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice:TVkPhysicalDevice;pFragmentShadingRateCount:PVkUInt32;pFragmentShadingRates:PVkPhysicalDeviceFragmentShadingRateKHR):TVkResult; virtual;

       procedure CmdSetFragmentShadingRateEnumNV(commandBuffer:TVkCommandBuffer;shadingRate:TVkFragmentShadingRateNV;const combinerOps:TVkFragmentShadingRateCombinerOpKHR); virtual;

       procedure GetAccelerationStructureBuildSizesKHR(device:TVkDevice;buildType:TVkAccelerationStructureBuildTypeKHR;const pBuildInfo:PVkAccelerationStructureBuildGeometryInfoKHR;const pMaxPrimitiveCounts:PVkUInt32;pSizeInfo:PVkAccelerationStructureBuildSizesInfoKHR); virtual;

       procedure CmdSetVertexInputEXT(commandBuffer:TVkCommandBuffer;vertexBindingDescriptionCount:TVkUInt32;const pVertexBindingDescriptions:PVkVertexInputBindingDescription2EXT;vertexAttributeDescriptionCount:TVkUInt32;const pVertexAttributeDescriptions:PVkVertexInputAttributeDescription2EXT); virtual;

       procedure CmdSetColorWriteEnableEXT(commandBuffer:TVkCommandBuffer;attachmentCount:TVkUInt32;const pColorWriteEnables:PVkBool32); virtual;

       procedure CmdSetEvent2(commandBuffer:TVkCommandBuffer;event:TVkEvent;const pDependencyInfo:PVkDependencyInfo); virtual;

       procedure CmdSetEvent2KHR(commandBuffer:TVkCommandBuffer;event:TVkEvent;const pDependencyInfo:PVkDependencyInfo); virtual;

       procedure CmdResetEvent2(commandBuffer:TVkCommandBuffer;event:TVkEvent;stageMask:TVkPipelineStageFlags2); virtual;

       procedure CmdResetEvent2KHR(commandBuffer:TVkCommandBuffer;event:TVkEvent;stageMask:TVkPipelineStageFlags2); virtual;

       procedure CmdWaitEvents2(commandBuffer:TVkCommandBuffer;eventCount:TVkUInt32;const pEvents:PVkEvent;const pDependencyInfos:PVkDependencyInfo); virtual;

       procedure CmdWaitEvents2KHR(commandBuffer:TVkCommandBuffer;eventCount:TVkUInt32;const pEvents:PVkEvent;const pDependencyInfos:PVkDependencyInfo); virtual;

       procedure CmdPipelineBarrier2(commandBuffer:TVkCommandBuffer;const pDependencyInfo:PVkDependencyInfo); virtual;

       procedure CmdPipelineBarrier2KHR(commandBuffer:TVkCommandBuffer;const pDependencyInfo:PVkDependencyInfo); virtual;

       function QueueSubmit2(queue:TVkQueue;submitCount:TVkUInt32;const pSubmits:PVkSubmitInfo2;fence:TVkFence):TVkResult; virtual;

       function QueueSubmit2KHR(queue:TVkQueue;submitCount:TVkUInt32;const pSubmits:PVkSubmitInfo2;fence:TVkFence):TVkResult; virtual;

       procedure CmdWriteTimestamp2(commandBuffer:TVkCommandBuffer;stage:TVkPipelineStageFlags2;queryPool:TVkQueryPool;query:TVkUInt32); virtual;

       procedure CmdWriteTimestamp2KHR(commandBuffer:TVkCommandBuffer;stage:TVkPipelineStageFlags2;queryPool:TVkQueryPool;query:TVkUInt32); virtual;

       procedure CmdWriteBufferMarker2AMD(commandBuffer:TVkCommandBuffer;stage:TVkPipelineStageFlags2;dstBuffer:TVkBuffer;dstOffset:TVkDeviceSize;marker:TVkUInt32); virtual;

       procedure GetQueueCheckpointData2NV(queue:TVkQueue;pCheckpointDataCount:PVkUInt32;pCheckpointData:PVkCheckpointData2NV); virtual;

       function CopyMemoryToImageEXT(device:TVkDevice;const pCopyMemoryToImageInfo:PVkCopyMemoryToImageInfoEXT):TVkResult; virtual;

       function CopyImageToMemoryEXT(device:TVkDevice;const pCopyImageToMemoryInfo:PVkCopyImageToMemoryInfoEXT):TVkResult; virtual;

       function CopyImageToImageEXT(device:TVkDevice;const pCopyImageToImageInfo:PVkCopyImageToImageInfoEXT):TVkResult; virtual;

       function TransitionImageLayoutEXT(device:TVkDevice;transitionCount:TVkUInt32;const pTransitions:PVkHostImageLayoutTransitionInfoEXT):TVkResult; virtual;

{$ifdef VulkanSC}
       procedure GetCommandPoolMemoryConsumption(device:TVkDevice;commandPool:TVkCommandPool;commandBuffer:TVkCommandBuffer;pConsumption:PVkCommandPoolMemoryConsumption); virtual;
{$endif}

{$ifdef VkVideo}
       function GetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice:TVkPhysicalDevice;const pVideoProfile:PVkVideoProfileInfoKHR;pCapabilities:PVkVideoCapabilitiesKHR):TVkResult; virtual;
{$endif}

{$ifdef VkVideo}
       function GetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice:TVkPhysicalDevice;const pVideoFormatInfo:PVkPhysicalDeviceVideoFormatInfoKHR;pVideoFormatPropertyCount:PVkUInt32;pVideoFormatProperties:PVkVideoFormatPropertiesKHR):TVkResult; virtual;
{$endif}

{$ifdef VkVideo}
       function GetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR(physicalDevice:TVkPhysicalDevice;const pQualityLevelInfo:PVkPhysicalDeviceVideoEncodeQualityLevelInfoKHR;pQualityLevelProperties:PVkVideoEncodeQualityLevelPropertiesKHR):TVkResult; virtual;
{$endif}

{$ifdef VkVideo}
       function CreateVideoSessionKHR(device:TVkDevice;const pCreateInfo:PVkVideoSessionCreateInfoKHR;const pAllocator:PVkAllocationCallbacks;pVideoSession:PVkVideoSessionKHR):TVkResult; virtual;
{$endif}

{$ifdef VkVideo}
       procedure DestroyVideoSessionKHR(device:TVkDevice;videoSession:TVkVideoSessionKHR;const pAllocator:PVkAllocationCallbacks); virtual;
{$endif}

{$ifdef VkVideo}
       function CreateVideoSessionParametersKHR(device:TVkDevice;const pCreateInfo:PVkVideoSessionParametersCreateInfoKHR;const pAllocator:PVkAllocationCallbacks;pVideoSessionParameters:PVkVideoSessionParametersKHR):TVkResult; virtual;
{$endif}

{$ifdef VkVideo}
       function UpdateVideoSessionParametersKHR(device:TVkDevice;videoSessionParameters:TVkVideoSessionParametersKHR;const pUpdateInfo:PVkVideoSessionParametersUpdateInfoKHR):TVkResult; virtual;
{$endif}

{$ifdef VkVideo}
       function GetEncodedVideoSessionParametersKHR(device:TVkDevice;const pVideoSessionParametersInfo:PVkVideoEncodeSessionParametersGetInfoKHR;pFeedbackInfo:PVkVideoEncodeSessionParametersFeedbackInfoKHR;pDataSize:PVkSize;pData:PVkVoid):TVkResult; virtual;
{$endif}

{$ifdef VkVideo}
       procedure DestroyVideoSessionParametersKHR(device:TVkDevice;videoSessionParameters:TVkVideoSessionParametersKHR;const pAllocator:PVkAllocationCallbacks); virtual;
{$endif}

{$ifdef VkVideo}
       function GetVideoSessionMemoryRequirementsKHR(device:TVkDevice;videoSession:TVkVideoSessionKHR;pMemoryRequirementsCount:PVkUInt32;pMemoryRequirements:PVkVideoSessionMemoryRequirementsKHR):TVkResult; virtual;
{$endif}

{$ifdef VkVideo}
       function BindVideoSessionMemoryKHR(device:TVkDevice;videoSession:TVkVideoSessionKHR;bindSessionMemoryInfoCount:TVkUInt32;const pBindSessionMemoryInfos:PVkBindVideoSessionMemoryInfoKHR):TVkResult; virtual;
{$endif}

{$ifdef VkVideo}
       procedure CmdDecodeVideoKHR(commandBuffer:TVkCommandBuffer;const pDecodeInfo:PVkVideoDecodeInfoKHR); virtual;
{$endif}

{$ifdef VkVideo}
       procedure CmdBeginVideoCodingKHR(commandBuffer:TVkCommandBuffer;const pBeginInfo:PVkVideoBeginCodingInfoKHR); virtual;
{$endif}

{$ifdef VkVideo}
       procedure CmdControlVideoCodingKHR(commandBuffer:TVkCommandBuffer;const pCodingControlInfo:PVkVideoCodingControlInfoKHR); virtual;
{$endif}

{$ifdef VkVideo}
       procedure CmdEndVideoCodingKHR(commandBuffer:TVkCommandBuffer;const pEndCodingInfo:PVkVideoEndCodingInfoKHR); virtual;
{$endif}

{$ifdef VkVideo}
       procedure CmdEncodeVideoKHR(commandBuffer:TVkCommandBuffer;const pEncodeInfo:PVkVideoEncodeInfoKHR); virtual;
{$endif}

       procedure CmdDecompressMemoryNV(commandBuffer:TVkCommandBuffer;decompressRegionCount:TVkUInt32;const pDecompressMemoryRegions:PVkDecompressMemoryRegionNV); virtual;

       procedure CmdDecompressMemoryIndirectCountNV(commandBuffer:TVkCommandBuffer;indirectCommandsAddress:TVkDeviceAddress;indirectCommandsCountAddress:TVkDeviceAddress;stride:TVkUInt32); virtual;

       function CreateCuModuleNVX(device:TVkDevice;const pCreateInfo:PVkCuModuleCreateInfoNVX;const pAllocator:PVkAllocationCallbacks;pModule:PVkCuModuleNVX):TVkResult; virtual;

       function CreateCuFunctionNVX(device:TVkDevice;const pCreateInfo:PVkCuFunctionCreateInfoNVX;const pAllocator:PVkAllocationCallbacks;pFunction:PVkCuFunctionNVX):TVkResult; virtual;

       procedure DestroyCuModuleNVX(device:TVkDevice;module:TVkCuModuleNVX;const pAllocator:PVkAllocationCallbacks); virtual;

       procedure DestroyCuFunctionNVX(device:TVkDevice;function_:TVkCuFunctionNVX;const pAllocator:PVkAllocationCallbacks); virtual;

       procedure CmdCuLaunchKernelNVX(commandBuffer:TVkCommandBuffer;const pLaunchInfo:PVkCuLaunchInfoNVX); virtual;

       procedure GetDescriptorSetLayoutSizeEXT(device:TVkDevice;layout:TVkDescriptorSetLayout;pLayoutSizeInBytes:PVkDeviceSize); virtual;

       procedure GetDescriptorSetLayoutBindingOffsetEXT(device:TVkDevice;layout:TVkDescriptorSetLayout;binding:TVkUInt32;pOffset:PVkDeviceSize); virtual;

       procedure GetDescriptorEXT(device:TVkDevice;const pDescriptorInfo:PVkDescriptorGetInfoEXT;dataSize:TVkSize;pDescriptor:PVkVoid); virtual;

       procedure CmdBindDescriptorBuffersEXT(commandBuffer:TVkCommandBuffer;bufferCount:TVkUInt32;const pBindingInfos:PVkDescriptorBufferBindingInfoEXT); virtual;

       procedure CmdSetDescriptorBufferOffsetsEXT(commandBuffer:TVkCommandBuffer;pipelineBindPoint:TVkPipelineBindPoint;layout:TVkPipelineLayout;firstSet:TVkUInt32;setCount:TVkUInt32;const pBufferIndices:PVkUInt32;const pOffsets:PVkDeviceSize); virtual;

       procedure CmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer:TVkCommandBuffer;pipelineBindPoint:TVkPipelineBindPoint;layout:TVkPipelineLayout;set_:TVkUInt32); virtual;

       function GetBufferOpaqueCaptureDescriptorDataEXT(device:TVkDevice;const pInfo:PVkBufferCaptureDescriptorDataInfoEXT;pData:PVkVoid):TVkResult; virtual;

       function GetImageOpaqueCaptureDescriptorDataEXT(device:TVkDevice;const pInfo:PVkImageCaptureDescriptorDataInfoEXT;pData:PVkVoid):TVkResult; virtual;

       function GetImageViewOpaqueCaptureDescriptorDataEXT(device:TVkDevice;const pInfo:PVkImageViewCaptureDescriptorDataInfoEXT;pData:PVkVoid):TVkResult; virtual;

       function GetSamplerOpaqueCaptureDescriptorDataEXT(device:TVkDevice;const pInfo:PVkSamplerCaptureDescriptorDataInfoEXT;pData:PVkVoid):TVkResult; virtual;

       function GetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device:TVkDevice;const pInfo:PVkAccelerationStructureCaptureDescriptorDataInfoEXT;pData:PVkVoid):TVkResult; virtual;

       procedure SetDeviceMemoryPriorityEXT(device:TVkDevice;memory:TVkDeviceMemory;priority:TVkFloat); virtual;

       function AcquireDrmDisplayEXT(physicalDevice:TVkPhysicalDevice;drmFd:TVkInt32;display:TVkDisplayKHR):TVkResult; virtual;

       function GetDrmDisplayEXT(physicalDevice:TVkPhysicalDevice;drmFd:TVkInt32;connectorId:TVkUInt32;display:PVkDisplayKHR):TVkResult; virtual;

       function WaitForPresentKHR(device:TVkDevice;swapchain:TVkSwapchainKHR;presentId:TVkUInt64;timeout:TVkUInt64):TVkResult; virtual;

{$ifdef Fuchsia}
       function CreateBufferCollectionFUCHSIA(device:TVkDevice;const pCreateInfo:PVkBufferCollectionCreateInfoFUCHSIA;const pAllocator:PVkAllocationCallbacks;pCollection:PVkBufferCollectionFUCHSIA):TVkResult; virtual;
{$endif}

{$ifdef Fuchsia}
       function SetBufferCollectionBufferConstraintsFUCHSIA(device:TVkDevice;collection:TVkBufferCollectionFUCHSIA;const pBufferConstraintsInfo:PVkBufferConstraintsInfoFUCHSIA):TVkResult; virtual;
{$endif}

{$ifdef Fuchsia}
       function SetBufferCollectionImageConstraintsFUCHSIA(device:TVkDevice;collection:TVkBufferCollectionFUCHSIA;const pImageConstraintsInfo:PVkImageConstraintsInfoFUCHSIA):TVkResult; virtual;
{$endif}

{$ifdef Fuchsia}
       procedure DestroyBufferCollectionFUCHSIA(device:TVkDevice;collection:TVkBufferCollectionFUCHSIA;const pAllocator:PVkAllocationCallbacks); virtual;
{$endif}

{$ifdef Fuchsia}
       function GetBufferCollectionPropertiesFUCHSIA(device:TVkDevice;collection:TVkBufferCollectionFUCHSIA;pProperties:PVkBufferCollectionPropertiesFUCHSIA):TVkResult; virtual;
{$endif}

       procedure CmdBeginRendering(commandBuffer:TVkCommandBuffer;const pRenderingInfo:PVkRenderingInfo); virtual;

       procedure CmdBeginRenderingKHR(commandBuffer:TVkCommandBuffer;const pRenderingInfo:PVkRenderingInfo); virtual;

       procedure CmdEndRendering(commandBuffer:TVkCommandBuffer); virtual;

       procedure CmdEndRenderingKHR(commandBuffer:TVkCommandBuffer); virtual;

       procedure GetDescriptorSetLayoutHostMappingInfoVALVE(device:TVkDevice;const pBindingReference:PVkDescriptorSetBindingReferenceVALVE;pHostMapping:PVkDescriptorSetLayoutHostMappingInfoVALVE); virtual;

       procedure GetDescriptorSetHostMappingVALVE(device:TVkDevice;descriptorSet:TVkDescriptorSet;ppData:PPVkVoid); virtual;

       function CreateMicromapEXT(device:TVkDevice;const pCreateInfo:PVkMicromapCreateInfoEXT;const pAllocator:PVkAllocationCallbacks;pMicromap:PVkMicromapEXT):TVkResult; virtual;

       procedure CmdBuildMicromapsEXT(commandBuffer:TVkCommandBuffer;infoCount:TVkUInt32;const pInfos:PVkMicromapBuildInfoEXT); virtual;

       function BuildMicromapsEXT(device:TVkDevice;deferredOperation:TVkDeferredOperationKHR;infoCount:TVkUInt32;const pInfos:PVkMicromapBuildInfoEXT):TVkResult; virtual;

       procedure DestroyMicromapEXT(device:TVkDevice;micromap:TVkMicromapEXT;const pAllocator:PVkAllocationCallbacks); virtual;

       procedure CmdCopyMicromapEXT(commandBuffer:TVkCommandBuffer;const pInfo:PVkCopyMicromapInfoEXT); virtual;

       function CopyMicromapEXT(device:TVkDevice;deferredOperation:TVkDeferredOperationKHR;const pInfo:PVkCopyMicromapInfoEXT):TVkResult; virtual;

       procedure CmdCopyMicromapToMemoryEXT(commandBuffer:TVkCommandBuffer;const pInfo:PVkCopyMicromapToMemoryInfoEXT); virtual;

       function CopyMicromapToMemoryEXT(device:TVkDevice;deferredOperation:TVkDeferredOperationKHR;const pInfo:PVkCopyMicromapToMemoryInfoEXT):TVkResult; virtual;

       procedure CmdCopyMemoryToMicromapEXT(commandBuffer:TVkCommandBuffer;const pInfo:PVkCopyMemoryToMicromapInfoEXT); virtual;

       function CopyMemoryToMicromapEXT(device:TVkDevice;deferredOperation:TVkDeferredOperationKHR;const pInfo:PVkCopyMemoryToMicromapInfoEXT):TVkResult; virtual;

       procedure CmdWriteMicromapsPropertiesEXT(commandBuffer:TVkCommandBuffer;micromapCount:TVkUInt32;const pMicromaps:PVkMicromapEXT;queryType:TVkQueryType;queryPool:TVkQueryPool;firstQuery:TVkUInt32); virtual;

       function WriteMicromapsPropertiesEXT(device:TVkDevice;micromapCount:TVkUInt32;const pMicromaps:PVkMicromapEXT;queryType:TVkQueryType;dataSize:TVkSize;pData:PVkVoid;stride:TVkSize):TVkResult; virtual;

       procedure GetDeviceMicromapCompatibilityEXT(device:TVkDevice;const pVersionInfo:PVkMicromapVersionInfoEXT;pCompatibility:PVkAccelerationStructureCompatibilityKHR); virtual;

       procedure GetMicromapBuildSizesEXT(device:TVkDevice;buildType:TVkAccelerationStructureBuildTypeKHR;const pBuildInfo:PVkMicromapBuildInfoEXT;pSizeInfo:PVkMicromapBuildSizesInfoEXT); virtual;

       procedure GetShaderModuleIdentifierEXT(device:TVkDevice;shaderModule:TVkShaderModule;pIdentifier:PVkShaderModuleIdentifierEXT); virtual;

       procedure GetShaderModuleCreateInfoIdentifierEXT(device:TVkDevice;const pCreateInfo:PVkShaderModuleCreateInfo;pIdentifier:PVkShaderModuleIdentifierEXT); virtual;

       procedure GetImageSubresourceLayout2KHR(device:TVkDevice;image:TVkImage;const pSubresource:PVkImageSubresource2KHR;pLayout:PVkSubresourceLayout2KHR); virtual;

       procedure GetImageSubresourceLayout2EXT(device:TVkDevice;image:TVkImage;const pSubresource:PVkImageSubresource2KHR;pLayout:PVkSubresourceLayout2KHR); virtual;

       function GetPipelinePropertiesEXT(device:TVkDevice;const pPipelineInfo:PVkPipelineInfoEXT;pPipelineProperties:PVkBaseOutStructure):TVkResult; virtual;

       procedure ExportMetalObjectsEXT(device:TVkDevice;pMetalObjectsInfo:PVkExportMetalObjectsInfoEXT); virtual;

       function GetFramebufferTilePropertiesQCOM(device:TVkDevice;framebuffer:TVkFramebuffer;pPropertiesCount:PVkUInt32;pProperties:PVkTilePropertiesQCOM):TVkResult; virtual;

       function GetDynamicRenderingTilePropertiesQCOM(device:TVkDevice;const pRenderingInfo:PVkRenderingInfo;pProperties:PVkTilePropertiesQCOM):TVkResult; virtual;

       function GetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice:TVkPhysicalDevice;const pOpticalFlowImageFormatInfo:PVkOpticalFlowImageFormatInfoNV;pFormatCount:PVkUInt32;pImageFormatProperties:PVkOpticalFlowImageFormatPropertiesNV):TVkResult; virtual;

       function CreateOpticalFlowSessionNV(device:TVkDevice;const pCreateInfo:PVkOpticalFlowSessionCreateInfoNV;const pAllocator:PVkAllocationCallbacks;pSession:PVkOpticalFlowSessionNV):TVkResult; virtual;

       procedure DestroyOpticalFlowSessionNV(device:TVkDevice;session:TVkOpticalFlowSessionNV;const pAllocator:PVkAllocationCallbacks); virtual;

       function BindOpticalFlowSessionImageNV(device:TVkDevice;session:TVkOpticalFlowSessionNV;bindingPoint:TVkOpticalFlowSessionBindingPointNV;view:TVkImageView;layout:TVkImageLayout):TVkResult; virtual;

       procedure CmdOpticalFlowExecuteNV(commandBuffer:TVkCommandBuffer;session:TVkOpticalFlowSessionNV;const pExecuteInfo:PVkOpticalFlowExecuteInfoNV); virtual;

       function GetDeviceFaultInfoEXT(device:TVkDevice;pFaultCounts:PVkDeviceFaultCountsEXT;pFaultInfo:PVkDeviceFaultInfoEXT):TVkResult; virtual;

       procedure CmdSetDepthBias2EXT(commandBuffer:TVkCommandBuffer;const pDepthBiasInfo:PVkDepthBiasInfoEXT); virtual;

       function ReleaseSwapchainImagesEXT(device:TVkDevice;const pReleaseInfo:PVkReleaseSwapchainImagesInfoEXT):TVkResult; virtual;

       procedure GetDeviceImageSubresourceLayoutKHR(device:TVkDevice;const pInfo:PVkDeviceImageSubresourceInfoKHR;pLayout:PVkSubresourceLayout2KHR); virtual;

       function MapMemory2KHR(device:TVkDevice;const pMemoryMapInfo:PVkMemoryMapInfoKHR;ppData:PPVkVoid):TVkResult; virtual;

       function UnmapMemory2KHR(device:TVkDevice;const pMemoryUnmapInfo:PVkMemoryUnmapInfoKHR):TVkResult; virtual;

       function CreateShadersEXT(device:TVkDevice;createInfoCount:TVkUInt32;const pCreateInfos:PVkShaderCreateInfoEXT;const pAllocator:PVkAllocationCallbacks;pShaders:PVkShaderEXT):TVkResult; virtual;

       procedure DestroyShaderEXT(device:TVkDevice;shader:TVkShaderEXT;const pAllocator:PVkAllocationCallbacks); virtual;

       function GetShaderBinaryDataEXT(device:TVkDevice;shader:TVkShaderEXT;pDataSize:PVkSize;pData:PVkVoid):TVkResult; virtual;

       procedure CmdBindShadersEXT(commandBuffer:TVkCommandBuffer;stageCount:TVkUInt32;const pStages:PVkShaderStageFlagBits;const pShaders:PVkShaderEXT); virtual;

{$ifdef QNX}
       function GetScreenBufferPropertiesQNX(device:TVkDevice;const buffer:P_screen_buffer;pProperties:PVkScreenBufferPropertiesQNX):TVkResult; virtual;
{$endif}

       function GetPhysicalDeviceCooperativeMatrixPropertiesKHR(physicalDevice:TVkPhysicalDevice;pPropertyCount:PVkUInt32;pProperties:PVkCooperativeMatrixPropertiesKHR):TVkResult; virtual;

       function GetExecutionGraphPipelineScratchSizeAMDX(device:TVkDevice;executionGraph:TVkPipeline;pSizeInfo:PVkExecutionGraphPipelineScratchSizeAMDX):TVkResult; virtual;

       function GetExecutionGraphPipelineNodeIndexAMDX(device:TVkDevice;executionGraph:TVkPipeline;const pNodeInfo:PVkPipelineShaderStageNodeCreateInfoAMDX;pNodeIndex:PVkUInt32):TVkResult; virtual;

       function CreateExecutionGraphPipelinesAMDX(device:TVkDevice;pipelineCache:TVkPipelineCache;createInfoCount:TVkUInt32;const pCreateInfos:PVkExecutionGraphPipelineCreateInfoAMDX;const pAllocator:PVkAllocationCallbacks;pPipelines:PVkPipeline):TVkResult; virtual;

       procedure CmdInitializeGraphScratchMemoryAMDX(commandBuffer:TVkCommandBuffer;scratch:TVkDeviceAddress); virtual;

       procedure CmdDispatchGraphAMDX(commandBuffer:TVkCommandBuffer;scratch:TVkDeviceAddress;const pCountInfo:PVkDispatchGraphCountInfoAMDX); virtual;

       procedure CmdDispatchGraphIndirectAMDX(commandBuffer:TVkCommandBuffer;scratch:TVkDeviceAddress;const pCountInfo:PVkDispatchGraphCountInfoAMDX); virtual;

       procedure CmdDispatchGraphIndirectCountAMDX(commandBuffer:TVkCommandBuffer;scratch:TVkDeviceAddress;countInfo:TVkDeviceAddress); virtual;

       function SetLatencySleepModeNV(device:TVkDevice;swapchain:TVkSwapchainKHR;pSleepModeInfo:PVkLatencySleepModeInfoNV):TVkResult; virtual;

       function LatencySleepNV(device:TVkDevice;swapchain:TVkSwapchainKHR;pSleepInfo:PVkLatencySleepInfoNV):TVkResult; virtual;

       procedure SetLatencyMarkerNV(device:TVkDevice;swapchain:TVkSwapchainKHR;pLatencyMarkerInfo:PVkSetLatencyMarkerInfoNV); virtual;

       procedure GetLatencyTimingsNV(device:TVkDevice;swapchain:TVkSwapchainKHR;pTimingCount:PVkUInt32;pLatencyMarkerInfo:PVkGetLatencyMarkerInfoNV); virtual;

       procedure QueueNotifyOutOfBandNV(queue:TVkQueue;pQueueTypeInfo:TVkOutOfBandQueueTypeInfoNV); virtual;

       property Commands:TVulkanCommands read fCommands;
     end;

var LibVulkan:pointer=nil;

    vk:TVulkan=nil;

    vkCreateInstance:TvkCreateInstance=nil;

    vkDestroyInstance:TvkDestroyInstance=nil;

    vkEnumeratePhysicalDevices:TvkEnumeratePhysicalDevices=nil;

    vkGetDeviceProcAddr:TvkGetDeviceProcAddr=nil;

    vkGetInstanceProcAddr:TvkGetInstanceProcAddr=nil;

    vkGetPhysicalDeviceProperties:TvkGetPhysicalDeviceProperties=nil;

    vkGetPhysicalDeviceQueueFamilyProperties:TvkGetPhysicalDeviceQueueFamilyProperties=nil;

    vkGetPhysicalDeviceMemoryProperties:TvkGetPhysicalDeviceMemoryProperties=nil;

    vkGetPhysicalDeviceFeatures:TvkGetPhysicalDeviceFeatures=nil;

    vkGetPhysicalDeviceFormatProperties:TvkGetPhysicalDeviceFormatProperties=nil;

    vkGetPhysicalDeviceImageFormatProperties:TvkGetPhysicalDeviceImageFormatProperties=nil;

    vkCreateDevice:TvkCreateDevice=nil;

    vkDestroyDevice:TvkDestroyDevice=nil;

    vkEnumerateInstanceVersion:TvkEnumerateInstanceVersion=nil;

    vkEnumerateInstanceLayerProperties:TvkEnumerateInstanceLayerProperties=nil;

    vkEnumerateInstanceExtensionProperties:TvkEnumerateInstanceExtensionProperties=nil;

    vkEnumerateDeviceLayerProperties:TvkEnumerateDeviceLayerProperties=nil;

    vkEnumerateDeviceExtensionProperties:TvkEnumerateDeviceExtensionProperties=nil;

    vkGetDeviceQueue:TvkGetDeviceQueue=nil;

    vkQueueSubmit:TvkQueueSubmit=nil;

    vkQueueWaitIdle:TvkQueueWaitIdle=nil;

    vkDeviceWaitIdle:TvkDeviceWaitIdle=nil;

    vkAllocateMemory:TvkAllocateMemory=nil;

    vkFreeMemory:TvkFreeMemory=nil;

    vkMapMemory:TvkMapMemory=nil;

    vkUnmapMemory:TvkUnmapMemory=nil;

    vkFlushMappedMemoryRanges:TvkFlushMappedMemoryRanges=nil;

    vkInvalidateMappedMemoryRanges:TvkInvalidateMappedMemoryRanges=nil;

    vkGetDeviceMemoryCommitment:TvkGetDeviceMemoryCommitment=nil;

    vkGetBufferMemoryRequirements:TvkGetBufferMemoryRequirements=nil;

    vkBindBufferMemory:TvkBindBufferMemory=nil;

    vkGetImageMemoryRequirements:TvkGetImageMemoryRequirements=nil;

    vkBindImageMemory:TvkBindImageMemory=nil;

    vkGetImageSparseMemoryRequirements:TvkGetImageSparseMemoryRequirements=nil;

    vkGetPhysicalDeviceSparseImageFormatProperties:TvkGetPhysicalDeviceSparseImageFormatProperties=nil;

    vkQueueBindSparse:TvkQueueBindSparse=nil;

    vkCreateFence:TvkCreateFence=nil;

    vkDestroyFence:TvkDestroyFence=nil;

    vkResetFences:TvkResetFences=nil;

    vkGetFenceStatus:TvkGetFenceStatus=nil;

    vkWaitForFences:TvkWaitForFences=nil;

    vkCreateSemaphore:TvkCreateSemaphore=nil;

    vkDestroySemaphore:TvkDestroySemaphore=nil;

    vkCreateEvent:TvkCreateEvent=nil;

    vkDestroyEvent:TvkDestroyEvent=nil;

    vkGetEventStatus:TvkGetEventStatus=nil;

    vkSetEvent:TvkSetEvent=nil;

    vkResetEvent:TvkResetEvent=nil;

    vkCreateQueryPool:TvkCreateQueryPool=nil;

    vkDestroyQueryPool:TvkDestroyQueryPool=nil;

    vkGetQueryPoolResults:TvkGetQueryPoolResults=nil;

    vkResetQueryPool:TvkResetQueryPool=nil;

    vkResetQueryPoolEXT:TvkResetQueryPoolEXT=nil;

    vkCreateBuffer:TvkCreateBuffer=nil;

    vkDestroyBuffer:TvkDestroyBuffer=nil;

    vkCreateBufferView:TvkCreateBufferView=nil;

    vkDestroyBufferView:TvkDestroyBufferView=nil;

    vkCreateImage:TvkCreateImage=nil;

    vkDestroyImage:TvkDestroyImage=nil;

    vkGetImageSubresourceLayout:TvkGetImageSubresourceLayout=nil;

    vkCreateImageView:TvkCreateImageView=nil;

    vkDestroyImageView:TvkDestroyImageView=nil;

    vkCreateShaderModule:TvkCreateShaderModule=nil;

    vkDestroyShaderModule:TvkDestroyShaderModule=nil;

    vkCreatePipelineCache:TvkCreatePipelineCache=nil;

    vkDestroyPipelineCache:TvkDestroyPipelineCache=nil;

    vkGetPipelineCacheData:TvkGetPipelineCacheData=nil;

    vkMergePipelineCaches:TvkMergePipelineCaches=nil;

    vkCreateGraphicsPipelines:TvkCreateGraphicsPipelines=nil;

    vkCreateComputePipelines:TvkCreateComputePipelines=nil;

    vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI:TvkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI=nil;

    vkDestroyPipeline:TvkDestroyPipeline=nil;

    vkCreatePipelineLayout:TvkCreatePipelineLayout=nil;

    vkDestroyPipelineLayout:TvkDestroyPipelineLayout=nil;

    vkCreateSampler:TvkCreateSampler=nil;

    vkDestroySampler:TvkDestroySampler=nil;

    vkCreateDescriptorSetLayout:TvkCreateDescriptorSetLayout=nil;

    vkDestroyDescriptorSetLayout:TvkDestroyDescriptorSetLayout=nil;

    vkCreateDescriptorPool:TvkCreateDescriptorPool=nil;

    vkDestroyDescriptorPool:TvkDestroyDescriptorPool=nil;

    vkResetDescriptorPool:TvkResetDescriptorPool=nil;

    vkAllocateDescriptorSets:TvkAllocateDescriptorSets=nil;

    vkFreeDescriptorSets:TvkFreeDescriptorSets=nil;

    vkUpdateDescriptorSets:TvkUpdateDescriptorSets=nil;

    vkCreateFramebuffer:TvkCreateFramebuffer=nil;

    vkDestroyFramebuffer:TvkDestroyFramebuffer=nil;

    vkCreateRenderPass:TvkCreateRenderPass=nil;

    vkDestroyRenderPass:TvkDestroyRenderPass=nil;

    vkGetRenderAreaGranularity:TvkGetRenderAreaGranularity=nil;

    vkGetRenderingAreaGranularityKHR:TvkGetRenderingAreaGranularityKHR=nil;

    vkCreateCommandPool:TvkCreateCommandPool=nil;

    vkDestroyCommandPool:TvkDestroyCommandPool=nil;

    vkResetCommandPool:TvkResetCommandPool=nil;

    vkAllocateCommandBuffers:TvkAllocateCommandBuffers=nil;

    vkFreeCommandBuffers:TvkFreeCommandBuffers=nil;

    vkBeginCommandBuffer:TvkBeginCommandBuffer=nil;

    vkEndCommandBuffer:TvkEndCommandBuffer=nil;

    vkResetCommandBuffer:TvkResetCommandBuffer=nil;

    vkCmdBindPipeline:TvkCmdBindPipeline=nil;

    vkCmdSetAttachmentFeedbackLoopEnableEXT:TvkCmdSetAttachmentFeedbackLoopEnableEXT=nil;

    vkCmdSetViewport:TvkCmdSetViewport=nil;

    vkCmdSetScissor:TvkCmdSetScissor=nil;

    vkCmdSetLineWidth:TvkCmdSetLineWidth=nil;

    vkCmdSetDepthBias:TvkCmdSetDepthBias=nil;

    vkCmdSetBlendConstants:TvkCmdSetBlendConstants=nil;

    vkCmdSetDepthBounds:TvkCmdSetDepthBounds=nil;

    vkCmdSetStencilCompareMask:TvkCmdSetStencilCompareMask=nil;

    vkCmdSetStencilWriteMask:TvkCmdSetStencilWriteMask=nil;

    vkCmdSetStencilReference:TvkCmdSetStencilReference=nil;

    vkCmdBindDescriptorSets:TvkCmdBindDescriptorSets=nil;

    vkCmdBindIndexBuffer:TvkCmdBindIndexBuffer=nil;

    vkCmdBindVertexBuffers:TvkCmdBindVertexBuffers=nil;

    vkCmdDraw:TvkCmdDraw=nil;

    vkCmdDrawIndexed:TvkCmdDrawIndexed=nil;

    vkCmdDrawMultiEXT:TvkCmdDrawMultiEXT=nil;

    vkCmdDrawMultiIndexedEXT:TvkCmdDrawMultiIndexedEXT=nil;

    vkCmdDrawIndirect:TvkCmdDrawIndirect=nil;

    vkCmdDrawIndexedIndirect:TvkCmdDrawIndexedIndirect=nil;

    vkCmdDispatch:TvkCmdDispatch=nil;

    vkCmdDispatchIndirect:TvkCmdDispatchIndirect=nil;

    vkCmdSubpassShadingHUAWEI:TvkCmdSubpassShadingHUAWEI=nil;

    vkCmdDrawClusterHUAWEI:TvkCmdDrawClusterHUAWEI=nil;

    vkCmdDrawClusterIndirectHUAWEI:TvkCmdDrawClusterIndirectHUAWEI=nil;

    vkCmdUpdatePipelineIndirectBufferNV:TvkCmdUpdatePipelineIndirectBufferNV=nil;

    vkCmdCopyBuffer:TvkCmdCopyBuffer=nil;

    vkCmdCopyImage:TvkCmdCopyImage=nil;

    vkCmdBlitImage:TvkCmdBlitImage=nil;

    vkCmdCopyBufferToImage:TvkCmdCopyBufferToImage=nil;

    vkCmdCopyImageToBuffer:TvkCmdCopyImageToBuffer=nil;

    vkCmdCopyMemoryIndirectNV:TvkCmdCopyMemoryIndirectNV=nil;

    vkCmdCopyMemoryToImageIndirectNV:TvkCmdCopyMemoryToImageIndirectNV=nil;

    vkCmdUpdateBuffer:TvkCmdUpdateBuffer=nil;

    vkCmdFillBuffer:TvkCmdFillBuffer=nil;

    vkCmdClearColorImage:TvkCmdClearColorImage=nil;

    vkCmdClearDepthStencilImage:TvkCmdClearDepthStencilImage=nil;

    vkCmdClearAttachments:TvkCmdClearAttachments=nil;

    vkCmdResolveImage:TvkCmdResolveImage=nil;

    vkCmdSetEvent:TvkCmdSetEvent=nil;

    vkCmdResetEvent:TvkCmdResetEvent=nil;

    vkCmdWaitEvents:TvkCmdWaitEvents=nil;

    vkCmdPipelineBarrier:TvkCmdPipelineBarrier=nil;

    vkCmdBeginQuery:TvkCmdBeginQuery=nil;

    vkCmdEndQuery:TvkCmdEndQuery=nil;

    vkCmdBeginConditionalRenderingEXT:TvkCmdBeginConditionalRenderingEXT=nil;

    vkCmdEndConditionalRenderingEXT:TvkCmdEndConditionalRenderingEXT=nil;

    vkCmdResetQueryPool:TvkCmdResetQueryPool=nil;

    vkCmdWriteTimestamp:TvkCmdWriteTimestamp=nil;

    vkCmdCopyQueryPoolResults:TvkCmdCopyQueryPoolResults=nil;

    vkCmdPushConstants:TvkCmdPushConstants=nil;

    vkCmdBeginRenderPass:TvkCmdBeginRenderPass=nil;

    vkCmdNextSubpass:TvkCmdNextSubpass=nil;

    vkCmdEndRenderPass:TvkCmdEndRenderPass=nil;

    vkCmdExecuteCommands:TvkCmdExecuteCommands=nil;

{$ifdef Android}
    vkCreateAndroidSurfaceKHR:TvkCreateAndroidSurfaceKHR=nil;
{$endif}

    vkGetPhysicalDeviceDisplayPropertiesKHR:TvkGetPhysicalDeviceDisplayPropertiesKHR=nil;

    vkGetPhysicalDeviceDisplayPlanePropertiesKHR:TvkGetPhysicalDeviceDisplayPlanePropertiesKHR=nil;

    vkGetDisplayPlaneSupportedDisplaysKHR:TvkGetDisplayPlaneSupportedDisplaysKHR=nil;

    vkGetDisplayModePropertiesKHR:TvkGetDisplayModePropertiesKHR=nil;

    vkCreateDisplayModeKHR:TvkCreateDisplayModeKHR=nil;

    vkGetDisplayPlaneCapabilitiesKHR:TvkGetDisplayPlaneCapabilitiesKHR=nil;

    vkCreateDisplayPlaneSurfaceKHR:TvkCreateDisplayPlaneSurfaceKHR=nil;

    vkCreateSharedSwapchainsKHR:TvkCreateSharedSwapchainsKHR=nil;

    vkDestroySurfaceKHR:TvkDestroySurfaceKHR=nil;

    vkGetPhysicalDeviceSurfaceSupportKHR:TvkGetPhysicalDeviceSurfaceSupportKHR=nil;

    vkGetPhysicalDeviceSurfaceCapabilitiesKHR:TvkGetPhysicalDeviceSurfaceCapabilitiesKHR=nil;

    vkGetPhysicalDeviceSurfaceFormatsKHR:TvkGetPhysicalDeviceSurfaceFormatsKHR=nil;

    vkGetPhysicalDeviceSurfacePresentModesKHR:TvkGetPhysicalDeviceSurfacePresentModesKHR=nil;

    vkCreateSwapchainKHR:TvkCreateSwapchainKHR=nil;

    vkDestroySwapchainKHR:TvkDestroySwapchainKHR=nil;

    vkGetSwapchainImagesKHR:TvkGetSwapchainImagesKHR=nil;

    vkAcquireNextImageKHR:TvkAcquireNextImageKHR=nil;

    vkQueuePresentKHR:TvkQueuePresentKHR=nil;

    vkCreateViSurfaceNN:TvkCreateViSurfaceNN=nil;

{$ifdef Wayland}
    vkCreateWaylandSurfaceKHR:TvkCreateWaylandSurfaceKHR=nil;
{$endif}

{$ifdef Wayland}
    vkGetPhysicalDeviceWaylandPresentationSupportKHR:TvkGetPhysicalDeviceWaylandPresentationSupportKHR=nil;
{$endif}

{$ifdef Windows}
    vkCreateWin32SurfaceKHR:TvkCreateWin32SurfaceKHR=nil;
{$endif}

{$ifdef Windows}
    vkGetPhysicalDeviceWin32PresentationSupportKHR:TvkGetPhysicalDeviceWin32PresentationSupportKHR=nil;
{$endif}

{$ifdef XLIB}
    vkCreateXlibSurfaceKHR:TvkCreateXlibSurfaceKHR=nil;
{$endif}

{$ifdef XLIB}
    vkGetPhysicalDeviceXlibPresentationSupportKHR:TvkGetPhysicalDeviceXlibPresentationSupportKHR=nil;
{$endif}

{$ifdef XCB}
    vkCreateXcbSurfaceKHR:TvkCreateXcbSurfaceKHR=nil;
{$endif}

{$ifdef XCB}
    vkGetPhysicalDeviceXcbPresentationSupportKHR:TvkGetPhysicalDeviceXcbPresentationSupportKHR=nil;
{$endif}

{$ifdef DirectFB}
    vkCreateDirectFBSurfaceEXT:TvkCreateDirectFBSurfaceEXT=nil;
{$endif}

{$ifdef DirectFB}
    vkGetPhysicalDeviceDirectFBPresentationSupportEXT:TvkGetPhysicalDeviceDirectFBPresentationSupportEXT=nil;
{$endif}

{$ifdef Fuchsia}
    vkCreateImagePipeSurfaceFUCHSIA:TvkCreateImagePipeSurfaceFUCHSIA=nil;
{$endif}

    vkCreateStreamDescriptorSurfaceGGP:TvkCreateStreamDescriptorSurfaceGGP=nil;

{$ifdef QNX}
    vkCreateScreenSurfaceQNX:TvkCreateScreenSurfaceQNX=nil;
{$endif}

{$ifdef QNX}
    vkGetPhysicalDeviceScreenPresentationSupportQNX:TvkGetPhysicalDeviceScreenPresentationSupportQNX=nil;
{$endif}

    vkCreateDebugReportCallbackEXT:TvkCreateDebugReportCallbackEXT=nil;

    vkDestroyDebugReportCallbackEXT:TvkDestroyDebugReportCallbackEXT=nil;

    vkDebugReportMessageEXT:TvkDebugReportMessageEXT=nil;

    vkDebugMarkerSetObjectNameEXT:TvkDebugMarkerSetObjectNameEXT=nil;

    vkDebugMarkerSetObjectTagEXT:TvkDebugMarkerSetObjectTagEXT=nil;

    vkCmdDebugMarkerBeginEXT:TvkCmdDebugMarkerBeginEXT=nil;

    vkCmdDebugMarkerEndEXT:TvkCmdDebugMarkerEndEXT=nil;

    vkCmdDebugMarkerInsertEXT:TvkCmdDebugMarkerInsertEXT=nil;

    vkGetPhysicalDeviceExternalImageFormatPropertiesNV:TvkGetPhysicalDeviceExternalImageFormatPropertiesNV=nil;

{$ifdef Windows}
    vkGetMemoryWin32HandleNV:TvkGetMemoryWin32HandleNV=nil;
{$endif}

    vkCmdExecuteGeneratedCommandsNV:TvkCmdExecuteGeneratedCommandsNV=nil;

    vkCmdPreprocessGeneratedCommandsNV:TvkCmdPreprocessGeneratedCommandsNV=nil;

    vkCmdBindPipelineShaderGroupNV:TvkCmdBindPipelineShaderGroupNV=nil;

    vkGetGeneratedCommandsMemoryRequirementsNV:TvkGetGeneratedCommandsMemoryRequirementsNV=nil;

    vkCreateIndirectCommandsLayoutNV:TvkCreateIndirectCommandsLayoutNV=nil;

    vkDestroyIndirectCommandsLayoutNV:TvkDestroyIndirectCommandsLayoutNV=nil;

    vkGetPhysicalDeviceFeatures2:TvkGetPhysicalDeviceFeatures2=nil;

    vkGetPhysicalDeviceFeatures2KHR:TvkGetPhysicalDeviceFeatures2KHR=nil;

    vkGetPhysicalDeviceProperties2:TvkGetPhysicalDeviceProperties2=nil;

    vkGetPhysicalDeviceProperties2KHR:TvkGetPhysicalDeviceProperties2KHR=nil;

    vkGetPhysicalDeviceFormatProperties2:TvkGetPhysicalDeviceFormatProperties2=nil;

    vkGetPhysicalDeviceFormatProperties2KHR:TvkGetPhysicalDeviceFormatProperties2KHR=nil;

    vkGetPhysicalDeviceImageFormatProperties2:TvkGetPhysicalDeviceImageFormatProperties2=nil;

    vkGetPhysicalDeviceImageFormatProperties2KHR:TvkGetPhysicalDeviceImageFormatProperties2KHR=nil;

    vkGetPhysicalDeviceQueueFamilyProperties2:TvkGetPhysicalDeviceQueueFamilyProperties2=nil;

    vkGetPhysicalDeviceQueueFamilyProperties2KHR:TvkGetPhysicalDeviceQueueFamilyProperties2KHR=nil;

    vkGetPhysicalDeviceMemoryProperties2:TvkGetPhysicalDeviceMemoryProperties2=nil;

    vkGetPhysicalDeviceMemoryProperties2KHR:TvkGetPhysicalDeviceMemoryProperties2KHR=nil;

    vkGetPhysicalDeviceSparseImageFormatProperties2:TvkGetPhysicalDeviceSparseImageFormatProperties2=nil;

    vkGetPhysicalDeviceSparseImageFormatProperties2KHR:TvkGetPhysicalDeviceSparseImageFormatProperties2KHR=nil;

    vkCmdPushDescriptorSetKHR:TvkCmdPushDescriptorSetKHR=nil;

    vkTrimCommandPool:TvkTrimCommandPool=nil;

    vkTrimCommandPoolKHR:TvkTrimCommandPoolKHR=nil;

    vkGetPhysicalDeviceExternalBufferProperties:TvkGetPhysicalDeviceExternalBufferProperties=nil;

    vkGetPhysicalDeviceExternalBufferPropertiesKHR:TvkGetPhysicalDeviceExternalBufferPropertiesKHR=nil;

{$ifdef Windows}
    vkGetMemoryWin32HandleKHR:TvkGetMemoryWin32HandleKHR=nil;
{$endif}

{$ifdef Windows}
    vkGetMemoryWin32HandlePropertiesKHR:TvkGetMemoryWin32HandlePropertiesKHR=nil;
{$endif}

    vkGetMemoryFdKHR:TvkGetMemoryFdKHR=nil;

    vkGetMemoryFdPropertiesKHR:TvkGetMemoryFdPropertiesKHR=nil;

{$ifdef Fuchsia}
    vkGetMemoryZirconHandleFUCHSIA:TvkGetMemoryZirconHandleFUCHSIA=nil;
{$endif}

{$ifdef Fuchsia}
    vkGetMemoryZirconHandlePropertiesFUCHSIA:TvkGetMemoryZirconHandlePropertiesFUCHSIA=nil;
{$endif}

    vkGetMemoryRemoteAddressNV:TvkGetMemoryRemoteAddressNV=nil;

{$ifdef NvSci}
    vkGetMemorySciBufNV:TvkGetMemorySciBufNV=nil;
{$endif}

{$ifdef NvSci}
    vkGetPhysicalDeviceExternalMemorySciBufPropertiesNV:TvkGetPhysicalDeviceExternalMemorySciBufPropertiesNV=nil;
{$endif}

{$ifdef NvSci}
    vkGetPhysicalDeviceSciBufAttributesNV:TvkGetPhysicalDeviceSciBufAttributesNV=nil;
{$endif}

    vkGetPhysicalDeviceExternalSemaphoreProperties:TvkGetPhysicalDeviceExternalSemaphoreProperties=nil;

    vkGetPhysicalDeviceExternalSemaphorePropertiesKHR:TvkGetPhysicalDeviceExternalSemaphorePropertiesKHR=nil;

{$ifdef Windows}
    vkGetSemaphoreWin32HandleKHR:TvkGetSemaphoreWin32HandleKHR=nil;
{$endif}

{$ifdef Windows}
    vkImportSemaphoreWin32HandleKHR:TvkImportSemaphoreWin32HandleKHR=nil;
{$endif}

    vkGetSemaphoreFdKHR:TvkGetSemaphoreFdKHR=nil;

    vkImportSemaphoreFdKHR:TvkImportSemaphoreFdKHR=nil;

{$ifdef Fuchsia}
    vkGetSemaphoreZirconHandleFUCHSIA:TvkGetSemaphoreZirconHandleFUCHSIA=nil;
{$endif}

{$ifdef Fuchsia}
    vkImportSemaphoreZirconHandleFUCHSIA:TvkImportSemaphoreZirconHandleFUCHSIA=nil;
{$endif}

    vkGetPhysicalDeviceExternalFenceProperties:TvkGetPhysicalDeviceExternalFenceProperties=nil;

    vkGetPhysicalDeviceExternalFencePropertiesKHR:TvkGetPhysicalDeviceExternalFencePropertiesKHR=nil;

{$ifdef Windows}
    vkGetFenceWin32HandleKHR:TvkGetFenceWin32HandleKHR=nil;
{$endif}

{$ifdef Windows}
    vkImportFenceWin32HandleKHR:TvkImportFenceWin32HandleKHR=nil;
{$endif}

    vkGetFenceFdKHR:TvkGetFenceFdKHR=nil;

    vkImportFenceFdKHR:TvkImportFenceFdKHR=nil;

{$ifdef NvSci}
    vkGetFenceSciSyncFenceNV:TvkGetFenceSciSyncFenceNV=nil;
{$endif}

{$ifdef NvSci}
    vkGetFenceSciSyncObjNV:TvkGetFenceSciSyncObjNV=nil;
{$endif}

{$ifdef NvSci}
    vkImportFenceSciSyncFenceNV:TvkImportFenceSciSyncFenceNV=nil;
{$endif}

{$ifdef NvSci}
    vkImportFenceSciSyncObjNV:TvkImportFenceSciSyncObjNV=nil;
{$endif}

{$ifdef NvSci}
    vkGetSemaphoreSciSyncObjNV:TvkGetSemaphoreSciSyncObjNV=nil;
{$endif}

{$ifdef NvSci}
    vkImportSemaphoreSciSyncObjNV:TvkImportSemaphoreSciSyncObjNV=nil;
{$endif}

{$ifdef NvSci}
    vkGetPhysicalDeviceSciSyncAttributesNV:TvkGetPhysicalDeviceSciSyncAttributesNV=nil;
{$endif}

{$ifdef NvSci}
    vkCreateSemaphoreSciSyncPoolNV:TvkCreateSemaphoreSciSyncPoolNV=nil;
{$endif}

{$ifdef NvSci}
    vkDestroySemaphoreSciSyncPoolNV:TvkDestroySemaphoreSciSyncPoolNV=nil;
{$endif}

    vkReleaseDisplayEXT:TvkReleaseDisplayEXT=nil;

{$ifdef XLIB}
    vkAcquireXlibDisplayEXT:TvkAcquireXlibDisplayEXT=nil;
{$endif}

{$ifdef RandR}
    vkGetRandROutputDisplayEXT:TvkGetRandROutputDisplayEXT=nil;
{$endif}

    vkAcquireWinrtDisplayNV:TvkAcquireWinrtDisplayNV=nil;

    vkGetWinrtDisplayNV:TvkGetWinrtDisplayNV=nil;

    vkDisplayPowerControlEXT:TvkDisplayPowerControlEXT=nil;

    vkRegisterDeviceEventEXT:TvkRegisterDeviceEventEXT=nil;

    vkRegisterDisplayEventEXT:TvkRegisterDisplayEventEXT=nil;

    vkGetSwapchainCounterEXT:TvkGetSwapchainCounterEXT=nil;

    vkGetPhysicalDeviceSurfaceCapabilities2EXT:TvkGetPhysicalDeviceSurfaceCapabilities2EXT=nil;

    vkEnumeratePhysicalDeviceGroups:TvkEnumeratePhysicalDeviceGroups=nil;

    vkEnumeratePhysicalDeviceGroupsKHR:TvkEnumeratePhysicalDeviceGroupsKHR=nil;

    vkGetDeviceGroupPeerMemoryFeatures:TvkGetDeviceGroupPeerMemoryFeatures=nil;

    vkGetDeviceGroupPeerMemoryFeaturesKHR:TvkGetDeviceGroupPeerMemoryFeaturesKHR=nil;

    vkBindBufferMemory2:TvkBindBufferMemory2=nil;

    vkBindBufferMemory2KHR:TvkBindBufferMemory2KHR=nil;

    vkBindImageMemory2:TvkBindImageMemory2=nil;

    vkBindImageMemory2KHR:TvkBindImageMemory2KHR=nil;

    vkCmdSetDeviceMask:TvkCmdSetDeviceMask=nil;

    vkCmdSetDeviceMaskKHR:TvkCmdSetDeviceMaskKHR=nil;

    vkGetDeviceGroupPresentCapabilitiesKHR:TvkGetDeviceGroupPresentCapabilitiesKHR=nil;

    vkGetDeviceGroupSurfacePresentModesKHR:TvkGetDeviceGroupSurfacePresentModesKHR=nil;

    vkAcquireNextImage2KHR:TvkAcquireNextImage2KHR=nil;

    vkCmdDispatchBase:TvkCmdDispatchBase=nil;

    vkCmdDispatchBaseKHR:TvkCmdDispatchBaseKHR=nil;

    vkGetPhysicalDevicePresentRectanglesKHR:TvkGetPhysicalDevicePresentRectanglesKHR=nil;

    vkCreateDescriptorUpdateTemplate:TvkCreateDescriptorUpdateTemplate=nil;

    vkCreateDescriptorUpdateTemplateKHR:TvkCreateDescriptorUpdateTemplateKHR=nil;

    vkDestroyDescriptorUpdateTemplate:TvkDestroyDescriptorUpdateTemplate=nil;

    vkDestroyDescriptorUpdateTemplateKHR:TvkDestroyDescriptorUpdateTemplateKHR=nil;

    vkUpdateDescriptorSetWithTemplate:TvkUpdateDescriptorSetWithTemplate=nil;

    vkUpdateDescriptorSetWithTemplateKHR:TvkUpdateDescriptorSetWithTemplateKHR=nil;

    vkCmdPushDescriptorSetWithTemplateKHR:TvkCmdPushDescriptorSetWithTemplateKHR=nil;

    vkSetHdrMetadataEXT:TvkSetHdrMetadataEXT=nil;

    vkGetSwapchainStatusKHR:TvkGetSwapchainStatusKHR=nil;

    vkGetRefreshCycleDurationGOOGLE:TvkGetRefreshCycleDurationGOOGLE=nil;

    vkGetPastPresentationTimingGOOGLE:TvkGetPastPresentationTimingGOOGLE=nil;

{$ifdef MoltenVK_IOS}
    vkCreateIOSSurfaceMVK:TvkCreateIOSSurfaceMVK=nil;
{$endif}

{$ifdef MoltenVK_MacOS}
    vkCreateMacOSSurfaceMVK:TvkCreateMacOSSurfaceMVK=nil;
{$endif}

    vkCreateMetalSurfaceEXT:TvkCreateMetalSurfaceEXT=nil;

    vkCmdSetViewportWScalingNV:TvkCmdSetViewportWScalingNV=nil;

    vkCmdSetDiscardRectangleEXT:TvkCmdSetDiscardRectangleEXT=nil;

    vkCmdSetDiscardRectangleEnableEXT:TvkCmdSetDiscardRectangleEnableEXT=nil;

    vkCmdSetDiscardRectangleModeEXT:TvkCmdSetDiscardRectangleModeEXT=nil;

    vkCmdSetSampleLocationsEXT:TvkCmdSetSampleLocationsEXT=nil;

    vkGetPhysicalDeviceMultisamplePropertiesEXT:TvkGetPhysicalDeviceMultisamplePropertiesEXT=nil;

    vkGetPhysicalDeviceSurfaceCapabilities2KHR:TvkGetPhysicalDeviceSurfaceCapabilities2KHR=nil;

    vkGetPhysicalDeviceSurfaceFormats2KHR:TvkGetPhysicalDeviceSurfaceFormats2KHR=nil;

    vkGetPhysicalDeviceDisplayProperties2KHR:TvkGetPhysicalDeviceDisplayProperties2KHR=nil;

    vkGetPhysicalDeviceDisplayPlaneProperties2KHR:TvkGetPhysicalDeviceDisplayPlaneProperties2KHR=nil;

    vkGetDisplayModeProperties2KHR:TvkGetDisplayModeProperties2KHR=nil;

    vkGetDisplayPlaneCapabilities2KHR:TvkGetDisplayPlaneCapabilities2KHR=nil;

    vkGetBufferMemoryRequirements2:TvkGetBufferMemoryRequirements2=nil;

    vkGetBufferMemoryRequirements2KHR:TvkGetBufferMemoryRequirements2KHR=nil;

    vkGetImageMemoryRequirements2:TvkGetImageMemoryRequirements2=nil;

    vkGetImageMemoryRequirements2KHR:TvkGetImageMemoryRequirements2KHR=nil;

    vkGetImageSparseMemoryRequirements2:TvkGetImageSparseMemoryRequirements2=nil;

    vkGetImageSparseMemoryRequirements2KHR:TvkGetImageSparseMemoryRequirements2KHR=nil;

    vkGetDeviceBufferMemoryRequirements:TvkGetDeviceBufferMemoryRequirements=nil;

    vkGetDeviceBufferMemoryRequirementsKHR:TvkGetDeviceBufferMemoryRequirementsKHR=nil;

    vkGetDeviceImageMemoryRequirements:TvkGetDeviceImageMemoryRequirements=nil;

    vkGetDeviceImageMemoryRequirementsKHR:TvkGetDeviceImageMemoryRequirementsKHR=nil;

    vkGetDeviceImageSparseMemoryRequirements:TvkGetDeviceImageSparseMemoryRequirements=nil;

    vkGetDeviceImageSparseMemoryRequirementsKHR:TvkGetDeviceImageSparseMemoryRequirementsKHR=nil;

    vkCreateSamplerYcbcrConversion:TvkCreateSamplerYcbcrConversion=nil;

    vkCreateSamplerYcbcrConversionKHR:TvkCreateSamplerYcbcrConversionKHR=nil;

    vkDestroySamplerYcbcrConversion:TvkDestroySamplerYcbcrConversion=nil;

    vkDestroySamplerYcbcrConversionKHR:TvkDestroySamplerYcbcrConversionKHR=nil;

    vkGetDeviceQueue2:TvkGetDeviceQueue2=nil;

    vkCreateValidationCacheEXT:TvkCreateValidationCacheEXT=nil;

    vkDestroyValidationCacheEXT:TvkDestroyValidationCacheEXT=nil;

    vkGetValidationCacheDataEXT:TvkGetValidationCacheDataEXT=nil;

    vkMergeValidationCachesEXT:TvkMergeValidationCachesEXT=nil;

    vkGetDescriptorSetLayoutSupport:TvkGetDescriptorSetLayoutSupport=nil;

    vkGetDescriptorSetLayoutSupportKHR:TvkGetDescriptorSetLayoutSupportKHR=nil;

    vkGetSwapchainGrallocUsageANDROID:TvkGetSwapchainGrallocUsageANDROID=nil;

{$ifdef Android}
    vkGetSwapchainGrallocUsage2ANDROID:TvkGetSwapchainGrallocUsage2ANDROID=nil;
{$endif}

    vkAcquireImageANDROID:TvkAcquireImageANDROID=nil;

    vkQueueSignalReleaseImageANDROID:TvkQueueSignalReleaseImageANDROID=nil;

    vkGetShaderInfoAMD:TvkGetShaderInfoAMD=nil;

    vkSetLocalDimmingAMD:TvkSetLocalDimmingAMD=nil;

    vkGetPhysicalDeviceCalibrateableTimeDomainsEXT:TvkGetPhysicalDeviceCalibrateableTimeDomainsEXT=nil;

    vkGetCalibratedTimestampsEXT:TvkGetCalibratedTimestampsEXT=nil;

    vkSetDebugUtilsObjectNameEXT:TvkSetDebugUtilsObjectNameEXT=nil;

    vkSetDebugUtilsObjectTagEXT:TvkSetDebugUtilsObjectTagEXT=nil;

    vkQueueBeginDebugUtilsLabelEXT:TvkQueueBeginDebugUtilsLabelEXT=nil;

    vkQueueEndDebugUtilsLabelEXT:TvkQueueEndDebugUtilsLabelEXT=nil;

    vkQueueInsertDebugUtilsLabelEXT:TvkQueueInsertDebugUtilsLabelEXT=nil;

    vkCmdBeginDebugUtilsLabelEXT:TvkCmdBeginDebugUtilsLabelEXT=nil;

    vkCmdEndDebugUtilsLabelEXT:TvkCmdEndDebugUtilsLabelEXT=nil;

    vkCmdInsertDebugUtilsLabelEXT:TvkCmdInsertDebugUtilsLabelEXT=nil;

    vkCreateDebugUtilsMessengerEXT:TvkCreateDebugUtilsMessengerEXT=nil;

    vkDestroyDebugUtilsMessengerEXT:TvkDestroyDebugUtilsMessengerEXT=nil;

    vkSubmitDebugUtilsMessageEXT:TvkSubmitDebugUtilsMessageEXT=nil;

    vkGetMemoryHostPointerPropertiesEXT:TvkGetMemoryHostPointerPropertiesEXT=nil;

    vkCmdWriteBufferMarkerAMD:TvkCmdWriteBufferMarkerAMD=nil;

    vkCreateRenderPass2:TvkCreateRenderPass2=nil;

    vkCreateRenderPass2KHR:TvkCreateRenderPass2KHR=nil;

    vkCmdBeginRenderPass2:TvkCmdBeginRenderPass2=nil;

    vkCmdBeginRenderPass2KHR:TvkCmdBeginRenderPass2KHR=nil;

    vkCmdNextSubpass2:TvkCmdNextSubpass2=nil;

    vkCmdNextSubpass2KHR:TvkCmdNextSubpass2KHR=nil;

    vkCmdEndRenderPass2:TvkCmdEndRenderPass2=nil;

    vkCmdEndRenderPass2KHR:TvkCmdEndRenderPass2KHR=nil;

    vkGetSemaphoreCounterValue:TvkGetSemaphoreCounterValue=nil;

    vkGetSemaphoreCounterValueKHR:TvkGetSemaphoreCounterValueKHR=nil;

    vkWaitSemaphores:TvkWaitSemaphores=nil;

    vkWaitSemaphoresKHR:TvkWaitSemaphoresKHR=nil;

    vkSignalSemaphore:TvkSignalSemaphore=nil;

    vkSignalSemaphoreKHR:TvkSignalSemaphoreKHR=nil;

{$ifdef Android}
    vkGetAndroidHardwareBufferPropertiesANDROID:TvkGetAndroidHardwareBufferPropertiesANDROID=nil;
{$endif}

{$ifdef Android}
    vkGetMemoryAndroidHardwareBufferANDROID:TvkGetMemoryAndroidHardwareBufferANDROID=nil;
{$endif}

    vkCmdDrawIndirectCount:TvkCmdDrawIndirectCount=nil;

    vkCmdDrawIndirectCountKHR:TvkCmdDrawIndirectCountKHR=nil;

    vkCmdDrawIndirectCountAMD:TvkCmdDrawIndirectCountAMD=nil;

    vkCmdDrawIndexedIndirectCount:TvkCmdDrawIndexedIndirectCount=nil;

    vkCmdDrawIndexedIndirectCountKHR:TvkCmdDrawIndexedIndirectCountKHR=nil;

    vkCmdDrawIndexedIndirectCountAMD:TvkCmdDrawIndexedIndirectCountAMD=nil;

    vkCmdSetCheckpointNV:TvkCmdSetCheckpointNV=nil;

    vkGetQueueCheckpointDataNV:TvkGetQueueCheckpointDataNV=nil;

    vkCmdBindTransformFeedbackBuffersEXT:TvkCmdBindTransformFeedbackBuffersEXT=nil;

    vkCmdBeginTransformFeedbackEXT:TvkCmdBeginTransformFeedbackEXT=nil;

    vkCmdEndTransformFeedbackEXT:TvkCmdEndTransformFeedbackEXT=nil;

    vkCmdBeginQueryIndexedEXT:TvkCmdBeginQueryIndexedEXT=nil;

    vkCmdEndQueryIndexedEXT:TvkCmdEndQueryIndexedEXT=nil;

    vkCmdDrawIndirectByteCountEXT:TvkCmdDrawIndirectByteCountEXT=nil;

    vkCmdSetExclusiveScissorNV:TvkCmdSetExclusiveScissorNV=nil;

    vkCmdSetExclusiveScissorEnableNV:TvkCmdSetExclusiveScissorEnableNV=nil;

    vkCmdBindShadingRateImageNV:TvkCmdBindShadingRateImageNV=nil;

    vkCmdSetViewportShadingRatePaletteNV:TvkCmdSetViewportShadingRatePaletteNV=nil;

    vkCmdSetCoarseSampleOrderNV:TvkCmdSetCoarseSampleOrderNV=nil;

    vkCmdDrawMeshTasksNV:TvkCmdDrawMeshTasksNV=nil;

    vkCmdDrawMeshTasksIndirectNV:TvkCmdDrawMeshTasksIndirectNV=nil;

    vkCmdDrawMeshTasksIndirectCountNV:TvkCmdDrawMeshTasksIndirectCountNV=nil;

    vkCmdDrawMeshTasksEXT:TvkCmdDrawMeshTasksEXT=nil;

    vkCmdDrawMeshTasksIndirectEXT:TvkCmdDrawMeshTasksIndirectEXT=nil;

    vkCmdDrawMeshTasksIndirectCountEXT:TvkCmdDrawMeshTasksIndirectCountEXT=nil;

    vkCompileDeferredNV:TvkCompileDeferredNV=nil;

    vkCreateAccelerationStructureNV:TvkCreateAccelerationStructureNV=nil;

    vkCmdBindInvocationMaskHUAWEI:TvkCmdBindInvocationMaskHUAWEI=nil;

    vkDestroyAccelerationStructureKHR:TvkDestroyAccelerationStructureKHR=nil;

    vkDestroyAccelerationStructureNV:TvkDestroyAccelerationStructureNV=nil;

    vkGetAccelerationStructureMemoryRequirementsNV:TvkGetAccelerationStructureMemoryRequirementsNV=nil;

    vkBindAccelerationStructureMemoryNV:TvkBindAccelerationStructureMemoryNV=nil;

    vkCmdCopyAccelerationStructureNV:TvkCmdCopyAccelerationStructureNV=nil;

    vkCmdCopyAccelerationStructureKHR:TvkCmdCopyAccelerationStructureKHR=nil;

    vkCopyAccelerationStructureKHR:TvkCopyAccelerationStructureKHR=nil;

    vkCmdCopyAccelerationStructureToMemoryKHR:TvkCmdCopyAccelerationStructureToMemoryKHR=nil;

    vkCopyAccelerationStructureToMemoryKHR:TvkCopyAccelerationStructureToMemoryKHR=nil;

    vkCmdCopyMemoryToAccelerationStructureKHR:TvkCmdCopyMemoryToAccelerationStructureKHR=nil;

    vkCopyMemoryToAccelerationStructureKHR:TvkCopyMemoryToAccelerationStructureKHR=nil;

    vkCmdWriteAccelerationStructuresPropertiesKHR:TvkCmdWriteAccelerationStructuresPropertiesKHR=nil;

    vkCmdWriteAccelerationStructuresPropertiesNV:TvkCmdWriteAccelerationStructuresPropertiesNV=nil;

    vkCmdBuildAccelerationStructureNV:TvkCmdBuildAccelerationStructureNV=nil;

    vkWriteAccelerationStructuresPropertiesKHR:TvkWriteAccelerationStructuresPropertiesKHR=nil;

    vkCmdTraceRaysKHR:TvkCmdTraceRaysKHR=nil;

    vkCmdTraceRaysNV:TvkCmdTraceRaysNV=nil;

    vkGetRayTracingShaderGroupHandlesKHR:TvkGetRayTracingShaderGroupHandlesKHR=nil;

    vkGetRayTracingShaderGroupHandlesNV:TvkGetRayTracingShaderGroupHandlesNV=nil;

    vkGetRayTracingCaptureReplayShaderGroupHandlesKHR:TvkGetRayTracingCaptureReplayShaderGroupHandlesKHR=nil;

    vkGetAccelerationStructureHandleNV:TvkGetAccelerationStructureHandleNV=nil;

    vkCreateRayTracingPipelinesNV:TvkCreateRayTracingPipelinesNV=nil;

    vkCreateRayTracingPipelinesKHR:TvkCreateRayTracingPipelinesKHR=nil;

    vkGetPhysicalDeviceCooperativeMatrixPropertiesNV:TvkGetPhysicalDeviceCooperativeMatrixPropertiesNV=nil;

    vkCmdTraceRaysIndirectKHR:TvkCmdTraceRaysIndirectKHR=nil;

    vkCmdTraceRaysIndirect2KHR:TvkCmdTraceRaysIndirect2KHR=nil;

    vkGetDeviceAccelerationStructureCompatibilityKHR:TvkGetDeviceAccelerationStructureCompatibilityKHR=nil;

    vkGetRayTracingShaderGroupStackSizeKHR:TvkGetRayTracingShaderGroupStackSizeKHR=nil;

    vkCmdSetRayTracingPipelineStackSizeKHR:TvkCmdSetRayTracingPipelineStackSizeKHR=nil;

    vkGetImageViewHandleNVX:TvkGetImageViewHandleNVX=nil;

    vkGetImageViewAddressNVX:TvkGetImageViewAddressNVX=nil;

    vkGetPhysicalDeviceSurfacePresentModes2EXT:TvkGetPhysicalDeviceSurfacePresentModes2EXT=nil;

    vkGetDeviceGroupSurfacePresentModes2EXT:TvkGetDeviceGroupSurfacePresentModes2EXT=nil;

    vkAcquireFullScreenExclusiveModeEXT:TvkAcquireFullScreenExclusiveModeEXT=nil;

    vkReleaseFullScreenExclusiveModeEXT:TvkReleaseFullScreenExclusiveModeEXT=nil;

    vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR:TvkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR=nil;

    vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR:TvkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR=nil;

    vkAcquireProfilingLockKHR:TvkAcquireProfilingLockKHR=nil;

    vkReleaseProfilingLockKHR:TvkReleaseProfilingLockKHR=nil;

    vkGetImageDrmFormatModifierPropertiesEXT:TvkGetImageDrmFormatModifierPropertiesEXT=nil;

    vkGetBufferOpaqueCaptureAddress:TvkGetBufferOpaqueCaptureAddress=nil;

    vkGetBufferOpaqueCaptureAddressKHR:TvkGetBufferOpaqueCaptureAddressKHR=nil;

    vkGetBufferDeviceAddress:TvkGetBufferDeviceAddress=nil;

    vkGetBufferDeviceAddressKHR:TvkGetBufferDeviceAddressKHR=nil;

    vkGetBufferDeviceAddressEXT:TvkGetBufferDeviceAddressEXT=nil;

    vkCreateHeadlessSurfaceEXT:TvkCreateHeadlessSurfaceEXT=nil;

    vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV:TvkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV=nil;

    vkInitializePerformanceApiINTEL:TvkInitializePerformanceApiINTEL=nil;

    vkUninitializePerformanceApiINTEL:TvkUninitializePerformanceApiINTEL=nil;

    vkCmdSetPerformanceMarkerINTEL:TvkCmdSetPerformanceMarkerINTEL=nil;

    vkCmdSetPerformanceStreamMarkerINTEL:TvkCmdSetPerformanceStreamMarkerINTEL=nil;

    vkCmdSetPerformanceOverrideINTEL:TvkCmdSetPerformanceOverrideINTEL=nil;

    vkAcquirePerformanceConfigurationINTEL:TvkAcquirePerformanceConfigurationINTEL=nil;

    vkReleasePerformanceConfigurationINTEL:TvkReleasePerformanceConfigurationINTEL=nil;

    vkQueueSetPerformanceConfigurationINTEL:TvkQueueSetPerformanceConfigurationINTEL=nil;

    vkGetPerformanceParameterINTEL:TvkGetPerformanceParameterINTEL=nil;

    vkGetDeviceMemoryOpaqueCaptureAddress:TvkGetDeviceMemoryOpaqueCaptureAddress=nil;

    vkGetDeviceMemoryOpaqueCaptureAddressKHR:TvkGetDeviceMemoryOpaqueCaptureAddressKHR=nil;

    vkGetPipelineExecutablePropertiesKHR:TvkGetPipelineExecutablePropertiesKHR=nil;

    vkGetPipelineExecutableStatisticsKHR:TvkGetPipelineExecutableStatisticsKHR=nil;

    vkGetPipelineExecutableInternalRepresentationsKHR:TvkGetPipelineExecutableInternalRepresentationsKHR=nil;

    vkCmdSetLineStippleEXT:TvkCmdSetLineStippleEXT=nil;

{$ifdef VulkanSC}
    vkGetFaultData:TvkGetFaultData=nil;
{$endif}

    vkGetPhysicalDeviceToolProperties:TvkGetPhysicalDeviceToolProperties=nil;

    vkGetPhysicalDeviceToolPropertiesEXT:TvkGetPhysicalDeviceToolPropertiesEXT=nil;

    vkCreateAccelerationStructureKHR:TvkCreateAccelerationStructureKHR=nil;

    vkCmdBuildAccelerationStructuresKHR:TvkCmdBuildAccelerationStructuresKHR=nil;

    vkCmdBuildAccelerationStructuresIndirectKHR:TvkCmdBuildAccelerationStructuresIndirectKHR=nil;

    vkBuildAccelerationStructuresKHR:TvkBuildAccelerationStructuresKHR=nil;

    vkGetAccelerationStructureDeviceAddressKHR:TvkGetAccelerationStructureDeviceAddressKHR=nil;

    vkCreateDeferredOperationKHR:TvkCreateDeferredOperationKHR=nil;

    vkDestroyDeferredOperationKHR:TvkDestroyDeferredOperationKHR=nil;

    vkGetDeferredOperationMaxConcurrencyKHR:TvkGetDeferredOperationMaxConcurrencyKHR=nil;

    vkGetDeferredOperationResultKHR:TvkGetDeferredOperationResultKHR=nil;

    vkDeferredOperationJoinKHR:TvkDeferredOperationJoinKHR=nil;

    vkGetPipelineIndirectMemoryRequirementsNV:TvkGetPipelineIndirectMemoryRequirementsNV=nil;

    vkGetPipelineIndirectDeviceAddressNV:TvkGetPipelineIndirectDeviceAddressNV=nil;

    vkCmdSetCullMode:TvkCmdSetCullMode=nil;

    vkCmdSetCullModeEXT:TvkCmdSetCullModeEXT=nil;

    vkCmdSetFrontFace:TvkCmdSetFrontFace=nil;

    vkCmdSetFrontFaceEXT:TvkCmdSetFrontFaceEXT=nil;

    vkCmdSetPrimitiveTopology:TvkCmdSetPrimitiveTopology=nil;

    vkCmdSetPrimitiveTopologyEXT:TvkCmdSetPrimitiveTopologyEXT=nil;

    vkCmdSetViewportWithCount:TvkCmdSetViewportWithCount=nil;

    vkCmdSetViewportWithCountEXT:TvkCmdSetViewportWithCountEXT=nil;

    vkCmdSetScissorWithCount:TvkCmdSetScissorWithCount=nil;

    vkCmdSetScissorWithCountEXT:TvkCmdSetScissorWithCountEXT=nil;

    vkCmdBindIndexBuffer2KHR:TvkCmdBindIndexBuffer2KHR=nil;

    vkCmdBindVertexBuffers2:TvkCmdBindVertexBuffers2=nil;

    vkCmdBindVertexBuffers2EXT:TvkCmdBindVertexBuffers2EXT=nil;

    vkCmdSetDepthTestEnable:TvkCmdSetDepthTestEnable=nil;

    vkCmdSetDepthTestEnableEXT:TvkCmdSetDepthTestEnableEXT=nil;

    vkCmdSetDepthWriteEnable:TvkCmdSetDepthWriteEnable=nil;

    vkCmdSetDepthWriteEnableEXT:TvkCmdSetDepthWriteEnableEXT=nil;

    vkCmdSetDepthCompareOp:TvkCmdSetDepthCompareOp=nil;

    vkCmdSetDepthCompareOpEXT:TvkCmdSetDepthCompareOpEXT=nil;

    vkCmdSetDepthBoundsTestEnable:TvkCmdSetDepthBoundsTestEnable=nil;

    vkCmdSetDepthBoundsTestEnableEXT:TvkCmdSetDepthBoundsTestEnableEXT=nil;

    vkCmdSetStencilTestEnable:TvkCmdSetStencilTestEnable=nil;

    vkCmdSetStencilTestEnableEXT:TvkCmdSetStencilTestEnableEXT=nil;

    vkCmdSetStencilOp:TvkCmdSetStencilOp=nil;

    vkCmdSetStencilOpEXT:TvkCmdSetStencilOpEXT=nil;

    vkCmdSetPatchControlPointsEXT:TvkCmdSetPatchControlPointsEXT=nil;

    vkCmdSetRasterizerDiscardEnable:TvkCmdSetRasterizerDiscardEnable=nil;

    vkCmdSetRasterizerDiscardEnableEXT:TvkCmdSetRasterizerDiscardEnableEXT=nil;

    vkCmdSetDepthBiasEnable:TvkCmdSetDepthBiasEnable=nil;

    vkCmdSetDepthBiasEnableEXT:TvkCmdSetDepthBiasEnableEXT=nil;

    vkCmdSetLogicOpEXT:TvkCmdSetLogicOpEXT=nil;

    vkCmdSetPrimitiveRestartEnable:TvkCmdSetPrimitiveRestartEnable=nil;

    vkCmdSetPrimitiveRestartEnableEXT:TvkCmdSetPrimitiveRestartEnableEXT=nil;

    vkCmdSetTessellationDomainOriginEXT:TvkCmdSetTessellationDomainOriginEXT=nil;

    vkCmdSetDepthClampEnableEXT:TvkCmdSetDepthClampEnableEXT=nil;

    vkCmdSetPolygonModeEXT:TvkCmdSetPolygonModeEXT=nil;

    vkCmdSetRasterizationSamplesEXT:TvkCmdSetRasterizationSamplesEXT=nil;

    vkCmdSetSampleMaskEXT:TvkCmdSetSampleMaskEXT=nil;

    vkCmdSetAlphaToCoverageEnableEXT:TvkCmdSetAlphaToCoverageEnableEXT=nil;

    vkCmdSetAlphaToOneEnableEXT:TvkCmdSetAlphaToOneEnableEXT=nil;

    vkCmdSetLogicOpEnableEXT:TvkCmdSetLogicOpEnableEXT=nil;

    vkCmdSetColorBlendEnableEXT:TvkCmdSetColorBlendEnableEXT=nil;

    vkCmdSetColorBlendEquationEXT:TvkCmdSetColorBlendEquationEXT=nil;

    vkCmdSetColorWriteMaskEXT:TvkCmdSetColorWriteMaskEXT=nil;

    vkCmdSetRasterizationStreamEXT:TvkCmdSetRasterizationStreamEXT=nil;

    vkCmdSetConservativeRasterizationModeEXT:TvkCmdSetConservativeRasterizationModeEXT=nil;

    vkCmdSetExtraPrimitiveOverestimationSizeEXT:TvkCmdSetExtraPrimitiveOverestimationSizeEXT=nil;

    vkCmdSetDepthClipEnableEXT:TvkCmdSetDepthClipEnableEXT=nil;

    vkCmdSetSampleLocationsEnableEXT:TvkCmdSetSampleLocationsEnableEXT=nil;

    vkCmdSetColorBlendAdvancedEXT:TvkCmdSetColorBlendAdvancedEXT=nil;

    vkCmdSetProvokingVertexModeEXT:TvkCmdSetProvokingVertexModeEXT=nil;

    vkCmdSetLineRasterizationModeEXT:TvkCmdSetLineRasterizationModeEXT=nil;

    vkCmdSetLineStippleEnableEXT:TvkCmdSetLineStippleEnableEXT=nil;

    vkCmdSetDepthClipNegativeOneToOneEXT:TvkCmdSetDepthClipNegativeOneToOneEXT=nil;

    vkCmdSetViewportWScalingEnableNV:TvkCmdSetViewportWScalingEnableNV=nil;

    vkCmdSetViewportSwizzleNV:TvkCmdSetViewportSwizzleNV=nil;

    vkCmdSetCoverageToColorEnableNV:TvkCmdSetCoverageToColorEnableNV=nil;

    vkCmdSetCoverageToColorLocationNV:TvkCmdSetCoverageToColorLocationNV=nil;

    vkCmdSetCoverageModulationModeNV:TvkCmdSetCoverageModulationModeNV=nil;

    vkCmdSetCoverageModulationTableEnableNV:TvkCmdSetCoverageModulationTableEnableNV=nil;

    vkCmdSetCoverageModulationTableNV:TvkCmdSetCoverageModulationTableNV=nil;

    vkCmdSetShadingRateImageEnableNV:TvkCmdSetShadingRateImageEnableNV=nil;

    vkCmdSetCoverageReductionModeNV:TvkCmdSetCoverageReductionModeNV=nil;

    vkCmdSetRepresentativeFragmentTestEnableNV:TvkCmdSetRepresentativeFragmentTestEnableNV=nil;

    vkCreatePrivateDataSlot:TvkCreatePrivateDataSlot=nil;

    vkCreatePrivateDataSlotEXT:TvkCreatePrivateDataSlotEXT=nil;

    vkDestroyPrivateDataSlot:TvkDestroyPrivateDataSlot=nil;

    vkDestroyPrivateDataSlotEXT:TvkDestroyPrivateDataSlotEXT=nil;

    vkSetPrivateData:TvkSetPrivateData=nil;

    vkSetPrivateDataEXT:TvkSetPrivateDataEXT=nil;

    vkGetPrivateData:TvkGetPrivateData=nil;

    vkGetPrivateDataEXT:TvkGetPrivateDataEXT=nil;

    vkCmdCopyBuffer2:TvkCmdCopyBuffer2=nil;

    vkCmdCopyBuffer2KHR:TvkCmdCopyBuffer2KHR=nil;

    vkCmdCopyImage2:TvkCmdCopyImage2=nil;

    vkCmdCopyImage2KHR:TvkCmdCopyImage2KHR=nil;

    vkCmdBlitImage2:TvkCmdBlitImage2=nil;

    vkCmdBlitImage2KHR:TvkCmdBlitImage2KHR=nil;

    vkCmdCopyBufferToImage2:TvkCmdCopyBufferToImage2=nil;

    vkCmdCopyBufferToImage2KHR:TvkCmdCopyBufferToImage2KHR=nil;

    vkCmdCopyImageToBuffer2:TvkCmdCopyImageToBuffer2=nil;

    vkCmdCopyImageToBuffer2KHR:TvkCmdCopyImageToBuffer2KHR=nil;

    vkCmdResolveImage2:TvkCmdResolveImage2=nil;

    vkCmdResolveImage2KHR:TvkCmdResolveImage2KHR=nil;

    vkCmdRefreshObjectsKHR:TvkCmdRefreshObjectsKHR=nil;

    vkGetPhysicalDeviceRefreshableObjectTypesKHR:TvkGetPhysicalDeviceRefreshableObjectTypesKHR=nil;

    vkCmdSetFragmentShadingRateKHR:TvkCmdSetFragmentShadingRateKHR=nil;

    vkGetPhysicalDeviceFragmentShadingRatesKHR:TvkGetPhysicalDeviceFragmentShadingRatesKHR=nil;

    vkCmdSetFragmentShadingRateEnumNV:TvkCmdSetFragmentShadingRateEnumNV=nil;

    vkGetAccelerationStructureBuildSizesKHR:TvkGetAccelerationStructureBuildSizesKHR=nil;

    vkCmdSetVertexInputEXT:TvkCmdSetVertexInputEXT=nil;

    vkCmdSetColorWriteEnableEXT:TvkCmdSetColorWriteEnableEXT=nil;

    vkCmdSetEvent2:TvkCmdSetEvent2=nil;

    vkCmdSetEvent2KHR:TvkCmdSetEvent2KHR=nil;

    vkCmdResetEvent2:TvkCmdResetEvent2=nil;

    vkCmdResetEvent2KHR:TvkCmdResetEvent2KHR=nil;

    vkCmdWaitEvents2:TvkCmdWaitEvents2=nil;

    vkCmdWaitEvents2KHR:TvkCmdWaitEvents2KHR=nil;

    vkCmdPipelineBarrier2:TvkCmdPipelineBarrier2=nil;

    vkCmdPipelineBarrier2KHR:TvkCmdPipelineBarrier2KHR=nil;

    vkQueueSubmit2:TvkQueueSubmit2=nil;

    vkQueueSubmit2KHR:TvkQueueSubmit2KHR=nil;

    vkCmdWriteTimestamp2:TvkCmdWriteTimestamp2=nil;

    vkCmdWriteTimestamp2KHR:TvkCmdWriteTimestamp2KHR=nil;

    vkCmdWriteBufferMarker2AMD:TvkCmdWriteBufferMarker2AMD=nil;

    vkGetQueueCheckpointData2NV:TvkGetQueueCheckpointData2NV=nil;

    vkCopyMemoryToImageEXT:TvkCopyMemoryToImageEXT=nil;

    vkCopyImageToMemoryEXT:TvkCopyImageToMemoryEXT=nil;

    vkCopyImageToImageEXT:TvkCopyImageToImageEXT=nil;

    vkTransitionImageLayoutEXT:TvkTransitionImageLayoutEXT=nil;

{$ifdef VulkanSC}
    vkGetCommandPoolMemoryConsumption:TvkGetCommandPoolMemoryConsumption=nil;
{$endif}

{$ifdef VkVideo}
    vkGetPhysicalDeviceVideoCapabilitiesKHR:TvkGetPhysicalDeviceVideoCapabilitiesKHR=nil;
{$endif}

{$ifdef VkVideo}
    vkGetPhysicalDeviceVideoFormatPropertiesKHR:TvkGetPhysicalDeviceVideoFormatPropertiesKHR=nil;
{$endif}

{$ifdef VkVideo}
    vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR:TvkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR=nil;
{$endif}

{$ifdef VkVideo}
    vkCreateVideoSessionKHR:TvkCreateVideoSessionKHR=nil;
{$endif}

{$ifdef VkVideo}
    vkDestroyVideoSessionKHR:TvkDestroyVideoSessionKHR=nil;
{$endif}

{$ifdef VkVideo}
    vkCreateVideoSessionParametersKHR:TvkCreateVideoSessionParametersKHR=nil;
{$endif}

{$ifdef VkVideo}
    vkUpdateVideoSessionParametersKHR:TvkUpdateVideoSessionParametersKHR=nil;
{$endif}

{$ifdef VkVideo}
    vkGetEncodedVideoSessionParametersKHR:TvkGetEncodedVideoSessionParametersKHR=nil;
{$endif}

{$ifdef VkVideo}
    vkDestroyVideoSessionParametersKHR:TvkDestroyVideoSessionParametersKHR=nil;
{$endif}

{$ifdef VkVideo}
    vkGetVideoSessionMemoryRequirementsKHR:TvkGetVideoSessionMemoryRequirementsKHR=nil;
{$endif}

{$ifdef VkVideo}
    vkBindVideoSessionMemoryKHR:TvkBindVideoSessionMemoryKHR=nil;
{$endif}

{$ifdef VkVideo}
    vkCmdDecodeVideoKHR:TvkCmdDecodeVideoKHR=nil;
{$endif}

{$ifdef VkVideo}
    vkCmdBeginVideoCodingKHR:TvkCmdBeginVideoCodingKHR=nil;
{$endif}

{$ifdef VkVideo}
    vkCmdControlVideoCodingKHR:TvkCmdControlVideoCodingKHR=nil;
{$endif}

{$ifdef VkVideo}
    vkCmdEndVideoCodingKHR:TvkCmdEndVideoCodingKHR=nil;
{$endif}

{$ifdef VkVideo}
    vkCmdEncodeVideoKHR:TvkCmdEncodeVideoKHR=nil;
{$endif}

    vkCmdDecompressMemoryNV:TvkCmdDecompressMemoryNV=nil;

    vkCmdDecompressMemoryIndirectCountNV:TvkCmdDecompressMemoryIndirectCountNV=nil;

    vkCreateCuModuleNVX:TvkCreateCuModuleNVX=nil;

    vkCreateCuFunctionNVX:TvkCreateCuFunctionNVX=nil;

    vkDestroyCuModuleNVX:TvkDestroyCuModuleNVX=nil;

    vkDestroyCuFunctionNVX:TvkDestroyCuFunctionNVX=nil;

    vkCmdCuLaunchKernelNVX:TvkCmdCuLaunchKernelNVX=nil;

    vkGetDescriptorSetLayoutSizeEXT:TvkGetDescriptorSetLayoutSizeEXT=nil;

    vkGetDescriptorSetLayoutBindingOffsetEXT:TvkGetDescriptorSetLayoutBindingOffsetEXT=nil;

    vkGetDescriptorEXT:TvkGetDescriptorEXT=nil;

    vkCmdBindDescriptorBuffersEXT:TvkCmdBindDescriptorBuffersEXT=nil;

    vkCmdSetDescriptorBufferOffsetsEXT:TvkCmdSetDescriptorBufferOffsetsEXT=nil;

    vkCmdBindDescriptorBufferEmbeddedSamplersEXT:TvkCmdBindDescriptorBufferEmbeddedSamplersEXT=nil;

    vkGetBufferOpaqueCaptureDescriptorDataEXT:TvkGetBufferOpaqueCaptureDescriptorDataEXT=nil;

    vkGetImageOpaqueCaptureDescriptorDataEXT:TvkGetImageOpaqueCaptureDescriptorDataEXT=nil;

    vkGetImageViewOpaqueCaptureDescriptorDataEXT:TvkGetImageViewOpaqueCaptureDescriptorDataEXT=nil;

    vkGetSamplerOpaqueCaptureDescriptorDataEXT:TvkGetSamplerOpaqueCaptureDescriptorDataEXT=nil;

    vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT:TvkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT=nil;

    vkSetDeviceMemoryPriorityEXT:TvkSetDeviceMemoryPriorityEXT=nil;

    vkAcquireDrmDisplayEXT:TvkAcquireDrmDisplayEXT=nil;

    vkGetDrmDisplayEXT:TvkGetDrmDisplayEXT=nil;

    vkWaitForPresentKHR:TvkWaitForPresentKHR=nil;

{$ifdef Fuchsia}
    vkCreateBufferCollectionFUCHSIA:TvkCreateBufferCollectionFUCHSIA=nil;
{$endif}

{$ifdef Fuchsia}
    vkSetBufferCollectionBufferConstraintsFUCHSIA:TvkSetBufferCollectionBufferConstraintsFUCHSIA=nil;
{$endif}

{$ifdef Fuchsia}
    vkSetBufferCollectionImageConstraintsFUCHSIA:TvkSetBufferCollectionImageConstraintsFUCHSIA=nil;
{$endif}

{$ifdef Fuchsia}
    vkDestroyBufferCollectionFUCHSIA:TvkDestroyBufferCollectionFUCHSIA=nil;
{$endif}

{$ifdef Fuchsia}
    vkGetBufferCollectionPropertiesFUCHSIA:TvkGetBufferCollectionPropertiesFUCHSIA=nil;
{$endif}

    vkCmdBeginRendering:TvkCmdBeginRendering=nil;

    vkCmdBeginRenderingKHR:TvkCmdBeginRenderingKHR=nil;

    vkCmdEndRendering:TvkCmdEndRendering=nil;

    vkCmdEndRenderingKHR:TvkCmdEndRenderingKHR=nil;

    vkGetDescriptorSetLayoutHostMappingInfoVALVE:TvkGetDescriptorSetLayoutHostMappingInfoVALVE=nil;

    vkGetDescriptorSetHostMappingVALVE:TvkGetDescriptorSetHostMappingVALVE=nil;

    vkCreateMicromapEXT:TvkCreateMicromapEXT=nil;

    vkCmdBuildMicromapsEXT:TvkCmdBuildMicromapsEXT=nil;

    vkBuildMicromapsEXT:TvkBuildMicromapsEXT=nil;

    vkDestroyMicromapEXT:TvkDestroyMicromapEXT=nil;

    vkCmdCopyMicromapEXT:TvkCmdCopyMicromapEXT=nil;

    vkCopyMicromapEXT:TvkCopyMicromapEXT=nil;

    vkCmdCopyMicromapToMemoryEXT:TvkCmdCopyMicromapToMemoryEXT=nil;

    vkCopyMicromapToMemoryEXT:TvkCopyMicromapToMemoryEXT=nil;

    vkCmdCopyMemoryToMicromapEXT:TvkCmdCopyMemoryToMicromapEXT=nil;

    vkCopyMemoryToMicromapEXT:TvkCopyMemoryToMicromapEXT=nil;

    vkCmdWriteMicromapsPropertiesEXT:TvkCmdWriteMicromapsPropertiesEXT=nil;

    vkWriteMicromapsPropertiesEXT:TvkWriteMicromapsPropertiesEXT=nil;

    vkGetDeviceMicromapCompatibilityEXT:TvkGetDeviceMicromapCompatibilityEXT=nil;

    vkGetMicromapBuildSizesEXT:TvkGetMicromapBuildSizesEXT=nil;

    vkGetShaderModuleIdentifierEXT:TvkGetShaderModuleIdentifierEXT=nil;

    vkGetShaderModuleCreateInfoIdentifierEXT:TvkGetShaderModuleCreateInfoIdentifierEXT=nil;

    vkGetImageSubresourceLayout2KHR:TvkGetImageSubresourceLayout2KHR=nil;

    vkGetImageSubresourceLayout2EXT:TvkGetImageSubresourceLayout2EXT=nil;

    vkGetPipelinePropertiesEXT:TvkGetPipelinePropertiesEXT=nil;

    vkExportMetalObjectsEXT:TvkExportMetalObjectsEXT=nil;

    vkGetFramebufferTilePropertiesQCOM:TvkGetFramebufferTilePropertiesQCOM=nil;

    vkGetDynamicRenderingTilePropertiesQCOM:TvkGetDynamicRenderingTilePropertiesQCOM=nil;

    vkGetPhysicalDeviceOpticalFlowImageFormatsNV:TvkGetPhysicalDeviceOpticalFlowImageFormatsNV=nil;

    vkCreateOpticalFlowSessionNV:TvkCreateOpticalFlowSessionNV=nil;

    vkDestroyOpticalFlowSessionNV:TvkDestroyOpticalFlowSessionNV=nil;

    vkBindOpticalFlowSessionImageNV:TvkBindOpticalFlowSessionImageNV=nil;

    vkCmdOpticalFlowExecuteNV:TvkCmdOpticalFlowExecuteNV=nil;

    vkGetDeviceFaultInfoEXT:TvkGetDeviceFaultInfoEXT=nil;

    vkCmdSetDepthBias2EXT:TvkCmdSetDepthBias2EXT=nil;

    vkReleaseSwapchainImagesEXT:TvkReleaseSwapchainImagesEXT=nil;

    vkGetDeviceImageSubresourceLayoutKHR:TvkGetDeviceImageSubresourceLayoutKHR=nil;

    vkMapMemory2KHR:TvkMapMemory2KHR=nil;

    vkUnmapMemory2KHR:TvkUnmapMemory2KHR=nil;

    vkCreateShadersEXT:TvkCreateShadersEXT=nil;

    vkDestroyShaderEXT:TvkDestroyShaderEXT=nil;

    vkGetShaderBinaryDataEXT:TvkGetShaderBinaryDataEXT=nil;

    vkCmdBindShadersEXT:TvkCmdBindShadersEXT=nil;

{$ifdef QNX}
    vkGetScreenBufferPropertiesQNX:TvkGetScreenBufferPropertiesQNX=nil;
{$endif}

    vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR:TvkGetPhysicalDeviceCooperativeMatrixPropertiesKHR=nil;

    vkGetExecutionGraphPipelineScratchSizeAMDX:TvkGetExecutionGraphPipelineScratchSizeAMDX=nil;

    vkGetExecutionGraphPipelineNodeIndexAMDX:TvkGetExecutionGraphPipelineNodeIndexAMDX=nil;

    vkCreateExecutionGraphPipelinesAMDX:TvkCreateExecutionGraphPipelinesAMDX=nil;

    vkCmdInitializeGraphScratchMemoryAMDX:TvkCmdInitializeGraphScratchMemoryAMDX=nil;

    vkCmdDispatchGraphAMDX:TvkCmdDispatchGraphAMDX=nil;

    vkCmdDispatchGraphIndirectAMDX:TvkCmdDispatchGraphIndirectAMDX=nil;

    vkCmdDispatchGraphIndirectCountAMDX:TvkCmdDispatchGraphIndirectCountAMDX=nil;

    vkSetLatencySleepModeNV:TvkSetLatencySleepModeNV=nil;

    vkLatencySleepNV:TvkLatencySleepNV=nil;

    vkSetLatencyMarkerNV:TvkSetLatencyMarkerNV=nil;

    vkGetLatencyTimingsNV:TvkGetLatencyTimingsNV=nil;

    vkQueueNotifyOutOfBandNV:TvkQueueNotifyOutOfBandNV=nil;


function VK_MAKE_VERSION(const VersionMajor,VersionMinor,VersionPatch:longint):longint; {$ifdef CAN_INLINE}inline;{$endif}
function VK_VERSION_MAJOR(const Version:longint):longint; {$ifdef CAN_INLINE}inline;{$endif}
function VK_VERSION_MINOR(const Version:longint):longint; {$ifdef CAN_INLINE}inline;{$endif}
function VK_VERSION_PATCH(const Version:longint):longint; {$ifdef CAN_INLINE}inline;{$endif}

function VK_MAKE_API_VERSION(const VersionVariant,VersionMajor,VersionMinor,VersionPatch:longint):longint; {$ifdef CAN_INLINE}inline;{$endif}
function VK_API_VERSION_VARIANT(const Version:longint):longint; {$ifdef CAN_INLINE}inline;{$endif}
function VK_API_VERSION_MAJOR(const Version:longint):longint; {$ifdef CAN_INLINE}inline;{$endif}
function VK_API_VERSION_MINOR(const Version:longint):longint; {$ifdef CAN_INLINE}inline;{$endif}
function VK_API_VERSION_PATCH(const Version:longint):longint; {$ifdef CAN_INLINE}inline;{$endif}

function vkLoadLibrary(const LibraryName:string):pointer; {$ifdef CAN_INLINE}inline;{$endif}
function vkFreeLibrary(LibraryHandle:pointer):boolean; {$ifdef CAN_INLINE}inline;{$endif}
function vkGetProcAddress(LibraryHandle:pointer;const ProcName:string):pointer; {$ifdef CAN_INLINE}inline;{$endif}

function vkVoidFunctionToPointer(const VoidFunction:TPFN_vkVoidFunction):pointer; {$ifdef CAN_INLINE}inline;{$endif}

function LoadVulkanLibrary(const LibraryName:string=VK_DEFAULT_LIB_NAME):boolean;
function LoadVulkanGlobalCommands:boolean;
function LoadVulkanInstanceCommands(const GetInstanceProcAddr:TvkGetInstanceProcAddr;const Instance:TVkInstance;out InstanceCommands:TVulkanCommands):boolean;
function LoadVulkanDeviceCommands(const GetDeviceProcAddr:TvkGetDeviceProcAddr;const Device:TVkDevice;out DeviceCommands:TVulkanCommands):boolean;

implementation

function VK_MAKE_VERSION(const VersionMajor,VersionMinor,VersionPatch:longint):longint; {$ifdef CAN_INLINE}inline;{$endif}
begin
 result:=(VersionMajor shl 22) or (VersionMinor shl 12) or (VersionPatch shl 0);
end;

function VK_VERSION_MAJOR(const Version:longint):longint; {$ifdef CAN_INLINE}inline;{$endif}
begin
 result:=Version shr 22;
end;

function VK_VERSION_MINOR(const Version:longint):longint; {$ifdef CAN_INLINE}inline;{$endif}
begin
 result:=(Version shr 12) and $3ff;
end;

function VK_VERSION_PATCH(const Version:longint):longint; {$ifdef CAN_INLINE}inline;{$endif}
begin
 result:=(Version shr 0) and $fff;
end;

function VK_MAKE_API_VERSION(const VersionVariant,VersionMajor,VersionMinor,VersionPatch:longint):longint; {$ifdef CAN_INLINE}inline;{$endif}
begin
 result:=(VersionVariant shl 29) or (VersionMajor shl 22) or (VersionMinor shl 12) or (VersionPatch shl 0);
end;

function VK_API_VERSION_VARIANT(const Version:longint):longint; {$ifdef CAN_INLINE}inline;{$endif}
begin
 result:=Version shr 29;
end;

function VK_API_VERSION_MAJOR(const Version:longint):longint; {$ifdef CAN_INLINE}inline;{$endif}
begin
 result:=(Version shr 22) and $7f;
end;

function VK_API_VERSION_MINOR(const Version:longint):longint; {$ifdef CAN_INLINE}inline;{$endif}
begin
 result:=(Version shr 12) and $3ff;
end;

function VK_API_VERSION_PATCH(const Version:longint):longint; {$ifdef CAN_INLINE}inline;{$endif}
begin
 result:=(Version shr 0) and $fff;
end;

function vkLoadLibrary(const LibraryName:string):pointer; {$ifdef CAN_INLINE}inline;{$endif}
begin
{$ifdef Windows}
 result:={%H-}pointer(LoadLibrary(PChar(LibraryName)));
{$else}
{$ifdef Unix}
 result:=dlopen(PChar(LibraryName),RTLD_NOW or RTLD_LAZY);
{$else}
 result:=nil;
{$endif}
{$endif}
end;

function vkFreeLibrary(LibraryHandle:pointer):boolean; {$ifdef CAN_INLINE}inline;{$endif}
begin
 result:=assigned(LibraryHandle);
 if result then begin
{$ifdef Windows}
  result:=FreeLibrary({%H-}HMODULE(LibraryHandle));
{$else}
{$ifdef Unix}
  result:=dlclose(LibraryHandle)=0;
{$else}
  result:=false;
{$endif}
{$endif}
 end;
end;

function vkGetProcAddress(LibraryHandle:pointer;const ProcName:string):pointer; {$ifdef CAN_INLINE}inline;{$endif}
begin
{$ifdef Windows}
 result:=GetProcAddress({%H-}HMODULE(LibraryHandle),PChar(ProcName));
{$else}
{$ifdef Unix}
 result:=dlsym(LibraryHandle,PChar(ProcName));
{$else}
 result:=nil;
{$endif}
{$endif}
end;

function vkVoidFunctionToPointer(const VoidFunction:TPFN_vkVoidFunction):pointer; {$ifdef CAN_INLINE}inline;{$endif}
begin
 result:=addr(VoidFunction);
end;

function LoadVulkanLibrary(const LibraryName:string=VK_DEFAULT_LIB_NAME):boolean;
begin
 LibVulkan:=vkLoadLibrary(LibraryName);
 result:=assigned(LibVulkan);
 if result then begin
  vkGetInstanceProcAddr:=vkGetProcAddress(LibVulkan,'vkGetInstanceProcAddr');
  @vk.fCommands.GetInstanceProcAddr:=addr(vkGetInstanceProcAddr);
  result:=assigned(vkGetInstanceProcAddr);
  if result then begin
   vkEnumerateInstanceExtensionProperties:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(VK_NULL_INSTANCE,PVkChar('vkEnumerateInstanceExtensionProperties')));
   @vk.fCommands.EnumerateInstanceExtensionProperties:=addr(vkEnumerateInstanceExtensionProperties);
   vkEnumerateInstanceLayerProperties:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(VK_NULL_INSTANCE,PVkChar('vkEnumerateInstanceLayerProperties')));
   @vk.fCommands.EnumerateInstanceLayerProperties:=addr(vkEnumerateInstanceLayerProperties);
   vkCreateInstance:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(VK_NULL_INSTANCE,PVkChar('vkCreateInstance')));
   @vk.fCommands.CreateInstance:=addr(vkCreateInstance);
   result:=assigned(vkEnumerateInstanceExtensionProperties) and
           assigned(vkEnumerateInstanceLayerProperties) and 
           assigned(vkCreateInstance);
  end;
 end;
end;

function LoadVulkanGlobalCommands:boolean;
begin
 result:=assigned(vkGetInstanceProcAddr);
 if result then begin
  if not assigned(vkCreateInstance) then begin
   @vkCreateInstance:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateInstance'));
   @vk.fCommands.CreateInstance:=addr(vkCreateInstance);
  end;
  if not assigned(vkDestroyInstance) then begin
   @vkDestroyInstance:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkDestroyInstance'));
   @vk.fCommands.DestroyInstance:=addr(vkDestroyInstance);
  end;
  if not assigned(vkEnumeratePhysicalDevices) then begin
   @vkEnumeratePhysicalDevices:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkEnumeratePhysicalDevices'));
   @vk.fCommands.EnumeratePhysicalDevices:=addr(vkEnumeratePhysicalDevices);
  end;
  if not assigned(vkGetDeviceProcAddr) then begin
   @vkGetDeviceProcAddr:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetDeviceProcAddr'));
   @vk.fCommands.GetDeviceProcAddr:=addr(vkGetDeviceProcAddr);
  end;
  if not assigned(vkGetInstanceProcAddr) then begin
   @vkGetInstanceProcAddr:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetInstanceProcAddr'));
   @vk.fCommands.GetInstanceProcAddr:=addr(vkGetInstanceProcAddr);
  end;
  if not assigned(vkGetPhysicalDeviceProperties) then begin
   @vkGetPhysicalDeviceProperties:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceProperties'));
   @vk.fCommands.GetPhysicalDeviceProperties:=addr(vkGetPhysicalDeviceProperties);
  end;
  if not assigned(vkGetPhysicalDeviceQueueFamilyProperties) then begin
   @vkGetPhysicalDeviceQueueFamilyProperties:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceQueueFamilyProperties'));
   @vk.fCommands.GetPhysicalDeviceQueueFamilyProperties:=addr(vkGetPhysicalDeviceQueueFamilyProperties);
  end;
  if not assigned(vkGetPhysicalDeviceMemoryProperties) then begin
   @vkGetPhysicalDeviceMemoryProperties:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceMemoryProperties'));
   @vk.fCommands.GetPhysicalDeviceMemoryProperties:=addr(vkGetPhysicalDeviceMemoryProperties);
  end;
  if not assigned(vkGetPhysicalDeviceFeatures) then begin
   @vkGetPhysicalDeviceFeatures:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceFeatures'));
   @vk.fCommands.GetPhysicalDeviceFeatures:=addr(vkGetPhysicalDeviceFeatures);
  end;
  if not assigned(vkGetPhysicalDeviceFormatProperties) then begin
   @vkGetPhysicalDeviceFormatProperties:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceFormatProperties'));
   @vk.fCommands.GetPhysicalDeviceFormatProperties:=addr(vkGetPhysicalDeviceFormatProperties);
  end;
  if not assigned(vkGetPhysicalDeviceImageFormatProperties) then begin
   @vkGetPhysicalDeviceImageFormatProperties:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceImageFormatProperties'));
   @vk.fCommands.GetPhysicalDeviceImageFormatProperties:=addr(vkGetPhysicalDeviceImageFormatProperties);
  end;
  if not assigned(vkCreateDevice) then begin
   @vkCreateDevice:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateDevice'));
   @vk.fCommands.CreateDevice:=addr(vkCreateDevice);
  end;
  if not assigned(vkDestroyDevice) then begin
   @vkDestroyDevice:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkDestroyDevice'));
   @vk.fCommands.DestroyDevice:=addr(vkDestroyDevice);
  end;
  if not assigned(vkEnumerateInstanceVersion) then begin
   @vkEnumerateInstanceVersion:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkEnumerateInstanceVersion'));
   @vk.fCommands.EnumerateInstanceVersion:=addr(vkEnumerateInstanceVersion);
  end;
  if not assigned(vkEnumerateInstanceLayerProperties) then begin
   @vkEnumerateInstanceLayerProperties:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkEnumerateInstanceLayerProperties'));
   @vk.fCommands.EnumerateInstanceLayerProperties:=addr(vkEnumerateInstanceLayerProperties);
  end;
  if not assigned(vkEnumerateInstanceExtensionProperties) then begin
   @vkEnumerateInstanceExtensionProperties:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkEnumerateInstanceExtensionProperties'));
   @vk.fCommands.EnumerateInstanceExtensionProperties:=addr(vkEnumerateInstanceExtensionProperties);
  end;
  if not assigned(vkEnumerateDeviceLayerProperties) then begin
   @vkEnumerateDeviceLayerProperties:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkEnumerateDeviceLayerProperties'));
   @vk.fCommands.EnumerateDeviceLayerProperties:=addr(vkEnumerateDeviceLayerProperties);
  end;
  if not assigned(vkEnumerateDeviceExtensionProperties) then begin
   @vkEnumerateDeviceExtensionProperties:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkEnumerateDeviceExtensionProperties'));
   @vk.fCommands.EnumerateDeviceExtensionProperties:=addr(vkEnumerateDeviceExtensionProperties);
  end;
  if not assigned(vkGetDeviceQueue) then begin
   @vkGetDeviceQueue:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetDeviceQueue'));
   @vk.fCommands.GetDeviceQueue:=addr(vkGetDeviceQueue);
  end;
  if not assigned(vkQueueSubmit) then begin
   @vkQueueSubmit:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkQueueSubmit'));
   @vk.fCommands.QueueSubmit:=addr(vkQueueSubmit);
  end;
  if not assigned(vkQueueWaitIdle) then begin
   @vkQueueWaitIdle:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkQueueWaitIdle'));
   @vk.fCommands.QueueWaitIdle:=addr(vkQueueWaitIdle);
  end;
  if not assigned(vkDeviceWaitIdle) then begin
   @vkDeviceWaitIdle:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkDeviceWaitIdle'));
   @vk.fCommands.DeviceWaitIdle:=addr(vkDeviceWaitIdle);
  end;
  if not assigned(vkAllocateMemory) then begin
   @vkAllocateMemory:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkAllocateMemory'));
   @vk.fCommands.AllocateMemory:=addr(vkAllocateMemory);
  end;
  if not assigned(vkFreeMemory) then begin
   @vkFreeMemory:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkFreeMemory'));
   @vk.fCommands.FreeMemory:=addr(vkFreeMemory);
  end;
  if not assigned(vkMapMemory) then begin
   @vkMapMemory:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkMapMemory'));
   @vk.fCommands.MapMemory:=addr(vkMapMemory);
  end;
  if not assigned(vkUnmapMemory) then begin
   @vkUnmapMemory:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkUnmapMemory'));
   @vk.fCommands.UnmapMemory:=addr(vkUnmapMemory);
  end;
  if not assigned(vkFlushMappedMemoryRanges) then begin
   @vkFlushMappedMemoryRanges:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkFlushMappedMemoryRanges'));
   @vk.fCommands.FlushMappedMemoryRanges:=addr(vkFlushMappedMemoryRanges);
  end;
  if not assigned(vkInvalidateMappedMemoryRanges) then begin
   @vkInvalidateMappedMemoryRanges:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkInvalidateMappedMemoryRanges'));
   @vk.fCommands.InvalidateMappedMemoryRanges:=addr(vkInvalidateMappedMemoryRanges);
  end;
  if not assigned(vkGetDeviceMemoryCommitment) then begin
   @vkGetDeviceMemoryCommitment:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetDeviceMemoryCommitment'));
   @vk.fCommands.GetDeviceMemoryCommitment:=addr(vkGetDeviceMemoryCommitment);
  end;
  if not assigned(vkGetBufferMemoryRequirements) then begin
   @vkGetBufferMemoryRequirements:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetBufferMemoryRequirements'));
   @vk.fCommands.GetBufferMemoryRequirements:=addr(vkGetBufferMemoryRequirements);
  end;
  if not assigned(vkBindBufferMemory) then begin
   @vkBindBufferMemory:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkBindBufferMemory'));
   @vk.fCommands.BindBufferMemory:=addr(vkBindBufferMemory);
  end;
  if not assigned(vkGetImageMemoryRequirements) then begin
   @vkGetImageMemoryRequirements:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetImageMemoryRequirements'));
   @vk.fCommands.GetImageMemoryRequirements:=addr(vkGetImageMemoryRequirements);
  end;
  if not assigned(vkBindImageMemory) then begin
   @vkBindImageMemory:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkBindImageMemory'));
   @vk.fCommands.BindImageMemory:=addr(vkBindImageMemory);
  end;
  if not assigned(vkGetImageSparseMemoryRequirements) then begin
   @vkGetImageSparseMemoryRequirements:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetImageSparseMemoryRequirements'));
   @vk.fCommands.GetImageSparseMemoryRequirements:=addr(vkGetImageSparseMemoryRequirements);
  end;
  if not assigned(vkGetPhysicalDeviceSparseImageFormatProperties) then begin
   @vkGetPhysicalDeviceSparseImageFormatProperties:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceSparseImageFormatProperties'));
   @vk.fCommands.GetPhysicalDeviceSparseImageFormatProperties:=addr(vkGetPhysicalDeviceSparseImageFormatProperties);
  end;
  if not assigned(vkQueueBindSparse) then begin
   @vkQueueBindSparse:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkQueueBindSparse'));
   @vk.fCommands.QueueBindSparse:=addr(vkQueueBindSparse);
  end;
  if not assigned(vkCreateFence) then begin
   @vkCreateFence:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateFence'));
   @vk.fCommands.CreateFence:=addr(vkCreateFence);
  end;
  if not assigned(vkDestroyFence) then begin
   @vkDestroyFence:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkDestroyFence'));
   @vk.fCommands.DestroyFence:=addr(vkDestroyFence);
  end;
  if not assigned(vkResetFences) then begin
   @vkResetFences:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkResetFences'));
   @vk.fCommands.ResetFences:=addr(vkResetFences);
  end;
  if not assigned(vkGetFenceStatus) then begin
   @vkGetFenceStatus:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetFenceStatus'));
   @vk.fCommands.GetFenceStatus:=addr(vkGetFenceStatus);
  end;
  if not assigned(vkWaitForFences) then begin
   @vkWaitForFences:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkWaitForFences'));
   @vk.fCommands.WaitForFences:=addr(vkWaitForFences);
  end;
  if not assigned(vkCreateSemaphore) then begin
   @vkCreateSemaphore:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateSemaphore'));
   @vk.fCommands.CreateSemaphore:=addr(vkCreateSemaphore);
  end;
  if not assigned(vkDestroySemaphore) then begin
   @vkDestroySemaphore:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkDestroySemaphore'));
   @vk.fCommands.DestroySemaphore:=addr(vkDestroySemaphore);
  end;
  if not assigned(vkCreateEvent) then begin
   @vkCreateEvent:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateEvent'));
   @vk.fCommands.CreateEvent:=addr(vkCreateEvent);
  end;
  if not assigned(vkDestroyEvent) then begin
   @vkDestroyEvent:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkDestroyEvent'));
   @vk.fCommands.DestroyEvent:=addr(vkDestroyEvent);
  end;
  if not assigned(vkGetEventStatus) then begin
   @vkGetEventStatus:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetEventStatus'));
   @vk.fCommands.GetEventStatus:=addr(vkGetEventStatus);
  end;
  if not assigned(vkSetEvent) then begin
   @vkSetEvent:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkSetEvent'));
   @vk.fCommands.SetEvent:=addr(vkSetEvent);
  end;
  if not assigned(vkResetEvent) then begin
   @vkResetEvent:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkResetEvent'));
   @vk.fCommands.ResetEvent:=addr(vkResetEvent);
  end;
  if not assigned(vkCreateQueryPool) then begin
   @vkCreateQueryPool:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateQueryPool'));
   @vk.fCommands.CreateQueryPool:=addr(vkCreateQueryPool);
  end;
  if not assigned(vkDestroyQueryPool) then begin
   @vkDestroyQueryPool:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkDestroyQueryPool'));
   @vk.fCommands.DestroyQueryPool:=addr(vkDestroyQueryPool);
  end;
  if not assigned(vkGetQueryPoolResults) then begin
   @vkGetQueryPoolResults:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetQueryPoolResults'));
   @vk.fCommands.GetQueryPoolResults:=addr(vkGetQueryPoolResults);
  end;
  if not assigned(vkResetQueryPool) then begin
   @vkResetQueryPool:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkResetQueryPool'));
   @vk.fCommands.ResetQueryPool:=addr(vkResetQueryPool);
  end;
  if not assigned(vkResetQueryPoolEXT) then begin
   @vkResetQueryPoolEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkResetQueryPoolEXT'));
   @vk.fCommands.ResetQueryPoolEXT:=addr(vkResetQueryPoolEXT);
  end;
  if not assigned(vkCreateBuffer) then begin
   @vkCreateBuffer:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateBuffer'));
   @vk.fCommands.CreateBuffer:=addr(vkCreateBuffer);
  end;
  if not assigned(vkDestroyBuffer) then begin
   @vkDestroyBuffer:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkDestroyBuffer'));
   @vk.fCommands.DestroyBuffer:=addr(vkDestroyBuffer);
  end;
  if not assigned(vkCreateBufferView) then begin
   @vkCreateBufferView:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateBufferView'));
   @vk.fCommands.CreateBufferView:=addr(vkCreateBufferView);
  end;
  if not assigned(vkDestroyBufferView) then begin
   @vkDestroyBufferView:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkDestroyBufferView'));
   @vk.fCommands.DestroyBufferView:=addr(vkDestroyBufferView);
  end;
  if not assigned(vkCreateImage) then begin
   @vkCreateImage:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateImage'));
   @vk.fCommands.CreateImage:=addr(vkCreateImage);
  end;
  if not assigned(vkDestroyImage) then begin
   @vkDestroyImage:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkDestroyImage'));
   @vk.fCommands.DestroyImage:=addr(vkDestroyImage);
  end;
  if not assigned(vkGetImageSubresourceLayout) then begin
   @vkGetImageSubresourceLayout:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetImageSubresourceLayout'));
   @vk.fCommands.GetImageSubresourceLayout:=addr(vkGetImageSubresourceLayout);
  end;
  if not assigned(vkCreateImageView) then begin
   @vkCreateImageView:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateImageView'));
   @vk.fCommands.CreateImageView:=addr(vkCreateImageView);
  end;
  if not assigned(vkDestroyImageView) then begin
   @vkDestroyImageView:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkDestroyImageView'));
   @vk.fCommands.DestroyImageView:=addr(vkDestroyImageView);
  end;
  if not assigned(vkCreateShaderModule) then begin
   @vkCreateShaderModule:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateShaderModule'));
   @vk.fCommands.CreateShaderModule:=addr(vkCreateShaderModule);
  end;
  if not assigned(vkDestroyShaderModule) then begin
   @vkDestroyShaderModule:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkDestroyShaderModule'));
   @vk.fCommands.DestroyShaderModule:=addr(vkDestroyShaderModule);
  end;
  if not assigned(vkCreatePipelineCache) then begin
   @vkCreatePipelineCache:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreatePipelineCache'));
   @vk.fCommands.CreatePipelineCache:=addr(vkCreatePipelineCache);
  end;
  if not assigned(vkDestroyPipelineCache) then begin
   @vkDestroyPipelineCache:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkDestroyPipelineCache'));
   @vk.fCommands.DestroyPipelineCache:=addr(vkDestroyPipelineCache);
  end;
  if not assigned(vkGetPipelineCacheData) then begin
   @vkGetPipelineCacheData:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPipelineCacheData'));
   @vk.fCommands.GetPipelineCacheData:=addr(vkGetPipelineCacheData);
  end;
  if not assigned(vkMergePipelineCaches) then begin
   @vkMergePipelineCaches:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkMergePipelineCaches'));
   @vk.fCommands.MergePipelineCaches:=addr(vkMergePipelineCaches);
  end;
  if not assigned(vkCreateGraphicsPipelines) then begin
   @vkCreateGraphicsPipelines:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateGraphicsPipelines'));
   @vk.fCommands.CreateGraphicsPipelines:=addr(vkCreateGraphicsPipelines);
  end;
  if not assigned(vkCreateComputePipelines) then begin
   @vkCreateComputePipelines:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateComputePipelines'));
   @vk.fCommands.CreateComputePipelines:=addr(vkCreateComputePipelines);
  end;
  if not assigned(vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI) then begin
   @vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI'));
   @vk.fCommands.GetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI:=addr(vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI);
  end;
  if not assigned(vkDestroyPipeline) then begin
   @vkDestroyPipeline:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkDestroyPipeline'));
   @vk.fCommands.DestroyPipeline:=addr(vkDestroyPipeline);
  end;
  if not assigned(vkCreatePipelineLayout) then begin
   @vkCreatePipelineLayout:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreatePipelineLayout'));
   @vk.fCommands.CreatePipelineLayout:=addr(vkCreatePipelineLayout);
  end;
  if not assigned(vkDestroyPipelineLayout) then begin
   @vkDestroyPipelineLayout:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkDestroyPipelineLayout'));
   @vk.fCommands.DestroyPipelineLayout:=addr(vkDestroyPipelineLayout);
  end;
  if not assigned(vkCreateSampler) then begin
   @vkCreateSampler:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateSampler'));
   @vk.fCommands.CreateSampler:=addr(vkCreateSampler);
  end;
  if not assigned(vkDestroySampler) then begin
   @vkDestroySampler:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkDestroySampler'));
   @vk.fCommands.DestroySampler:=addr(vkDestroySampler);
  end;
  if not assigned(vkCreateDescriptorSetLayout) then begin
   @vkCreateDescriptorSetLayout:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateDescriptorSetLayout'));
   @vk.fCommands.CreateDescriptorSetLayout:=addr(vkCreateDescriptorSetLayout);
  end;
  if not assigned(vkDestroyDescriptorSetLayout) then begin
   @vkDestroyDescriptorSetLayout:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkDestroyDescriptorSetLayout'));
   @vk.fCommands.DestroyDescriptorSetLayout:=addr(vkDestroyDescriptorSetLayout);
  end;
  if not assigned(vkCreateDescriptorPool) then begin
   @vkCreateDescriptorPool:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateDescriptorPool'));
   @vk.fCommands.CreateDescriptorPool:=addr(vkCreateDescriptorPool);
  end;
  if not assigned(vkDestroyDescriptorPool) then begin
   @vkDestroyDescriptorPool:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkDestroyDescriptorPool'));
   @vk.fCommands.DestroyDescriptorPool:=addr(vkDestroyDescriptorPool);
  end;
  if not assigned(vkResetDescriptorPool) then begin
   @vkResetDescriptorPool:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkResetDescriptorPool'));
   @vk.fCommands.ResetDescriptorPool:=addr(vkResetDescriptorPool);
  end;
  if not assigned(vkAllocateDescriptorSets) then begin
   @vkAllocateDescriptorSets:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkAllocateDescriptorSets'));
   @vk.fCommands.AllocateDescriptorSets:=addr(vkAllocateDescriptorSets);
  end;
  if not assigned(vkFreeDescriptorSets) then begin
   @vkFreeDescriptorSets:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkFreeDescriptorSets'));
   @vk.fCommands.FreeDescriptorSets:=addr(vkFreeDescriptorSets);
  end;
  if not assigned(vkUpdateDescriptorSets) then begin
   @vkUpdateDescriptorSets:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkUpdateDescriptorSets'));
   @vk.fCommands.UpdateDescriptorSets:=addr(vkUpdateDescriptorSets);
  end;
  if not assigned(vkCreateFramebuffer) then begin
   @vkCreateFramebuffer:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateFramebuffer'));
   @vk.fCommands.CreateFramebuffer:=addr(vkCreateFramebuffer);
  end;
  if not assigned(vkDestroyFramebuffer) then begin
   @vkDestroyFramebuffer:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkDestroyFramebuffer'));
   @vk.fCommands.DestroyFramebuffer:=addr(vkDestroyFramebuffer);
  end;
  if not assigned(vkCreateRenderPass) then begin
   @vkCreateRenderPass:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateRenderPass'));
   @vk.fCommands.CreateRenderPass:=addr(vkCreateRenderPass);
  end;
  if not assigned(vkDestroyRenderPass) then begin
   @vkDestroyRenderPass:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkDestroyRenderPass'));
   @vk.fCommands.DestroyRenderPass:=addr(vkDestroyRenderPass);
  end;
  if not assigned(vkGetRenderAreaGranularity) then begin
   @vkGetRenderAreaGranularity:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetRenderAreaGranularity'));
   @vk.fCommands.GetRenderAreaGranularity:=addr(vkGetRenderAreaGranularity);
  end;
  if not assigned(vkGetRenderingAreaGranularityKHR) then begin
   @vkGetRenderingAreaGranularityKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetRenderingAreaGranularityKHR'));
   @vk.fCommands.GetRenderingAreaGranularityKHR:=addr(vkGetRenderingAreaGranularityKHR);
  end;
  if not assigned(vkCreateCommandPool) then begin
   @vkCreateCommandPool:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateCommandPool'));
   @vk.fCommands.CreateCommandPool:=addr(vkCreateCommandPool);
  end;
  if not assigned(vkDestroyCommandPool) then begin
   @vkDestroyCommandPool:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkDestroyCommandPool'));
   @vk.fCommands.DestroyCommandPool:=addr(vkDestroyCommandPool);
  end;
  if not assigned(vkResetCommandPool) then begin
   @vkResetCommandPool:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkResetCommandPool'));
   @vk.fCommands.ResetCommandPool:=addr(vkResetCommandPool);
  end;
  if not assigned(vkAllocateCommandBuffers) then begin
   @vkAllocateCommandBuffers:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkAllocateCommandBuffers'));
   @vk.fCommands.AllocateCommandBuffers:=addr(vkAllocateCommandBuffers);
  end;
  if not assigned(vkFreeCommandBuffers) then begin
   @vkFreeCommandBuffers:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkFreeCommandBuffers'));
   @vk.fCommands.FreeCommandBuffers:=addr(vkFreeCommandBuffers);
  end;
  if not assigned(vkBeginCommandBuffer) then begin
   @vkBeginCommandBuffer:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkBeginCommandBuffer'));
   @vk.fCommands.BeginCommandBuffer:=addr(vkBeginCommandBuffer);
  end;
  if not assigned(vkEndCommandBuffer) then begin
   @vkEndCommandBuffer:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkEndCommandBuffer'));
   @vk.fCommands.EndCommandBuffer:=addr(vkEndCommandBuffer);
  end;
  if not assigned(vkResetCommandBuffer) then begin
   @vkResetCommandBuffer:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkResetCommandBuffer'));
   @vk.fCommands.ResetCommandBuffer:=addr(vkResetCommandBuffer);
  end;
  if not assigned(vkCmdBindPipeline) then begin
   @vkCmdBindPipeline:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdBindPipeline'));
   @vk.fCommands.CmdBindPipeline:=addr(vkCmdBindPipeline);
  end;
  if not assigned(vkCmdSetAttachmentFeedbackLoopEnableEXT) then begin
   @vkCmdSetAttachmentFeedbackLoopEnableEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetAttachmentFeedbackLoopEnableEXT'));
   @vk.fCommands.CmdSetAttachmentFeedbackLoopEnableEXT:=addr(vkCmdSetAttachmentFeedbackLoopEnableEXT);
  end;
  if not assigned(vkCmdSetViewport) then begin
   @vkCmdSetViewport:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetViewport'));
   @vk.fCommands.CmdSetViewport:=addr(vkCmdSetViewport);
  end;
  if not assigned(vkCmdSetScissor) then begin
   @vkCmdSetScissor:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetScissor'));
   @vk.fCommands.CmdSetScissor:=addr(vkCmdSetScissor);
  end;
  if not assigned(vkCmdSetLineWidth) then begin
   @vkCmdSetLineWidth:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetLineWidth'));
   @vk.fCommands.CmdSetLineWidth:=addr(vkCmdSetLineWidth);
  end;
  if not assigned(vkCmdSetDepthBias) then begin
   @vkCmdSetDepthBias:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetDepthBias'));
   @vk.fCommands.CmdSetDepthBias:=addr(vkCmdSetDepthBias);
  end;
  if not assigned(vkCmdSetBlendConstants) then begin
   @vkCmdSetBlendConstants:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetBlendConstants'));
   @vk.fCommands.CmdSetBlendConstants:=addr(vkCmdSetBlendConstants);
  end;
  if not assigned(vkCmdSetDepthBounds) then begin
   @vkCmdSetDepthBounds:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetDepthBounds'));
   @vk.fCommands.CmdSetDepthBounds:=addr(vkCmdSetDepthBounds);
  end;
  if not assigned(vkCmdSetStencilCompareMask) then begin
   @vkCmdSetStencilCompareMask:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetStencilCompareMask'));
   @vk.fCommands.CmdSetStencilCompareMask:=addr(vkCmdSetStencilCompareMask);
  end;
  if not assigned(vkCmdSetStencilWriteMask) then begin
   @vkCmdSetStencilWriteMask:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetStencilWriteMask'));
   @vk.fCommands.CmdSetStencilWriteMask:=addr(vkCmdSetStencilWriteMask);
  end;
  if not assigned(vkCmdSetStencilReference) then begin
   @vkCmdSetStencilReference:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetStencilReference'));
   @vk.fCommands.CmdSetStencilReference:=addr(vkCmdSetStencilReference);
  end;
  if not assigned(vkCmdBindDescriptorSets) then begin
   @vkCmdBindDescriptorSets:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdBindDescriptorSets'));
   @vk.fCommands.CmdBindDescriptorSets:=addr(vkCmdBindDescriptorSets);
  end;
  if not assigned(vkCmdBindIndexBuffer) then begin
   @vkCmdBindIndexBuffer:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdBindIndexBuffer'));
   @vk.fCommands.CmdBindIndexBuffer:=addr(vkCmdBindIndexBuffer);
  end;
  if not assigned(vkCmdBindVertexBuffers) then begin
   @vkCmdBindVertexBuffers:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdBindVertexBuffers'));
   @vk.fCommands.CmdBindVertexBuffers:=addr(vkCmdBindVertexBuffers);
  end;
  if not assigned(vkCmdDraw) then begin
   @vkCmdDraw:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdDraw'));
   @vk.fCommands.CmdDraw:=addr(vkCmdDraw);
  end;
  if not assigned(vkCmdDrawIndexed) then begin
   @vkCmdDrawIndexed:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdDrawIndexed'));
   @vk.fCommands.CmdDrawIndexed:=addr(vkCmdDrawIndexed);
  end;
  if not assigned(vkCmdDrawMultiEXT) then begin
   @vkCmdDrawMultiEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdDrawMultiEXT'));
   @vk.fCommands.CmdDrawMultiEXT:=addr(vkCmdDrawMultiEXT);
  end;
  if not assigned(vkCmdDrawMultiIndexedEXT) then begin
   @vkCmdDrawMultiIndexedEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdDrawMultiIndexedEXT'));
   @vk.fCommands.CmdDrawMultiIndexedEXT:=addr(vkCmdDrawMultiIndexedEXT);
  end;
  if not assigned(vkCmdDrawIndirect) then begin
   @vkCmdDrawIndirect:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdDrawIndirect'));
   @vk.fCommands.CmdDrawIndirect:=addr(vkCmdDrawIndirect);
  end;
  if not assigned(vkCmdDrawIndexedIndirect) then begin
   @vkCmdDrawIndexedIndirect:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdDrawIndexedIndirect'));
   @vk.fCommands.CmdDrawIndexedIndirect:=addr(vkCmdDrawIndexedIndirect);
  end;
  if not assigned(vkCmdDispatch) then begin
   @vkCmdDispatch:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdDispatch'));
   @vk.fCommands.CmdDispatch:=addr(vkCmdDispatch);
  end;
  if not assigned(vkCmdDispatchIndirect) then begin
   @vkCmdDispatchIndirect:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdDispatchIndirect'));
   @vk.fCommands.CmdDispatchIndirect:=addr(vkCmdDispatchIndirect);
  end;
  if not assigned(vkCmdSubpassShadingHUAWEI) then begin
   @vkCmdSubpassShadingHUAWEI:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSubpassShadingHUAWEI'));
   @vk.fCommands.CmdSubpassShadingHUAWEI:=addr(vkCmdSubpassShadingHUAWEI);
  end;
  if not assigned(vkCmdDrawClusterHUAWEI) then begin
   @vkCmdDrawClusterHUAWEI:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdDrawClusterHUAWEI'));
   @vk.fCommands.CmdDrawClusterHUAWEI:=addr(vkCmdDrawClusterHUAWEI);
  end;
  if not assigned(vkCmdDrawClusterIndirectHUAWEI) then begin
   @vkCmdDrawClusterIndirectHUAWEI:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdDrawClusterIndirectHUAWEI'));
   @vk.fCommands.CmdDrawClusterIndirectHUAWEI:=addr(vkCmdDrawClusterIndirectHUAWEI);
  end;
  if not assigned(vkCmdUpdatePipelineIndirectBufferNV) then begin
   @vkCmdUpdatePipelineIndirectBufferNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdUpdatePipelineIndirectBufferNV'));
   @vk.fCommands.CmdUpdatePipelineIndirectBufferNV:=addr(vkCmdUpdatePipelineIndirectBufferNV);
  end;
  if not assigned(vkCmdCopyBuffer) then begin
   @vkCmdCopyBuffer:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdCopyBuffer'));
   @vk.fCommands.CmdCopyBuffer:=addr(vkCmdCopyBuffer);
  end;
  if not assigned(vkCmdCopyImage) then begin
   @vkCmdCopyImage:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdCopyImage'));
   @vk.fCommands.CmdCopyImage:=addr(vkCmdCopyImage);
  end;
  if not assigned(vkCmdBlitImage) then begin
   @vkCmdBlitImage:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdBlitImage'));
   @vk.fCommands.CmdBlitImage:=addr(vkCmdBlitImage);
  end;
  if not assigned(vkCmdCopyBufferToImage) then begin
   @vkCmdCopyBufferToImage:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdCopyBufferToImage'));
   @vk.fCommands.CmdCopyBufferToImage:=addr(vkCmdCopyBufferToImage);
  end;
  if not assigned(vkCmdCopyImageToBuffer) then begin
   @vkCmdCopyImageToBuffer:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdCopyImageToBuffer'));
   @vk.fCommands.CmdCopyImageToBuffer:=addr(vkCmdCopyImageToBuffer);
  end;
  if not assigned(vkCmdCopyMemoryIndirectNV) then begin
   @vkCmdCopyMemoryIndirectNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdCopyMemoryIndirectNV'));
   @vk.fCommands.CmdCopyMemoryIndirectNV:=addr(vkCmdCopyMemoryIndirectNV);
  end;
  if not assigned(vkCmdCopyMemoryToImageIndirectNV) then begin
   @vkCmdCopyMemoryToImageIndirectNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdCopyMemoryToImageIndirectNV'));
   @vk.fCommands.CmdCopyMemoryToImageIndirectNV:=addr(vkCmdCopyMemoryToImageIndirectNV);
  end;
  if not assigned(vkCmdUpdateBuffer) then begin
   @vkCmdUpdateBuffer:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdUpdateBuffer'));
   @vk.fCommands.CmdUpdateBuffer:=addr(vkCmdUpdateBuffer);
  end;
  if not assigned(vkCmdFillBuffer) then begin
   @vkCmdFillBuffer:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdFillBuffer'));
   @vk.fCommands.CmdFillBuffer:=addr(vkCmdFillBuffer);
  end;
  if not assigned(vkCmdClearColorImage) then begin
   @vkCmdClearColorImage:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdClearColorImage'));
   @vk.fCommands.CmdClearColorImage:=addr(vkCmdClearColorImage);
  end;
  if not assigned(vkCmdClearDepthStencilImage) then begin
   @vkCmdClearDepthStencilImage:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdClearDepthStencilImage'));
   @vk.fCommands.CmdClearDepthStencilImage:=addr(vkCmdClearDepthStencilImage);
  end;
  if not assigned(vkCmdClearAttachments) then begin
   @vkCmdClearAttachments:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdClearAttachments'));
   @vk.fCommands.CmdClearAttachments:=addr(vkCmdClearAttachments);
  end;
  if not assigned(vkCmdResolveImage) then begin
   @vkCmdResolveImage:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdResolveImage'));
   @vk.fCommands.CmdResolveImage:=addr(vkCmdResolveImage);
  end;
  if not assigned(vkCmdSetEvent) then begin
   @vkCmdSetEvent:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetEvent'));
   @vk.fCommands.CmdSetEvent:=addr(vkCmdSetEvent);
  end;
  if not assigned(vkCmdResetEvent) then begin
   @vkCmdResetEvent:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdResetEvent'));
   @vk.fCommands.CmdResetEvent:=addr(vkCmdResetEvent);
  end;
  if not assigned(vkCmdWaitEvents) then begin
   @vkCmdWaitEvents:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdWaitEvents'));
   @vk.fCommands.CmdWaitEvents:=addr(vkCmdWaitEvents);
  end;
  if not assigned(vkCmdPipelineBarrier) then begin
   @vkCmdPipelineBarrier:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdPipelineBarrier'));
   @vk.fCommands.CmdPipelineBarrier:=addr(vkCmdPipelineBarrier);
  end;
  if not assigned(vkCmdBeginQuery) then begin
   @vkCmdBeginQuery:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdBeginQuery'));
   @vk.fCommands.CmdBeginQuery:=addr(vkCmdBeginQuery);
  end;
  if not assigned(vkCmdEndQuery) then begin
   @vkCmdEndQuery:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdEndQuery'));
   @vk.fCommands.CmdEndQuery:=addr(vkCmdEndQuery);
  end;
  if not assigned(vkCmdBeginConditionalRenderingEXT) then begin
   @vkCmdBeginConditionalRenderingEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdBeginConditionalRenderingEXT'));
   @vk.fCommands.CmdBeginConditionalRenderingEXT:=addr(vkCmdBeginConditionalRenderingEXT);
  end;
  if not assigned(vkCmdEndConditionalRenderingEXT) then begin
   @vkCmdEndConditionalRenderingEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdEndConditionalRenderingEXT'));
   @vk.fCommands.CmdEndConditionalRenderingEXT:=addr(vkCmdEndConditionalRenderingEXT);
  end;
  if not assigned(vkCmdResetQueryPool) then begin
   @vkCmdResetQueryPool:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdResetQueryPool'));
   @vk.fCommands.CmdResetQueryPool:=addr(vkCmdResetQueryPool);
  end;
  if not assigned(vkCmdWriteTimestamp) then begin
   @vkCmdWriteTimestamp:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdWriteTimestamp'));
   @vk.fCommands.CmdWriteTimestamp:=addr(vkCmdWriteTimestamp);
  end;
  if not assigned(vkCmdCopyQueryPoolResults) then begin
   @vkCmdCopyQueryPoolResults:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdCopyQueryPoolResults'));
   @vk.fCommands.CmdCopyQueryPoolResults:=addr(vkCmdCopyQueryPoolResults);
  end;
  if not assigned(vkCmdPushConstants) then begin
   @vkCmdPushConstants:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdPushConstants'));
   @vk.fCommands.CmdPushConstants:=addr(vkCmdPushConstants);
  end;
  if not assigned(vkCmdBeginRenderPass) then begin
   @vkCmdBeginRenderPass:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdBeginRenderPass'));
   @vk.fCommands.CmdBeginRenderPass:=addr(vkCmdBeginRenderPass);
  end;
  if not assigned(vkCmdNextSubpass) then begin
   @vkCmdNextSubpass:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdNextSubpass'));
   @vk.fCommands.CmdNextSubpass:=addr(vkCmdNextSubpass);
  end;
  if not assigned(vkCmdEndRenderPass) then begin
   @vkCmdEndRenderPass:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdEndRenderPass'));
   @vk.fCommands.CmdEndRenderPass:=addr(vkCmdEndRenderPass);
  end;
  if not assigned(vkCmdExecuteCommands) then begin
   @vkCmdExecuteCommands:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdExecuteCommands'));
   @vk.fCommands.CmdExecuteCommands:=addr(vkCmdExecuteCommands);
  end;
{$ifdef Android}
  if not assigned(vkCreateAndroidSurfaceKHR) then begin
   @vkCreateAndroidSurfaceKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateAndroidSurfaceKHR'));
   @vk.fCommands.CreateAndroidSurfaceKHR:=addr(vkCreateAndroidSurfaceKHR);
  end;
{$endif}
  if not assigned(vkGetPhysicalDeviceDisplayPropertiesKHR) then begin
   @vkGetPhysicalDeviceDisplayPropertiesKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceDisplayPropertiesKHR'));
   @vk.fCommands.GetPhysicalDeviceDisplayPropertiesKHR:=addr(vkGetPhysicalDeviceDisplayPropertiesKHR);
  end;
  if not assigned(vkGetPhysicalDeviceDisplayPlanePropertiesKHR) then begin
   @vkGetPhysicalDeviceDisplayPlanePropertiesKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceDisplayPlanePropertiesKHR'));
   @vk.fCommands.GetPhysicalDeviceDisplayPlanePropertiesKHR:=addr(vkGetPhysicalDeviceDisplayPlanePropertiesKHR);
  end;
  if not assigned(vkGetDisplayPlaneSupportedDisplaysKHR) then begin
   @vkGetDisplayPlaneSupportedDisplaysKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetDisplayPlaneSupportedDisplaysKHR'));
   @vk.fCommands.GetDisplayPlaneSupportedDisplaysKHR:=addr(vkGetDisplayPlaneSupportedDisplaysKHR);
  end;
  if not assigned(vkGetDisplayModePropertiesKHR) then begin
   @vkGetDisplayModePropertiesKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetDisplayModePropertiesKHR'));
   @vk.fCommands.GetDisplayModePropertiesKHR:=addr(vkGetDisplayModePropertiesKHR);
  end;
  if not assigned(vkCreateDisplayModeKHR) then begin
   @vkCreateDisplayModeKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateDisplayModeKHR'));
   @vk.fCommands.CreateDisplayModeKHR:=addr(vkCreateDisplayModeKHR);
  end;
  if not assigned(vkGetDisplayPlaneCapabilitiesKHR) then begin
   @vkGetDisplayPlaneCapabilitiesKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetDisplayPlaneCapabilitiesKHR'));
   @vk.fCommands.GetDisplayPlaneCapabilitiesKHR:=addr(vkGetDisplayPlaneCapabilitiesKHR);
  end;
  if not assigned(vkCreateDisplayPlaneSurfaceKHR) then begin
   @vkCreateDisplayPlaneSurfaceKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateDisplayPlaneSurfaceKHR'));
   @vk.fCommands.CreateDisplayPlaneSurfaceKHR:=addr(vkCreateDisplayPlaneSurfaceKHR);
  end;
  if not assigned(vkCreateSharedSwapchainsKHR) then begin
   @vkCreateSharedSwapchainsKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateSharedSwapchainsKHR'));
   @vk.fCommands.CreateSharedSwapchainsKHR:=addr(vkCreateSharedSwapchainsKHR);
  end;
  if not assigned(vkDestroySurfaceKHR) then begin
   @vkDestroySurfaceKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkDestroySurfaceKHR'));
   @vk.fCommands.DestroySurfaceKHR:=addr(vkDestroySurfaceKHR);
  end;
  if not assigned(vkGetPhysicalDeviceSurfaceSupportKHR) then begin
   @vkGetPhysicalDeviceSurfaceSupportKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceSurfaceSupportKHR'));
   @vk.fCommands.GetPhysicalDeviceSurfaceSupportKHR:=addr(vkGetPhysicalDeviceSurfaceSupportKHR);
  end;
  if not assigned(vkGetPhysicalDeviceSurfaceCapabilitiesKHR) then begin
   @vkGetPhysicalDeviceSurfaceCapabilitiesKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceSurfaceCapabilitiesKHR'));
   @vk.fCommands.GetPhysicalDeviceSurfaceCapabilitiesKHR:=addr(vkGetPhysicalDeviceSurfaceCapabilitiesKHR);
  end;
  if not assigned(vkGetPhysicalDeviceSurfaceFormatsKHR) then begin
   @vkGetPhysicalDeviceSurfaceFormatsKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceSurfaceFormatsKHR'));
   @vk.fCommands.GetPhysicalDeviceSurfaceFormatsKHR:=addr(vkGetPhysicalDeviceSurfaceFormatsKHR);
  end;
  if not assigned(vkGetPhysicalDeviceSurfacePresentModesKHR) then begin
   @vkGetPhysicalDeviceSurfacePresentModesKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceSurfacePresentModesKHR'));
   @vk.fCommands.GetPhysicalDeviceSurfacePresentModesKHR:=addr(vkGetPhysicalDeviceSurfacePresentModesKHR);
  end;
  if not assigned(vkCreateSwapchainKHR) then begin
   @vkCreateSwapchainKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateSwapchainKHR'));
   @vk.fCommands.CreateSwapchainKHR:=addr(vkCreateSwapchainKHR);
  end;
  if not assigned(vkDestroySwapchainKHR) then begin
   @vkDestroySwapchainKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkDestroySwapchainKHR'));
   @vk.fCommands.DestroySwapchainKHR:=addr(vkDestroySwapchainKHR);
  end;
  if not assigned(vkGetSwapchainImagesKHR) then begin
   @vkGetSwapchainImagesKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetSwapchainImagesKHR'));
   @vk.fCommands.GetSwapchainImagesKHR:=addr(vkGetSwapchainImagesKHR);
  end;
  if not assigned(vkAcquireNextImageKHR) then begin
   @vkAcquireNextImageKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkAcquireNextImageKHR'));
   @vk.fCommands.AcquireNextImageKHR:=addr(vkAcquireNextImageKHR);
  end;
  if not assigned(vkQueuePresentKHR) then begin
   @vkQueuePresentKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkQueuePresentKHR'));
   @vk.fCommands.QueuePresentKHR:=addr(vkQueuePresentKHR);
  end;
  if not assigned(vkCreateViSurfaceNN) then begin
   @vkCreateViSurfaceNN:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateViSurfaceNN'));
   @vk.fCommands.CreateViSurfaceNN:=addr(vkCreateViSurfaceNN);
  end;
{$ifdef Wayland}
  if not assigned(vkCreateWaylandSurfaceKHR) then begin
   @vkCreateWaylandSurfaceKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateWaylandSurfaceKHR'));
   @vk.fCommands.CreateWaylandSurfaceKHR:=addr(vkCreateWaylandSurfaceKHR);
  end;
{$endif}
{$ifdef Wayland}
  if not assigned(vkGetPhysicalDeviceWaylandPresentationSupportKHR) then begin
   @vkGetPhysicalDeviceWaylandPresentationSupportKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceWaylandPresentationSupportKHR'));
   @vk.fCommands.GetPhysicalDeviceWaylandPresentationSupportKHR:=addr(vkGetPhysicalDeviceWaylandPresentationSupportKHR);
  end;
{$endif}
{$ifdef Windows}
  if not assigned(vkCreateWin32SurfaceKHR) then begin
   @vkCreateWin32SurfaceKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateWin32SurfaceKHR'));
   @vk.fCommands.CreateWin32SurfaceKHR:=addr(vkCreateWin32SurfaceKHR);
  end;
{$endif}
{$ifdef Windows}
  if not assigned(vkGetPhysicalDeviceWin32PresentationSupportKHR) then begin
   @vkGetPhysicalDeviceWin32PresentationSupportKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceWin32PresentationSupportKHR'));
   @vk.fCommands.GetPhysicalDeviceWin32PresentationSupportKHR:=addr(vkGetPhysicalDeviceWin32PresentationSupportKHR);
  end;
{$endif}
{$ifdef XLIB}
  if not assigned(vkCreateXlibSurfaceKHR) then begin
   @vkCreateXlibSurfaceKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateXlibSurfaceKHR'));
   @vk.fCommands.CreateXlibSurfaceKHR:=addr(vkCreateXlibSurfaceKHR);
  end;
{$endif}
{$ifdef XLIB}
  if not assigned(vkGetPhysicalDeviceXlibPresentationSupportKHR) then begin
   @vkGetPhysicalDeviceXlibPresentationSupportKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceXlibPresentationSupportKHR'));
   @vk.fCommands.GetPhysicalDeviceXlibPresentationSupportKHR:=addr(vkGetPhysicalDeviceXlibPresentationSupportKHR);
  end;
{$endif}
{$ifdef XCB}
  if not assigned(vkCreateXcbSurfaceKHR) then begin
   @vkCreateXcbSurfaceKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateXcbSurfaceKHR'));
   @vk.fCommands.CreateXcbSurfaceKHR:=addr(vkCreateXcbSurfaceKHR);
  end;
{$endif}
{$ifdef XCB}
  if not assigned(vkGetPhysicalDeviceXcbPresentationSupportKHR) then begin
   @vkGetPhysicalDeviceXcbPresentationSupportKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceXcbPresentationSupportKHR'));
   @vk.fCommands.GetPhysicalDeviceXcbPresentationSupportKHR:=addr(vkGetPhysicalDeviceXcbPresentationSupportKHR);
  end;
{$endif}
{$ifdef DirectFB}
  if not assigned(vkCreateDirectFBSurfaceEXT) then begin
   @vkCreateDirectFBSurfaceEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateDirectFBSurfaceEXT'));
   @vk.fCommands.CreateDirectFBSurfaceEXT:=addr(vkCreateDirectFBSurfaceEXT);
  end;
{$endif}
{$ifdef DirectFB}
  if not assigned(vkGetPhysicalDeviceDirectFBPresentationSupportEXT) then begin
   @vkGetPhysicalDeviceDirectFBPresentationSupportEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceDirectFBPresentationSupportEXT'));
   @vk.fCommands.GetPhysicalDeviceDirectFBPresentationSupportEXT:=addr(vkGetPhysicalDeviceDirectFBPresentationSupportEXT);
  end;
{$endif}
{$ifdef Fuchsia}
  if not assigned(vkCreateImagePipeSurfaceFUCHSIA) then begin
   @vkCreateImagePipeSurfaceFUCHSIA:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateImagePipeSurfaceFUCHSIA'));
   @vk.fCommands.CreateImagePipeSurfaceFUCHSIA:=addr(vkCreateImagePipeSurfaceFUCHSIA);
  end;
{$endif}
  if not assigned(vkCreateStreamDescriptorSurfaceGGP) then begin
   @vkCreateStreamDescriptorSurfaceGGP:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateStreamDescriptorSurfaceGGP'));
   @vk.fCommands.CreateStreamDescriptorSurfaceGGP:=addr(vkCreateStreamDescriptorSurfaceGGP);
  end;
{$ifdef QNX}
  if not assigned(vkCreateScreenSurfaceQNX) then begin
   @vkCreateScreenSurfaceQNX:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateScreenSurfaceQNX'));
   @vk.fCommands.CreateScreenSurfaceQNX:=addr(vkCreateScreenSurfaceQNX);
  end;
{$endif}
{$ifdef QNX}
  if not assigned(vkGetPhysicalDeviceScreenPresentationSupportQNX) then begin
   @vkGetPhysicalDeviceScreenPresentationSupportQNX:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceScreenPresentationSupportQNX'));
   @vk.fCommands.GetPhysicalDeviceScreenPresentationSupportQNX:=addr(vkGetPhysicalDeviceScreenPresentationSupportQNX);
  end;
{$endif}
  if not assigned(vkCreateDebugReportCallbackEXT) then begin
   @vkCreateDebugReportCallbackEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateDebugReportCallbackEXT'));
   @vk.fCommands.CreateDebugReportCallbackEXT:=addr(vkCreateDebugReportCallbackEXT);
  end;
  if not assigned(vkDestroyDebugReportCallbackEXT) then begin
   @vkDestroyDebugReportCallbackEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkDestroyDebugReportCallbackEXT'));
   @vk.fCommands.DestroyDebugReportCallbackEXT:=addr(vkDestroyDebugReportCallbackEXT);
  end;
  if not assigned(vkDebugReportMessageEXT) then begin
   @vkDebugReportMessageEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkDebugReportMessageEXT'));
   @vk.fCommands.DebugReportMessageEXT:=addr(vkDebugReportMessageEXT);
  end;
  if not assigned(vkDebugMarkerSetObjectNameEXT) then begin
   @vkDebugMarkerSetObjectNameEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkDebugMarkerSetObjectNameEXT'));
   @vk.fCommands.DebugMarkerSetObjectNameEXT:=addr(vkDebugMarkerSetObjectNameEXT);
  end;
  if not assigned(vkDebugMarkerSetObjectTagEXT) then begin
   @vkDebugMarkerSetObjectTagEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkDebugMarkerSetObjectTagEXT'));
   @vk.fCommands.DebugMarkerSetObjectTagEXT:=addr(vkDebugMarkerSetObjectTagEXT);
  end;
  if not assigned(vkCmdDebugMarkerBeginEXT) then begin
   @vkCmdDebugMarkerBeginEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdDebugMarkerBeginEXT'));
   @vk.fCommands.CmdDebugMarkerBeginEXT:=addr(vkCmdDebugMarkerBeginEXT);
  end;
  if not assigned(vkCmdDebugMarkerEndEXT) then begin
   @vkCmdDebugMarkerEndEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdDebugMarkerEndEXT'));
   @vk.fCommands.CmdDebugMarkerEndEXT:=addr(vkCmdDebugMarkerEndEXT);
  end;
  if not assigned(vkCmdDebugMarkerInsertEXT) then begin
   @vkCmdDebugMarkerInsertEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdDebugMarkerInsertEXT'));
   @vk.fCommands.CmdDebugMarkerInsertEXT:=addr(vkCmdDebugMarkerInsertEXT);
  end;
  if not assigned(vkGetPhysicalDeviceExternalImageFormatPropertiesNV) then begin
   @vkGetPhysicalDeviceExternalImageFormatPropertiesNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceExternalImageFormatPropertiesNV'));
   @vk.fCommands.GetPhysicalDeviceExternalImageFormatPropertiesNV:=addr(vkGetPhysicalDeviceExternalImageFormatPropertiesNV);
  end;
{$ifdef Windows}
  if not assigned(vkGetMemoryWin32HandleNV) then begin
   @vkGetMemoryWin32HandleNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetMemoryWin32HandleNV'));
   @vk.fCommands.GetMemoryWin32HandleNV:=addr(vkGetMemoryWin32HandleNV);
  end;
{$endif}
  if not assigned(vkCmdExecuteGeneratedCommandsNV) then begin
   @vkCmdExecuteGeneratedCommandsNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdExecuteGeneratedCommandsNV'));
   @vk.fCommands.CmdExecuteGeneratedCommandsNV:=addr(vkCmdExecuteGeneratedCommandsNV);
  end;
  if not assigned(vkCmdPreprocessGeneratedCommandsNV) then begin
   @vkCmdPreprocessGeneratedCommandsNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdPreprocessGeneratedCommandsNV'));
   @vk.fCommands.CmdPreprocessGeneratedCommandsNV:=addr(vkCmdPreprocessGeneratedCommandsNV);
  end;
  if not assigned(vkCmdBindPipelineShaderGroupNV) then begin
   @vkCmdBindPipelineShaderGroupNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdBindPipelineShaderGroupNV'));
   @vk.fCommands.CmdBindPipelineShaderGroupNV:=addr(vkCmdBindPipelineShaderGroupNV);
  end;
  if not assigned(vkGetGeneratedCommandsMemoryRequirementsNV) then begin
   @vkGetGeneratedCommandsMemoryRequirementsNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetGeneratedCommandsMemoryRequirementsNV'));
   @vk.fCommands.GetGeneratedCommandsMemoryRequirementsNV:=addr(vkGetGeneratedCommandsMemoryRequirementsNV);
  end;
  if not assigned(vkCreateIndirectCommandsLayoutNV) then begin
   @vkCreateIndirectCommandsLayoutNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateIndirectCommandsLayoutNV'));
   @vk.fCommands.CreateIndirectCommandsLayoutNV:=addr(vkCreateIndirectCommandsLayoutNV);
  end;
  if not assigned(vkDestroyIndirectCommandsLayoutNV) then begin
   @vkDestroyIndirectCommandsLayoutNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkDestroyIndirectCommandsLayoutNV'));
   @vk.fCommands.DestroyIndirectCommandsLayoutNV:=addr(vkDestroyIndirectCommandsLayoutNV);
  end;
  if not assigned(vkGetPhysicalDeviceFeatures2) then begin
   @vkGetPhysicalDeviceFeatures2:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceFeatures2'));
   @vk.fCommands.GetPhysicalDeviceFeatures2:=addr(vkGetPhysicalDeviceFeatures2);
  end;
  if not assigned(vkGetPhysicalDeviceFeatures2KHR) then begin
   @vkGetPhysicalDeviceFeatures2KHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceFeatures2KHR'));
   @vk.fCommands.GetPhysicalDeviceFeatures2KHR:=addr(vkGetPhysicalDeviceFeatures2KHR);
  end;
  if not assigned(vkGetPhysicalDeviceProperties2) then begin
   @vkGetPhysicalDeviceProperties2:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceProperties2'));
   @vk.fCommands.GetPhysicalDeviceProperties2:=addr(vkGetPhysicalDeviceProperties2);
  end;
  if not assigned(vkGetPhysicalDeviceProperties2KHR) then begin
   @vkGetPhysicalDeviceProperties2KHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceProperties2KHR'));
   @vk.fCommands.GetPhysicalDeviceProperties2KHR:=addr(vkGetPhysicalDeviceProperties2KHR);
  end;
  if not assigned(vkGetPhysicalDeviceFormatProperties2) then begin
   @vkGetPhysicalDeviceFormatProperties2:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceFormatProperties2'));
   @vk.fCommands.GetPhysicalDeviceFormatProperties2:=addr(vkGetPhysicalDeviceFormatProperties2);
  end;
  if not assigned(vkGetPhysicalDeviceFormatProperties2KHR) then begin
   @vkGetPhysicalDeviceFormatProperties2KHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceFormatProperties2KHR'));
   @vk.fCommands.GetPhysicalDeviceFormatProperties2KHR:=addr(vkGetPhysicalDeviceFormatProperties2KHR);
  end;
  if not assigned(vkGetPhysicalDeviceImageFormatProperties2) then begin
   @vkGetPhysicalDeviceImageFormatProperties2:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceImageFormatProperties2'));
   @vk.fCommands.GetPhysicalDeviceImageFormatProperties2:=addr(vkGetPhysicalDeviceImageFormatProperties2);
  end;
  if not assigned(vkGetPhysicalDeviceImageFormatProperties2KHR) then begin
   @vkGetPhysicalDeviceImageFormatProperties2KHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceImageFormatProperties2KHR'));
   @vk.fCommands.GetPhysicalDeviceImageFormatProperties2KHR:=addr(vkGetPhysicalDeviceImageFormatProperties2KHR);
  end;
  if not assigned(vkGetPhysicalDeviceQueueFamilyProperties2) then begin
   @vkGetPhysicalDeviceQueueFamilyProperties2:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceQueueFamilyProperties2'));
   @vk.fCommands.GetPhysicalDeviceQueueFamilyProperties2:=addr(vkGetPhysicalDeviceQueueFamilyProperties2);
  end;
  if not assigned(vkGetPhysicalDeviceQueueFamilyProperties2KHR) then begin
   @vkGetPhysicalDeviceQueueFamilyProperties2KHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceQueueFamilyProperties2KHR'));
   @vk.fCommands.GetPhysicalDeviceQueueFamilyProperties2KHR:=addr(vkGetPhysicalDeviceQueueFamilyProperties2KHR);
  end;
  if not assigned(vkGetPhysicalDeviceMemoryProperties2) then begin
   @vkGetPhysicalDeviceMemoryProperties2:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceMemoryProperties2'));
   @vk.fCommands.GetPhysicalDeviceMemoryProperties2:=addr(vkGetPhysicalDeviceMemoryProperties2);
  end;
  if not assigned(vkGetPhysicalDeviceMemoryProperties2KHR) then begin
   @vkGetPhysicalDeviceMemoryProperties2KHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceMemoryProperties2KHR'));
   @vk.fCommands.GetPhysicalDeviceMemoryProperties2KHR:=addr(vkGetPhysicalDeviceMemoryProperties2KHR);
  end;
  if not assigned(vkGetPhysicalDeviceSparseImageFormatProperties2) then begin
   @vkGetPhysicalDeviceSparseImageFormatProperties2:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceSparseImageFormatProperties2'));
   @vk.fCommands.GetPhysicalDeviceSparseImageFormatProperties2:=addr(vkGetPhysicalDeviceSparseImageFormatProperties2);
  end;
  if not assigned(vkGetPhysicalDeviceSparseImageFormatProperties2KHR) then begin
   @vkGetPhysicalDeviceSparseImageFormatProperties2KHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceSparseImageFormatProperties2KHR'));
   @vk.fCommands.GetPhysicalDeviceSparseImageFormatProperties2KHR:=addr(vkGetPhysicalDeviceSparseImageFormatProperties2KHR);
  end;
  if not assigned(vkCmdPushDescriptorSetKHR) then begin
   @vkCmdPushDescriptorSetKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdPushDescriptorSetKHR'));
   @vk.fCommands.CmdPushDescriptorSetKHR:=addr(vkCmdPushDescriptorSetKHR);
  end;
  if not assigned(vkTrimCommandPool) then begin
   @vkTrimCommandPool:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkTrimCommandPool'));
   @vk.fCommands.TrimCommandPool:=addr(vkTrimCommandPool);
  end;
  if not assigned(vkTrimCommandPoolKHR) then begin
   @vkTrimCommandPoolKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkTrimCommandPoolKHR'));
   @vk.fCommands.TrimCommandPoolKHR:=addr(vkTrimCommandPoolKHR);
  end;
  if not assigned(vkGetPhysicalDeviceExternalBufferProperties) then begin
   @vkGetPhysicalDeviceExternalBufferProperties:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceExternalBufferProperties'));
   @vk.fCommands.GetPhysicalDeviceExternalBufferProperties:=addr(vkGetPhysicalDeviceExternalBufferProperties);
  end;
  if not assigned(vkGetPhysicalDeviceExternalBufferPropertiesKHR) then begin
   @vkGetPhysicalDeviceExternalBufferPropertiesKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceExternalBufferPropertiesKHR'));
   @vk.fCommands.GetPhysicalDeviceExternalBufferPropertiesKHR:=addr(vkGetPhysicalDeviceExternalBufferPropertiesKHR);
  end;
{$ifdef Windows}
  if not assigned(vkGetMemoryWin32HandleKHR) then begin
   @vkGetMemoryWin32HandleKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetMemoryWin32HandleKHR'));
   @vk.fCommands.GetMemoryWin32HandleKHR:=addr(vkGetMemoryWin32HandleKHR);
  end;
{$endif}
{$ifdef Windows}
  if not assigned(vkGetMemoryWin32HandlePropertiesKHR) then begin
   @vkGetMemoryWin32HandlePropertiesKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetMemoryWin32HandlePropertiesKHR'));
   @vk.fCommands.GetMemoryWin32HandlePropertiesKHR:=addr(vkGetMemoryWin32HandlePropertiesKHR);
  end;
{$endif}
  if not assigned(vkGetMemoryFdKHR) then begin
   @vkGetMemoryFdKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetMemoryFdKHR'));
   @vk.fCommands.GetMemoryFdKHR:=addr(vkGetMemoryFdKHR);
  end;
  if not assigned(vkGetMemoryFdPropertiesKHR) then begin
   @vkGetMemoryFdPropertiesKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetMemoryFdPropertiesKHR'));
   @vk.fCommands.GetMemoryFdPropertiesKHR:=addr(vkGetMemoryFdPropertiesKHR);
  end;
{$ifdef Fuchsia}
  if not assigned(vkGetMemoryZirconHandleFUCHSIA) then begin
   @vkGetMemoryZirconHandleFUCHSIA:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetMemoryZirconHandleFUCHSIA'));
   @vk.fCommands.GetMemoryZirconHandleFUCHSIA:=addr(vkGetMemoryZirconHandleFUCHSIA);
  end;
{$endif}
{$ifdef Fuchsia}
  if not assigned(vkGetMemoryZirconHandlePropertiesFUCHSIA) then begin
   @vkGetMemoryZirconHandlePropertiesFUCHSIA:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetMemoryZirconHandlePropertiesFUCHSIA'));
   @vk.fCommands.GetMemoryZirconHandlePropertiesFUCHSIA:=addr(vkGetMemoryZirconHandlePropertiesFUCHSIA);
  end;
{$endif}
  if not assigned(vkGetMemoryRemoteAddressNV) then begin
   @vkGetMemoryRemoteAddressNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetMemoryRemoteAddressNV'));
   @vk.fCommands.GetMemoryRemoteAddressNV:=addr(vkGetMemoryRemoteAddressNV);
  end;
{$ifdef NvSci}
  if not assigned(vkGetMemorySciBufNV) then begin
   @vkGetMemorySciBufNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetMemorySciBufNV'));
   @vk.fCommands.GetMemorySciBufNV:=addr(vkGetMemorySciBufNV);
  end;
{$endif}
{$ifdef NvSci}
  if not assigned(vkGetPhysicalDeviceExternalMemorySciBufPropertiesNV) then begin
   @vkGetPhysicalDeviceExternalMemorySciBufPropertiesNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceExternalMemorySciBufPropertiesNV'));
   @vk.fCommands.GetPhysicalDeviceExternalMemorySciBufPropertiesNV:=addr(vkGetPhysicalDeviceExternalMemorySciBufPropertiesNV);
  end;
{$endif}
{$ifdef NvSci}
  if not assigned(vkGetPhysicalDeviceSciBufAttributesNV) then begin
   @vkGetPhysicalDeviceSciBufAttributesNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceSciBufAttributesNV'));
   @vk.fCommands.GetPhysicalDeviceSciBufAttributesNV:=addr(vkGetPhysicalDeviceSciBufAttributesNV);
  end;
{$endif}
  if not assigned(vkGetPhysicalDeviceExternalSemaphoreProperties) then begin
   @vkGetPhysicalDeviceExternalSemaphoreProperties:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceExternalSemaphoreProperties'));
   @vk.fCommands.GetPhysicalDeviceExternalSemaphoreProperties:=addr(vkGetPhysicalDeviceExternalSemaphoreProperties);
  end;
  if not assigned(vkGetPhysicalDeviceExternalSemaphorePropertiesKHR) then begin
   @vkGetPhysicalDeviceExternalSemaphorePropertiesKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceExternalSemaphorePropertiesKHR'));
   @vk.fCommands.GetPhysicalDeviceExternalSemaphorePropertiesKHR:=addr(vkGetPhysicalDeviceExternalSemaphorePropertiesKHR);
  end;
{$ifdef Windows}
  if not assigned(vkGetSemaphoreWin32HandleKHR) then begin
   @vkGetSemaphoreWin32HandleKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetSemaphoreWin32HandleKHR'));
   @vk.fCommands.GetSemaphoreWin32HandleKHR:=addr(vkGetSemaphoreWin32HandleKHR);
  end;
{$endif}
{$ifdef Windows}
  if not assigned(vkImportSemaphoreWin32HandleKHR) then begin
   @vkImportSemaphoreWin32HandleKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkImportSemaphoreWin32HandleKHR'));
   @vk.fCommands.ImportSemaphoreWin32HandleKHR:=addr(vkImportSemaphoreWin32HandleKHR);
  end;
{$endif}
  if not assigned(vkGetSemaphoreFdKHR) then begin
   @vkGetSemaphoreFdKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetSemaphoreFdKHR'));
   @vk.fCommands.GetSemaphoreFdKHR:=addr(vkGetSemaphoreFdKHR);
  end;
  if not assigned(vkImportSemaphoreFdKHR) then begin
   @vkImportSemaphoreFdKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkImportSemaphoreFdKHR'));
   @vk.fCommands.ImportSemaphoreFdKHR:=addr(vkImportSemaphoreFdKHR);
  end;
{$ifdef Fuchsia}
  if not assigned(vkGetSemaphoreZirconHandleFUCHSIA) then begin
   @vkGetSemaphoreZirconHandleFUCHSIA:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetSemaphoreZirconHandleFUCHSIA'));
   @vk.fCommands.GetSemaphoreZirconHandleFUCHSIA:=addr(vkGetSemaphoreZirconHandleFUCHSIA);
  end;
{$endif}
{$ifdef Fuchsia}
  if not assigned(vkImportSemaphoreZirconHandleFUCHSIA) then begin
   @vkImportSemaphoreZirconHandleFUCHSIA:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkImportSemaphoreZirconHandleFUCHSIA'));
   @vk.fCommands.ImportSemaphoreZirconHandleFUCHSIA:=addr(vkImportSemaphoreZirconHandleFUCHSIA);
  end;
{$endif}
  if not assigned(vkGetPhysicalDeviceExternalFenceProperties) then begin
   @vkGetPhysicalDeviceExternalFenceProperties:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceExternalFenceProperties'));
   @vk.fCommands.GetPhysicalDeviceExternalFenceProperties:=addr(vkGetPhysicalDeviceExternalFenceProperties);
  end;
  if not assigned(vkGetPhysicalDeviceExternalFencePropertiesKHR) then begin
   @vkGetPhysicalDeviceExternalFencePropertiesKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceExternalFencePropertiesKHR'));
   @vk.fCommands.GetPhysicalDeviceExternalFencePropertiesKHR:=addr(vkGetPhysicalDeviceExternalFencePropertiesKHR);
  end;
{$ifdef Windows}
  if not assigned(vkGetFenceWin32HandleKHR) then begin
   @vkGetFenceWin32HandleKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetFenceWin32HandleKHR'));
   @vk.fCommands.GetFenceWin32HandleKHR:=addr(vkGetFenceWin32HandleKHR);
  end;
{$endif}
{$ifdef Windows}
  if not assigned(vkImportFenceWin32HandleKHR) then begin
   @vkImportFenceWin32HandleKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkImportFenceWin32HandleKHR'));
   @vk.fCommands.ImportFenceWin32HandleKHR:=addr(vkImportFenceWin32HandleKHR);
  end;
{$endif}
  if not assigned(vkGetFenceFdKHR) then begin
   @vkGetFenceFdKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetFenceFdKHR'));
   @vk.fCommands.GetFenceFdKHR:=addr(vkGetFenceFdKHR);
  end;
  if not assigned(vkImportFenceFdKHR) then begin
   @vkImportFenceFdKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkImportFenceFdKHR'));
   @vk.fCommands.ImportFenceFdKHR:=addr(vkImportFenceFdKHR);
  end;
{$ifdef NvSci}
  if not assigned(vkGetFenceSciSyncFenceNV) then begin
   @vkGetFenceSciSyncFenceNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetFenceSciSyncFenceNV'));
   @vk.fCommands.GetFenceSciSyncFenceNV:=addr(vkGetFenceSciSyncFenceNV);
  end;
{$endif}
{$ifdef NvSci}
  if not assigned(vkGetFenceSciSyncObjNV) then begin
   @vkGetFenceSciSyncObjNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetFenceSciSyncObjNV'));
   @vk.fCommands.GetFenceSciSyncObjNV:=addr(vkGetFenceSciSyncObjNV);
  end;
{$endif}
{$ifdef NvSci}
  if not assigned(vkImportFenceSciSyncFenceNV) then begin
   @vkImportFenceSciSyncFenceNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkImportFenceSciSyncFenceNV'));
   @vk.fCommands.ImportFenceSciSyncFenceNV:=addr(vkImportFenceSciSyncFenceNV);
  end;
{$endif}
{$ifdef NvSci}
  if not assigned(vkImportFenceSciSyncObjNV) then begin
   @vkImportFenceSciSyncObjNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkImportFenceSciSyncObjNV'));
   @vk.fCommands.ImportFenceSciSyncObjNV:=addr(vkImportFenceSciSyncObjNV);
  end;
{$endif}
{$ifdef NvSci}
  if not assigned(vkGetSemaphoreSciSyncObjNV) then begin
   @vkGetSemaphoreSciSyncObjNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetSemaphoreSciSyncObjNV'));
   @vk.fCommands.GetSemaphoreSciSyncObjNV:=addr(vkGetSemaphoreSciSyncObjNV);
  end;
{$endif}
{$ifdef NvSci}
  if not assigned(vkImportSemaphoreSciSyncObjNV) then begin
   @vkImportSemaphoreSciSyncObjNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkImportSemaphoreSciSyncObjNV'));
   @vk.fCommands.ImportSemaphoreSciSyncObjNV:=addr(vkImportSemaphoreSciSyncObjNV);
  end;
{$endif}
{$ifdef NvSci}
  if not assigned(vkGetPhysicalDeviceSciSyncAttributesNV) then begin
   @vkGetPhysicalDeviceSciSyncAttributesNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceSciSyncAttributesNV'));
   @vk.fCommands.GetPhysicalDeviceSciSyncAttributesNV:=addr(vkGetPhysicalDeviceSciSyncAttributesNV);
  end;
{$endif}
{$ifdef NvSci}
  if not assigned(vkCreateSemaphoreSciSyncPoolNV) then begin
   @vkCreateSemaphoreSciSyncPoolNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateSemaphoreSciSyncPoolNV'));
   @vk.fCommands.CreateSemaphoreSciSyncPoolNV:=addr(vkCreateSemaphoreSciSyncPoolNV);
  end;
{$endif}
{$ifdef NvSci}
  if not assigned(vkDestroySemaphoreSciSyncPoolNV) then begin
   @vkDestroySemaphoreSciSyncPoolNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkDestroySemaphoreSciSyncPoolNV'));
   @vk.fCommands.DestroySemaphoreSciSyncPoolNV:=addr(vkDestroySemaphoreSciSyncPoolNV);
  end;
{$endif}
  if not assigned(vkReleaseDisplayEXT) then begin
   @vkReleaseDisplayEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkReleaseDisplayEXT'));
   @vk.fCommands.ReleaseDisplayEXT:=addr(vkReleaseDisplayEXT);
  end;
{$ifdef XLIB}
  if not assigned(vkAcquireXlibDisplayEXT) then begin
   @vkAcquireXlibDisplayEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkAcquireXlibDisplayEXT'));
   @vk.fCommands.AcquireXlibDisplayEXT:=addr(vkAcquireXlibDisplayEXT);
  end;
{$endif}
{$ifdef RandR}
  if not assigned(vkGetRandROutputDisplayEXT) then begin
   @vkGetRandROutputDisplayEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetRandROutputDisplayEXT'));
   @vk.fCommands.GetRandROutputDisplayEXT:=addr(vkGetRandROutputDisplayEXT);
  end;
{$endif}
  if not assigned(vkAcquireWinrtDisplayNV) then begin
   @vkAcquireWinrtDisplayNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkAcquireWinrtDisplayNV'));
   @vk.fCommands.AcquireWinrtDisplayNV:=addr(vkAcquireWinrtDisplayNV);
  end;
  if not assigned(vkGetWinrtDisplayNV) then begin
   @vkGetWinrtDisplayNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetWinrtDisplayNV'));
   @vk.fCommands.GetWinrtDisplayNV:=addr(vkGetWinrtDisplayNV);
  end;
  if not assigned(vkDisplayPowerControlEXT) then begin
   @vkDisplayPowerControlEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkDisplayPowerControlEXT'));
   @vk.fCommands.DisplayPowerControlEXT:=addr(vkDisplayPowerControlEXT);
  end;
  if not assigned(vkRegisterDeviceEventEXT) then begin
   @vkRegisterDeviceEventEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkRegisterDeviceEventEXT'));
   @vk.fCommands.RegisterDeviceEventEXT:=addr(vkRegisterDeviceEventEXT);
  end;
  if not assigned(vkRegisterDisplayEventEXT) then begin
   @vkRegisterDisplayEventEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkRegisterDisplayEventEXT'));
   @vk.fCommands.RegisterDisplayEventEXT:=addr(vkRegisterDisplayEventEXT);
  end;
  if not assigned(vkGetSwapchainCounterEXT) then begin
   @vkGetSwapchainCounterEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetSwapchainCounterEXT'));
   @vk.fCommands.GetSwapchainCounterEXT:=addr(vkGetSwapchainCounterEXT);
  end;
  if not assigned(vkGetPhysicalDeviceSurfaceCapabilities2EXT) then begin
   @vkGetPhysicalDeviceSurfaceCapabilities2EXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceSurfaceCapabilities2EXT'));
   @vk.fCommands.GetPhysicalDeviceSurfaceCapabilities2EXT:=addr(vkGetPhysicalDeviceSurfaceCapabilities2EXT);
  end;
  if not assigned(vkEnumeratePhysicalDeviceGroups) then begin
   @vkEnumeratePhysicalDeviceGroups:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkEnumeratePhysicalDeviceGroups'));
   @vk.fCommands.EnumeratePhysicalDeviceGroups:=addr(vkEnumeratePhysicalDeviceGroups);
  end;
  if not assigned(vkEnumeratePhysicalDeviceGroupsKHR) then begin
   @vkEnumeratePhysicalDeviceGroupsKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkEnumeratePhysicalDeviceGroupsKHR'));
   @vk.fCommands.EnumeratePhysicalDeviceGroupsKHR:=addr(vkEnumeratePhysicalDeviceGroupsKHR);
  end;
  if not assigned(vkGetDeviceGroupPeerMemoryFeatures) then begin
   @vkGetDeviceGroupPeerMemoryFeatures:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetDeviceGroupPeerMemoryFeatures'));
   @vk.fCommands.GetDeviceGroupPeerMemoryFeatures:=addr(vkGetDeviceGroupPeerMemoryFeatures);
  end;
  if not assigned(vkGetDeviceGroupPeerMemoryFeaturesKHR) then begin
   @vkGetDeviceGroupPeerMemoryFeaturesKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetDeviceGroupPeerMemoryFeaturesKHR'));
   @vk.fCommands.GetDeviceGroupPeerMemoryFeaturesKHR:=addr(vkGetDeviceGroupPeerMemoryFeaturesKHR);
  end;
  if not assigned(vkBindBufferMemory2) then begin
   @vkBindBufferMemory2:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkBindBufferMemory2'));
   @vk.fCommands.BindBufferMemory2:=addr(vkBindBufferMemory2);
  end;
  if not assigned(vkBindBufferMemory2KHR) then begin
   @vkBindBufferMemory2KHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkBindBufferMemory2KHR'));
   @vk.fCommands.BindBufferMemory2KHR:=addr(vkBindBufferMemory2KHR);
  end;
  if not assigned(vkBindImageMemory2) then begin
   @vkBindImageMemory2:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkBindImageMemory2'));
   @vk.fCommands.BindImageMemory2:=addr(vkBindImageMemory2);
  end;
  if not assigned(vkBindImageMemory2KHR) then begin
   @vkBindImageMemory2KHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkBindImageMemory2KHR'));
   @vk.fCommands.BindImageMemory2KHR:=addr(vkBindImageMemory2KHR);
  end;
  if not assigned(vkCmdSetDeviceMask) then begin
   @vkCmdSetDeviceMask:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetDeviceMask'));
   @vk.fCommands.CmdSetDeviceMask:=addr(vkCmdSetDeviceMask);
  end;
  if not assigned(vkCmdSetDeviceMaskKHR) then begin
   @vkCmdSetDeviceMaskKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetDeviceMaskKHR'));
   @vk.fCommands.CmdSetDeviceMaskKHR:=addr(vkCmdSetDeviceMaskKHR);
  end;
  if not assigned(vkGetDeviceGroupPresentCapabilitiesKHR) then begin
   @vkGetDeviceGroupPresentCapabilitiesKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetDeviceGroupPresentCapabilitiesKHR'));
   @vk.fCommands.GetDeviceGroupPresentCapabilitiesKHR:=addr(vkGetDeviceGroupPresentCapabilitiesKHR);
  end;
  if not assigned(vkGetDeviceGroupSurfacePresentModesKHR) then begin
   @vkGetDeviceGroupSurfacePresentModesKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetDeviceGroupSurfacePresentModesKHR'));
   @vk.fCommands.GetDeviceGroupSurfacePresentModesKHR:=addr(vkGetDeviceGroupSurfacePresentModesKHR);
  end;
  if not assigned(vkAcquireNextImage2KHR) then begin
   @vkAcquireNextImage2KHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkAcquireNextImage2KHR'));
   @vk.fCommands.AcquireNextImage2KHR:=addr(vkAcquireNextImage2KHR);
  end;
  if not assigned(vkCmdDispatchBase) then begin
   @vkCmdDispatchBase:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdDispatchBase'));
   @vk.fCommands.CmdDispatchBase:=addr(vkCmdDispatchBase);
  end;
  if not assigned(vkCmdDispatchBaseKHR) then begin
   @vkCmdDispatchBaseKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdDispatchBaseKHR'));
   @vk.fCommands.CmdDispatchBaseKHR:=addr(vkCmdDispatchBaseKHR);
  end;
  if not assigned(vkGetPhysicalDevicePresentRectanglesKHR) then begin
   @vkGetPhysicalDevicePresentRectanglesKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDevicePresentRectanglesKHR'));
   @vk.fCommands.GetPhysicalDevicePresentRectanglesKHR:=addr(vkGetPhysicalDevicePresentRectanglesKHR);
  end;
  if not assigned(vkCreateDescriptorUpdateTemplate) then begin
   @vkCreateDescriptorUpdateTemplate:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateDescriptorUpdateTemplate'));
   @vk.fCommands.CreateDescriptorUpdateTemplate:=addr(vkCreateDescriptorUpdateTemplate);
  end;
  if not assigned(vkCreateDescriptorUpdateTemplateKHR) then begin
   @vkCreateDescriptorUpdateTemplateKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateDescriptorUpdateTemplateKHR'));
   @vk.fCommands.CreateDescriptorUpdateTemplateKHR:=addr(vkCreateDescriptorUpdateTemplateKHR);
  end;
  if not assigned(vkDestroyDescriptorUpdateTemplate) then begin
   @vkDestroyDescriptorUpdateTemplate:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkDestroyDescriptorUpdateTemplate'));
   @vk.fCommands.DestroyDescriptorUpdateTemplate:=addr(vkDestroyDescriptorUpdateTemplate);
  end;
  if not assigned(vkDestroyDescriptorUpdateTemplateKHR) then begin
   @vkDestroyDescriptorUpdateTemplateKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkDestroyDescriptorUpdateTemplateKHR'));
   @vk.fCommands.DestroyDescriptorUpdateTemplateKHR:=addr(vkDestroyDescriptorUpdateTemplateKHR);
  end;
  if not assigned(vkUpdateDescriptorSetWithTemplate) then begin
   @vkUpdateDescriptorSetWithTemplate:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkUpdateDescriptorSetWithTemplate'));
   @vk.fCommands.UpdateDescriptorSetWithTemplate:=addr(vkUpdateDescriptorSetWithTemplate);
  end;
  if not assigned(vkUpdateDescriptorSetWithTemplateKHR) then begin
   @vkUpdateDescriptorSetWithTemplateKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkUpdateDescriptorSetWithTemplateKHR'));
   @vk.fCommands.UpdateDescriptorSetWithTemplateKHR:=addr(vkUpdateDescriptorSetWithTemplateKHR);
  end;
  if not assigned(vkCmdPushDescriptorSetWithTemplateKHR) then begin
   @vkCmdPushDescriptorSetWithTemplateKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdPushDescriptorSetWithTemplateKHR'));
   @vk.fCommands.CmdPushDescriptorSetWithTemplateKHR:=addr(vkCmdPushDescriptorSetWithTemplateKHR);
  end;
  if not assigned(vkSetHdrMetadataEXT) then begin
   @vkSetHdrMetadataEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkSetHdrMetadataEXT'));
   @vk.fCommands.SetHdrMetadataEXT:=addr(vkSetHdrMetadataEXT);
  end;
  if not assigned(vkGetSwapchainStatusKHR) then begin
   @vkGetSwapchainStatusKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetSwapchainStatusKHR'));
   @vk.fCommands.GetSwapchainStatusKHR:=addr(vkGetSwapchainStatusKHR);
  end;
  if not assigned(vkGetRefreshCycleDurationGOOGLE) then begin
   @vkGetRefreshCycleDurationGOOGLE:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetRefreshCycleDurationGOOGLE'));
   @vk.fCommands.GetRefreshCycleDurationGOOGLE:=addr(vkGetRefreshCycleDurationGOOGLE);
  end;
  if not assigned(vkGetPastPresentationTimingGOOGLE) then begin
   @vkGetPastPresentationTimingGOOGLE:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPastPresentationTimingGOOGLE'));
   @vk.fCommands.GetPastPresentationTimingGOOGLE:=addr(vkGetPastPresentationTimingGOOGLE);
  end;
{$ifdef MoltenVK_IOS}
  if not assigned(vkCreateIOSSurfaceMVK) then begin
   @vkCreateIOSSurfaceMVK:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateIOSSurfaceMVK'));
   @vk.fCommands.CreateIOSSurfaceMVK:=addr(vkCreateIOSSurfaceMVK);
  end;
{$endif}
{$ifdef MoltenVK_MacOS}
  if not assigned(vkCreateMacOSSurfaceMVK) then begin
   @vkCreateMacOSSurfaceMVK:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateMacOSSurfaceMVK'));
   @vk.fCommands.CreateMacOSSurfaceMVK:=addr(vkCreateMacOSSurfaceMVK);
  end;
{$endif}
  if not assigned(vkCreateMetalSurfaceEXT) then begin
   @vkCreateMetalSurfaceEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateMetalSurfaceEXT'));
   @vk.fCommands.CreateMetalSurfaceEXT:=addr(vkCreateMetalSurfaceEXT);
  end;
  if not assigned(vkCmdSetViewportWScalingNV) then begin
   @vkCmdSetViewportWScalingNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetViewportWScalingNV'));
   @vk.fCommands.CmdSetViewportWScalingNV:=addr(vkCmdSetViewportWScalingNV);
  end;
  if not assigned(vkCmdSetDiscardRectangleEXT) then begin
   @vkCmdSetDiscardRectangleEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetDiscardRectangleEXT'));
   @vk.fCommands.CmdSetDiscardRectangleEXT:=addr(vkCmdSetDiscardRectangleEXT);
  end;
  if not assigned(vkCmdSetDiscardRectangleEnableEXT) then begin
   @vkCmdSetDiscardRectangleEnableEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetDiscardRectangleEnableEXT'));
   @vk.fCommands.CmdSetDiscardRectangleEnableEXT:=addr(vkCmdSetDiscardRectangleEnableEXT);
  end;
  if not assigned(vkCmdSetDiscardRectangleModeEXT) then begin
   @vkCmdSetDiscardRectangleModeEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetDiscardRectangleModeEXT'));
   @vk.fCommands.CmdSetDiscardRectangleModeEXT:=addr(vkCmdSetDiscardRectangleModeEXT);
  end;
  if not assigned(vkCmdSetSampleLocationsEXT) then begin
   @vkCmdSetSampleLocationsEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetSampleLocationsEXT'));
   @vk.fCommands.CmdSetSampleLocationsEXT:=addr(vkCmdSetSampleLocationsEXT);
  end;
  if not assigned(vkGetPhysicalDeviceMultisamplePropertiesEXT) then begin
   @vkGetPhysicalDeviceMultisamplePropertiesEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceMultisamplePropertiesEXT'));
   @vk.fCommands.GetPhysicalDeviceMultisamplePropertiesEXT:=addr(vkGetPhysicalDeviceMultisamplePropertiesEXT);
  end;
  if not assigned(vkGetPhysicalDeviceSurfaceCapabilities2KHR) then begin
   @vkGetPhysicalDeviceSurfaceCapabilities2KHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceSurfaceCapabilities2KHR'));
   @vk.fCommands.GetPhysicalDeviceSurfaceCapabilities2KHR:=addr(vkGetPhysicalDeviceSurfaceCapabilities2KHR);
  end;
  if not assigned(vkGetPhysicalDeviceSurfaceFormats2KHR) then begin
   @vkGetPhysicalDeviceSurfaceFormats2KHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceSurfaceFormats2KHR'));
   @vk.fCommands.GetPhysicalDeviceSurfaceFormats2KHR:=addr(vkGetPhysicalDeviceSurfaceFormats2KHR);
  end;
  if not assigned(vkGetPhysicalDeviceDisplayProperties2KHR) then begin
   @vkGetPhysicalDeviceDisplayProperties2KHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceDisplayProperties2KHR'));
   @vk.fCommands.GetPhysicalDeviceDisplayProperties2KHR:=addr(vkGetPhysicalDeviceDisplayProperties2KHR);
  end;
  if not assigned(vkGetPhysicalDeviceDisplayPlaneProperties2KHR) then begin
   @vkGetPhysicalDeviceDisplayPlaneProperties2KHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceDisplayPlaneProperties2KHR'));
   @vk.fCommands.GetPhysicalDeviceDisplayPlaneProperties2KHR:=addr(vkGetPhysicalDeviceDisplayPlaneProperties2KHR);
  end;
  if not assigned(vkGetDisplayModeProperties2KHR) then begin
   @vkGetDisplayModeProperties2KHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetDisplayModeProperties2KHR'));
   @vk.fCommands.GetDisplayModeProperties2KHR:=addr(vkGetDisplayModeProperties2KHR);
  end;
  if not assigned(vkGetDisplayPlaneCapabilities2KHR) then begin
   @vkGetDisplayPlaneCapabilities2KHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetDisplayPlaneCapabilities2KHR'));
   @vk.fCommands.GetDisplayPlaneCapabilities2KHR:=addr(vkGetDisplayPlaneCapabilities2KHR);
  end;
  if not assigned(vkGetBufferMemoryRequirements2) then begin
   @vkGetBufferMemoryRequirements2:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetBufferMemoryRequirements2'));
   @vk.fCommands.GetBufferMemoryRequirements2:=addr(vkGetBufferMemoryRequirements2);
  end;
  if not assigned(vkGetBufferMemoryRequirements2KHR) then begin
   @vkGetBufferMemoryRequirements2KHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetBufferMemoryRequirements2KHR'));
   @vk.fCommands.GetBufferMemoryRequirements2KHR:=addr(vkGetBufferMemoryRequirements2KHR);
  end;
  if not assigned(vkGetImageMemoryRequirements2) then begin
   @vkGetImageMemoryRequirements2:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetImageMemoryRequirements2'));
   @vk.fCommands.GetImageMemoryRequirements2:=addr(vkGetImageMemoryRequirements2);
  end;
  if not assigned(vkGetImageMemoryRequirements2KHR) then begin
   @vkGetImageMemoryRequirements2KHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetImageMemoryRequirements2KHR'));
   @vk.fCommands.GetImageMemoryRequirements2KHR:=addr(vkGetImageMemoryRequirements2KHR);
  end;
  if not assigned(vkGetImageSparseMemoryRequirements2) then begin
   @vkGetImageSparseMemoryRequirements2:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetImageSparseMemoryRequirements2'));
   @vk.fCommands.GetImageSparseMemoryRequirements2:=addr(vkGetImageSparseMemoryRequirements2);
  end;
  if not assigned(vkGetImageSparseMemoryRequirements2KHR) then begin
   @vkGetImageSparseMemoryRequirements2KHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetImageSparseMemoryRequirements2KHR'));
   @vk.fCommands.GetImageSparseMemoryRequirements2KHR:=addr(vkGetImageSparseMemoryRequirements2KHR);
  end;
  if not assigned(vkGetDeviceBufferMemoryRequirements) then begin
   @vkGetDeviceBufferMemoryRequirements:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetDeviceBufferMemoryRequirements'));
   @vk.fCommands.GetDeviceBufferMemoryRequirements:=addr(vkGetDeviceBufferMemoryRequirements);
  end;
  if not assigned(vkGetDeviceBufferMemoryRequirementsKHR) then begin
   @vkGetDeviceBufferMemoryRequirementsKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetDeviceBufferMemoryRequirementsKHR'));
   @vk.fCommands.GetDeviceBufferMemoryRequirementsKHR:=addr(vkGetDeviceBufferMemoryRequirementsKHR);
  end;
  if not assigned(vkGetDeviceImageMemoryRequirements) then begin
   @vkGetDeviceImageMemoryRequirements:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetDeviceImageMemoryRequirements'));
   @vk.fCommands.GetDeviceImageMemoryRequirements:=addr(vkGetDeviceImageMemoryRequirements);
  end;
  if not assigned(vkGetDeviceImageMemoryRequirementsKHR) then begin
   @vkGetDeviceImageMemoryRequirementsKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetDeviceImageMemoryRequirementsKHR'));
   @vk.fCommands.GetDeviceImageMemoryRequirementsKHR:=addr(vkGetDeviceImageMemoryRequirementsKHR);
  end;
  if not assigned(vkGetDeviceImageSparseMemoryRequirements) then begin
   @vkGetDeviceImageSparseMemoryRequirements:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetDeviceImageSparseMemoryRequirements'));
   @vk.fCommands.GetDeviceImageSparseMemoryRequirements:=addr(vkGetDeviceImageSparseMemoryRequirements);
  end;
  if not assigned(vkGetDeviceImageSparseMemoryRequirementsKHR) then begin
   @vkGetDeviceImageSparseMemoryRequirementsKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetDeviceImageSparseMemoryRequirementsKHR'));
   @vk.fCommands.GetDeviceImageSparseMemoryRequirementsKHR:=addr(vkGetDeviceImageSparseMemoryRequirementsKHR);
  end;
  if not assigned(vkCreateSamplerYcbcrConversion) then begin
   @vkCreateSamplerYcbcrConversion:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateSamplerYcbcrConversion'));
   @vk.fCommands.CreateSamplerYcbcrConversion:=addr(vkCreateSamplerYcbcrConversion);
  end;
  if not assigned(vkCreateSamplerYcbcrConversionKHR) then begin
   @vkCreateSamplerYcbcrConversionKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateSamplerYcbcrConversionKHR'));
   @vk.fCommands.CreateSamplerYcbcrConversionKHR:=addr(vkCreateSamplerYcbcrConversionKHR);
  end;
  if not assigned(vkDestroySamplerYcbcrConversion) then begin
   @vkDestroySamplerYcbcrConversion:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkDestroySamplerYcbcrConversion'));
   @vk.fCommands.DestroySamplerYcbcrConversion:=addr(vkDestroySamplerYcbcrConversion);
  end;
  if not assigned(vkDestroySamplerYcbcrConversionKHR) then begin
   @vkDestroySamplerYcbcrConversionKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkDestroySamplerYcbcrConversionKHR'));
   @vk.fCommands.DestroySamplerYcbcrConversionKHR:=addr(vkDestroySamplerYcbcrConversionKHR);
  end;
  if not assigned(vkGetDeviceQueue2) then begin
   @vkGetDeviceQueue2:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetDeviceQueue2'));
   @vk.fCommands.GetDeviceQueue2:=addr(vkGetDeviceQueue2);
  end;
  if not assigned(vkCreateValidationCacheEXT) then begin
   @vkCreateValidationCacheEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateValidationCacheEXT'));
   @vk.fCommands.CreateValidationCacheEXT:=addr(vkCreateValidationCacheEXT);
  end;
  if not assigned(vkDestroyValidationCacheEXT) then begin
   @vkDestroyValidationCacheEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkDestroyValidationCacheEXT'));
   @vk.fCommands.DestroyValidationCacheEXT:=addr(vkDestroyValidationCacheEXT);
  end;
  if not assigned(vkGetValidationCacheDataEXT) then begin
   @vkGetValidationCacheDataEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetValidationCacheDataEXT'));
   @vk.fCommands.GetValidationCacheDataEXT:=addr(vkGetValidationCacheDataEXT);
  end;
  if not assigned(vkMergeValidationCachesEXT) then begin
   @vkMergeValidationCachesEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkMergeValidationCachesEXT'));
   @vk.fCommands.MergeValidationCachesEXT:=addr(vkMergeValidationCachesEXT);
  end;
  if not assigned(vkGetDescriptorSetLayoutSupport) then begin
   @vkGetDescriptorSetLayoutSupport:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetDescriptorSetLayoutSupport'));
   @vk.fCommands.GetDescriptorSetLayoutSupport:=addr(vkGetDescriptorSetLayoutSupport);
  end;
  if not assigned(vkGetDescriptorSetLayoutSupportKHR) then begin
   @vkGetDescriptorSetLayoutSupportKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetDescriptorSetLayoutSupportKHR'));
   @vk.fCommands.GetDescriptorSetLayoutSupportKHR:=addr(vkGetDescriptorSetLayoutSupportKHR);
  end;
  if not assigned(vkGetSwapchainGrallocUsageANDROID) then begin
   @vkGetSwapchainGrallocUsageANDROID:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetSwapchainGrallocUsageANDROID'));
   @vk.fCommands.GetSwapchainGrallocUsageANDROID:=addr(vkGetSwapchainGrallocUsageANDROID);
  end;
{$ifdef Android}
  if not assigned(vkGetSwapchainGrallocUsage2ANDROID) then begin
   @vkGetSwapchainGrallocUsage2ANDROID:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetSwapchainGrallocUsage2ANDROID'));
   @vk.fCommands.GetSwapchainGrallocUsage2ANDROID:=addr(vkGetSwapchainGrallocUsage2ANDROID);
  end;
{$endif}
  if not assigned(vkAcquireImageANDROID) then begin
   @vkAcquireImageANDROID:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkAcquireImageANDROID'));
   @vk.fCommands.AcquireImageANDROID:=addr(vkAcquireImageANDROID);
  end;
  if not assigned(vkQueueSignalReleaseImageANDROID) then begin
   @vkQueueSignalReleaseImageANDROID:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkQueueSignalReleaseImageANDROID'));
   @vk.fCommands.QueueSignalReleaseImageANDROID:=addr(vkQueueSignalReleaseImageANDROID);
  end;
  if not assigned(vkGetShaderInfoAMD) then begin
   @vkGetShaderInfoAMD:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetShaderInfoAMD'));
   @vk.fCommands.GetShaderInfoAMD:=addr(vkGetShaderInfoAMD);
  end;
  if not assigned(vkSetLocalDimmingAMD) then begin
   @vkSetLocalDimmingAMD:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkSetLocalDimmingAMD'));
   @vk.fCommands.SetLocalDimmingAMD:=addr(vkSetLocalDimmingAMD);
  end;
  if not assigned(vkGetPhysicalDeviceCalibrateableTimeDomainsEXT) then begin
   @vkGetPhysicalDeviceCalibrateableTimeDomainsEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceCalibrateableTimeDomainsEXT'));
   @vk.fCommands.GetPhysicalDeviceCalibrateableTimeDomainsEXT:=addr(vkGetPhysicalDeviceCalibrateableTimeDomainsEXT);
  end;
  if not assigned(vkGetCalibratedTimestampsEXT) then begin
   @vkGetCalibratedTimestampsEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetCalibratedTimestampsEXT'));
   @vk.fCommands.GetCalibratedTimestampsEXT:=addr(vkGetCalibratedTimestampsEXT);
  end;
  if not assigned(vkSetDebugUtilsObjectNameEXT) then begin
   @vkSetDebugUtilsObjectNameEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkSetDebugUtilsObjectNameEXT'));
   @vk.fCommands.SetDebugUtilsObjectNameEXT:=addr(vkSetDebugUtilsObjectNameEXT);
  end;
  if not assigned(vkSetDebugUtilsObjectTagEXT) then begin
   @vkSetDebugUtilsObjectTagEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkSetDebugUtilsObjectTagEXT'));
   @vk.fCommands.SetDebugUtilsObjectTagEXT:=addr(vkSetDebugUtilsObjectTagEXT);
  end;
  if not assigned(vkQueueBeginDebugUtilsLabelEXT) then begin
   @vkQueueBeginDebugUtilsLabelEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkQueueBeginDebugUtilsLabelEXT'));
   @vk.fCommands.QueueBeginDebugUtilsLabelEXT:=addr(vkQueueBeginDebugUtilsLabelEXT);
  end;
  if not assigned(vkQueueEndDebugUtilsLabelEXT) then begin
   @vkQueueEndDebugUtilsLabelEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkQueueEndDebugUtilsLabelEXT'));
   @vk.fCommands.QueueEndDebugUtilsLabelEXT:=addr(vkQueueEndDebugUtilsLabelEXT);
  end;
  if not assigned(vkQueueInsertDebugUtilsLabelEXT) then begin
   @vkQueueInsertDebugUtilsLabelEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkQueueInsertDebugUtilsLabelEXT'));
   @vk.fCommands.QueueInsertDebugUtilsLabelEXT:=addr(vkQueueInsertDebugUtilsLabelEXT);
  end;
  if not assigned(vkCmdBeginDebugUtilsLabelEXT) then begin
   @vkCmdBeginDebugUtilsLabelEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdBeginDebugUtilsLabelEXT'));
   @vk.fCommands.CmdBeginDebugUtilsLabelEXT:=addr(vkCmdBeginDebugUtilsLabelEXT);
  end;
  if not assigned(vkCmdEndDebugUtilsLabelEXT) then begin
   @vkCmdEndDebugUtilsLabelEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdEndDebugUtilsLabelEXT'));
   @vk.fCommands.CmdEndDebugUtilsLabelEXT:=addr(vkCmdEndDebugUtilsLabelEXT);
  end;
  if not assigned(vkCmdInsertDebugUtilsLabelEXT) then begin
   @vkCmdInsertDebugUtilsLabelEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdInsertDebugUtilsLabelEXT'));
   @vk.fCommands.CmdInsertDebugUtilsLabelEXT:=addr(vkCmdInsertDebugUtilsLabelEXT);
  end;
  if not assigned(vkCreateDebugUtilsMessengerEXT) then begin
   @vkCreateDebugUtilsMessengerEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateDebugUtilsMessengerEXT'));
   @vk.fCommands.CreateDebugUtilsMessengerEXT:=addr(vkCreateDebugUtilsMessengerEXT);
  end;
  if not assigned(vkDestroyDebugUtilsMessengerEXT) then begin
   @vkDestroyDebugUtilsMessengerEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkDestroyDebugUtilsMessengerEXT'));
   @vk.fCommands.DestroyDebugUtilsMessengerEXT:=addr(vkDestroyDebugUtilsMessengerEXT);
  end;
  if not assigned(vkSubmitDebugUtilsMessageEXT) then begin
   @vkSubmitDebugUtilsMessageEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkSubmitDebugUtilsMessageEXT'));
   @vk.fCommands.SubmitDebugUtilsMessageEXT:=addr(vkSubmitDebugUtilsMessageEXT);
  end;
  if not assigned(vkGetMemoryHostPointerPropertiesEXT) then begin
   @vkGetMemoryHostPointerPropertiesEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetMemoryHostPointerPropertiesEXT'));
   @vk.fCommands.GetMemoryHostPointerPropertiesEXT:=addr(vkGetMemoryHostPointerPropertiesEXT);
  end;
  if not assigned(vkCmdWriteBufferMarkerAMD) then begin
   @vkCmdWriteBufferMarkerAMD:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdWriteBufferMarkerAMD'));
   @vk.fCommands.CmdWriteBufferMarkerAMD:=addr(vkCmdWriteBufferMarkerAMD);
  end;
  if not assigned(vkCreateRenderPass2) then begin
   @vkCreateRenderPass2:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateRenderPass2'));
   @vk.fCommands.CreateRenderPass2:=addr(vkCreateRenderPass2);
  end;
  if not assigned(vkCreateRenderPass2KHR) then begin
   @vkCreateRenderPass2KHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateRenderPass2KHR'));
   @vk.fCommands.CreateRenderPass2KHR:=addr(vkCreateRenderPass2KHR);
  end;
  if not assigned(vkCmdBeginRenderPass2) then begin
   @vkCmdBeginRenderPass2:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdBeginRenderPass2'));
   @vk.fCommands.CmdBeginRenderPass2:=addr(vkCmdBeginRenderPass2);
  end;
  if not assigned(vkCmdBeginRenderPass2KHR) then begin
   @vkCmdBeginRenderPass2KHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdBeginRenderPass2KHR'));
   @vk.fCommands.CmdBeginRenderPass2KHR:=addr(vkCmdBeginRenderPass2KHR);
  end;
  if not assigned(vkCmdNextSubpass2) then begin
   @vkCmdNextSubpass2:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdNextSubpass2'));
   @vk.fCommands.CmdNextSubpass2:=addr(vkCmdNextSubpass2);
  end;
  if not assigned(vkCmdNextSubpass2KHR) then begin
   @vkCmdNextSubpass2KHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdNextSubpass2KHR'));
   @vk.fCommands.CmdNextSubpass2KHR:=addr(vkCmdNextSubpass2KHR);
  end;
  if not assigned(vkCmdEndRenderPass2) then begin
   @vkCmdEndRenderPass2:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdEndRenderPass2'));
   @vk.fCommands.CmdEndRenderPass2:=addr(vkCmdEndRenderPass2);
  end;
  if not assigned(vkCmdEndRenderPass2KHR) then begin
   @vkCmdEndRenderPass2KHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdEndRenderPass2KHR'));
   @vk.fCommands.CmdEndRenderPass2KHR:=addr(vkCmdEndRenderPass2KHR);
  end;
  if not assigned(vkGetSemaphoreCounterValue) then begin
   @vkGetSemaphoreCounterValue:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetSemaphoreCounterValue'));
   @vk.fCommands.GetSemaphoreCounterValue:=addr(vkGetSemaphoreCounterValue);
  end;
  if not assigned(vkGetSemaphoreCounterValueKHR) then begin
   @vkGetSemaphoreCounterValueKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetSemaphoreCounterValueKHR'));
   @vk.fCommands.GetSemaphoreCounterValueKHR:=addr(vkGetSemaphoreCounterValueKHR);
  end;
  if not assigned(vkWaitSemaphores) then begin
   @vkWaitSemaphores:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkWaitSemaphores'));
   @vk.fCommands.WaitSemaphores:=addr(vkWaitSemaphores);
  end;
  if not assigned(vkWaitSemaphoresKHR) then begin
   @vkWaitSemaphoresKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkWaitSemaphoresKHR'));
   @vk.fCommands.WaitSemaphoresKHR:=addr(vkWaitSemaphoresKHR);
  end;
  if not assigned(vkSignalSemaphore) then begin
   @vkSignalSemaphore:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkSignalSemaphore'));
   @vk.fCommands.SignalSemaphore:=addr(vkSignalSemaphore);
  end;
  if not assigned(vkSignalSemaphoreKHR) then begin
   @vkSignalSemaphoreKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkSignalSemaphoreKHR'));
   @vk.fCommands.SignalSemaphoreKHR:=addr(vkSignalSemaphoreKHR);
  end;
{$ifdef Android}
  if not assigned(vkGetAndroidHardwareBufferPropertiesANDROID) then begin
   @vkGetAndroidHardwareBufferPropertiesANDROID:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetAndroidHardwareBufferPropertiesANDROID'));
   @vk.fCommands.GetAndroidHardwareBufferPropertiesANDROID:=addr(vkGetAndroidHardwareBufferPropertiesANDROID);
  end;
{$endif}
{$ifdef Android}
  if not assigned(vkGetMemoryAndroidHardwareBufferANDROID) then begin
   @vkGetMemoryAndroidHardwareBufferANDROID:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetMemoryAndroidHardwareBufferANDROID'));
   @vk.fCommands.GetMemoryAndroidHardwareBufferANDROID:=addr(vkGetMemoryAndroidHardwareBufferANDROID);
  end;
{$endif}
  if not assigned(vkCmdDrawIndirectCount) then begin
   @vkCmdDrawIndirectCount:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdDrawIndirectCount'));
   @vk.fCommands.CmdDrawIndirectCount:=addr(vkCmdDrawIndirectCount);
  end;
  if not assigned(vkCmdDrawIndirectCountKHR) then begin
   @vkCmdDrawIndirectCountKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdDrawIndirectCountKHR'));
   @vk.fCommands.CmdDrawIndirectCountKHR:=addr(vkCmdDrawIndirectCountKHR);
  end;
  if not assigned(vkCmdDrawIndirectCountAMD) then begin
   @vkCmdDrawIndirectCountAMD:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdDrawIndirectCountAMD'));
   @vk.fCommands.CmdDrawIndirectCountAMD:=addr(vkCmdDrawIndirectCountAMD);
  end;
  if not assigned(vkCmdDrawIndexedIndirectCount) then begin
   @vkCmdDrawIndexedIndirectCount:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdDrawIndexedIndirectCount'));
   @vk.fCommands.CmdDrawIndexedIndirectCount:=addr(vkCmdDrawIndexedIndirectCount);
  end;
  if not assigned(vkCmdDrawIndexedIndirectCountKHR) then begin
   @vkCmdDrawIndexedIndirectCountKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdDrawIndexedIndirectCountKHR'));
   @vk.fCommands.CmdDrawIndexedIndirectCountKHR:=addr(vkCmdDrawIndexedIndirectCountKHR);
  end;
  if not assigned(vkCmdDrawIndexedIndirectCountAMD) then begin
   @vkCmdDrawIndexedIndirectCountAMD:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdDrawIndexedIndirectCountAMD'));
   @vk.fCommands.CmdDrawIndexedIndirectCountAMD:=addr(vkCmdDrawIndexedIndirectCountAMD);
  end;
  if not assigned(vkCmdSetCheckpointNV) then begin
   @vkCmdSetCheckpointNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetCheckpointNV'));
   @vk.fCommands.CmdSetCheckpointNV:=addr(vkCmdSetCheckpointNV);
  end;
  if not assigned(vkGetQueueCheckpointDataNV) then begin
   @vkGetQueueCheckpointDataNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetQueueCheckpointDataNV'));
   @vk.fCommands.GetQueueCheckpointDataNV:=addr(vkGetQueueCheckpointDataNV);
  end;
  if not assigned(vkCmdBindTransformFeedbackBuffersEXT) then begin
   @vkCmdBindTransformFeedbackBuffersEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdBindTransformFeedbackBuffersEXT'));
   @vk.fCommands.CmdBindTransformFeedbackBuffersEXT:=addr(vkCmdBindTransformFeedbackBuffersEXT);
  end;
  if not assigned(vkCmdBeginTransformFeedbackEXT) then begin
   @vkCmdBeginTransformFeedbackEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdBeginTransformFeedbackEXT'));
   @vk.fCommands.CmdBeginTransformFeedbackEXT:=addr(vkCmdBeginTransformFeedbackEXT);
  end;
  if not assigned(vkCmdEndTransformFeedbackEXT) then begin
   @vkCmdEndTransformFeedbackEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdEndTransformFeedbackEXT'));
   @vk.fCommands.CmdEndTransformFeedbackEXT:=addr(vkCmdEndTransformFeedbackEXT);
  end;
  if not assigned(vkCmdBeginQueryIndexedEXT) then begin
   @vkCmdBeginQueryIndexedEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdBeginQueryIndexedEXT'));
   @vk.fCommands.CmdBeginQueryIndexedEXT:=addr(vkCmdBeginQueryIndexedEXT);
  end;
  if not assigned(vkCmdEndQueryIndexedEXT) then begin
   @vkCmdEndQueryIndexedEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdEndQueryIndexedEXT'));
   @vk.fCommands.CmdEndQueryIndexedEXT:=addr(vkCmdEndQueryIndexedEXT);
  end;
  if not assigned(vkCmdDrawIndirectByteCountEXT) then begin
   @vkCmdDrawIndirectByteCountEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdDrawIndirectByteCountEXT'));
   @vk.fCommands.CmdDrawIndirectByteCountEXT:=addr(vkCmdDrawIndirectByteCountEXT);
  end;
  if not assigned(vkCmdSetExclusiveScissorNV) then begin
   @vkCmdSetExclusiveScissorNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetExclusiveScissorNV'));
   @vk.fCommands.CmdSetExclusiveScissorNV:=addr(vkCmdSetExclusiveScissorNV);
  end;
  if not assigned(vkCmdSetExclusiveScissorEnableNV) then begin
   @vkCmdSetExclusiveScissorEnableNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetExclusiveScissorEnableNV'));
   @vk.fCommands.CmdSetExclusiveScissorEnableNV:=addr(vkCmdSetExclusiveScissorEnableNV);
  end;
  if not assigned(vkCmdBindShadingRateImageNV) then begin
   @vkCmdBindShadingRateImageNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdBindShadingRateImageNV'));
   @vk.fCommands.CmdBindShadingRateImageNV:=addr(vkCmdBindShadingRateImageNV);
  end;
  if not assigned(vkCmdSetViewportShadingRatePaletteNV) then begin
   @vkCmdSetViewportShadingRatePaletteNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetViewportShadingRatePaletteNV'));
   @vk.fCommands.CmdSetViewportShadingRatePaletteNV:=addr(vkCmdSetViewportShadingRatePaletteNV);
  end;
  if not assigned(vkCmdSetCoarseSampleOrderNV) then begin
   @vkCmdSetCoarseSampleOrderNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetCoarseSampleOrderNV'));
   @vk.fCommands.CmdSetCoarseSampleOrderNV:=addr(vkCmdSetCoarseSampleOrderNV);
  end;
  if not assigned(vkCmdDrawMeshTasksNV) then begin
   @vkCmdDrawMeshTasksNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdDrawMeshTasksNV'));
   @vk.fCommands.CmdDrawMeshTasksNV:=addr(vkCmdDrawMeshTasksNV);
  end;
  if not assigned(vkCmdDrawMeshTasksIndirectNV) then begin
   @vkCmdDrawMeshTasksIndirectNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdDrawMeshTasksIndirectNV'));
   @vk.fCommands.CmdDrawMeshTasksIndirectNV:=addr(vkCmdDrawMeshTasksIndirectNV);
  end;
  if not assigned(vkCmdDrawMeshTasksIndirectCountNV) then begin
   @vkCmdDrawMeshTasksIndirectCountNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdDrawMeshTasksIndirectCountNV'));
   @vk.fCommands.CmdDrawMeshTasksIndirectCountNV:=addr(vkCmdDrawMeshTasksIndirectCountNV);
  end;
  if not assigned(vkCmdDrawMeshTasksEXT) then begin
   @vkCmdDrawMeshTasksEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdDrawMeshTasksEXT'));
   @vk.fCommands.CmdDrawMeshTasksEXT:=addr(vkCmdDrawMeshTasksEXT);
  end;
  if not assigned(vkCmdDrawMeshTasksIndirectEXT) then begin
   @vkCmdDrawMeshTasksIndirectEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdDrawMeshTasksIndirectEXT'));
   @vk.fCommands.CmdDrawMeshTasksIndirectEXT:=addr(vkCmdDrawMeshTasksIndirectEXT);
  end;
  if not assigned(vkCmdDrawMeshTasksIndirectCountEXT) then begin
   @vkCmdDrawMeshTasksIndirectCountEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdDrawMeshTasksIndirectCountEXT'));
   @vk.fCommands.CmdDrawMeshTasksIndirectCountEXT:=addr(vkCmdDrawMeshTasksIndirectCountEXT);
  end;
  if not assigned(vkCompileDeferredNV) then begin
   @vkCompileDeferredNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCompileDeferredNV'));
   @vk.fCommands.CompileDeferredNV:=addr(vkCompileDeferredNV);
  end;
  if not assigned(vkCreateAccelerationStructureNV) then begin
   @vkCreateAccelerationStructureNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateAccelerationStructureNV'));
   @vk.fCommands.CreateAccelerationStructureNV:=addr(vkCreateAccelerationStructureNV);
  end;
  if not assigned(vkCmdBindInvocationMaskHUAWEI) then begin
   @vkCmdBindInvocationMaskHUAWEI:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdBindInvocationMaskHUAWEI'));
   @vk.fCommands.CmdBindInvocationMaskHUAWEI:=addr(vkCmdBindInvocationMaskHUAWEI);
  end;
  if not assigned(vkDestroyAccelerationStructureKHR) then begin
   @vkDestroyAccelerationStructureKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkDestroyAccelerationStructureKHR'));
   @vk.fCommands.DestroyAccelerationStructureKHR:=addr(vkDestroyAccelerationStructureKHR);
  end;
  if not assigned(vkDestroyAccelerationStructureNV) then begin
   @vkDestroyAccelerationStructureNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkDestroyAccelerationStructureNV'));
   @vk.fCommands.DestroyAccelerationStructureNV:=addr(vkDestroyAccelerationStructureNV);
  end;
  if not assigned(vkGetAccelerationStructureMemoryRequirementsNV) then begin
   @vkGetAccelerationStructureMemoryRequirementsNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetAccelerationStructureMemoryRequirementsNV'));
   @vk.fCommands.GetAccelerationStructureMemoryRequirementsNV:=addr(vkGetAccelerationStructureMemoryRequirementsNV);
  end;
  if not assigned(vkBindAccelerationStructureMemoryNV) then begin
   @vkBindAccelerationStructureMemoryNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkBindAccelerationStructureMemoryNV'));
   @vk.fCommands.BindAccelerationStructureMemoryNV:=addr(vkBindAccelerationStructureMemoryNV);
  end;
  if not assigned(vkCmdCopyAccelerationStructureNV) then begin
   @vkCmdCopyAccelerationStructureNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdCopyAccelerationStructureNV'));
   @vk.fCommands.CmdCopyAccelerationStructureNV:=addr(vkCmdCopyAccelerationStructureNV);
  end;
  if not assigned(vkCmdCopyAccelerationStructureKHR) then begin
   @vkCmdCopyAccelerationStructureKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdCopyAccelerationStructureKHR'));
   @vk.fCommands.CmdCopyAccelerationStructureKHR:=addr(vkCmdCopyAccelerationStructureKHR);
  end;
  if not assigned(vkCopyAccelerationStructureKHR) then begin
   @vkCopyAccelerationStructureKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCopyAccelerationStructureKHR'));
   @vk.fCommands.CopyAccelerationStructureKHR:=addr(vkCopyAccelerationStructureKHR);
  end;
  if not assigned(vkCmdCopyAccelerationStructureToMemoryKHR) then begin
   @vkCmdCopyAccelerationStructureToMemoryKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdCopyAccelerationStructureToMemoryKHR'));
   @vk.fCommands.CmdCopyAccelerationStructureToMemoryKHR:=addr(vkCmdCopyAccelerationStructureToMemoryKHR);
  end;
  if not assigned(vkCopyAccelerationStructureToMemoryKHR) then begin
   @vkCopyAccelerationStructureToMemoryKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCopyAccelerationStructureToMemoryKHR'));
   @vk.fCommands.CopyAccelerationStructureToMemoryKHR:=addr(vkCopyAccelerationStructureToMemoryKHR);
  end;
  if not assigned(vkCmdCopyMemoryToAccelerationStructureKHR) then begin
   @vkCmdCopyMemoryToAccelerationStructureKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdCopyMemoryToAccelerationStructureKHR'));
   @vk.fCommands.CmdCopyMemoryToAccelerationStructureKHR:=addr(vkCmdCopyMemoryToAccelerationStructureKHR);
  end;
  if not assigned(vkCopyMemoryToAccelerationStructureKHR) then begin
   @vkCopyMemoryToAccelerationStructureKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCopyMemoryToAccelerationStructureKHR'));
   @vk.fCommands.CopyMemoryToAccelerationStructureKHR:=addr(vkCopyMemoryToAccelerationStructureKHR);
  end;
  if not assigned(vkCmdWriteAccelerationStructuresPropertiesKHR) then begin
   @vkCmdWriteAccelerationStructuresPropertiesKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdWriteAccelerationStructuresPropertiesKHR'));
   @vk.fCommands.CmdWriteAccelerationStructuresPropertiesKHR:=addr(vkCmdWriteAccelerationStructuresPropertiesKHR);
  end;
  if not assigned(vkCmdWriteAccelerationStructuresPropertiesNV) then begin
   @vkCmdWriteAccelerationStructuresPropertiesNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdWriteAccelerationStructuresPropertiesNV'));
   @vk.fCommands.CmdWriteAccelerationStructuresPropertiesNV:=addr(vkCmdWriteAccelerationStructuresPropertiesNV);
  end;
  if not assigned(vkCmdBuildAccelerationStructureNV) then begin
   @vkCmdBuildAccelerationStructureNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdBuildAccelerationStructureNV'));
   @vk.fCommands.CmdBuildAccelerationStructureNV:=addr(vkCmdBuildAccelerationStructureNV);
  end;
  if not assigned(vkWriteAccelerationStructuresPropertiesKHR) then begin
   @vkWriteAccelerationStructuresPropertiesKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkWriteAccelerationStructuresPropertiesKHR'));
   @vk.fCommands.WriteAccelerationStructuresPropertiesKHR:=addr(vkWriteAccelerationStructuresPropertiesKHR);
  end;
  if not assigned(vkCmdTraceRaysKHR) then begin
   @vkCmdTraceRaysKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdTraceRaysKHR'));
   @vk.fCommands.CmdTraceRaysKHR:=addr(vkCmdTraceRaysKHR);
  end;
  if not assigned(vkCmdTraceRaysNV) then begin
   @vkCmdTraceRaysNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdTraceRaysNV'));
   @vk.fCommands.CmdTraceRaysNV:=addr(vkCmdTraceRaysNV);
  end;
  if not assigned(vkGetRayTracingShaderGroupHandlesKHR) then begin
   @vkGetRayTracingShaderGroupHandlesKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetRayTracingShaderGroupHandlesKHR'));
   @vk.fCommands.GetRayTracingShaderGroupHandlesKHR:=addr(vkGetRayTracingShaderGroupHandlesKHR);
  end;
  if not assigned(vkGetRayTracingShaderGroupHandlesNV) then begin
   @vkGetRayTracingShaderGroupHandlesNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetRayTracingShaderGroupHandlesNV'));
   @vk.fCommands.GetRayTracingShaderGroupHandlesNV:=addr(vkGetRayTracingShaderGroupHandlesNV);
  end;
  if not assigned(vkGetRayTracingCaptureReplayShaderGroupHandlesKHR) then begin
   @vkGetRayTracingCaptureReplayShaderGroupHandlesKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetRayTracingCaptureReplayShaderGroupHandlesKHR'));
   @vk.fCommands.GetRayTracingCaptureReplayShaderGroupHandlesKHR:=addr(vkGetRayTracingCaptureReplayShaderGroupHandlesKHR);
  end;
  if not assigned(vkGetAccelerationStructureHandleNV) then begin
   @vkGetAccelerationStructureHandleNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetAccelerationStructureHandleNV'));
   @vk.fCommands.GetAccelerationStructureHandleNV:=addr(vkGetAccelerationStructureHandleNV);
  end;
  if not assigned(vkCreateRayTracingPipelinesNV) then begin
   @vkCreateRayTracingPipelinesNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateRayTracingPipelinesNV'));
   @vk.fCommands.CreateRayTracingPipelinesNV:=addr(vkCreateRayTracingPipelinesNV);
  end;
  if not assigned(vkCreateRayTracingPipelinesKHR) then begin
   @vkCreateRayTracingPipelinesKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateRayTracingPipelinesKHR'));
   @vk.fCommands.CreateRayTracingPipelinesKHR:=addr(vkCreateRayTracingPipelinesKHR);
  end;
  if not assigned(vkGetPhysicalDeviceCooperativeMatrixPropertiesNV) then begin
   @vkGetPhysicalDeviceCooperativeMatrixPropertiesNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceCooperativeMatrixPropertiesNV'));
   @vk.fCommands.GetPhysicalDeviceCooperativeMatrixPropertiesNV:=addr(vkGetPhysicalDeviceCooperativeMatrixPropertiesNV);
  end;
  if not assigned(vkCmdTraceRaysIndirectKHR) then begin
   @vkCmdTraceRaysIndirectKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdTraceRaysIndirectKHR'));
   @vk.fCommands.CmdTraceRaysIndirectKHR:=addr(vkCmdTraceRaysIndirectKHR);
  end;
  if not assigned(vkCmdTraceRaysIndirect2KHR) then begin
   @vkCmdTraceRaysIndirect2KHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdTraceRaysIndirect2KHR'));
   @vk.fCommands.CmdTraceRaysIndirect2KHR:=addr(vkCmdTraceRaysIndirect2KHR);
  end;
  if not assigned(vkGetDeviceAccelerationStructureCompatibilityKHR) then begin
   @vkGetDeviceAccelerationStructureCompatibilityKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetDeviceAccelerationStructureCompatibilityKHR'));
   @vk.fCommands.GetDeviceAccelerationStructureCompatibilityKHR:=addr(vkGetDeviceAccelerationStructureCompatibilityKHR);
  end;
  if not assigned(vkGetRayTracingShaderGroupStackSizeKHR) then begin
   @vkGetRayTracingShaderGroupStackSizeKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetRayTracingShaderGroupStackSizeKHR'));
   @vk.fCommands.GetRayTracingShaderGroupStackSizeKHR:=addr(vkGetRayTracingShaderGroupStackSizeKHR);
  end;
  if not assigned(vkCmdSetRayTracingPipelineStackSizeKHR) then begin
   @vkCmdSetRayTracingPipelineStackSizeKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetRayTracingPipelineStackSizeKHR'));
   @vk.fCommands.CmdSetRayTracingPipelineStackSizeKHR:=addr(vkCmdSetRayTracingPipelineStackSizeKHR);
  end;
  if not assigned(vkGetImageViewHandleNVX) then begin
   @vkGetImageViewHandleNVX:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetImageViewHandleNVX'));
   @vk.fCommands.GetImageViewHandleNVX:=addr(vkGetImageViewHandleNVX);
  end;
  if not assigned(vkGetImageViewAddressNVX) then begin
   @vkGetImageViewAddressNVX:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetImageViewAddressNVX'));
   @vk.fCommands.GetImageViewAddressNVX:=addr(vkGetImageViewAddressNVX);
  end;
  if not assigned(vkGetPhysicalDeviceSurfacePresentModes2EXT) then begin
   @vkGetPhysicalDeviceSurfacePresentModes2EXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceSurfacePresentModes2EXT'));
   @vk.fCommands.GetPhysicalDeviceSurfacePresentModes2EXT:=addr(vkGetPhysicalDeviceSurfacePresentModes2EXT);
  end;
  if not assigned(vkGetDeviceGroupSurfacePresentModes2EXT) then begin
   @vkGetDeviceGroupSurfacePresentModes2EXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetDeviceGroupSurfacePresentModes2EXT'));
   @vk.fCommands.GetDeviceGroupSurfacePresentModes2EXT:=addr(vkGetDeviceGroupSurfacePresentModes2EXT);
  end;
  if not assigned(vkAcquireFullScreenExclusiveModeEXT) then begin
   @vkAcquireFullScreenExclusiveModeEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkAcquireFullScreenExclusiveModeEXT'));
   @vk.fCommands.AcquireFullScreenExclusiveModeEXT:=addr(vkAcquireFullScreenExclusiveModeEXT);
  end;
  if not assigned(vkReleaseFullScreenExclusiveModeEXT) then begin
   @vkReleaseFullScreenExclusiveModeEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkReleaseFullScreenExclusiveModeEXT'));
   @vk.fCommands.ReleaseFullScreenExclusiveModeEXT:=addr(vkReleaseFullScreenExclusiveModeEXT);
  end;
  if not assigned(vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR) then begin
   @vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR'));
   @vk.fCommands.EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR:=addr(vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR);
  end;
  if not assigned(vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR) then begin
   @vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR'));
   @vk.fCommands.GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR:=addr(vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR);
  end;
  if not assigned(vkAcquireProfilingLockKHR) then begin
   @vkAcquireProfilingLockKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkAcquireProfilingLockKHR'));
   @vk.fCommands.AcquireProfilingLockKHR:=addr(vkAcquireProfilingLockKHR);
  end;
  if not assigned(vkReleaseProfilingLockKHR) then begin
   @vkReleaseProfilingLockKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkReleaseProfilingLockKHR'));
   @vk.fCommands.ReleaseProfilingLockKHR:=addr(vkReleaseProfilingLockKHR);
  end;
  if not assigned(vkGetImageDrmFormatModifierPropertiesEXT) then begin
   @vkGetImageDrmFormatModifierPropertiesEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetImageDrmFormatModifierPropertiesEXT'));
   @vk.fCommands.GetImageDrmFormatModifierPropertiesEXT:=addr(vkGetImageDrmFormatModifierPropertiesEXT);
  end;
  if not assigned(vkGetBufferOpaqueCaptureAddress) then begin
   @vkGetBufferOpaqueCaptureAddress:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetBufferOpaqueCaptureAddress'));
   @vk.fCommands.GetBufferOpaqueCaptureAddress:=addr(vkGetBufferOpaqueCaptureAddress);
  end;
  if not assigned(vkGetBufferOpaqueCaptureAddressKHR) then begin
   @vkGetBufferOpaqueCaptureAddressKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetBufferOpaqueCaptureAddressKHR'));
   @vk.fCommands.GetBufferOpaqueCaptureAddressKHR:=addr(vkGetBufferOpaqueCaptureAddressKHR);
  end;
  if not assigned(vkGetBufferDeviceAddress) then begin
   @vkGetBufferDeviceAddress:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetBufferDeviceAddress'));
   @vk.fCommands.GetBufferDeviceAddress:=addr(vkGetBufferDeviceAddress);
  end;
  if not assigned(vkGetBufferDeviceAddressKHR) then begin
   @vkGetBufferDeviceAddressKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetBufferDeviceAddressKHR'));
   @vk.fCommands.GetBufferDeviceAddressKHR:=addr(vkGetBufferDeviceAddressKHR);
  end;
  if not assigned(vkGetBufferDeviceAddressEXT) then begin
   @vkGetBufferDeviceAddressEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetBufferDeviceAddressEXT'));
   @vk.fCommands.GetBufferDeviceAddressEXT:=addr(vkGetBufferDeviceAddressEXT);
  end;
  if not assigned(vkCreateHeadlessSurfaceEXT) then begin
   @vkCreateHeadlessSurfaceEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateHeadlessSurfaceEXT'));
   @vk.fCommands.CreateHeadlessSurfaceEXT:=addr(vkCreateHeadlessSurfaceEXT);
  end;
  if not assigned(vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV) then begin
   @vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV'));
   @vk.fCommands.GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV:=addr(vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV);
  end;
  if not assigned(vkInitializePerformanceApiINTEL) then begin
   @vkInitializePerformanceApiINTEL:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkInitializePerformanceApiINTEL'));
   @vk.fCommands.InitializePerformanceApiINTEL:=addr(vkInitializePerformanceApiINTEL);
  end;
  if not assigned(vkUninitializePerformanceApiINTEL) then begin
   @vkUninitializePerformanceApiINTEL:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkUninitializePerformanceApiINTEL'));
   @vk.fCommands.UninitializePerformanceApiINTEL:=addr(vkUninitializePerformanceApiINTEL);
  end;
  if not assigned(vkCmdSetPerformanceMarkerINTEL) then begin
   @vkCmdSetPerformanceMarkerINTEL:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetPerformanceMarkerINTEL'));
   @vk.fCommands.CmdSetPerformanceMarkerINTEL:=addr(vkCmdSetPerformanceMarkerINTEL);
  end;
  if not assigned(vkCmdSetPerformanceStreamMarkerINTEL) then begin
   @vkCmdSetPerformanceStreamMarkerINTEL:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetPerformanceStreamMarkerINTEL'));
   @vk.fCommands.CmdSetPerformanceStreamMarkerINTEL:=addr(vkCmdSetPerformanceStreamMarkerINTEL);
  end;
  if not assigned(vkCmdSetPerformanceOverrideINTEL) then begin
   @vkCmdSetPerformanceOverrideINTEL:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetPerformanceOverrideINTEL'));
   @vk.fCommands.CmdSetPerformanceOverrideINTEL:=addr(vkCmdSetPerformanceOverrideINTEL);
  end;
  if not assigned(vkAcquirePerformanceConfigurationINTEL) then begin
   @vkAcquirePerformanceConfigurationINTEL:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkAcquirePerformanceConfigurationINTEL'));
   @vk.fCommands.AcquirePerformanceConfigurationINTEL:=addr(vkAcquirePerformanceConfigurationINTEL);
  end;
  if not assigned(vkReleasePerformanceConfigurationINTEL) then begin
   @vkReleasePerformanceConfigurationINTEL:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkReleasePerformanceConfigurationINTEL'));
   @vk.fCommands.ReleasePerformanceConfigurationINTEL:=addr(vkReleasePerformanceConfigurationINTEL);
  end;
  if not assigned(vkQueueSetPerformanceConfigurationINTEL) then begin
   @vkQueueSetPerformanceConfigurationINTEL:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkQueueSetPerformanceConfigurationINTEL'));
   @vk.fCommands.QueueSetPerformanceConfigurationINTEL:=addr(vkQueueSetPerformanceConfigurationINTEL);
  end;
  if not assigned(vkGetPerformanceParameterINTEL) then begin
   @vkGetPerformanceParameterINTEL:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPerformanceParameterINTEL'));
   @vk.fCommands.GetPerformanceParameterINTEL:=addr(vkGetPerformanceParameterINTEL);
  end;
  if not assigned(vkGetDeviceMemoryOpaqueCaptureAddress) then begin
   @vkGetDeviceMemoryOpaqueCaptureAddress:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetDeviceMemoryOpaqueCaptureAddress'));
   @vk.fCommands.GetDeviceMemoryOpaqueCaptureAddress:=addr(vkGetDeviceMemoryOpaqueCaptureAddress);
  end;
  if not assigned(vkGetDeviceMemoryOpaqueCaptureAddressKHR) then begin
   @vkGetDeviceMemoryOpaqueCaptureAddressKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetDeviceMemoryOpaqueCaptureAddressKHR'));
   @vk.fCommands.GetDeviceMemoryOpaqueCaptureAddressKHR:=addr(vkGetDeviceMemoryOpaqueCaptureAddressKHR);
  end;
  if not assigned(vkGetPipelineExecutablePropertiesKHR) then begin
   @vkGetPipelineExecutablePropertiesKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPipelineExecutablePropertiesKHR'));
   @vk.fCommands.GetPipelineExecutablePropertiesKHR:=addr(vkGetPipelineExecutablePropertiesKHR);
  end;
  if not assigned(vkGetPipelineExecutableStatisticsKHR) then begin
   @vkGetPipelineExecutableStatisticsKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPipelineExecutableStatisticsKHR'));
   @vk.fCommands.GetPipelineExecutableStatisticsKHR:=addr(vkGetPipelineExecutableStatisticsKHR);
  end;
  if not assigned(vkGetPipelineExecutableInternalRepresentationsKHR) then begin
   @vkGetPipelineExecutableInternalRepresentationsKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPipelineExecutableInternalRepresentationsKHR'));
   @vk.fCommands.GetPipelineExecutableInternalRepresentationsKHR:=addr(vkGetPipelineExecutableInternalRepresentationsKHR);
  end;
  if not assigned(vkCmdSetLineStippleEXT) then begin
   @vkCmdSetLineStippleEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetLineStippleEXT'));
   @vk.fCommands.CmdSetLineStippleEXT:=addr(vkCmdSetLineStippleEXT);
  end;
{$ifdef VulkanSC}
  if not assigned(vkGetFaultData) then begin
   @vkGetFaultData:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetFaultData'));
   @vk.fCommands.GetFaultData:=addr(vkGetFaultData);
  end;
{$endif}
  if not assigned(vkGetPhysicalDeviceToolProperties) then begin
   @vkGetPhysicalDeviceToolProperties:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceToolProperties'));
   @vk.fCommands.GetPhysicalDeviceToolProperties:=addr(vkGetPhysicalDeviceToolProperties);
  end;
  if not assigned(vkGetPhysicalDeviceToolPropertiesEXT) then begin
   @vkGetPhysicalDeviceToolPropertiesEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceToolPropertiesEXT'));
   @vk.fCommands.GetPhysicalDeviceToolPropertiesEXT:=addr(vkGetPhysicalDeviceToolPropertiesEXT);
  end;
  if not assigned(vkCreateAccelerationStructureKHR) then begin
   @vkCreateAccelerationStructureKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateAccelerationStructureKHR'));
   @vk.fCommands.CreateAccelerationStructureKHR:=addr(vkCreateAccelerationStructureKHR);
  end;
  if not assigned(vkCmdBuildAccelerationStructuresKHR) then begin
   @vkCmdBuildAccelerationStructuresKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdBuildAccelerationStructuresKHR'));
   @vk.fCommands.CmdBuildAccelerationStructuresKHR:=addr(vkCmdBuildAccelerationStructuresKHR);
  end;
  if not assigned(vkCmdBuildAccelerationStructuresIndirectKHR) then begin
   @vkCmdBuildAccelerationStructuresIndirectKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdBuildAccelerationStructuresIndirectKHR'));
   @vk.fCommands.CmdBuildAccelerationStructuresIndirectKHR:=addr(vkCmdBuildAccelerationStructuresIndirectKHR);
  end;
  if not assigned(vkBuildAccelerationStructuresKHR) then begin
   @vkBuildAccelerationStructuresKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkBuildAccelerationStructuresKHR'));
   @vk.fCommands.BuildAccelerationStructuresKHR:=addr(vkBuildAccelerationStructuresKHR);
  end;
  if not assigned(vkGetAccelerationStructureDeviceAddressKHR) then begin
   @vkGetAccelerationStructureDeviceAddressKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetAccelerationStructureDeviceAddressKHR'));
   @vk.fCommands.GetAccelerationStructureDeviceAddressKHR:=addr(vkGetAccelerationStructureDeviceAddressKHR);
  end;
  if not assigned(vkCreateDeferredOperationKHR) then begin
   @vkCreateDeferredOperationKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateDeferredOperationKHR'));
   @vk.fCommands.CreateDeferredOperationKHR:=addr(vkCreateDeferredOperationKHR);
  end;
  if not assigned(vkDestroyDeferredOperationKHR) then begin
   @vkDestroyDeferredOperationKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkDestroyDeferredOperationKHR'));
   @vk.fCommands.DestroyDeferredOperationKHR:=addr(vkDestroyDeferredOperationKHR);
  end;
  if not assigned(vkGetDeferredOperationMaxConcurrencyKHR) then begin
   @vkGetDeferredOperationMaxConcurrencyKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetDeferredOperationMaxConcurrencyKHR'));
   @vk.fCommands.GetDeferredOperationMaxConcurrencyKHR:=addr(vkGetDeferredOperationMaxConcurrencyKHR);
  end;
  if not assigned(vkGetDeferredOperationResultKHR) then begin
   @vkGetDeferredOperationResultKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetDeferredOperationResultKHR'));
   @vk.fCommands.GetDeferredOperationResultKHR:=addr(vkGetDeferredOperationResultKHR);
  end;
  if not assigned(vkDeferredOperationJoinKHR) then begin
   @vkDeferredOperationJoinKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkDeferredOperationJoinKHR'));
   @vk.fCommands.DeferredOperationJoinKHR:=addr(vkDeferredOperationJoinKHR);
  end;
  if not assigned(vkGetPipelineIndirectMemoryRequirementsNV) then begin
   @vkGetPipelineIndirectMemoryRequirementsNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPipelineIndirectMemoryRequirementsNV'));
   @vk.fCommands.GetPipelineIndirectMemoryRequirementsNV:=addr(vkGetPipelineIndirectMemoryRequirementsNV);
  end;
  if not assigned(vkGetPipelineIndirectDeviceAddressNV) then begin
   @vkGetPipelineIndirectDeviceAddressNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPipelineIndirectDeviceAddressNV'));
   @vk.fCommands.GetPipelineIndirectDeviceAddressNV:=addr(vkGetPipelineIndirectDeviceAddressNV);
  end;
  if not assigned(vkCmdSetCullMode) then begin
   @vkCmdSetCullMode:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetCullMode'));
   @vk.fCommands.CmdSetCullMode:=addr(vkCmdSetCullMode);
  end;
  if not assigned(vkCmdSetCullModeEXT) then begin
   @vkCmdSetCullModeEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetCullModeEXT'));
   @vk.fCommands.CmdSetCullModeEXT:=addr(vkCmdSetCullModeEXT);
  end;
  if not assigned(vkCmdSetFrontFace) then begin
   @vkCmdSetFrontFace:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetFrontFace'));
   @vk.fCommands.CmdSetFrontFace:=addr(vkCmdSetFrontFace);
  end;
  if not assigned(vkCmdSetFrontFaceEXT) then begin
   @vkCmdSetFrontFaceEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetFrontFaceEXT'));
   @vk.fCommands.CmdSetFrontFaceEXT:=addr(vkCmdSetFrontFaceEXT);
  end;
  if not assigned(vkCmdSetPrimitiveTopology) then begin
   @vkCmdSetPrimitiveTopology:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetPrimitiveTopology'));
   @vk.fCommands.CmdSetPrimitiveTopology:=addr(vkCmdSetPrimitiveTopology);
  end;
  if not assigned(vkCmdSetPrimitiveTopologyEXT) then begin
   @vkCmdSetPrimitiveTopologyEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetPrimitiveTopologyEXT'));
   @vk.fCommands.CmdSetPrimitiveTopologyEXT:=addr(vkCmdSetPrimitiveTopologyEXT);
  end;
  if not assigned(vkCmdSetViewportWithCount) then begin
   @vkCmdSetViewportWithCount:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetViewportWithCount'));
   @vk.fCommands.CmdSetViewportWithCount:=addr(vkCmdSetViewportWithCount);
  end;
  if not assigned(vkCmdSetViewportWithCountEXT) then begin
   @vkCmdSetViewportWithCountEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetViewportWithCountEXT'));
   @vk.fCommands.CmdSetViewportWithCountEXT:=addr(vkCmdSetViewportWithCountEXT);
  end;
  if not assigned(vkCmdSetScissorWithCount) then begin
   @vkCmdSetScissorWithCount:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetScissorWithCount'));
   @vk.fCommands.CmdSetScissorWithCount:=addr(vkCmdSetScissorWithCount);
  end;
  if not assigned(vkCmdSetScissorWithCountEXT) then begin
   @vkCmdSetScissorWithCountEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetScissorWithCountEXT'));
   @vk.fCommands.CmdSetScissorWithCountEXT:=addr(vkCmdSetScissorWithCountEXT);
  end;
  if not assigned(vkCmdBindIndexBuffer2KHR) then begin
   @vkCmdBindIndexBuffer2KHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdBindIndexBuffer2KHR'));
   @vk.fCommands.CmdBindIndexBuffer2KHR:=addr(vkCmdBindIndexBuffer2KHR);
  end;
  if not assigned(vkCmdBindVertexBuffers2) then begin
   @vkCmdBindVertexBuffers2:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdBindVertexBuffers2'));
   @vk.fCommands.CmdBindVertexBuffers2:=addr(vkCmdBindVertexBuffers2);
  end;
  if not assigned(vkCmdBindVertexBuffers2EXT) then begin
   @vkCmdBindVertexBuffers2EXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdBindVertexBuffers2EXT'));
   @vk.fCommands.CmdBindVertexBuffers2EXT:=addr(vkCmdBindVertexBuffers2EXT);
  end;
  if not assigned(vkCmdSetDepthTestEnable) then begin
   @vkCmdSetDepthTestEnable:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetDepthTestEnable'));
   @vk.fCommands.CmdSetDepthTestEnable:=addr(vkCmdSetDepthTestEnable);
  end;
  if not assigned(vkCmdSetDepthTestEnableEXT) then begin
   @vkCmdSetDepthTestEnableEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetDepthTestEnableEXT'));
   @vk.fCommands.CmdSetDepthTestEnableEXT:=addr(vkCmdSetDepthTestEnableEXT);
  end;
  if not assigned(vkCmdSetDepthWriteEnable) then begin
   @vkCmdSetDepthWriteEnable:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetDepthWriteEnable'));
   @vk.fCommands.CmdSetDepthWriteEnable:=addr(vkCmdSetDepthWriteEnable);
  end;
  if not assigned(vkCmdSetDepthWriteEnableEXT) then begin
   @vkCmdSetDepthWriteEnableEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetDepthWriteEnableEXT'));
   @vk.fCommands.CmdSetDepthWriteEnableEXT:=addr(vkCmdSetDepthWriteEnableEXT);
  end;
  if not assigned(vkCmdSetDepthCompareOp) then begin
   @vkCmdSetDepthCompareOp:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetDepthCompareOp'));
   @vk.fCommands.CmdSetDepthCompareOp:=addr(vkCmdSetDepthCompareOp);
  end;
  if not assigned(vkCmdSetDepthCompareOpEXT) then begin
   @vkCmdSetDepthCompareOpEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetDepthCompareOpEXT'));
   @vk.fCommands.CmdSetDepthCompareOpEXT:=addr(vkCmdSetDepthCompareOpEXT);
  end;
  if not assigned(vkCmdSetDepthBoundsTestEnable) then begin
   @vkCmdSetDepthBoundsTestEnable:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetDepthBoundsTestEnable'));
   @vk.fCommands.CmdSetDepthBoundsTestEnable:=addr(vkCmdSetDepthBoundsTestEnable);
  end;
  if not assigned(vkCmdSetDepthBoundsTestEnableEXT) then begin
   @vkCmdSetDepthBoundsTestEnableEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetDepthBoundsTestEnableEXT'));
   @vk.fCommands.CmdSetDepthBoundsTestEnableEXT:=addr(vkCmdSetDepthBoundsTestEnableEXT);
  end;
  if not assigned(vkCmdSetStencilTestEnable) then begin
   @vkCmdSetStencilTestEnable:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetStencilTestEnable'));
   @vk.fCommands.CmdSetStencilTestEnable:=addr(vkCmdSetStencilTestEnable);
  end;
  if not assigned(vkCmdSetStencilTestEnableEXT) then begin
   @vkCmdSetStencilTestEnableEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetStencilTestEnableEXT'));
   @vk.fCommands.CmdSetStencilTestEnableEXT:=addr(vkCmdSetStencilTestEnableEXT);
  end;
  if not assigned(vkCmdSetStencilOp) then begin
   @vkCmdSetStencilOp:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetStencilOp'));
   @vk.fCommands.CmdSetStencilOp:=addr(vkCmdSetStencilOp);
  end;
  if not assigned(vkCmdSetStencilOpEXT) then begin
   @vkCmdSetStencilOpEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetStencilOpEXT'));
   @vk.fCommands.CmdSetStencilOpEXT:=addr(vkCmdSetStencilOpEXT);
  end;
  if not assigned(vkCmdSetPatchControlPointsEXT) then begin
   @vkCmdSetPatchControlPointsEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetPatchControlPointsEXT'));
   @vk.fCommands.CmdSetPatchControlPointsEXT:=addr(vkCmdSetPatchControlPointsEXT);
  end;
  if not assigned(vkCmdSetRasterizerDiscardEnable) then begin
   @vkCmdSetRasterizerDiscardEnable:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetRasterizerDiscardEnable'));
   @vk.fCommands.CmdSetRasterizerDiscardEnable:=addr(vkCmdSetRasterizerDiscardEnable);
  end;
  if not assigned(vkCmdSetRasterizerDiscardEnableEXT) then begin
   @vkCmdSetRasterizerDiscardEnableEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetRasterizerDiscardEnableEXT'));
   @vk.fCommands.CmdSetRasterizerDiscardEnableEXT:=addr(vkCmdSetRasterizerDiscardEnableEXT);
  end;
  if not assigned(vkCmdSetDepthBiasEnable) then begin
   @vkCmdSetDepthBiasEnable:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetDepthBiasEnable'));
   @vk.fCommands.CmdSetDepthBiasEnable:=addr(vkCmdSetDepthBiasEnable);
  end;
  if not assigned(vkCmdSetDepthBiasEnableEXT) then begin
   @vkCmdSetDepthBiasEnableEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetDepthBiasEnableEXT'));
   @vk.fCommands.CmdSetDepthBiasEnableEXT:=addr(vkCmdSetDepthBiasEnableEXT);
  end;
  if not assigned(vkCmdSetLogicOpEXT) then begin
   @vkCmdSetLogicOpEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetLogicOpEXT'));
   @vk.fCommands.CmdSetLogicOpEXT:=addr(vkCmdSetLogicOpEXT);
  end;
  if not assigned(vkCmdSetPrimitiveRestartEnable) then begin
   @vkCmdSetPrimitiveRestartEnable:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetPrimitiveRestartEnable'));
   @vk.fCommands.CmdSetPrimitiveRestartEnable:=addr(vkCmdSetPrimitiveRestartEnable);
  end;
  if not assigned(vkCmdSetPrimitiveRestartEnableEXT) then begin
   @vkCmdSetPrimitiveRestartEnableEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetPrimitiveRestartEnableEXT'));
   @vk.fCommands.CmdSetPrimitiveRestartEnableEXT:=addr(vkCmdSetPrimitiveRestartEnableEXT);
  end;
  if not assigned(vkCmdSetTessellationDomainOriginEXT) then begin
   @vkCmdSetTessellationDomainOriginEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetTessellationDomainOriginEXT'));
   @vk.fCommands.CmdSetTessellationDomainOriginEXT:=addr(vkCmdSetTessellationDomainOriginEXT);
  end;
  if not assigned(vkCmdSetDepthClampEnableEXT) then begin
   @vkCmdSetDepthClampEnableEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetDepthClampEnableEXT'));
   @vk.fCommands.CmdSetDepthClampEnableEXT:=addr(vkCmdSetDepthClampEnableEXT);
  end;
  if not assigned(vkCmdSetPolygonModeEXT) then begin
   @vkCmdSetPolygonModeEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetPolygonModeEXT'));
   @vk.fCommands.CmdSetPolygonModeEXT:=addr(vkCmdSetPolygonModeEXT);
  end;
  if not assigned(vkCmdSetRasterizationSamplesEXT) then begin
   @vkCmdSetRasterizationSamplesEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetRasterizationSamplesEXT'));
   @vk.fCommands.CmdSetRasterizationSamplesEXT:=addr(vkCmdSetRasterizationSamplesEXT);
  end;
  if not assigned(vkCmdSetSampleMaskEXT) then begin
   @vkCmdSetSampleMaskEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetSampleMaskEXT'));
   @vk.fCommands.CmdSetSampleMaskEXT:=addr(vkCmdSetSampleMaskEXT);
  end;
  if not assigned(vkCmdSetAlphaToCoverageEnableEXT) then begin
   @vkCmdSetAlphaToCoverageEnableEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetAlphaToCoverageEnableEXT'));
   @vk.fCommands.CmdSetAlphaToCoverageEnableEXT:=addr(vkCmdSetAlphaToCoverageEnableEXT);
  end;
  if not assigned(vkCmdSetAlphaToOneEnableEXT) then begin
   @vkCmdSetAlphaToOneEnableEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetAlphaToOneEnableEXT'));
   @vk.fCommands.CmdSetAlphaToOneEnableEXT:=addr(vkCmdSetAlphaToOneEnableEXT);
  end;
  if not assigned(vkCmdSetLogicOpEnableEXT) then begin
   @vkCmdSetLogicOpEnableEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetLogicOpEnableEXT'));
   @vk.fCommands.CmdSetLogicOpEnableEXT:=addr(vkCmdSetLogicOpEnableEXT);
  end;
  if not assigned(vkCmdSetColorBlendEnableEXT) then begin
   @vkCmdSetColorBlendEnableEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetColorBlendEnableEXT'));
   @vk.fCommands.CmdSetColorBlendEnableEXT:=addr(vkCmdSetColorBlendEnableEXT);
  end;
  if not assigned(vkCmdSetColorBlendEquationEXT) then begin
   @vkCmdSetColorBlendEquationEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetColorBlendEquationEXT'));
   @vk.fCommands.CmdSetColorBlendEquationEXT:=addr(vkCmdSetColorBlendEquationEXT);
  end;
  if not assigned(vkCmdSetColorWriteMaskEXT) then begin
   @vkCmdSetColorWriteMaskEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetColorWriteMaskEXT'));
   @vk.fCommands.CmdSetColorWriteMaskEXT:=addr(vkCmdSetColorWriteMaskEXT);
  end;
  if not assigned(vkCmdSetRasterizationStreamEXT) then begin
   @vkCmdSetRasterizationStreamEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetRasterizationStreamEXT'));
   @vk.fCommands.CmdSetRasterizationStreamEXT:=addr(vkCmdSetRasterizationStreamEXT);
  end;
  if not assigned(vkCmdSetConservativeRasterizationModeEXT) then begin
   @vkCmdSetConservativeRasterizationModeEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetConservativeRasterizationModeEXT'));
   @vk.fCommands.CmdSetConservativeRasterizationModeEXT:=addr(vkCmdSetConservativeRasterizationModeEXT);
  end;
  if not assigned(vkCmdSetExtraPrimitiveOverestimationSizeEXT) then begin
   @vkCmdSetExtraPrimitiveOverestimationSizeEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetExtraPrimitiveOverestimationSizeEXT'));
   @vk.fCommands.CmdSetExtraPrimitiveOverestimationSizeEXT:=addr(vkCmdSetExtraPrimitiveOverestimationSizeEXT);
  end;
  if not assigned(vkCmdSetDepthClipEnableEXT) then begin
   @vkCmdSetDepthClipEnableEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetDepthClipEnableEXT'));
   @vk.fCommands.CmdSetDepthClipEnableEXT:=addr(vkCmdSetDepthClipEnableEXT);
  end;
  if not assigned(vkCmdSetSampleLocationsEnableEXT) then begin
   @vkCmdSetSampleLocationsEnableEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetSampleLocationsEnableEXT'));
   @vk.fCommands.CmdSetSampleLocationsEnableEXT:=addr(vkCmdSetSampleLocationsEnableEXT);
  end;
  if not assigned(vkCmdSetColorBlendAdvancedEXT) then begin
   @vkCmdSetColorBlendAdvancedEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetColorBlendAdvancedEXT'));
   @vk.fCommands.CmdSetColorBlendAdvancedEXT:=addr(vkCmdSetColorBlendAdvancedEXT);
  end;
  if not assigned(vkCmdSetProvokingVertexModeEXT) then begin
   @vkCmdSetProvokingVertexModeEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetProvokingVertexModeEXT'));
   @vk.fCommands.CmdSetProvokingVertexModeEXT:=addr(vkCmdSetProvokingVertexModeEXT);
  end;
  if not assigned(vkCmdSetLineRasterizationModeEXT) then begin
   @vkCmdSetLineRasterizationModeEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetLineRasterizationModeEXT'));
   @vk.fCommands.CmdSetLineRasterizationModeEXT:=addr(vkCmdSetLineRasterizationModeEXT);
  end;
  if not assigned(vkCmdSetLineStippleEnableEXT) then begin
   @vkCmdSetLineStippleEnableEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetLineStippleEnableEXT'));
   @vk.fCommands.CmdSetLineStippleEnableEXT:=addr(vkCmdSetLineStippleEnableEXT);
  end;
  if not assigned(vkCmdSetDepthClipNegativeOneToOneEXT) then begin
   @vkCmdSetDepthClipNegativeOneToOneEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetDepthClipNegativeOneToOneEXT'));
   @vk.fCommands.CmdSetDepthClipNegativeOneToOneEXT:=addr(vkCmdSetDepthClipNegativeOneToOneEXT);
  end;
  if not assigned(vkCmdSetViewportWScalingEnableNV) then begin
   @vkCmdSetViewportWScalingEnableNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetViewportWScalingEnableNV'));
   @vk.fCommands.CmdSetViewportWScalingEnableNV:=addr(vkCmdSetViewportWScalingEnableNV);
  end;
  if not assigned(vkCmdSetViewportSwizzleNV) then begin
   @vkCmdSetViewportSwizzleNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetViewportSwizzleNV'));
   @vk.fCommands.CmdSetViewportSwizzleNV:=addr(vkCmdSetViewportSwizzleNV);
  end;
  if not assigned(vkCmdSetCoverageToColorEnableNV) then begin
   @vkCmdSetCoverageToColorEnableNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetCoverageToColorEnableNV'));
   @vk.fCommands.CmdSetCoverageToColorEnableNV:=addr(vkCmdSetCoverageToColorEnableNV);
  end;
  if not assigned(vkCmdSetCoverageToColorLocationNV) then begin
   @vkCmdSetCoverageToColorLocationNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetCoverageToColorLocationNV'));
   @vk.fCommands.CmdSetCoverageToColorLocationNV:=addr(vkCmdSetCoverageToColorLocationNV);
  end;
  if not assigned(vkCmdSetCoverageModulationModeNV) then begin
   @vkCmdSetCoverageModulationModeNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetCoverageModulationModeNV'));
   @vk.fCommands.CmdSetCoverageModulationModeNV:=addr(vkCmdSetCoverageModulationModeNV);
  end;
  if not assigned(vkCmdSetCoverageModulationTableEnableNV) then begin
   @vkCmdSetCoverageModulationTableEnableNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetCoverageModulationTableEnableNV'));
   @vk.fCommands.CmdSetCoverageModulationTableEnableNV:=addr(vkCmdSetCoverageModulationTableEnableNV);
  end;
  if not assigned(vkCmdSetCoverageModulationTableNV) then begin
   @vkCmdSetCoverageModulationTableNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetCoverageModulationTableNV'));
   @vk.fCommands.CmdSetCoverageModulationTableNV:=addr(vkCmdSetCoverageModulationTableNV);
  end;
  if not assigned(vkCmdSetShadingRateImageEnableNV) then begin
   @vkCmdSetShadingRateImageEnableNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetShadingRateImageEnableNV'));
   @vk.fCommands.CmdSetShadingRateImageEnableNV:=addr(vkCmdSetShadingRateImageEnableNV);
  end;
  if not assigned(vkCmdSetCoverageReductionModeNV) then begin
   @vkCmdSetCoverageReductionModeNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetCoverageReductionModeNV'));
   @vk.fCommands.CmdSetCoverageReductionModeNV:=addr(vkCmdSetCoverageReductionModeNV);
  end;
  if not assigned(vkCmdSetRepresentativeFragmentTestEnableNV) then begin
   @vkCmdSetRepresentativeFragmentTestEnableNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetRepresentativeFragmentTestEnableNV'));
   @vk.fCommands.CmdSetRepresentativeFragmentTestEnableNV:=addr(vkCmdSetRepresentativeFragmentTestEnableNV);
  end;
  if not assigned(vkCreatePrivateDataSlot) then begin
   @vkCreatePrivateDataSlot:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreatePrivateDataSlot'));
   @vk.fCommands.CreatePrivateDataSlot:=addr(vkCreatePrivateDataSlot);
  end;
  if not assigned(vkCreatePrivateDataSlotEXT) then begin
   @vkCreatePrivateDataSlotEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreatePrivateDataSlotEXT'));
   @vk.fCommands.CreatePrivateDataSlotEXT:=addr(vkCreatePrivateDataSlotEXT);
  end;
  if not assigned(vkDestroyPrivateDataSlot) then begin
   @vkDestroyPrivateDataSlot:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkDestroyPrivateDataSlot'));
   @vk.fCommands.DestroyPrivateDataSlot:=addr(vkDestroyPrivateDataSlot);
  end;
  if not assigned(vkDestroyPrivateDataSlotEXT) then begin
   @vkDestroyPrivateDataSlotEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkDestroyPrivateDataSlotEXT'));
   @vk.fCommands.DestroyPrivateDataSlotEXT:=addr(vkDestroyPrivateDataSlotEXT);
  end;
  if not assigned(vkSetPrivateData) then begin
   @vkSetPrivateData:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkSetPrivateData'));
   @vk.fCommands.SetPrivateData:=addr(vkSetPrivateData);
  end;
  if not assigned(vkSetPrivateDataEXT) then begin
   @vkSetPrivateDataEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkSetPrivateDataEXT'));
   @vk.fCommands.SetPrivateDataEXT:=addr(vkSetPrivateDataEXT);
  end;
  if not assigned(vkGetPrivateData) then begin
   @vkGetPrivateData:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPrivateData'));
   @vk.fCommands.GetPrivateData:=addr(vkGetPrivateData);
  end;
  if not assigned(vkGetPrivateDataEXT) then begin
   @vkGetPrivateDataEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPrivateDataEXT'));
   @vk.fCommands.GetPrivateDataEXT:=addr(vkGetPrivateDataEXT);
  end;
  if not assigned(vkCmdCopyBuffer2) then begin
   @vkCmdCopyBuffer2:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdCopyBuffer2'));
   @vk.fCommands.CmdCopyBuffer2:=addr(vkCmdCopyBuffer2);
  end;
  if not assigned(vkCmdCopyBuffer2KHR) then begin
   @vkCmdCopyBuffer2KHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdCopyBuffer2KHR'));
   @vk.fCommands.CmdCopyBuffer2KHR:=addr(vkCmdCopyBuffer2KHR);
  end;
  if not assigned(vkCmdCopyImage2) then begin
   @vkCmdCopyImage2:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdCopyImage2'));
   @vk.fCommands.CmdCopyImage2:=addr(vkCmdCopyImage2);
  end;
  if not assigned(vkCmdCopyImage2KHR) then begin
   @vkCmdCopyImage2KHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdCopyImage2KHR'));
   @vk.fCommands.CmdCopyImage2KHR:=addr(vkCmdCopyImage2KHR);
  end;
  if not assigned(vkCmdBlitImage2) then begin
   @vkCmdBlitImage2:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdBlitImage2'));
   @vk.fCommands.CmdBlitImage2:=addr(vkCmdBlitImage2);
  end;
  if not assigned(vkCmdBlitImage2KHR) then begin
   @vkCmdBlitImage2KHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdBlitImage2KHR'));
   @vk.fCommands.CmdBlitImage2KHR:=addr(vkCmdBlitImage2KHR);
  end;
  if not assigned(vkCmdCopyBufferToImage2) then begin
   @vkCmdCopyBufferToImage2:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdCopyBufferToImage2'));
   @vk.fCommands.CmdCopyBufferToImage2:=addr(vkCmdCopyBufferToImage2);
  end;
  if not assigned(vkCmdCopyBufferToImage2KHR) then begin
   @vkCmdCopyBufferToImage2KHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdCopyBufferToImage2KHR'));
   @vk.fCommands.CmdCopyBufferToImage2KHR:=addr(vkCmdCopyBufferToImage2KHR);
  end;
  if not assigned(vkCmdCopyImageToBuffer2) then begin
   @vkCmdCopyImageToBuffer2:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdCopyImageToBuffer2'));
   @vk.fCommands.CmdCopyImageToBuffer2:=addr(vkCmdCopyImageToBuffer2);
  end;
  if not assigned(vkCmdCopyImageToBuffer2KHR) then begin
   @vkCmdCopyImageToBuffer2KHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdCopyImageToBuffer2KHR'));
   @vk.fCommands.CmdCopyImageToBuffer2KHR:=addr(vkCmdCopyImageToBuffer2KHR);
  end;
  if not assigned(vkCmdResolveImage2) then begin
   @vkCmdResolveImage2:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdResolveImage2'));
   @vk.fCommands.CmdResolveImage2:=addr(vkCmdResolveImage2);
  end;
  if not assigned(vkCmdResolveImage2KHR) then begin
   @vkCmdResolveImage2KHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdResolveImage2KHR'));
   @vk.fCommands.CmdResolveImage2KHR:=addr(vkCmdResolveImage2KHR);
  end;
  if not assigned(vkCmdRefreshObjectsKHR) then begin
   @vkCmdRefreshObjectsKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdRefreshObjectsKHR'));
   @vk.fCommands.CmdRefreshObjectsKHR:=addr(vkCmdRefreshObjectsKHR);
  end;
  if not assigned(vkGetPhysicalDeviceRefreshableObjectTypesKHR) then begin
   @vkGetPhysicalDeviceRefreshableObjectTypesKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceRefreshableObjectTypesKHR'));
   @vk.fCommands.GetPhysicalDeviceRefreshableObjectTypesKHR:=addr(vkGetPhysicalDeviceRefreshableObjectTypesKHR);
  end;
  if not assigned(vkCmdSetFragmentShadingRateKHR) then begin
   @vkCmdSetFragmentShadingRateKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetFragmentShadingRateKHR'));
   @vk.fCommands.CmdSetFragmentShadingRateKHR:=addr(vkCmdSetFragmentShadingRateKHR);
  end;
  if not assigned(vkGetPhysicalDeviceFragmentShadingRatesKHR) then begin
   @vkGetPhysicalDeviceFragmentShadingRatesKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceFragmentShadingRatesKHR'));
   @vk.fCommands.GetPhysicalDeviceFragmentShadingRatesKHR:=addr(vkGetPhysicalDeviceFragmentShadingRatesKHR);
  end;
  if not assigned(vkCmdSetFragmentShadingRateEnumNV) then begin
   @vkCmdSetFragmentShadingRateEnumNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetFragmentShadingRateEnumNV'));
   @vk.fCommands.CmdSetFragmentShadingRateEnumNV:=addr(vkCmdSetFragmentShadingRateEnumNV);
  end;
  if not assigned(vkGetAccelerationStructureBuildSizesKHR) then begin
   @vkGetAccelerationStructureBuildSizesKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetAccelerationStructureBuildSizesKHR'));
   @vk.fCommands.GetAccelerationStructureBuildSizesKHR:=addr(vkGetAccelerationStructureBuildSizesKHR);
  end;
  if not assigned(vkCmdSetVertexInputEXT) then begin
   @vkCmdSetVertexInputEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetVertexInputEXT'));
   @vk.fCommands.CmdSetVertexInputEXT:=addr(vkCmdSetVertexInputEXT);
  end;
  if not assigned(vkCmdSetColorWriteEnableEXT) then begin
   @vkCmdSetColorWriteEnableEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetColorWriteEnableEXT'));
   @vk.fCommands.CmdSetColorWriteEnableEXT:=addr(vkCmdSetColorWriteEnableEXT);
  end;
  if not assigned(vkCmdSetEvent2) then begin
   @vkCmdSetEvent2:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetEvent2'));
   @vk.fCommands.CmdSetEvent2:=addr(vkCmdSetEvent2);
  end;
  if not assigned(vkCmdSetEvent2KHR) then begin
   @vkCmdSetEvent2KHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetEvent2KHR'));
   @vk.fCommands.CmdSetEvent2KHR:=addr(vkCmdSetEvent2KHR);
  end;
  if not assigned(vkCmdResetEvent2) then begin
   @vkCmdResetEvent2:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdResetEvent2'));
   @vk.fCommands.CmdResetEvent2:=addr(vkCmdResetEvent2);
  end;
  if not assigned(vkCmdResetEvent2KHR) then begin
   @vkCmdResetEvent2KHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdResetEvent2KHR'));
   @vk.fCommands.CmdResetEvent2KHR:=addr(vkCmdResetEvent2KHR);
  end;
  if not assigned(vkCmdWaitEvents2) then begin
   @vkCmdWaitEvents2:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdWaitEvents2'));
   @vk.fCommands.CmdWaitEvents2:=addr(vkCmdWaitEvents2);
  end;
  if not assigned(vkCmdWaitEvents2KHR) then begin
   @vkCmdWaitEvents2KHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdWaitEvents2KHR'));
   @vk.fCommands.CmdWaitEvents2KHR:=addr(vkCmdWaitEvents2KHR);
  end;
  if not assigned(vkCmdPipelineBarrier2) then begin
   @vkCmdPipelineBarrier2:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdPipelineBarrier2'));
   @vk.fCommands.CmdPipelineBarrier2:=addr(vkCmdPipelineBarrier2);
  end;
  if not assigned(vkCmdPipelineBarrier2KHR) then begin
   @vkCmdPipelineBarrier2KHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdPipelineBarrier2KHR'));
   @vk.fCommands.CmdPipelineBarrier2KHR:=addr(vkCmdPipelineBarrier2KHR);
  end;
  if not assigned(vkQueueSubmit2) then begin
   @vkQueueSubmit2:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkQueueSubmit2'));
   @vk.fCommands.QueueSubmit2:=addr(vkQueueSubmit2);
  end;
  if not assigned(vkQueueSubmit2KHR) then begin
   @vkQueueSubmit2KHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkQueueSubmit2KHR'));
   @vk.fCommands.QueueSubmit2KHR:=addr(vkQueueSubmit2KHR);
  end;
  if not assigned(vkCmdWriteTimestamp2) then begin
   @vkCmdWriteTimestamp2:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdWriteTimestamp2'));
   @vk.fCommands.CmdWriteTimestamp2:=addr(vkCmdWriteTimestamp2);
  end;
  if not assigned(vkCmdWriteTimestamp2KHR) then begin
   @vkCmdWriteTimestamp2KHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdWriteTimestamp2KHR'));
   @vk.fCommands.CmdWriteTimestamp2KHR:=addr(vkCmdWriteTimestamp2KHR);
  end;
  if not assigned(vkCmdWriteBufferMarker2AMD) then begin
   @vkCmdWriteBufferMarker2AMD:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdWriteBufferMarker2AMD'));
   @vk.fCommands.CmdWriteBufferMarker2AMD:=addr(vkCmdWriteBufferMarker2AMD);
  end;
  if not assigned(vkGetQueueCheckpointData2NV) then begin
   @vkGetQueueCheckpointData2NV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetQueueCheckpointData2NV'));
   @vk.fCommands.GetQueueCheckpointData2NV:=addr(vkGetQueueCheckpointData2NV);
  end;
  if not assigned(vkCopyMemoryToImageEXT) then begin
   @vkCopyMemoryToImageEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCopyMemoryToImageEXT'));
   @vk.fCommands.CopyMemoryToImageEXT:=addr(vkCopyMemoryToImageEXT);
  end;
  if not assigned(vkCopyImageToMemoryEXT) then begin
   @vkCopyImageToMemoryEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCopyImageToMemoryEXT'));
   @vk.fCommands.CopyImageToMemoryEXT:=addr(vkCopyImageToMemoryEXT);
  end;
  if not assigned(vkCopyImageToImageEXT) then begin
   @vkCopyImageToImageEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCopyImageToImageEXT'));
   @vk.fCommands.CopyImageToImageEXT:=addr(vkCopyImageToImageEXT);
  end;
  if not assigned(vkTransitionImageLayoutEXT) then begin
   @vkTransitionImageLayoutEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkTransitionImageLayoutEXT'));
   @vk.fCommands.TransitionImageLayoutEXT:=addr(vkTransitionImageLayoutEXT);
  end;
{$ifdef VulkanSC}
  if not assigned(vkGetCommandPoolMemoryConsumption) then begin
   @vkGetCommandPoolMemoryConsumption:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetCommandPoolMemoryConsumption'));
   @vk.fCommands.GetCommandPoolMemoryConsumption:=addr(vkGetCommandPoolMemoryConsumption);
  end;
{$endif}
{$ifdef VkVideo}
  if not assigned(vkGetPhysicalDeviceVideoCapabilitiesKHR) then begin
   @vkGetPhysicalDeviceVideoCapabilitiesKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceVideoCapabilitiesKHR'));
   @vk.fCommands.GetPhysicalDeviceVideoCapabilitiesKHR:=addr(vkGetPhysicalDeviceVideoCapabilitiesKHR);
  end;
{$endif}
{$ifdef VkVideo}
  if not assigned(vkGetPhysicalDeviceVideoFormatPropertiesKHR) then begin
   @vkGetPhysicalDeviceVideoFormatPropertiesKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceVideoFormatPropertiesKHR'));
   @vk.fCommands.GetPhysicalDeviceVideoFormatPropertiesKHR:=addr(vkGetPhysicalDeviceVideoFormatPropertiesKHR);
  end;
{$endif}
{$ifdef VkVideo}
  if not assigned(vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR) then begin
   @vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR'));
   @vk.fCommands.GetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR:=addr(vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR);
  end;
{$endif}
{$ifdef VkVideo}
  if not assigned(vkCreateVideoSessionKHR) then begin
   @vkCreateVideoSessionKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateVideoSessionKHR'));
   @vk.fCommands.CreateVideoSessionKHR:=addr(vkCreateVideoSessionKHR);
  end;
{$endif}
{$ifdef VkVideo}
  if not assigned(vkDestroyVideoSessionKHR) then begin
   @vkDestroyVideoSessionKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkDestroyVideoSessionKHR'));
   @vk.fCommands.DestroyVideoSessionKHR:=addr(vkDestroyVideoSessionKHR);
  end;
{$endif}
{$ifdef VkVideo}
  if not assigned(vkCreateVideoSessionParametersKHR) then begin
   @vkCreateVideoSessionParametersKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateVideoSessionParametersKHR'));
   @vk.fCommands.CreateVideoSessionParametersKHR:=addr(vkCreateVideoSessionParametersKHR);
  end;
{$endif}
{$ifdef VkVideo}
  if not assigned(vkUpdateVideoSessionParametersKHR) then begin
   @vkUpdateVideoSessionParametersKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkUpdateVideoSessionParametersKHR'));
   @vk.fCommands.UpdateVideoSessionParametersKHR:=addr(vkUpdateVideoSessionParametersKHR);
  end;
{$endif}
{$ifdef VkVideo}
  if not assigned(vkGetEncodedVideoSessionParametersKHR) then begin
   @vkGetEncodedVideoSessionParametersKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetEncodedVideoSessionParametersKHR'));
   @vk.fCommands.GetEncodedVideoSessionParametersKHR:=addr(vkGetEncodedVideoSessionParametersKHR);
  end;
{$endif}
{$ifdef VkVideo}
  if not assigned(vkDestroyVideoSessionParametersKHR) then begin
   @vkDestroyVideoSessionParametersKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkDestroyVideoSessionParametersKHR'));
   @vk.fCommands.DestroyVideoSessionParametersKHR:=addr(vkDestroyVideoSessionParametersKHR);
  end;
{$endif}
{$ifdef VkVideo}
  if not assigned(vkGetVideoSessionMemoryRequirementsKHR) then begin
   @vkGetVideoSessionMemoryRequirementsKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetVideoSessionMemoryRequirementsKHR'));
   @vk.fCommands.GetVideoSessionMemoryRequirementsKHR:=addr(vkGetVideoSessionMemoryRequirementsKHR);
  end;
{$endif}
{$ifdef VkVideo}
  if not assigned(vkBindVideoSessionMemoryKHR) then begin
   @vkBindVideoSessionMemoryKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkBindVideoSessionMemoryKHR'));
   @vk.fCommands.BindVideoSessionMemoryKHR:=addr(vkBindVideoSessionMemoryKHR);
  end;
{$endif}
{$ifdef VkVideo}
  if not assigned(vkCmdDecodeVideoKHR) then begin
   @vkCmdDecodeVideoKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdDecodeVideoKHR'));
   @vk.fCommands.CmdDecodeVideoKHR:=addr(vkCmdDecodeVideoKHR);
  end;
{$endif}
{$ifdef VkVideo}
  if not assigned(vkCmdBeginVideoCodingKHR) then begin
   @vkCmdBeginVideoCodingKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdBeginVideoCodingKHR'));
   @vk.fCommands.CmdBeginVideoCodingKHR:=addr(vkCmdBeginVideoCodingKHR);
  end;
{$endif}
{$ifdef VkVideo}
  if not assigned(vkCmdControlVideoCodingKHR) then begin
   @vkCmdControlVideoCodingKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdControlVideoCodingKHR'));
   @vk.fCommands.CmdControlVideoCodingKHR:=addr(vkCmdControlVideoCodingKHR);
  end;
{$endif}
{$ifdef VkVideo}
  if not assigned(vkCmdEndVideoCodingKHR) then begin
   @vkCmdEndVideoCodingKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdEndVideoCodingKHR'));
   @vk.fCommands.CmdEndVideoCodingKHR:=addr(vkCmdEndVideoCodingKHR);
  end;
{$endif}
{$ifdef VkVideo}
  if not assigned(vkCmdEncodeVideoKHR) then begin
   @vkCmdEncodeVideoKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdEncodeVideoKHR'));
   @vk.fCommands.CmdEncodeVideoKHR:=addr(vkCmdEncodeVideoKHR);
  end;
{$endif}
  if not assigned(vkCmdDecompressMemoryNV) then begin
   @vkCmdDecompressMemoryNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdDecompressMemoryNV'));
   @vk.fCommands.CmdDecompressMemoryNV:=addr(vkCmdDecompressMemoryNV);
  end;
  if not assigned(vkCmdDecompressMemoryIndirectCountNV) then begin
   @vkCmdDecompressMemoryIndirectCountNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdDecompressMemoryIndirectCountNV'));
   @vk.fCommands.CmdDecompressMemoryIndirectCountNV:=addr(vkCmdDecompressMemoryIndirectCountNV);
  end;
  if not assigned(vkCreateCuModuleNVX) then begin
   @vkCreateCuModuleNVX:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateCuModuleNVX'));
   @vk.fCommands.CreateCuModuleNVX:=addr(vkCreateCuModuleNVX);
  end;
  if not assigned(vkCreateCuFunctionNVX) then begin
   @vkCreateCuFunctionNVX:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateCuFunctionNVX'));
   @vk.fCommands.CreateCuFunctionNVX:=addr(vkCreateCuFunctionNVX);
  end;
  if not assigned(vkDestroyCuModuleNVX) then begin
   @vkDestroyCuModuleNVX:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkDestroyCuModuleNVX'));
   @vk.fCommands.DestroyCuModuleNVX:=addr(vkDestroyCuModuleNVX);
  end;
  if not assigned(vkDestroyCuFunctionNVX) then begin
   @vkDestroyCuFunctionNVX:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkDestroyCuFunctionNVX'));
   @vk.fCommands.DestroyCuFunctionNVX:=addr(vkDestroyCuFunctionNVX);
  end;
  if not assigned(vkCmdCuLaunchKernelNVX) then begin
   @vkCmdCuLaunchKernelNVX:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdCuLaunchKernelNVX'));
   @vk.fCommands.CmdCuLaunchKernelNVX:=addr(vkCmdCuLaunchKernelNVX);
  end;
  if not assigned(vkGetDescriptorSetLayoutSizeEXT) then begin
   @vkGetDescriptorSetLayoutSizeEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetDescriptorSetLayoutSizeEXT'));
   @vk.fCommands.GetDescriptorSetLayoutSizeEXT:=addr(vkGetDescriptorSetLayoutSizeEXT);
  end;
  if not assigned(vkGetDescriptorSetLayoutBindingOffsetEXT) then begin
   @vkGetDescriptorSetLayoutBindingOffsetEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetDescriptorSetLayoutBindingOffsetEXT'));
   @vk.fCommands.GetDescriptorSetLayoutBindingOffsetEXT:=addr(vkGetDescriptorSetLayoutBindingOffsetEXT);
  end;
  if not assigned(vkGetDescriptorEXT) then begin
   @vkGetDescriptorEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetDescriptorEXT'));
   @vk.fCommands.GetDescriptorEXT:=addr(vkGetDescriptorEXT);
  end;
  if not assigned(vkCmdBindDescriptorBuffersEXT) then begin
   @vkCmdBindDescriptorBuffersEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdBindDescriptorBuffersEXT'));
   @vk.fCommands.CmdBindDescriptorBuffersEXT:=addr(vkCmdBindDescriptorBuffersEXT);
  end;
  if not assigned(vkCmdSetDescriptorBufferOffsetsEXT) then begin
   @vkCmdSetDescriptorBufferOffsetsEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetDescriptorBufferOffsetsEXT'));
   @vk.fCommands.CmdSetDescriptorBufferOffsetsEXT:=addr(vkCmdSetDescriptorBufferOffsetsEXT);
  end;
  if not assigned(vkCmdBindDescriptorBufferEmbeddedSamplersEXT) then begin
   @vkCmdBindDescriptorBufferEmbeddedSamplersEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdBindDescriptorBufferEmbeddedSamplersEXT'));
   @vk.fCommands.CmdBindDescriptorBufferEmbeddedSamplersEXT:=addr(vkCmdBindDescriptorBufferEmbeddedSamplersEXT);
  end;
  if not assigned(vkGetBufferOpaqueCaptureDescriptorDataEXT) then begin
   @vkGetBufferOpaqueCaptureDescriptorDataEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetBufferOpaqueCaptureDescriptorDataEXT'));
   @vk.fCommands.GetBufferOpaqueCaptureDescriptorDataEXT:=addr(vkGetBufferOpaqueCaptureDescriptorDataEXT);
  end;
  if not assigned(vkGetImageOpaqueCaptureDescriptorDataEXT) then begin
   @vkGetImageOpaqueCaptureDescriptorDataEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetImageOpaqueCaptureDescriptorDataEXT'));
   @vk.fCommands.GetImageOpaqueCaptureDescriptorDataEXT:=addr(vkGetImageOpaqueCaptureDescriptorDataEXT);
  end;
  if not assigned(vkGetImageViewOpaqueCaptureDescriptorDataEXT) then begin
   @vkGetImageViewOpaqueCaptureDescriptorDataEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetImageViewOpaqueCaptureDescriptorDataEXT'));
   @vk.fCommands.GetImageViewOpaqueCaptureDescriptorDataEXT:=addr(vkGetImageViewOpaqueCaptureDescriptorDataEXT);
  end;
  if not assigned(vkGetSamplerOpaqueCaptureDescriptorDataEXT) then begin
   @vkGetSamplerOpaqueCaptureDescriptorDataEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetSamplerOpaqueCaptureDescriptorDataEXT'));
   @vk.fCommands.GetSamplerOpaqueCaptureDescriptorDataEXT:=addr(vkGetSamplerOpaqueCaptureDescriptorDataEXT);
  end;
  if not assigned(vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT) then begin
   @vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT'));
   @vk.fCommands.GetAccelerationStructureOpaqueCaptureDescriptorDataEXT:=addr(vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT);
  end;
  if not assigned(vkSetDeviceMemoryPriorityEXT) then begin
   @vkSetDeviceMemoryPriorityEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkSetDeviceMemoryPriorityEXT'));
   @vk.fCommands.SetDeviceMemoryPriorityEXT:=addr(vkSetDeviceMemoryPriorityEXT);
  end;
  if not assigned(vkAcquireDrmDisplayEXT) then begin
   @vkAcquireDrmDisplayEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkAcquireDrmDisplayEXT'));
   @vk.fCommands.AcquireDrmDisplayEXT:=addr(vkAcquireDrmDisplayEXT);
  end;
  if not assigned(vkGetDrmDisplayEXT) then begin
   @vkGetDrmDisplayEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetDrmDisplayEXT'));
   @vk.fCommands.GetDrmDisplayEXT:=addr(vkGetDrmDisplayEXT);
  end;
  if not assigned(vkWaitForPresentKHR) then begin
   @vkWaitForPresentKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkWaitForPresentKHR'));
   @vk.fCommands.WaitForPresentKHR:=addr(vkWaitForPresentKHR);
  end;
{$ifdef Fuchsia}
  if not assigned(vkCreateBufferCollectionFUCHSIA) then begin
   @vkCreateBufferCollectionFUCHSIA:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateBufferCollectionFUCHSIA'));
   @vk.fCommands.CreateBufferCollectionFUCHSIA:=addr(vkCreateBufferCollectionFUCHSIA);
  end;
{$endif}
{$ifdef Fuchsia}
  if not assigned(vkSetBufferCollectionBufferConstraintsFUCHSIA) then begin
   @vkSetBufferCollectionBufferConstraintsFUCHSIA:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkSetBufferCollectionBufferConstraintsFUCHSIA'));
   @vk.fCommands.SetBufferCollectionBufferConstraintsFUCHSIA:=addr(vkSetBufferCollectionBufferConstraintsFUCHSIA);
  end;
{$endif}
{$ifdef Fuchsia}
  if not assigned(vkSetBufferCollectionImageConstraintsFUCHSIA) then begin
   @vkSetBufferCollectionImageConstraintsFUCHSIA:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkSetBufferCollectionImageConstraintsFUCHSIA'));
   @vk.fCommands.SetBufferCollectionImageConstraintsFUCHSIA:=addr(vkSetBufferCollectionImageConstraintsFUCHSIA);
  end;
{$endif}
{$ifdef Fuchsia}
  if not assigned(vkDestroyBufferCollectionFUCHSIA) then begin
   @vkDestroyBufferCollectionFUCHSIA:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkDestroyBufferCollectionFUCHSIA'));
   @vk.fCommands.DestroyBufferCollectionFUCHSIA:=addr(vkDestroyBufferCollectionFUCHSIA);
  end;
{$endif}
{$ifdef Fuchsia}
  if not assigned(vkGetBufferCollectionPropertiesFUCHSIA) then begin
   @vkGetBufferCollectionPropertiesFUCHSIA:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetBufferCollectionPropertiesFUCHSIA'));
   @vk.fCommands.GetBufferCollectionPropertiesFUCHSIA:=addr(vkGetBufferCollectionPropertiesFUCHSIA);
  end;
{$endif}
  if not assigned(vkCmdBeginRendering) then begin
   @vkCmdBeginRendering:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdBeginRendering'));
   @vk.fCommands.CmdBeginRendering:=addr(vkCmdBeginRendering);
  end;
  if not assigned(vkCmdBeginRenderingKHR) then begin
   @vkCmdBeginRenderingKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdBeginRenderingKHR'));
   @vk.fCommands.CmdBeginRenderingKHR:=addr(vkCmdBeginRenderingKHR);
  end;
  if not assigned(vkCmdEndRendering) then begin
   @vkCmdEndRendering:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdEndRendering'));
   @vk.fCommands.CmdEndRendering:=addr(vkCmdEndRendering);
  end;
  if not assigned(vkCmdEndRenderingKHR) then begin
   @vkCmdEndRenderingKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdEndRenderingKHR'));
   @vk.fCommands.CmdEndRenderingKHR:=addr(vkCmdEndRenderingKHR);
  end;
  if not assigned(vkGetDescriptorSetLayoutHostMappingInfoVALVE) then begin
   @vkGetDescriptorSetLayoutHostMappingInfoVALVE:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetDescriptorSetLayoutHostMappingInfoVALVE'));
   @vk.fCommands.GetDescriptorSetLayoutHostMappingInfoVALVE:=addr(vkGetDescriptorSetLayoutHostMappingInfoVALVE);
  end;
  if not assigned(vkGetDescriptorSetHostMappingVALVE) then begin
   @vkGetDescriptorSetHostMappingVALVE:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetDescriptorSetHostMappingVALVE'));
   @vk.fCommands.GetDescriptorSetHostMappingVALVE:=addr(vkGetDescriptorSetHostMappingVALVE);
  end;
  if not assigned(vkCreateMicromapEXT) then begin
   @vkCreateMicromapEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateMicromapEXT'));
   @vk.fCommands.CreateMicromapEXT:=addr(vkCreateMicromapEXT);
  end;
  if not assigned(vkCmdBuildMicromapsEXT) then begin
   @vkCmdBuildMicromapsEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdBuildMicromapsEXT'));
   @vk.fCommands.CmdBuildMicromapsEXT:=addr(vkCmdBuildMicromapsEXT);
  end;
  if not assigned(vkBuildMicromapsEXT) then begin
   @vkBuildMicromapsEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkBuildMicromapsEXT'));
   @vk.fCommands.BuildMicromapsEXT:=addr(vkBuildMicromapsEXT);
  end;
  if not assigned(vkDestroyMicromapEXT) then begin
   @vkDestroyMicromapEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkDestroyMicromapEXT'));
   @vk.fCommands.DestroyMicromapEXT:=addr(vkDestroyMicromapEXT);
  end;
  if not assigned(vkCmdCopyMicromapEXT) then begin
   @vkCmdCopyMicromapEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdCopyMicromapEXT'));
   @vk.fCommands.CmdCopyMicromapEXT:=addr(vkCmdCopyMicromapEXT);
  end;
  if not assigned(vkCopyMicromapEXT) then begin
   @vkCopyMicromapEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCopyMicromapEXT'));
   @vk.fCommands.CopyMicromapEXT:=addr(vkCopyMicromapEXT);
  end;
  if not assigned(vkCmdCopyMicromapToMemoryEXT) then begin
   @vkCmdCopyMicromapToMemoryEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdCopyMicromapToMemoryEXT'));
   @vk.fCommands.CmdCopyMicromapToMemoryEXT:=addr(vkCmdCopyMicromapToMemoryEXT);
  end;
  if not assigned(vkCopyMicromapToMemoryEXT) then begin
   @vkCopyMicromapToMemoryEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCopyMicromapToMemoryEXT'));
   @vk.fCommands.CopyMicromapToMemoryEXT:=addr(vkCopyMicromapToMemoryEXT);
  end;
  if not assigned(vkCmdCopyMemoryToMicromapEXT) then begin
   @vkCmdCopyMemoryToMicromapEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdCopyMemoryToMicromapEXT'));
   @vk.fCommands.CmdCopyMemoryToMicromapEXT:=addr(vkCmdCopyMemoryToMicromapEXT);
  end;
  if not assigned(vkCopyMemoryToMicromapEXT) then begin
   @vkCopyMemoryToMicromapEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCopyMemoryToMicromapEXT'));
   @vk.fCommands.CopyMemoryToMicromapEXT:=addr(vkCopyMemoryToMicromapEXT);
  end;
  if not assigned(vkCmdWriteMicromapsPropertiesEXT) then begin
   @vkCmdWriteMicromapsPropertiesEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdWriteMicromapsPropertiesEXT'));
   @vk.fCommands.CmdWriteMicromapsPropertiesEXT:=addr(vkCmdWriteMicromapsPropertiesEXT);
  end;
  if not assigned(vkWriteMicromapsPropertiesEXT) then begin
   @vkWriteMicromapsPropertiesEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkWriteMicromapsPropertiesEXT'));
   @vk.fCommands.WriteMicromapsPropertiesEXT:=addr(vkWriteMicromapsPropertiesEXT);
  end;
  if not assigned(vkGetDeviceMicromapCompatibilityEXT) then begin
   @vkGetDeviceMicromapCompatibilityEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetDeviceMicromapCompatibilityEXT'));
   @vk.fCommands.GetDeviceMicromapCompatibilityEXT:=addr(vkGetDeviceMicromapCompatibilityEXT);
  end;
  if not assigned(vkGetMicromapBuildSizesEXT) then begin
   @vkGetMicromapBuildSizesEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetMicromapBuildSizesEXT'));
   @vk.fCommands.GetMicromapBuildSizesEXT:=addr(vkGetMicromapBuildSizesEXT);
  end;
  if not assigned(vkGetShaderModuleIdentifierEXT) then begin
   @vkGetShaderModuleIdentifierEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetShaderModuleIdentifierEXT'));
   @vk.fCommands.GetShaderModuleIdentifierEXT:=addr(vkGetShaderModuleIdentifierEXT);
  end;
  if not assigned(vkGetShaderModuleCreateInfoIdentifierEXT) then begin
   @vkGetShaderModuleCreateInfoIdentifierEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetShaderModuleCreateInfoIdentifierEXT'));
   @vk.fCommands.GetShaderModuleCreateInfoIdentifierEXT:=addr(vkGetShaderModuleCreateInfoIdentifierEXT);
  end;
  if not assigned(vkGetImageSubresourceLayout2KHR) then begin
   @vkGetImageSubresourceLayout2KHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetImageSubresourceLayout2KHR'));
   @vk.fCommands.GetImageSubresourceLayout2KHR:=addr(vkGetImageSubresourceLayout2KHR);
  end;
  if not assigned(vkGetImageSubresourceLayout2EXT) then begin
   @vkGetImageSubresourceLayout2EXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetImageSubresourceLayout2EXT'));
   @vk.fCommands.GetImageSubresourceLayout2EXT:=addr(vkGetImageSubresourceLayout2EXT);
  end;
  if not assigned(vkGetPipelinePropertiesEXT) then begin
   @vkGetPipelinePropertiesEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPipelinePropertiesEXT'));
   @vk.fCommands.GetPipelinePropertiesEXT:=addr(vkGetPipelinePropertiesEXT);
  end;
  if not assigned(vkExportMetalObjectsEXT) then begin
   @vkExportMetalObjectsEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkExportMetalObjectsEXT'));
   @vk.fCommands.ExportMetalObjectsEXT:=addr(vkExportMetalObjectsEXT);
  end;
  if not assigned(vkGetFramebufferTilePropertiesQCOM) then begin
   @vkGetFramebufferTilePropertiesQCOM:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetFramebufferTilePropertiesQCOM'));
   @vk.fCommands.GetFramebufferTilePropertiesQCOM:=addr(vkGetFramebufferTilePropertiesQCOM);
  end;
  if not assigned(vkGetDynamicRenderingTilePropertiesQCOM) then begin
   @vkGetDynamicRenderingTilePropertiesQCOM:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetDynamicRenderingTilePropertiesQCOM'));
   @vk.fCommands.GetDynamicRenderingTilePropertiesQCOM:=addr(vkGetDynamicRenderingTilePropertiesQCOM);
  end;
  if not assigned(vkGetPhysicalDeviceOpticalFlowImageFormatsNV) then begin
   @vkGetPhysicalDeviceOpticalFlowImageFormatsNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceOpticalFlowImageFormatsNV'));
   @vk.fCommands.GetPhysicalDeviceOpticalFlowImageFormatsNV:=addr(vkGetPhysicalDeviceOpticalFlowImageFormatsNV);
  end;
  if not assigned(vkCreateOpticalFlowSessionNV) then begin
   @vkCreateOpticalFlowSessionNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateOpticalFlowSessionNV'));
   @vk.fCommands.CreateOpticalFlowSessionNV:=addr(vkCreateOpticalFlowSessionNV);
  end;
  if not assigned(vkDestroyOpticalFlowSessionNV) then begin
   @vkDestroyOpticalFlowSessionNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkDestroyOpticalFlowSessionNV'));
   @vk.fCommands.DestroyOpticalFlowSessionNV:=addr(vkDestroyOpticalFlowSessionNV);
  end;
  if not assigned(vkBindOpticalFlowSessionImageNV) then begin
   @vkBindOpticalFlowSessionImageNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkBindOpticalFlowSessionImageNV'));
   @vk.fCommands.BindOpticalFlowSessionImageNV:=addr(vkBindOpticalFlowSessionImageNV);
  end;
  if not assigned(vkCmdOpticalFlowExecuteNV) then begin
   @vkCmdOpticalFlowExecuteNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdOpticalFlowExecuteNV'));
   @vk.fCommands.CmdOpticalFlowExecuteNV:=addr(vkCmdOpticalFlowExecuteNV);
  end;
  if not assigned(vkGetDeviceFaultInfoEXT) then begin
   @vkGetDeviceFaultInfoEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetDeviceFaultInfoEXT'));
   @vk.fCommands.GetDeviceFaultInfoEXT:=addr(vkGetDeviceFaultInfoEXT);
  end;
  if not assigned(vkCmdSetDepthBias2EXT) then begin
   @vkCmdSetDepthBias2EXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdSetDepthBias2EXT'));
   @vk.fCommands.CmdSetDepthBias2EXT:=addr(vkCmdSetDepthBias2EXT);
  end;
  if not assigned(vkReleaseSwapchainImagesEXT) then begin
   @vkReleaseSwapchainImagesEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkReleaseSwapchainImagesEXT'));
   @vk.fCommands.ReleaseSwapchainImagesEXT:=addr(vkReleaseSwapchainImagesEXT);
  end;
  if not assigned(vkGetDeviceImageSubresourceLayoutKHR) then begin
   @vkGetDeviceImageSubresourceLayoutKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetDeviceImageSubresourceLayoutKHR'));
   @vk.fCommands.GetDeviceImageSubresourceLayoutKHR:=addr(vkGetDeviceImageSubresourceLayoutKHR);
  end;
  if not assigned(vkMapMemory2KHR) then begin
   @vkMapMemory2KHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkMapMemory2KHR'));
   @vk.fCommands.MapMemory2KHR:=addr(vkMapMemory2KHR);
  end;
  if not assigned(vkUnmapMemory2KHR) then begin
   @vkUnmapMemory2KHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkUnmapMemory2KHR'));
   @vk.fCommands.UnmapMemory2KHR:=addr(vkUnmapMemory2KHR);
  end;
  if not assigned(vkCreateShadersEXT) then begin
   @vkCreateShadersEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateShadersEXT'));
   @vk.fCommands.CreateShadersEXT:=addr(vkCreateShadersEXT);
  end;
  if not assigned(vkDestroyShaderEXT) then begin
   @vkDestroyShaderEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkDestroyShaderEXT'));
   @vk.fCommands.DestroyShaderEXT:=addr(vkDestroyShaderEXT);
  end;
  if not assigned(vkGetShaderBinaryDataEXT) then begin
   @vkGetShaderBinaryDataEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetShaderBinaryDataEXT'));
   @vk.fCommands.GetShaderBinaryDataEXT:=addr(vkGetShaderBinaryDataEXT);
  end;
  if not assigned(vkCmdBindShadersEXT) then begin
   @vkCmdBindShadersEXT:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdBindShadersEXT'));
   @vk.fCommands.CmdBindShadersEXT:=addr(vkCmdBindShadersEXT);
  end;
{$ifdef QNX}
  if not assigned(vkGetScreenBufferPropertiesQNX) then begin
   @vkGetScreenBufferPropertiesQNX:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetScreenBufferPropertiesQNX'));
   @vk.fCommands.GetScreenBufferPropertiesQNX:=addr(vkGetScreenBufferPropertiesQNX);
  end;
{$endif}
  if not assigned(vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR) then begin
   @vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR'));
   @vk.fCommands.GetPhysicalDeviceCooperativeMatrixPropertiesKHR:=addr(vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR);
  end;
  if not assigned(vkGetExecutionGraphPipelineScratchSizeAMDX) then begin
   @vkGetExecutionGraphPipelineScratchSizeAMDX:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetExecutionGraphPipelineScratchSizeAMDX'));
   @vk.fCommands.GetExecutionGraphPipelineScratchSizeAMDX:=addr(vkGetExecutionGraphPipelineScratchSizeAMDX);
  end;
  if not assigned(vkGetExecutionGraphPipelineNodeIndexAMDX) then begin
   @vkGetExecutionGraphPipelineNodeIndexAMDX:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetExecutionGraphPipelineNodeIndexAMDX'));
   @vk.fCommands.GetExecutionGraphPipelineNodeIndexAMDX:=addr(vkGetExecutionGraphPipelineNodeIndexAMDX);
  end;
  if not assigned(vkCreateExecutionGraphPipelinesAMDX) then begin
   @vkCreateExecutionGraphPipelinesAMDX:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCreateExecutionGraphPipelinesAMDX'));
   @vk.fCommands.CreateExecutionGraphPipelinesAMDX:=addr(vkCreateExecutionGraphPipelinesAMDX);
  end;
  if not assigned(vkCmdInitializeGraphScratchMemoryAMDX) then begin
   @vkCmdInitializeGraphScratchMemoryAMDX:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdInitializeGraphScratchMemoryAMDX'));
   @vk.fCommands.CmdInitializeGraphScratchMemoryAMDX:=addr(vkCmdInitializeGraphScratchMemoryAMDX);
  end;
  if not assigned(vkCmdDispatchGraphAMDX) then begin
   @vkCmdDispatchGraphAMDX:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdDispatchGraphAMDX'));
   @vk.fCommands.CmdDispatchGraphAMDX:=addr(vkCmdDispatchGraphAMDX);
  end;
  if not assigned(vkCmdDispatchGraphIndirectAMDX) then begin
   @vkCmdDispatchGraphIndirectAMDX:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdDispatchGraphIndirectAMDX'));
   @vk.fCommands.CmdDispatchGraphIndirectAMDX:=addr(vkCmdDispatchGraphIndirectAMDX);
  end;
  if not assigned(vkCmdDispatchGraphIndirectCountAMDX) then begin
   @vkCmdDispatchGraphIndirectCountAMDX:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkCmdDispatchGraphIndirectCountAMDX'));
   @vk.fCommands.CmdDispatchGraphIndirectCountAMDX:=addr(vkCmdDispatchGraphIndirectCountAMDX);
  end;
  if not assigned(vkSetLatencySleepModeNV) then begin
   @vkSetLatencySleepModeNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkSetLatencySleepModeNV'));
   @vk.fCommands.SetLatencySleepModeNV:=addr(vkSetLatencySleepModeNV);
  end;
  if not assigned(vkLatencySleepNV) then begin
   @vkLatencySleepNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkLatencySleepNV'));
   @vk.fCommands.LatencySleepNV:=addr(vkLatencySleepNV);
  end;
  if not assigned(vkSetLatencyMarkerNV) then begin
   @vkSetLatencyMarkerNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkSetLatencyMarkerNV'));
   @vk.fCommands.SetLatencyMarkerNV:=addr(vkSetLatencyMarkerNV);
  end;
  if not assigned(vkGetLatencyTimingsNV) then begin
   @vkGetLatencyTimingsNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkGetLatencyTimingsNV'));
   @vk.fCommands.GetLatencyTimingsNV:=addr(vkGetLatencyTimingsNV);
  end;
  if not assigned(vkQueueNotifyOutOfBandNV) then begin
   @vkQueueNotifyOutOfBandNV:=vkVoidFunctionToPointer(vkGetProcAddress(LibVulkan,'vkQueueNotifyOutOfBandNV'));
   @vk.fCommands.QueueNotifyOutOfBandNV:=addr(vkQueueNotifyOutOfBandNV);
  end;
  result:=assigned(vkCreateInstance);
 end;
end;

function LoadVulkanInstanceCommands(const GetInstanceProcAddr:TvkGetInstanceProcAddr;const Instance:TVkInstance;out InstanceCommands:TVulkanCommands):boolean;
begin
 FillChar(InstanceCommands,SizeOf(TVulkanCommands),#0);
 result:=assigned(GetInstanceProcAddr);
 if result then begin
  @InstanceCommands.CreateInstance:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateInstance')));
  @InstanceCommands.DestroyInstance:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkDestroyInstance')));
  @InstanceCommands.EnumeratePhysicalDevices:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkEnumeratePhysicalDevices')));
  @InstanceCommands.GetDeviceProcAddr:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetDeviceProcAddr')));
  @InstanceCommands.GetInstanceProcAddr:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetInstanceProcAddr')));
  @InstanceCommands.GetPhysicalDeviceProperties:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceProperties')));
  @InstanceCommands.GetPhysicalDeviceQueueFamilyProperties:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceQueueFamilyProperties')));
  @InstanceCommands.GetPhysicalDeviceMemoryProperties:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceMemoryProperties')));
  @InstanceCommands.GetPhysicalDeviceFeatures:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceFeatures')));
  @InstanceCommands.GetPhysicalDeviceFormatProperties:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceFormatProperties')));
  @InstanceCommands.GetPhysicalDeviceImageFormatProperties:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceImageFormatProperties')));
  @InstanceCommands.CreateDevice:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateDevice')));
  @InstanceCommands.DestroyDevice:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkDestroyDevice')));
  @InstanceCommands.EnumerateInstanceVersion:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkEnumerateInstanceVersion')));
  @InstanceCommands.EnumerateInstanceLayerProperties:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkEnumerateInstanceLayerProperties')));
  @InstanceCommands.EnumerateInstanceExtensionProperties:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkEnumerateInstanceExtensionProperties')));
  @InstanceCommands.EnumerateDeviceLayerProperties:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkEnumerateDeviceLayerProperties')));
  @InstanceCommands.EnumerateDeviceExtensionProperties:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkEnumerateDeviceExtensionProperties')));
  @InstanceCommands.GetDeviceQueue:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetDeviceQueue')));
  @InstanceCommands.QueueSubmit:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkQueueSubmit')));
  @InstanceCommands.QueueWaitIdle:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkQueueWaitIdle')));
  @InstanceCommands.DeviceWaitIdle:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkDeviceWaitIdle')));
  @InstanceCommands.AllocateMemory:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkAllocateMemory')));
  @InstanceCommands.FreeMemory:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkFreeMemory')));
  @InstanceCommands.MapMemory:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkMapMemory')));
  @InstanceCommands.UnmapMemory:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkUnmapMemory')));
  @InstanceCommands.FlushMappedMemoryRanges:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkFlushMappedMemoryRanges')));
  @InstanceCommands.InvalidateMappedMemoryRanges:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkInvalidateMappedMemoryRanges')));
  @InstanceCommands.GetDeviceMemoryCommitment:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetDeviceMemoryCommitment')));
  @InstanceCommands.GetBufferMemoryRequirements:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetBufferMemoryRequirements')));
  @InstanceCommands.BindBufferMemory:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkBindBufferMemory')));
  @InstanceCommands.GetImageMemoryRequirements:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetImageMemoryRequirements')));
  @InstanceCommands.BindImageMemory:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkBindImageMemory')));
  @InstanceCommands.GetImageSparseMemoryRequirements:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetImageSparseMemoryRequirements')));
  @InstanceCommands.GetPhysicalDeviceSparseImageFormatProperties:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceSparseImageFormatProperties')));
  @InstanceCommands.QueueBindSparse:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkQueueBindSparse')));
  @InstanceCommands.CreateFence:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateFence')));
  @InstanceCommands.DestroyFence:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkDestroyFence')));
  @InstanceCommands.ResetFences:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkResetFences')));
  @InstanceCommands.GetFenceStatus:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetFenceStatus')));
  @InstanceCommands.WaitForFences:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkWaitForFences')));
  @InstanceCommands.CreateSemaphore:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateSemaphore')));
  @InstanceCommands.DestroySemaphore:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkDestroySemaphore')));
  @InstanceCommands.CreateEvent:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateEvent')));
  @InstanceCommands.DestroyEvent:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkDestroyEvent')));
  @InstanceCommands.GetEventStatus:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetEventStatus')));
  @InstanceCommands.SetEvent:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkSetEvent')));
  @InstanceCommands.ResetEvent:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkResetEvent')));
  @InstanceCommands.CreateQueryPool:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateQueryPool')));
  @InstanceCommands.DestroyQueryPool:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkDestroyQueryPool')));
  @InstanceCommands.GetQueryPoolResults:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetQueryPoolResults')));
  @InstanceCommands.ResetQueryPool:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkResetQueryPool')));
  @InstanceCommands.ResetQueryPoolEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkResetQueryPoolEXT')));
  @InstanceCommands.CreateBuffer:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateBuffer')));
  @InstanceCommands.DestroyBuffer:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkDestroyBuffer')));
  @InstanceCommands.CreateBufferView:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateBufferView')));
  @InstanceCommands.DestroyBufferView:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkDestroyBufferView')));
  @InstanceCommands.CreateImage:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateImage')));
  @InstanceCommands.DestroyImage:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkDestroyImage')));
  @InstanceCommands.GetImageSubresourceLayout:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetImageSubresourceLayout')));
  @InstanceCommands.CreateImageView:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateImageView')));
  @InstanceCommands.DestroyImageView:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkDestroyImageView')));
  @InstanceCommands.CreateShaderModule:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateShaderModule')));
  @InstanceCommands.DestroyShaderModule:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkDestroyShaderModule')));
  @InstanceCommands.CreatePipelineCache:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreatePipelineCache')));
  @InstanceCommands.DestroyPipelineCache:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkDestroyPipelineCache')));
  @InstanceCommands.GetPipelineCacheData:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPipelineCacheData')));
  @InstanceCommands.MergePipelineCaches:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkMergePipelineCaches')));
  @InstanceCommands.CreateGraphicsPipelines:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateGraphicsPipelines')));
  @InstanceCommands.CreateComputePipelines:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateComputePipelines')));
  @InstanceCommands.GetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI')));
  @InstanceCommands.DestroyPipeline:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkDestroyPipeline')));
  @InstanceCommands.CreatePipelineLayout:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreatePipelineLayout')));
  @InstanceCommands.DestroyPipelineLayout:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkDestroyPipelineLayout')));
  @InstanceCommands.CreateSampler:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateSampler')));
  @InstanceCommands.DestroySampler:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkDestroySampler')));
  @InstanceCommands.CreateDescriptorSetLayout:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateDescriptorSetLayout')));
  @InstanceCommands.DestroyDescriptorSetLayout:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkDestroyDescriptorSetLayout')));
  @InstanceCommands.CreateDescriptorPool:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateDescriptorPool')));
  @InstanceCommands.DestroyDescriptorPool:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkDestroyDescriptorPool')));
  @InstanceCommands.ResetDescriptorPool:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkResetDescriptorPool')));
  @InstanceCommands.AllocateDescriptorSets:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkAllocateDescriptorSets')));
  @InstanceCommands.FreeDescriptorSets:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkFreeDescriptorSets')));
  @InstanceCommands.UpdateDescriptorSets:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkUpdateDescriptorSets')));
  @InstanceCommands.CreateFramebuffer:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateFramebuffer')));
  @InstanceCommands.DestroyFramebuffer:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkDestroyFramebuffer')));
  @InstanceCommands.CreateRenderPass:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateRenderPass')));
  @InstanceCommands.DestroyRenderPass:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkDestroyRenderPass')));
  @InstanceCommands.GetRenderAreaGranularity:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetRenderAreaGranularity')));
  @InstanceCommands.GetRenderingAreaGranularityKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetRenderingAreaGranularityKHR')));
  @InstanceCommands.CreateCommandPool:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateCommandPool')));
  @InstanceCommands.DestroyCommandPool:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkDestroyCommandPool')));
  @InstanceCommands.ResetCommandPool:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkResetCommandPool')));
  @InstanceCommands.AllocateCommandBuffers:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkAllocateCommandBuffers')));
  @InstanceCommands.FreeCommandBuffers:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkFreeCommandBuffers')));
  @InstanceCommands.BeginCommandBuffer:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkBeginCommandBuffer')));
  @InstanceCommands.EndCommandBuffer:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkEndCommandBuffer')));
  @InstanceCommands.ResetCommandBuffer:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkResetCommandBuffer')));
  @InstanceCommands.CmdBindPipeline:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdBindPipeline')));
  @InstanceCommands.CmdSetAttachmentFeedbackLoopEnableEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetAttachmentFeedbackLoopEnableEXT')));
  @InstanceCommands.CmdSetViewport:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetViewport')));
  @InstanceCommands.CmdSetScissor:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetScissor')));
  @InstanceCommands.CmdSetLineWidth:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetLineWidth')));
  @InstanceCommands.CmdSetDepthBias:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetDepthBias')));
  @InstanceCommands.CmdSetBlendConstants:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetBlendConstants')));
  @InstanceCommands.CmdSetDepthBounds:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetDepthBounds')));
  @InstanceCommands.CmdSetStencilCompareMask:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetStencilCompareMask')));
  @InstanceCommands.CmdSetStencilWriteMask:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetStencilWriteMask')));
  @InstanceCommands.CmdSetStencilReference:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetStencilReference')));
  @InstanceCommands.CmdBindDescriptorSets:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdBindDescriptorSets')));
  @InstanceCommands.CmdBindIndexBuffer:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdBindIndexBuffer')));
  @InstanceCommands.CmdBindVertexBuffers:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdBindVertexBuffers')));
  @InstanceCommands.CmdDraw:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdDraw')));
  @InstanceCommands.CmdDrawIndexed:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdDrawIndexed')));
  @InstanceCommands.CmdDrawMultiEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdDrawMultiEXT')));
  @InstanceCommands.CmdDrawMultiIndexedEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdDrawMultiIndexedEXT')));
  @InstanceCommands.CmdDrawIndirect:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdDrawIndirect')));
  @InstanceCommands.CmdDrawIndexedIndirect:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdDrawIndexedIndirect')));
  @InstanceCommands.CmdDispatch:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdDispatch')));
  @InstanceCommands.CmdDispatchIndirect:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdDispatchIndirect')));
  @InstanceCommands.CmdSubpassShadingHUAWEI:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSubpassShadingHUAWEI')));
  @InstanceCommands.CmdDrawClusterHUAWEI:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdDrawClusterHUAWEI')));
  @InstanceCommands.CmdDrawClusterIndirectHUAWEI:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdDrawClusterIndirectHUAWEI')));
  @InstanceCommands.CmdUpdatePipelineIndirectBufferNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdUpdatePipelineIndirectBufferNV')));
  @InstanceCommands.CmdCopyBuffer:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdCopyBuffer')));
  @InstanceCommands.CmdCopyImage:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdCopyImage')));
  @InstanceCommands.CmdBlitImage:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdBlitImage')));
  @InstanceCommands.CmdCopyBufferToImage:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdCopyBufferToImage')));
  @InstanceCommands.CmdCopyImageToBuffer:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdCopyImageToBuffer')));
  @InstanceCommands.CmdCopyMemoryIndirectNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdCopyMemoryIndirectNV')));
  @InstanceCommands.CmdCopyMemoryToImageIndirectNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdCopyMemoryToImageIndirectNV')));
  @InstanceCommands.CmdUpdateBuffer:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdUpdateBuffer')));
  @InstanceCommands.CmdFillBuffer:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdFillBuffer')));
  @InstanceCommands.CmdClearColorImage:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdClearColorImage')));
  @InstanceCommands.CmdClearDepthStencilImage:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdClearDepthStencilImage')));
  @InstanceCommands.CmdClearAttachments:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdClearAttachments')));
  @InstanceCommands.CmdResolveImage:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdResolveImage')));
  @InstanceCommands.CmdSetEvent:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetEvent')));
  @InstanceCommands.CmdResetEvent:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdResetEvent')));
  @InstanceCommands.CmdWaitEvents:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdWaitEvents')));
  @InstanceCommands.CmdPipelineBarrier:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdPipelineBarrier')));
  @InstanceCommands.CmdBeginQuery:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdBeginQuery')));
  @InstanceCommands.CmdEndQuery:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdEndQuery')));
  @InstanceCommands.CmdBeginConditionalRenderingEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdBeginConditionalRenderingEXT')));
  @InstanceCommands.CmdEndConditionalRenderingEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdEndConditionalRenderingEXT')));
  @InstanceCommands.CmdResetQueryPool:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdResetQueryPool')));
  @InstanceCommands.CmdWriteTimestamp:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdWriteTimestamp')));
  @InstanceCommands.CmdCopyQueryPoolResults:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdCopyQueryPoolResults')));
  @InstanceCommands.CmdPushConstants:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdPushConstants')));
  @InstanceCommands.CmdBeginRenderPass:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdBeginRenderPass')));
  @InstanceCommands.CmdNextSubpass:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdNextSubpass')));
  @InstanceCommands.CmdEndRenderPass:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdEndRenderPass')));
  @InstanceCommands.CmdExecuteCommands:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdExecuteCommands')));
{$ifdef Android}
  @InstanceCommands.CreateAndroidSurfaceKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateAndroidSurfaceKHR')));
{$endif}
  @InstanceCommands.GetPhysicalDeviceDisplayPropertiesKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceDisplayPropertiesKHR')));
  @InstanceCommands.GetPhysicalDeviceDisplayPlanePropertiesKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceDisplayPlanePropertiesKHR')));
  @InstanceCommands.GetDisplayPlaneSupportedDisplaysKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetDisplayPlaneSupportedDisplaysKHR')));
  @InstanceCommands.GetDisplayModePropertiesKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetDisplayModePropertiesKHR')));
  @InstanceCommands.CreateDisplayModeKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateDisplayModeKHR')));
  @InstanceCommands.GetDisplayPlaneCapabilitiesKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetDisplayPlaneCapabilitiesKHR')));
  @InstanceCommands.CreateDisplayPlaneSurfaceKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateDisplayPlaneSurfaceKHR')));
  @InstanceCommands.CreateSharedSwapchainsKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateSharedSwapchainsKHR')));
  @InstanceCommands.DestroySurfaceKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkDestroySurfaceKHR')));
  @InstanceCommands.GetPhysicalDeviceSurfaceSupportKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceSurfaceSupportKHR')));
  @InstanceCommands.GetPhysicalDeviceSurfaceCapabilitiesKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceSurfaceCapabilitiesKHR')));
  @InstanceCommands.GetPhysicalDeviceSurfaceFormatsKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceSurfaceFormatsKHR')));
  @InstanceCommands.GetPhysicalDeviceSurfacePresentModesKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceSurfacePresentModesKHR')));
  @InstanceCommands.CreateSwapchainKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateSwapchainKHR')));
  @InstanceCommands.DestroySwapchainKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkDestroySwapchainKHR')));
  @InstanceCommands.GetSwapchainImagesKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetSwapchainImagesKHR')));
  @InstanceCommands.AcquireNextImageKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkAcquireNextImageKHR')));
  @InstanceCommands.QueuePresentKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkQueuePresentKHR')));
  @InstanceCommands.CreateViSurfaceNN:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateViSurfaceNN')));
{$ifdef Wayland}
  @InstanceCommands.CreateWaylandSurfaceKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateWaylandSurfaceKHR')));
{$endif}
{$ifdef Wayland}
  @InstanceCommands.GetPhysicalDeviceWaylandPresentationSupportKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceWaylandPresentationSupportKHR')));
{$endif}
{$ifdef Windows}
  @InstanceCommands.CreateWin32SurfaceKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateWin32SurfaceKHR')));
{$endif}
{$ifdef Windows}
  @InstanceCommands.GetPhysicalDeviceWin32PresentationSupportKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceWin32PresentationSupportKHR')));
{$endif}
{$ifdef XLIB}
  @InstanceCommands.CreateXlibSurfaceKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateXlibSurfaceKHR')));
{$endif}
{$ifdef XLIB}
  @InstanceCommands.GetPhysicalDeviceXlibPresentationSupportKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceXlibPresentationSupportKHR')));
{$endif}
{$ifdef XCB}
  @InstanceCommands.CreateXcbSurfaceKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateXcbSurfaceKHR')));
{$endif}
{$ifdef XCB}
  @InstanceCommands.GetPhysicalDeviceXcbPresentationSupportKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceXcbPresentationSupportKHR')));
{$endif}
{$ifdef DirectFB}
  @InstanceCommands.CreateDirectFBSurfaceEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateDirectFBSurfaceEXT')));
{$endif}
{$ifdef DirectFB}
  @InstanceCommands.GetPhysicalDeviceDirectFBPresentationSupportEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceDirectFBPresentationSupportEXT')));
{$endif}
{$ifdef Fuchsia}
  @InstanceCommands.CreateImagePipeSurfaceFUCHSIA:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateImagePipeSurfaceFUCHSIA')));
{$endif}
  @InstanceCommands.CreateStreamDescriptorSurfaceGGP:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateStreamDescriptorSurfaceGGP')));
{$ifdef QNX}
  @InstanceCommands.CreateScreenSurfaceQNX:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateScreenSurfaceQNX')));
{$endif}
{$ifdef QNX}
  @InstanceCommands.GetPhysicalDeviceScreenPresentationSupportQNX:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceScreenPresentationSupportQNX')));
{$endif}
  @InstanceCommands.CreateDebugReportCallbackEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateDebugReportCallbackEXT')));
  @InstanceCommands.DestroyDebugReportCallbackEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkDestroyDebugReportCallbackEXT')));
  @InstanceCommands.DebugReportMessageEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkDebugReportMessageEXT')));
  @InstanceCommands.DebugMarkerSetObjectNameEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkDebugMarkerSetObjectNameEXT')));
  @InstanceCommands.DebugMarkerSetObjectTagEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkDebugMarkerSetObjectTagEXT')));
  @InstanceCommands.CmdDebugMarkerBeginEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdDebugMarkerBeginEXT')));
  @InstanceCommands.CmdDebugMarkerEndEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdDebugMarkerEndEXT')));
  @InstanceCommands.CmdDebugMarkerInsertEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdDebugMarkerInsertEXT')));
  @InstanceCommands.GetPhysicalDeviceExternalImageFormatPropertiesNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceExternalImageFormatPropertiesNV')));
{$ifdef Windows}
  @InstanceCommands.GetMemoryWin32HandleNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetMemoryWin32HandleNV')));
{$endif}
  @InstanceCommands.CmdExecuteGeneratedCommandsNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdExecuteGeneratedCommandsNV')));
  @InstanceCommands.CmdPreprocessGeneratedCommandsNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdPreprocessGeneratedCommandsNV')));
  @InstanceCommands.CmdBindPipelineShaderGroupNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdBindPipelineShaderGroupNV')));
  @InstanceCommands.GetGeneratedCommandsMemoryRequirementsNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetGeneratedCommandsMemoryRequirementsNV')));
  @InstanceCommands.CreateIndirectCommandsLayoutNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateIndirectCommandsLayoutNV')));
  @InstanceCommands.DestroyIndirectCommandsLayoutNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkDestroyIndirectCommandsLayoutNV')));
  @InstanceCommands.GetPhysicalDeviceFeatures2:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceFeatures2')));
  @InstanceCommands.GetPhysicalDeviceFeatures2KHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceFeatures2KHR')));
  @InstanceCommands.GetPhysicalDeviceProperties2:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceProperties2')));
  @InstanceCommands.GetPhysicalDeviceProperties2KHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceProperties2KHR')));
  @InstanceCommands.GetPhysicalDeviceFormatProperties2:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceFormatProperties2')));
  @InstanceCommands.GetPhysicalDeviceFormatProperties2KHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceFormatProperties2KHR')));
  @InstanceCommands.GetPhysicalDeviceImageFormatProperties2:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceImageFormatProperties2')));
  @InstanceCommands.GetPhysicalDeviceImageFormatProperties2KHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceImageFormatProperties2KHR')));
  @InstanceCommands.GetPhysicalDeviceQueueFamilyProperties2:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceQueueFamilyProperties2')));
  @InstanceCommands.GetPhysicalDeviceQueueFamilyProperties2KHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceQueueFamilyProperties2KHR')));
  @InstanceCommands.GetPhysicalDeviceMemoryProperties2:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceMemoryProperties2')));
  @InstanceCommands.GetPhysicalDeviceMemoryProperties2KHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceMemoryProperties2KHR')));
  @InstanceCommands.GetPhysicalDeviceSparseImageFormatProperties2:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceSparseImageFormatProperties2')));
  @InstanceCommands.GetPhysicalDeviceSparseImageFormatProperties2KHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceSparseImageFormatProperties2KHR')));
  @InstanceCommands.CmdPushDescriptorSetKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdPushDescriptorSetKHR')));
  @InstanceCommands.TrimCommandPool:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkTrimCommandPool')));
  @InstanceCommands.TrimCommandPoolKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkTrimCommandPoolKHR')));
  @InstanceCommands.GetPhysicalDeviceExternalBufferProperties:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceExternalBufferProperties')));
  @InstanceCommands.GetPhysicalDeviceExternalBufferPropertiesKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceExternalBufferPropertiesKHR')));
{$ifdef Windows}
  @InstanceCommands.GetMemoryWin32HandleKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetMemoryWin32HandleKHR')));
{$endif}
{$ifdef Windows}
  @InstanceCommands.GetMemoryWin32HandlePropertiesKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetMemoryWin32HandlePropertiesKHR')));
{$endif}
  @InstanceCommands.GetMemoryFdKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetMemoryFdKHR')));
  @InstanceCommands.GetMemoryFdPropertiesKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetMemoryFdPropertiesKHR')));
{$ifdef Fuchsia}
  @InstanceCommands.GetMemoryZirconHandleFUCHSIA:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetMemoryZirconHandleFUCHSIA')));
{$endif}
{$ifdef Fuchsia}
  @InstanceCommands.GetMemoryZirconHandlePropertiesFUCHSIA:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetMemoryZirconHandlePropertiesFUCHSIA')));
{$endif}
  @InstanceCommands.GetMemoryRemoteAddressNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetMemoryRemoteAddressNV')));
{$ifdef NvSci}
  @InstanceCommands.GetMemorySciBufNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetMemorySciBufNV')));
{$endif}
{$ifdef NvSci}
  @InstanceCommands.GetPhysicalDeviceExternalMemorySciBufPropertiesNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceExternalMemorySciBufPropertiesNV')));
{$endif}
{$ifdef NvSci}
  @InstanceCommands.GetPhysicalDeviceSciBufAttributesNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceSciBufAttributesNV')));
{$endif}
  @InstanceCommands.GetPhysicalDeviceExternalSemaphoreProperties:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceExternalSemaphoreProperties')));
  @InstanceCommands.GetPhysicalDeviceExternalSemaphorePropertiesKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceExternalSemaphorePropertiesKHR')));
{$ifdef Windows}
  @InstanceCommands.GetSemaphoreWin32HandleKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetSemaphoreWin32HandleKHR')));
{$endif}
{$ifdef Windows}
  @InstanceCommands.ImportSemaphoreWin32HandleKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkImportSemaphoreWin32HandleKHR')));
{$endif}
  @InstanceCommands.GetSemaphoreFdKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetSemaphoreFdKHR')));
  @InstanceCommands.ImportSemaphoreFdKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkImportSemaphoreFdKHR')));
{$ifdef Fuchsia}
  @InstanceCommands.GetSemaphoreZirconHandleFUCHSIA:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetSemaphoreZirconHandleFUCHSIA')));
{$endif}
{$ifdef Fuchsia}
  @InstanceCommands.ImportSemaphoreZirconHandleFUCHSIA:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkImportSemaphoreZirconHandleFUCHSIA')));
{$endif}
  @InstanceCommands.GetPhysicalDeviceExternalFenceProperties:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceExternalFenceProperties')));
  @InstanceCommands.GetPhysicalDeviceExternalFencePropertiesKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceExternalFencePropertiesKHR')));
{$ifdef Windows}
  @InstanceCommands.GetFenceWin32HandleKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetFenceWin32HandleKHR')));
{$endif}
{$ifdef Windows}
  @InstanceCommands.ImportFenceWin32HandleKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkImportFenceWin32HandleKHR')));
{$endif}
  @InstanceCommands.GetFenceFdKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetFenceFdKHR')));
  @InstanceCommands.ImportFenceFdKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkImportFenceFdKHR')));
{$ifdef NvSci}
  @InstanceCommands.GetFenceSciSyncFenceNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetFenceSciSyncFenceNV')));
{$endif}
{$ifdef NvSci}
  @InstanceCommands.GetFenceSciSyncObjNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetFenceSciSyncObjNV')));
{$endif}
{$ifdef NvSci}
  @InstanceCommands.ImportFenceSciSyncFenceNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkImportFenceSciSyncFenceNV')));
{$endif}
{$ifdef NvSci}
  @InstanceCommands.ImportFenceSciSyncObjNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkImportFenceSciSyncObjNV')));
{$endif}
{$ifdef NvSci}
  @InstanceCommands.GetSemaphoreSciSyncObjNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetSemaphoreSciSyncObjNV')));
{$endif}
{$ifdef NvSci}
  @InstanceCommands.ImportSemaphoreSciSyncObjNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkImportSemaphoreSciSyncObjNV')));
{$endif}
{$ifdef NvSci}
  @InstanceCommands.GetPhysicalDeviceSciSyncAttributesNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceSciSyncAttributesNV')));
{$endif}
{$ifdef NvSci}
  @InstanceCommands.CreateSemaphoreSciSyncPoolNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateSemaphoreSciSyncPoolNV')));
{$endif}
{$ifdef NvSci}
  @InstanceCommands.DestroySemaphoreSciSyncPoolNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkDestroySemaphoreSciSyncPoolNV')));
{$endif}
  @InstanceCommands.ReleaseDisplayEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkReleaseDisplayEXT')));
{$ifdef XLIB}
  @InstanceCommands.AcquireXlibDisplayEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkAcquireXlibDisplayEXT')));
{$endif}
{$ifdef RandR}
  @InstanceCommands.GetRandROutputDisplayEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetRandROutputDisplayEXT')));
{$endif}
  @InstanceCommands.AcquireWinrtDisplayNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkAcquireWinrtDisplayNV')));
  @InstanceCommands.GetWinrtDisplayNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetWinrtDisplayNV')));
  @InstanceCommands.DisplayPowerControlEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkDisplayPowerControlEXT')));
  @InstanceCommands.RegisterDeviceEventEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkRegisterDeviceEventEXT')));
  @InstanceCommands.RegisterDisplayEventEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkRegisterDisplayEventEXT')));
  @InstanceCommands.GetSwapchainCounterEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetSwapchainCounterEXT')));
  @InstanceCommands.GetPhysicalDeviceSurfaceCapabilities2EXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceSurfaceCapabilities2EXT')));
  @InstanceCommands.EnumeratePhysicalDeviceGroups:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkEnumeratePhysicalDeviceGroups')));
  @InstanceCommands.EnumeratePhysicalDeviceGroupsKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkEnumeratePhysicalDeviceGroupsKHR')));
  @InstanceCommands.GetDeviceGroupPeerMemoryFeatures:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetDeviceGroupPeerMemoryFeatures')));
  @InstanceCommands.GetDeviceGroupPeerMemoryFeaturesKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetDeviceGroupPeerMemoryFeaturesKHR')));
  @InstanceCommands.BindBufferMemory2:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkBindBufferMemory2')));
  @InstanceCommands.BindBufferMemory2KHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkBindBufferMemory2KHR')));
  @InstanceCommands.BindImageMemory2:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkBindImageMemory2')));
  @InstanceCommands.BindImageMemory2KHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkBindImageMemory2KHR')));
  @InstanceCommands.CmdSetDeviceMask:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetDeviceMask')));
  @InstanceCommands.CmdSetDeviceMaskKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetDeviceMaskKHR')));
  @InstanceCommands.GetDeviceGroupPresentCapabilitiesKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetDeviceGroupPresentCapabilitiesKHR')));
  @InstanceCommands.GetDeviceGroupSurfacePresentModesKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetDeviceGroupSurfacePresentModesKHR')));
  @InstanceCommands.AcquireNextImage2KHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkAcquireNextImage2KHR')));
  @InstanceCommands.CmdDispatchBase:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdDispatchBase')));
  @InstanceCommands.CmdDispatchBaseKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdDispatchBaseKHR')));
  @InstanceCommands.GetPhysicalDevicePresentRectanglesKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDevicePresentRectanglesKHR')));
  @InstanceCommands.CreateDescriptorUpdateTemplate:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateDescriptorUpdateTemplate')));
  @InstanceCommands.CreateDescriptorUpdateTemplateKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateDescriptorUpdateTemplateKHR')));
  @InstanceCommands.DestroyDescriptorUpdateTemplate:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkDestroyDescriptorUpdateTemplate')));
  @InstanceCommands.DestroyDescriptorUpdateTemplateKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkDestroyDescriptorUpdateTemplateKHR')));
  @InstanceCommands.UpdateDescriptorSetWithTemplate:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkUpdateDescriptorSetWithTemplate')));
  @InstanceCommands.UpdateDescriptorSetWithTemplateKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkUpdateDescriptorSetWithTemplateKHR')));
  @InstanceCommands.CmdPushDescriptorSetWithTemplateKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdPushDescriptorSetWithTemplateKHR')));
  @InstanceCommands.SetHdrMetadataEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkSetHdrMetadataEXT')));
  @InstanceCommands.GetSwapchainStatusKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetSwapchainStatusKHR')));
  @InstanceCommands.GetRefreshCycleDurationGOOGLE:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetRefreshCycleDurationGOOGLE')));
  @InstanceCommands.GetPastPresentationTimingGOOGLE:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPastPresentationTimingGOOGLE')));
{$ifdef MoltenVK_IOS}
  @InstanceCommands.CreateIOSSurfaceMVK:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateIOSSurfaceMVK')));
{$endif}
{$ifdef MoltenVK_MacOS}
  @InstanceCommands.CreateMacOSSurfaceMVK:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateMacOSSurfaceMVK')));
{$endif}
  @InstanceCommands.CreateMetalSurfaceEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateMetalSurfaceEXT')));
  @InstanceCommands.CmdSetViewportWScalingNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetViewportWScalingNV')));
  @InstanceCommands.CmdSetDiscardRectangleEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetDiscardRectangleEXT')));
  @InstanceCommands.CmdSetDiscardRectangleEnableEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetDiscardRectangleEnableEXT')));
  @InstanceCommands.CmdSetDiscardRectangleModeEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetDiscardRectangleModeEXT')));
  @InstanceCommands.CmdSetSampleLocationsEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetSampleLocationsEXT')));
  @InstanceCommands.GetPhysicalDeviceMultisamplePropertiesEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceMultisamplePropertiesEXT')));
  @InstanceCommands.GetPhysicalDeviceSurfaceCapabilities2KHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceSurfaceCapabilities2KHR')));
  @InstanceCommands.GetPhysicalDeviceSurfaceFormats2KHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceSurfaceFormats2KHR')));
  @InstanceCommands.GetPhysicalDeviceDisplayProperties2KHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceDisplayProperties2KHR')));
  @InstanceCommands.GetPhysicalDeviceDisplayPlaneProperties2KHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceDisplayPlaneProperties2KHR')));
  @InstanceCommands.GetDisplayModeProperties2KHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetDisplayModeProperties2KHR')));
  @InstanceCommands.GetDisplayPlaneCapabilities2KHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetDisplayPlaneCapabilities2KHR')));
  @InstanceCommands.GetBufferMemoryRequirements2:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetBufferMemoryRequirements2')));
  @InstanceCommands.GetBufferMemoryRequirements2KHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetBufferMemoryRequirements2KHR')));
  @InstanceCommands.GetImageMemoryRequirements2:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetImageMemoryRequirements2')));
  @InstanceCommands.GetImageMemoryRequirements2KHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetImageMemoryRequirements2KHR')));
  @InstanceCommands.GetImageSparseMemoryRequirements2:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetImageSparseMemoryRequirements2')));
  @InstanceCommands.GetImageSparseMemoryRequirements2KHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetImageSparseMemoryRequirements2KHR')));
  @InstanceCommands.GetDeviceBufferMemoryRequirements:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetDeviceBufferMemoryRequirements')));
  @InstanceCommands.GetDeviceBufferMemoryRequirementsKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetDeviceBufferMemoryRequirementsKHR')));
  @InstanceCommands.GetDeviceImageMemoryRequirements:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetDeviceImageMemoryRequirements')));
  @InstanceCommands.GetDeviceImageMemoryRequirementsKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetDeviceImageMemoryRequirementsKHR')));
  @InstanceCommands.GetDeviceImageSparseMemoryRequirements:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetDeviceImageSparseMemoryRequirements')));
  @InstanceCommands.GetDeviceImageSparseMemoryRequirementsKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetDeviceImageSparseMemoryRequirementsKHR')));
  @InstanceCommands.CreateSamplerYcbcrConversion:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateSamplerYcbcrConversion')));
  @InstanceCommands.CreateSamplerYcbcrConversionKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateSamplerYcbcrConversionKHR')));
  @InstanceCommands.DestroySamplerYcbcrConversion:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkDestroySamplerYcbcrConversion')));
  @InstanceCommands.DestroySamplerYcbcrConversionKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkDestroySamplerYcbcrConversionKHR')));
  @InstanceCommands.GetDeviceQueue2:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetDeviceQueue2')));
  @InstanceCommands.CreateValidationCacheEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateValidationCacheEXT')));
  @InstanceCommands.DestroyValidationCacheEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkDestroyValidationCacheEXT')));
  @InstanceCommands.GetValidationCacheDataEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetValidationCacheDataEXT')));
  @InstanceCommands.MergeValidationCachesEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkMergeValidationCachesEXT')));
  @InstanceCommands.GetDescriptorSetLayoutSupport:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetDescriptorSetLayoutSupport')));
  @InstanceCommands.GetDescriptorSetLayoutSupportKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetDescriptorSetLayoutSupportKHR')));
  @InstanceCommands.GetSwapchainGrallocUsageANDROID:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetSwapchainGrallocUsageANDROID')));
{$ifdef Android}
  @InstanceCommands.GetSwapchainGrallocUsage2ANDROID:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetSwapchainGrallocUsage2ANDROID')));
{$endif}
  @InstanceCommands.AcquireImageANDROID:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkAcquireImageANDROID')));
  @InstanceCommands.QueueSignalReleaseImageANDROID:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkQueueSignalReleaseImageANDROID')));
  @InstanceCommands.GetShaderInfoAMD:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetShaderInfoAMD')));
  @InstanceCommands.SetLocalDimmingAMD:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkSetLocalDimmingAMD')));
  @InstanceCommands.GetPhysicalDeviceCalibrateableTimeDomainsEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceCalibrateableTimeDomainsEXT')));
  @InstanceCommands.GetCalibratedTimestampsEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetCalibratedTimestampsEXT')));
  @InstanceCommands.SetDebugUtilsObjectNameEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkSetDebugUtilsObjectNameEXT')));
  @InstanceCommands.SetDebugUtilsObjectTagEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkSetDebugUtilsObjectTagEXT')));
  @InstanceCommands.QueueBeginDebugUtilsLabelEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkQueueBeginDebugUtilsLabelEXT')));
  @InstanceCommands.QueueEndDebugUtilsLabelEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkQueueEndDebugUtilsLabelEXT')));
  @InstanceCommands.QueueInsertDebugUtilsLabelEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkQueueInsertDebugUtilsLabelEXT')));
  @InstanceCommands.CmdBeginDebugUtilsLabelEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdBeginDebugUtilsLabelEXT')));
  @InstanceCommands.CmdEndDebugUtilsLabelEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdEndDebugUtilsLabelEXT')));
  @InstanceCommands.CmdInsertDebugUtilsLabelEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdInsertDebugUtilsLabelEXT')));
  @InstanceCommands.CreateDebugUtilsMessengerEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateDebugUtilsMessengerEXT')));
  @InstanceCommands.DestroyDebugUtilsMessengerEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkDestroyDebugUtilsMessengerEXT')));
  @InstanceCommands.SubmitDebugUtilsMessageEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkSubmitDebugUtilsMessageEXT')));
  @InstanceCommands.GetMemoryHostPointerPropertiesEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetMemoryHostPointerPropertiesEXT')));
  @InstanceCommands.CmdWriteBufferMarkerAMD:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdWriteBufferMarkerAMD')));
  @InstanceCommands.CreateRenderPass2:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateRenderPass2')));
  @InstanceCommands.CreateRenderPass2KHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateRenderPass2KHR')));
  @InstanceCommands.CmdBeginRenderPass2:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdBeginRenderPass2')));
  @InstanceCommands.CmdBeginRenderPass2KHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdBeginRenderPass2KHR')));
  @InstanceCommands.CmdNextSubpass2:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdNextSubpass2')));
  @InstanceCommands.CmdNextSubpass2KHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdNextSubpass2KHR')));
  @InstanceCommands.CmdEndRenderPass2:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdEndRenderPass2')));
  @InstanceCommands.CmdEndRenderPass2KHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdEndRenderPass2KHR')));
  @InstanceCommands.GetSemaphoreCounterValue:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetSemaphoreCounterValue')));
  @InstanceCommands.GetSemaphoreCounterValueKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetSemaphoreCounterValueKHR')));
  @InstanceCommands.WaitSemaphores:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkWaitSemaphores')));
  @InstanceCommands.WaitSemaphoresKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkWaitSemaphoresKHR')));
  @InstanceCommands.SignalSemaphore:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkSignalSemaphore')));
  @InstanceCommands.SignalSemaphoreKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkSignalSemaphoreKHR')));
{$ifdef Android}
  @InstanceCommands.GetAndroidHardwareBufferPropertiesANDROID:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetAndroidHardwareBufferPropertiesANDROID')));
{$endif}
{$ifdef Android}
  @InstanceCommands.GetMemoryAndroidHardwareBufferANDROID:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetMemoryAndroidHardwareBufferANDROID')));
{$endif}
  @InstanceCommands.CmdDrawIndirectCount:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdDrawIndirectCount')));
  @InstanceCommands.CmdDrawIndirectCountKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdDrawIndirectCountKHR')));
  @InstanceCommands.CmdDrawIndirectCountAMD:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdDrawIndirectCountAMD')));
  @InstanceCommands.CmdDrawIndexedIndirectCount:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdDrawIndexedIndirectCount')));
  @InstanceCommands.CmdDrawIndexedIndirectCountKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdDrawIndexedIndirectCountKHR')));
  @InstanceCommands.CmdDrawIndexedIndirectCountAMD:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdDrawIndexedIndirectCountAMD')));
  @InstanceCommands.CmdSetCheckpointNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetCheckpointNV')));
  @InstanceCommands.GetQueueCheckpointDataNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetQueueCheckpointDataNV')));
  @InstanceCommands.CmdBindTransformFeedbackBuffersEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdBindTransformFeedbackBuffersEXT')));
  @InstanceCommands.CmdBeginTransformFeedbackEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdBeginTransformFeedbackEXT')));
  @InstanceCommands.CmdEndTransformFeedbackEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdEndTransformFeedbackEXT')));
  @InstanceCommands.CmdBeginQueryIndexedEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdBeginQueryIndexedEXT')));
  @InstanceCommands.CmdEndQueryIndexedEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdEndQueryIndexedEXT')));
  @InstanceCommands.CmdDrawIndirectByteCountEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdDrawIndirectByteCountEXT')));
  @InstanceCommands.CmdSetExclusiveScissorNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetExclusiveScissorNV')));
  @InstanceCommands.CmdSetExclusiveScissorEnableNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetExclusiveScissorEnableNV')));
  @InstanceCommands.CmdBindShadingRateImageNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdBindShadingRateImageNV')));
  @InstanceCommands.CmdSetViewportShadingRatePaletteNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetViewportShadingRatePaletteNV')));
  @InstanceCommands.CmdSetCoarseSampleOrderNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetCoarseSampleOrderNV')));
  @InstanceCommands.CmdDrawMeshTasksNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdDrawMeshTasksNV')));
  @InstanceCommands.CmdDrawMeshTasksIndirectNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdDrawMeshTasksIndirectNV')));
  @InstanceCommands.CmdDrawMeshTasksIndirectCountNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdDrawMeshTasksIndirectCountNV')));
  @InstanceCommands.CmdDrawMeshTasksEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdDrawMeshTasksEXT')));
  @InstanceCommands.CmdDrawMeshTasksIndirectEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdDrawMeshTasksIndirectEXT')));
  @InstanceCommands.CmdDrawMeshTasksIndirectCountEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdDrawMeshTasksIndirectCountEXT')));
  @InstanceCommands.CompileDeferredNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCompileDeferredNV')));
  @InstanceCommands.CreateAccelerationStructureNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateAccelerationStructureNV')));
  @InstanceCommands.CmdBindInvocationMaskHUAWEI:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdBindInvocationMaskHUAWEI')));
  @InstanceCommands.DestroyAccelerationStructureKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkDestroyAccelerationStructureKHR')));
  @InstanceCommands.DestroyAccelerationStructureNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkDestroyAccelerationStructureNV')));
  @InstanceCommands.GetAccelerationStructureMemoryRequirementsNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetAccelerationStructureMemoryRequirementsNV')));
  @InstanceCommands.BindAccelerationStructureMemoryNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkBindAccelerationStructureMemoryNV')));
  @InstanceCommands.CmdCopyAccelerationStructureNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdCopyAccelerationStructureNV')));
  @InstanceCommands.CmdCopyAccelerationStructureKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdCopyAccelerationStructureKHR')));
  @InstanceCommands.CopyAccelerationStructureKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCopyAccelerationStructureKHR')));
  @InstanceCommands.CmdCopyAccelerationStructureToMemoryKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdCopyAccelerationStructureToMemoryKHR')));
  @InstanceCommands.CopyAccelerationStructureToMemoryKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCopyAccelerationStructureToMemoryKHR')));
  @InstanceCommands.CmdCopyMemoryToAccelerationStructureKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdCopyMemoryToAccelerationStructureKHR')));
  @InstanceCommands.CopyMemoryToAccelerationStructureKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCopyMemoryToAccelerationStructureKHR')));
  @InstanceCommands.CmdWriteAccelerationStructuresPropertiesKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdWriteAccelerationStructuresPropertiesKHR')));
  @InstanceCommands.CmdWriteAccelerationStructuresPropertiesNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdWriteAccelerationStructuresPropertiesNV')));
  @InstanceCommands.CmdBuildAccelerationStructureNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdBuildAccelerationStructureNV')));
  @InstanceCommands.WriteAccelerationStructuresPropertiesKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkWriteAccelerationStructuresPropertiesKHR')));
  @InstanceCommands.CmdTraceRaysKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdTraceRaysKHR')));
  @InstanceCommands.CmdTraceRaysNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdTraceRaysNV')));
  @InstanceCommands.GetRayTracingShaderGroupHandlesKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetRayTracingShaderGroupHandlesKHR')));
  @InstanceCommands.GetRayTracingShaderGroupHandlesNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetRayTracingShaderGroupHandlesNV')));
  @InstanceCommands.GetRayTracingCaptureReplayShaderGroupHandlesKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetRayTracingCaptureReplayShaderGroupHandlesKHR')));
  @InstanceCommands.GetAccelerationStructureHandleNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetAccelerationStructureHandleNV')));
  @InstanceCommands.CreateRayTracingPipelinesNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateRayTracingPipelinesNV')));
  @InstanceCommands.CreateRayTracingPipelinesKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateRayTracingPipelinesKHR')));
  @InstanceCommands.GetPhysicalDeviceCooperativeMatrixPropertiesNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceCooperativeMatrixPropertiesNV')));
  @InstanceCommands.CmdTraceRaysIndirectKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdTraceRaysIndirectKHR')));
  @InstanceCommands.CmdTraceRaysIndirect2KHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdTraceRaysIndirect2KHR')));
  @InstanceCommands.GetDeviceAccelerationStructureCompatibilityKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetDeviceAccelerationStructureCompatibilityKHR')));
  @InstanceCommands.GetRayTracingShaderGroupStackSizeKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetRayTracingShaderGroupStackSizeKHR')));
  @InstanceCommands.CmdSetRayTracingPipelineStackSizeKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetRayTracingPipelineStackSizeKHR')));
  @InstanceCommands.GetImageViewHandleNVX:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetImageViewHandleNVX')));
  @InstanceCommands.GetImageViewAddressNVX:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetImageViewAddressNVX')));
  @InstanceCommands.GetPhysicalDeviceSurfacePresentModes2EXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceSurfacePresentModes2EXT')));
  @InstanceCommands.GetDeviceGroupSurfacePresentModes2EXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetDeviceGroupSurfacePresentModes2EXT')));
  @InstanceCommands.AcquireFullScreenExclusiveModeEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkAcquireFullScreenExclusiveModeEXT')));
  @InstanceCommands.ReleaseFullScreenExclusiveModeEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkReleaseFullScreenExclusiveModeEXT')));
  @InstanceCommands.EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR')));
  @InstanceCommands.GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR')));
  @InstanceCommands.AcquireProfilingLockKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkAcquireProfilingLockKHR')));
  @InstanceCommands.ReleaseProfilingLockKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkReleaseProfilingLockKHR')));
  @InstanceCommands.GetImageDrmFormatModifierPropertiesEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetImageDrmFormatModifierPropertiesEXT')));
  @InstanceCommands.GetBufferOpaqueCaptureAddress:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetBufferOpaqueCaptureAddress')));
  @InstanceCommands.GetBufferOpaqueCaptureAddressKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetBufferOpaqueCaptureAddressKHR')));
  @InstanceCommands.GetBufferDeviceAddress:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetBufferDeviceAddress')));
  @InstanceCommands.GetBufferDeviceAddressKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetBufferDeviceAddressKHR')));
  @InstanceCommands.GetBufferDeviceAddressEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetBufferDeviceAddressEXT')));
  @InstanceCommands.CreateHeadlessSurfaceEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateHeadlessSurfaceEXT')));
  @InstanceCommands.GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV')));
  @InstanceCommands.InitializePerformanceApiINTEL:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkInitializePerformanceApiINTEL')));
  @InstanceCommands.UninitializePerformanceApiINTEL:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkUninitializePerformanceApiINTEL')));
  @InstanceCommands.CmdSetPerformanceMarkerINTEL:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetPerformanceMarkerINTEL')));
  @InstanceCommands.CmdSetPerformanceStreamMarkerINTEL:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetPerformanceStreamMarkerINTEL')));
  @InstanceCommands.CmdSetPerformanceOverrideINTEL:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetPerformanceOverrideINTEL')));
  @InstanceCommands.AcquirePerformanceConfigurationINTEL:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkAcquirePerformanceConfigurationINTEL')));
  @InstanceCommands.ReleasePerformanceConfigurationINTEL:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkReleasePerformanceConfigurationINTEL')));
  @InstanceCommands.QueueSetPerformanceConfigurationINTEL:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkQueueSetPerformanceConfigurationINTEL')));
  @InstanceCommands.GetPerformanceParameterINTEL:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPerformanceParameterINTEL')));
  @InstanceCommands.GetDeviceMemoryOpaqueCaptureAddress:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetDeviceMemoryOpaqueCaptureAddress')));
  @InstanceCommands.GetDeviceMemoryOpaqueCaptureAddressKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetDeviceMemoryOpaqueCaptureAddressKHR')));
  @InstanceCommands.GetPipelineExecutablePropertiesKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPipelineExecutablePropertiesKHR')));
  @InstanceCommands.GetPipelineExecutableStatisticsKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPipelineExecutableStatisticsKHR')));
  @InstanceCommands.GetPipelineExecutableInternalRepresentationsKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPipelineExecutableInternalRepresentationsKHR')));
  @InstanceCommands.CmdSetLineStippleEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetLineStippleEXT')));
{$ifdef VulkanSC}
  @InstanceCommands.GetFaultData:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetFaultData')));
{$endif}
  @InstanceCommands.GetPhysicalDeviceToolProperties:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceToolProperties')));
  @InstanceCommands.GetPhysicalDeviceToolPropertiesEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceToolPropertiesEXT')));
  @InstanceCommands.CreateAccelerationStructureKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateAccelerationStructureKHR')));
  @InstanceCommands.CmdBuildAccelerationStructuresKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdBuildAccelerationStructuresKHR')));
  @InstanceCommands.CmdBuildAccelerationStructuresIndirectKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdBuildAccelerationStructuresIndirectKHR')));
  @InstanceCommands.BuildAccelerationStructuresKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkBuildAccelerationStructuresKHR')));
  @InstanceCommands.GetAccelerationStructureDeviceAddressKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetAccelerationStructureDeviceAddressKHR')));
  @InstanceCommands.CreateDeferredOperationKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateDeferredOperationKHR')));
  @InstanceCommands.DestroyDeferredOperationKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkDestroyDeferredOperationKHR')));
  @InstanceCommands.GetDeferredOperationMaxConcurrencyKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetDeferredOperationMaxConcurrencyKHR')));
  @InstanceCommands.GetDeferredOperationResultKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetDeferredOperationResultKHR')));
  @InstanceCommands.DeferredOperationJoinKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkDeferredOperationJoinKHR')));
  @InstanceCommands.GetPipelineIndirectMemoryRequirementsNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPipelineIndirectMemoryRequirementsNV')));
  @InstanceCommands.GetPipelineIndirectDeviceAddressNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPipelineIndirectDeviceAddressNV')));
  @InstanceCommands.CmdSetCullMode:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetCullMode')));
  @InstanceCommands.CmdSetCullModeEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetCullModeEXT')));
  @InstanceCommands.CmdSetFrontFace:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetFrontFace')));
  @InstanceCommands.CmdSetFrontFaceEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetFrontFaceEXT')));
  @InstanceCommands.CmdSetPrimitiveTopology:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetPrimitiveTopology')));
  @InstanceCommands.CmdSetPrimitiveTopologyEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetPrimitiveTopologyEXT')));
  @InstanceCommands.CmdSetViewportWithCount:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetViewportWithCount')));
  @InstanceCommands.CmdSetViewportWithCountEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetViewportWithCountEXT')));
  @InstanceCommands.CmdSetScissorWithCount:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetScissorWithCount')));
  @InstanceCommands.CmdSetScissorWithCountEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetScissorWithCountEXT')));
  @InstanceCommands.CmdBindIndexBuffer2KHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdBindIndexBuffer2KHR')));
  @InstanceCommands.CmdBindVertexBuffers2:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdBindVertexBuffers2')));
  @InstanceCommands.CmdBindVertexBuffers2EXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdBindVertexBuffers2EXT')));
  @InstanceCommands.CmdSetDepthTestEnable:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetDepthTestEnable')));
  @InstanceCommands.CmdSetDepthTestEnableEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetDepthTestEnableEXT')));
  @InstanceCommands.CmdSetDepthWriteEnable:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetDepthWriteEnable')));
  @InstanceCommands.CmdSetDepthWriteEnableEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetDepthWriteEnableEXT')));
  @InstanceCommands.CmdSetDepthCompareOp:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetDepthCompareOp')));
  @InstanceCommands.CmdSetDepthCompareOpEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetDepthCompareOpEXT')));
  @InstanceCommands.CmdSetDepthBoundsTestEnable:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetDepthBoundsTestEnable')));
  @InstanceCommands.CmdSetDepthBoundsTestEnableEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetDepthBoundsTestEnableEXT')));
  @InstanceCommands.CmdSetStencilTestEnable:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetStencilTestEnable')));
  @InstanceCommands.CmdSetStencilTestEnableEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetStencilTestEnableEXT')));
  @InstanceCommands.CmdSetStencilOp:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetStencilOp')));
  @InstanceCommands.CmdSetStencilOpEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetStencilOpEXT')));
  @InstanceCommands.CmdSetPatchControlPointsEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetPatchControlPointsEXT')));
  @InstanceCommands.CmdSetRasterizerDiscardEnable:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetRasterizerDiscardEnable')));
  @InstanceCommands.CmdSetRasterizerDiscardEnableEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetRasterizerDiscardEnableEXT')));
  @InstanceCommands.CmdSetDepthBiasEnable:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetDepthBiasEnable')));
  @InstanceCommands.CmdSetDepthBiasEnableEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetDepthBiasEnableEXT')));
  @InstanceCommands.CmdSetLogicOpEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetLogicOpEXT')));
  @InstanceCommands.CmdSetPrimitiveRestartEnable:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetPrimitiveRestartEnable')));
  @InstanceCommands.CmdSetPrimitiveRestartEnableEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetPrimitiveRestartEnableEXT')));
  @InstanceCommands.CmdSetTessellationDomainOriginEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetTessellationDomainOriginEXT')));
  @InstanceCommands.CmdSetDepthClampEnableEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetDepthClampEnableEXT')));
  @InstanceCommands.CmdSetPolygonModeEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetPolygonModeEXT')));
  @InstanceCommands.CmdSetRasterizationSamplesEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetRasterizationSamplesEXT')));
  @InstanceCommands.CmdSetSampleMaskEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetSampleMaskEXT')));
  @InstanceCommands.CmdSetAlphaToCoverageEnableEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetAlphaToCoverageEnableEXT')));
  @InstanceCommands.CmdSetAlphaToOneEnableEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetAlphaToOneEnableEXT')));
  @InstanceCommands.CmdSetLogicOpEnableEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetLogicOpEnableEXT')));
  @InstanceCommands.CmdSetColorBlendEnableEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetColorBlendEnableEXT')));
  @InstanceCommands.CmdSetColorBlendEquationEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetColorBlendEquationEXT')));
  @InstanceCommands.CmdSetColorWriteMaskEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetColorWriteMaskEXT')));
  @InstanceCommands.CmdSetRasterizationStreamEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetRasterizationStreamEXT')));
  @InstanceCommands.CmdSetConservativeRasterizationModeEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetConservativeRasterizationModeEXT')));
  @InstanceCommands.CmdSetExtraPrimitiveOverestimationSizeEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetExtraPrimitiveOverestimationSizeEXT')));
  @InstanceCommands.CmdSetDepthClipEnableEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetDepthClipEnableEXT')));
  @InstanceCommands.CmdSetSampleLocationsEnableEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetSampleLocationsEnableEXT')));
  @InstanceCommands.CmdSetColorBlendAdvancedEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetColorBlendAdvancedEXT')));
  @InstanceCommands.CmdSetProvokingVertexModeEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetProvokingVertexModeEXT')));
  @InstanceCommands.CmdSetLineRasterizationModeEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetLineRasterizationModeEXT')));
  @InstanceCommands.CmdSetLineStippleEnableEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetLineStippleEnableEXT')));
  @InstanceCommands.CmdSetDepthClipNegativeOneToOneEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetDepthClipNegativeOneToOneEXT')));
  @InstanceCommands.CmdSetViewportWScalingEnableNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetViewportWScalingEnableNV')));
  @InstanceCommands.CmdSetViewportSwizzleNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetViewportSwizzleNV')));
  @InstanceCommands.CmdSetCoverageToColorEnableNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetCoverageToColorEnableNV')));
  @InstanceCommands.CmdSetCoverageToColorLocationNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetCoverageToColorLocationNV')));
  @InstanceCommands.CmdSetCoverageModulationModeNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetCoverageModulationModeNV')));
  @InstanceCommands.CmdSetCoverageModulationTableEnableNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetCoverageModulationTableEnableNV')));
  @InstanceCommands.CmdSetCoverageModulationTableNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetCoverageModulationTableNV')));
  @InstanceCommands.CmdSetShadingRateImageEnableNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetShadingRateImageEnableNV')));
  @InstanceCommands.CmdSetCoverageReductionModeNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetCoverageReductionModeNV')));
  @InstanceCommands.CmdSetRepresentativeFragmentTestEnableNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetRepresentativeFragmentTestEnableNV')));
  @InstanceCommands.CreatePrivateDataSlot:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreatePrivateDataSlot')));
  @InstanceCommands.CreatePrivateDataSlotEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreatePrivateDataSlotEXT')));
  @InstanceCommands.DestroyPrivateDataSlot:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkDestroyPrivateDataSlot')));
  @InstanceCommands.DestroyPrivateDataSlotEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkDestroyPrivateDataSlotEXT')));
  @InstanceCommands.SetPrivateData:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkSetPrivateData')));
  @InstanceCommands.SetPrivateDataEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkSetPrivateDataEXT')));
  @InstanceCommands.GetPrivateData:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPrivateData')));
  @InstanceCommands.GetPrivateDataEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPrivateDataEXT')));
  @InstanceCommands.CmdCopyBuffer2:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdCopyBuffer2')));
  @InstanceCommands.CmdCopyBuffer2KHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdCopyBuffer2KHR')));
  @InstanceCommands.CmdCopyImage2:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdCopyImage2')));
  @InstanceCommands.CmdCopyImage2KHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdCopyImage2KHR')));
  @InstanceCommands.CmdBlitImage2:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdBlitImage2')));
  @InstanceCommands.CmdBlitImage2KHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdBlitImage2KHR')));
  @InstanceCommands.CmdCopyBufferToImage2:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdCopyBufferToImage2')));
  @InstanceCommands.CmdCopyBufferToImage2KHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdCopyBufferToImage2KHR')));
  @InstanceCommands.CmdCopyImageToBuffer2:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdCopyImageToBuffer2')));
  @InstanceCommands.CmdCopyImageToBuffer2KHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdCopyImageToBuffer2KHR')));
  @InstanceCommands.CmdResolveImage2:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdResolveImage2')));
  @InstanceCommands.CmdResolveImage2KHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdResolveImage2KHR')));
  @InstanceCommands.CmdRefreshObjectsKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdRefreshObjectsKHR')));
  @InstanceCommands.GetPhysicalDeviceRefreshableObjectTypesKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceRefreshableObjectTypesKHR')));
  @InstanceCommands.CmdSetFragmentShadingRateKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetFragmentShadingRateKHR')));
  @InstanceCommands.GetPhysicalDeviceFragmentShadingRatesKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceFragmentShadingRatesKHR')));
  @InstanceCommands.CmdSetFragmentShadingRateEnumNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetFragmentShadingRateEnumNV')));
  @InstanceCommands.GetAccelerationStructureBuildSizesKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetAccelerationStructureBuildSizesKHR')));
  @InstanceCommands.CmdSetVertexInputEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetVertexInputEXT')));
  @InstanceCommands.CmdSetColorWriteEnableEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetColorWriteEnableEXT')));
  @InstanceCommands.CmdSetEvent2:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetEvent2')));
  @InstanceCommands.CmdSetEvent2KHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetEvent2KHR')));
  @InstanceCommands.CmdResetEvent2:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdResetEvent2')));
  @InstanceCommands.CmdResetEvent2KHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdResetEvent2KHR')));
  @InstanceCommands.CmdWaitEvents2:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdWaitEvents2')));
  @InstanceCommands.CmdWaitEvents2KHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdWaitEvents2KHR')));
  @InstanceCommands.CmdPipelineBarrier2:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdPipelineBarrier2')));
  @InstanceCommands.CmdPipelineBarrier2KHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdPipelineBarrier2KHR')));
  @InstanceCommands.QueueSubmit2:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkQueueSubmit2')));
  @InstanceCommands.QueueSubmit2KHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkQueueSubmit2KHR')));
  @InstanceCommands.CmdWriteTimestamp2:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdWriteTimestamp2')));
  @InstanceCommands.CmdWriteTimestamp2KHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdWriteTimestamp2KHR')));
  @InstanceCommands.CmdWriteBufferMarker2AMD:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdWriteBufferMarker2AMD')));
  @InstanceCommands.GetQueueCheckpointData2NV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetQueueCheckpointData2NV')));
  @InstanceCommands.CopyMemoryToImageEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCopyMemoryToImageEXT')));
  @InstanceCommands.CopyImageToMemoryEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCopyImageToMemoryEXT')));
  @InstanceCommands.CopyImageToImageEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCopyImageToImageEXT')));
  @InstanceCommands.TransitionImageLayoutEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkTransitionImageLayoutEXT')));
{$ifdef VulkanSC}
  @InstanceCommands.GetCommandPoolMemoryConsumption:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetCommandPoolMemoryConsumption')));
{$endif}
{$ifdef VkVideo}
  @InstanceCommands.GetPhysicalDeviceVideoCapabilitiesKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceVideoCapabilitiesKHR')));
{$endif}
{$ifdef VkVideo}
  @InstanceCommands.GetPhysicalDeviceVideoFormatPropertiesKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceVideoFormatPropertiesKHR')));
{$endif}
{$ifdef VkVideo}
  @InstanceCommands.GetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR')));
{$endif}
{$ifdef VkVideo}
  @InstanceCommands.CreateVideoSessionKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateVideoSessionKHR')));
{$endif}
{$ifdef VkVideo}
  @InstanceCommands.DestroyVideoSessionKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkDestroyVideoSessionKHR')));
{$endif}
{$ifdef VkVideo}
  @InstanceCommands.CreateVideoSessionParametersKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateVideoSessionParametersKHR')));
{$endif}
{$ifdef VkVideo}
  @InstanceCommands.UpdateVideoSessionParametersKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkUpdateVideoSessionParametersKHR')));
{$endif}
{$ifdef VkVideo}
  @InstanceCommands.GetEncodedVideoSessionParametersKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetEncodedVideoSessionParametersKHR')));
{$endif}
{$ifdef VkVideo}
  @InstanceCommands.DestroyVideoSessionParametersKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkDestroyVideoSessionParametersKHR')));
{$endif}
{$ifdef VkVideo}
  @InstanceCommands.GetVideoSessionMemoryRequirementsKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetVideoSessionMemoryRequirementsKHR')));
{$endif}
{$ifdef VkVideo}
  @InstanceCommands.BindVideoSessionMemoryKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkBindVideoSessionMemoryKHR')));
{$endif}
{$ifdef VkVideo}
  @InstanceCommands.CmdDecodeVideoKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdDecodeVideoKHR')));
{$endif}
{$ifdef VkVideo}
  @InstanceCommands.CmdBeginVideoCodingKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdBeginVideoCodingKHR')));
{$endif}
{$ifdef VkVideo}
  @InstanceCommands.CmdControlVideoCodingKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdControlVideoCodingKHR')));
{$endif}
{$ifdef VkVideo}
  @InstanceCommands.CmdEndVideoCodingKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdEndVideoCodingKHR')));
{$endif}
{$ifdef VkVideo}
  @InstanceCommands.CmdEncodeVideoKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdEncodeVideoKHR')));
{$endif}
  @InstanceCommands.CmdDecompressMemoryNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdDecompressMemoryNV')));
  @InstanceCommands.CmdDecompressMemoryIndirectCountNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdDecompressMemoryIndirectCountNV')));
  @InstanceCommands.CreateCuModuleNVX:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateCuModuleNVX')));
  @InstanceCommands.CreateCuFunctionNVX:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateCuFunctionNVX')));
  @InstanceCommands.DestroyCuModuleNVX:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkDestroyCuModuleNVX')));
  @InstanceCommands.DestroyCuFunctionNVX:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkDestroyCuFunctionNVX')));
  @InstanceCommands.CmdCuLaunchKernelNVX:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdCuLaunchKernelNVX')));
  @InstanceCommands.GetDescriptorSetLayoutSizeEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetDescriptorSetLayoutSizeEXT')));
  @InstanceCommands.GetDescriptorSetLayoutBindingOffsetEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetDescriptorSetLayoutBindingOffsetEXT')));
  @InstanceCommands.GetDescriptorEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetDescriptorEXT')));
  @InstanceCommands.CmdBindDescriptorBuffersEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdBindDescriptorBuffersEXT')));
  @InstanceCommands.CmdSetDescriptorBufferOffsetsEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetDescriptorBufferOffsetsEXT')));
  @InstanceCommands.CmdBindDescriptorBufferEmbeddedSamplersEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdBindDescriptorBufferEmbeddedSamplersEXT')));
  @InstanceCommands.GetBufferOpaqueCaptureDescriptorDataEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetBufferOpaqueCaptureDescriptorDataEXT')));
  @InstanceCommands.GetImageOpaqueCaptureDescriptorDataEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetImageOpaqueCaptureDescriptorDataEXT')));
  @InstanceCommands.GetImageViewOpaqueCaptureDescriptorDataEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetImageViewOpaqueCaptureDescriptorDataEXT')));
  @InstanceCommands.GetSamplerOpaqueCaptureDescriptorDataEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetSamplerOpaqueCaptureDescriptorDataEXT')));
  @InstanceCommands.GetAccelerationStructureOpaqueCaptureDescriptorDataEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT')));
  @InstanceCommands.SetDeviceMemoryPriorityEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkSetDeviceMemoryPriorityEXT')));
  @InstanceCommands.AcquireDrmDisplayEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkAcquireDrmDisplayEXT')));
  @InstanceCommands.GetDrmDisplayEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetDrmDisplayEXT')));
  @InstanceCommands.WaitForPresentKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkWaitForPresentKHR')));
{$ifdef Fuchsia}
  @InstanceCommands.CreateBufferCollectionFUCHSIA:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateBufferCollectionFUCHSIA')));
{$endif}
{$ifdef Fuchsia}
  @InstanceCommands.SetBufferCollectionBufferConstraintsFUCHSIA:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkSetBufferCollectionBufferConstraintsFUCHSIA')));
{$endif}
{$ifdef Fuchsia}
  @InstanceCommands.SetBufferCollectionImageConstraintsFUCHSIA:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkSetBufferCollectionImageConstraintsFUCHSIA')));
{$endif}
{$ifdef Fuchsia}
  @InstanceCommands.DestroyBufferCollectionFUCHSIA:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkDestroyBufferCollectionFUCHSIA')));
{$endif}
{$ifdef Fuchsia}
  @InstanceCommands.GetBufferCollectionPropertiesFUCHSIA:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetBufferCollectionPropertiesFUCHSIA')));
{$endif}
  @InstanceCommands.CmdBeginRendering:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdBeginRendering')));
  @InstanceCommands.CmdBeginRenderingKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdBeginRenderingKHR')));
  @InstanceCommands.CmdEndRendering:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdEndRendering')));
  @InstanceCommands.CmdEndRenderingKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdEndRenderingKHR')));
  @InstanceCommands.GetDescriptorSetLayoutHostMappingInfoVALVE:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetDescriptorSetLayoutHostMappingInfoVALVE')));
  @InstanceCommands.GetDescriptorSetHostMappingVALVE:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetDescriptorSetHostMappingVALVE')));
  @InstanceCommands.CreateMicromapEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateMicromapEXT')));
  @InstanceCommands.CmdBuildMicromapsEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdBuildMicromapsEXT')));
  @InstanceCommands.BuildMicromapsEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkBuildMicromapsEXT')));
  @InstanceCommands.DestroyMicromapEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkDestroyMicromapEXT')));
  @InstanceCommands.CmdCopyMicromapEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdCopyMicromapEXT')));
  @InstanceCommands.CopyMicromapEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCopyMicromapEXT')));
  @InstanceCommands.CmdCopyMicromapToMemoryEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdCopyMicromapToMemoryEXT')));
  @InstanceCommands.CopyMicromapToMemoryEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCopyMicromapToMemoryEXT')));
  @InstanceCommands.CmdCopyMemoryToMicromapEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdCopyMemoryToMicromapEXT')));
  @InstanceCommands.CopyMemoryToMicromapEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCopyMemoryToMicromapEXT')));
  @InstanceCommands.CmdWriteMicromapsPropertiesEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdWriteMicromapsPropertiesEXT')));
  @InstanceCommands.WriteMicromapsPropertiesEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkWriteMicromapsPropertiesEXT')));
  @InstanceCommands.GetDeviceMicromapCompatibilityEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetDeviceMicromapCompatibilityEXT')));
  @InstanceCommands.GetMicromapBuildSizesEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetMicromapBuildSizesEXT')));
  @InstanceCommands.GetShaderModuleIdentifierEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetShaderModuleIdentifierEXT')));
  @InstanceCommands.GetShaderModuleCreateInfoIdentifierEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetShaderModuleCreateInfoIdentifierEXT')));
  @InstanceCommands.GetImageSubresourceLayout2KHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetImageSubresourceLayout2KHR')));
  @InstanceCommands.GetImageSubresourceLayout2EXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetImageSubresourceLayout2EXT')));
  @InstanceCommands.GetPipelinePropertiesEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPipelinePropertiesEXT')));
  @InstanceCommands.ExportMetalObjectsEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkExportMetalObjectsEXT')));
  @InstanceCommands.GetFramebufferTilePropertiesQCOM:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetFramebufferTilePropertiesQCOM')));
  @InstanceCommands.GetDynamicRenderingTilePropertiesQCOM:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetDynamicRenderingTilePropertiesQCOM')));
  @InstanceCommands.GetPhysicalDeviceOpticalFlowImageFormatsNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceOpticalFlowImageFormatsNV')));
  @InstanceCommands.CreateOpticalFlowSessionNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateOpticalFlowSessionNV')));
  @InstanceCommands.DestroyOpticalFlowSessionNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkDestroyOpticalFlowSessionNV')));
  @InstanceCommands.BindOpticalFlowSessionImageNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkBindOpticalFlowSessionImageNV')));
  @InstanceCommands.CmdOpticalFlowExecuteNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdOpticalFlowExecuteNV')));
  @InstanceCommands.GetDeviceFaultInfoEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetDeviceFaultInfoEXT')));
  @InstanceCommands.CmdSetDepthBias2EXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdSetDepthBias2EXT')));
  @InstanceCommands.ReleaseSwapchainImagesEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkReleaseSwapchainImagesEXT')));
  @InstanceCommands.GetDeviceImageSubresourceLayoutKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetDeviceImageSubresourceLayoutKHR')));
  @InstanceCommands.MapMemory2KHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkMapMemory2KHR')));
  @InstanceCommands.UnmapMemory2KHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkUnmapMemory2KHR')));
  @InstanceCommands.CreateShadersEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateShadersEXT')));
  @InstanceCommands.DestroyShaderEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkDestroyShaderEXT')));
  @InstanceCommands.GetShaderBinaryDataEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetShaderBinaryDataEXT')));
  @InstanceCommands.CmdBindShadersEXT:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdBindShadersEXT')));
{$ifdef QNX}
  @InstanceCommands.GetScreenBufferPropertiesQNX:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetScreenBufferPropertiesQNX')));
{$endif}
  @InstanceCommands.GetPhysicalDeviceCooperativeMatrixPropertiesKHR:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR')));
  @InstanceCommands.GetExecutionGraphPipelineScratchSizeAMDX:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetExecutionGraphPipelineScratchSizeAMDX')));
  @InstanceCommands.GetExecutionGraphPipelineNodeIndexAMDX:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetExecutionGraphPipelineNodeIndexAMDX')));
  @InstanceCommands.CreateExecutionGraphPipelinesAMDX:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCreateExecutionGraphPipelinesAMDX')));
  @InstanceCommands.CmdInitializeGraphScratchMemoryAMDX:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdInitializeGraphScratchMemoryAMDX')));
  @InstanceCommands.CmdDispatchGraphAMDX:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdDispatchGraphAMDX')));
  @InstanceCommands.CmdDispatchGraphIndirectAMDX:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdDispatchGraphIndirectAMDX')));
  @InstanceCommands.CmdDispatchGraphIndirectCountAMDX:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkCmdDispatchGraphIndirectCountAMDX')));
  @InstanceCommands.SetLatencySleepModeNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkSetLatencySleepModeNV')));
  @InstanceCommands.LatencySleepNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkLatencySleepNV')));
  @InstanceCommands.SetLatencyMarkerNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkSetLatencyMarkerNV')));
  @InstanceCommands.GetLatencyTimingsNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkGetLatencyTimingsNV')));
  @InstanceCommands.QueueNotifyOutOfBandNV:=vkVoidFunctionToPointer(vkGetInstanceProcAddr(Instance,PVkChar('vkQueueNotifyOutOfBandNV')));
  if not assigned(InstanceCommands.EnumerateInstanceExtensionProperties) then begin
   InstanceCommands.EnumerateInstanceExtensionProperties:=addr(vkEnumerateInstanceExtensionProperties);
  end;
  if not assigned(InstanceCommands.EnumerateInstanceLayerProperties) then begin
   InstanceCommands.EnumerateInstanceLayerProperties:=addr(vkEnumerateInstanceLayerProperties);
  end;
  if not assigned(InstanceCommands.CreateInstance) then begin
   InstanceCommands.CreateInstance:=addr(vkCreateInstance);
  end;
  result:=assigned(InstanceCommands.DestroyInstance);
 end;
end;

function LoadVulkanDeviceCommands(const GetDeviceProcAddr:TvkGetDeviceProcAddr;const Device:TVkDevice;out DeviceCommands:TVulkanCommands):boolean;
begin
 FillChar(DeviceCommands,SizeOf(TVulkanCommands),#0);
 result:=assigned(GetDeviceProcAddr);
 if result then begin
  // Device commands of any Vulkan command whose first parameter is one of: vkDevice, VkQueue, VkCommandBuffer
  @DeviceCommands.GetDeviceProcAddr:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetDeviceProcAddr')));
  @DeviceCommands.DestroyDevice:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkDestroyDevice')));
  @DeviceCommands.GetDeviceQueue:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetDeviceQueue')));
  @DeviceCommands.QueueSubmit:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkQueueSubmit')));
  @DeviceCommands.QueueWaitIdle:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkQueueWaitIdle')));
  @DeviceCommands.DeviceWaitIdle:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkDeviceWaitIdle')));
  @DeviceCommands.AllocateMemory:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkAllocateMemory')));
  @DeviceCommands.FreeMemory:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkFreeMemory')));
  @DeviceCommands.MapMemory:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkMapMemory')));
  @DeviceCommands.UnmapMemory:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkUnmapMemory')));
  @DeviceCommands.FlushMappedMemoryRanges:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkFlushMappedMemoryRanges')));
  @DeviceCommands.InvalidateMappedMemoryRanges:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkInvalidateMappedMemoryRanges')));
  @DeviceCommands.GetDeviceMemoryCommitment:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetDeviceMemoryCommitment')));
  @DeviceCommands.GetBufferMemoryRequirements:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetBufferMemoryRequirements')));
  @DeviceCommands.BindBufferMemory:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkBindBufferMemory')));
  @DeviceCommands.GetImageMemoryRequirements:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetImageMemoryRequirements')));
  @DeviceCommands.BindImageMemory:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkBindImageMemory')));
  @DeviceCommands.GetImageSparseMemoryRequirements:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetImageSparseMemoryRequirements')));
  @DeviceCommands.QueueBindSparse:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkQueueBindSparse')));
  @DeviceCommands.CreateFence:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCreateFence')));
  @DeviceCommands.DestroyFence:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkDestroyFence')));
  @DeviceCommands.ResetFences:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkResetFences')));
  @DeviceCommands.GetFenceStatus:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetFenceStatus')));
  @DeviceCommands.WaitForFences:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkWaitForFences')));
  @DeviceCommands.CreateSemaphore:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCreateSemaphore')));
  @DeviceCommands.DestroySemaphore:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkDestroySemaphore')));
  @DeviceCommands.CreateEvent:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCreateEvent')));
  @DeviceCommands.DestroyEvent:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkDestroyEvent')));
  @DeviceCommands.GetEventStatus:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetEventStatus')));
  @DeviceCommands.SetEvent:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkSetEvent')));
  @DeviceCommands.ResetEvent:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkResetEvent')));
  @DeviceCommands.CreateQueryPool:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCreateQueryPool')));
  @DeviceCommands.DestroyQueryPool:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkDestroyQueryPool')));
  @DeviceCommands.GetQueryPoolResults:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetQueryPoolResults')));
  @DeviceCommands.ResetQueryPool:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkResetQueryPool')));
  @DeviceCommands.ResetQueryPoolEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkResetQueryPoolEXT')));
  @DeviceCommands.CreateBuffer:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCreateBuffer')));
  @DeviceCommands.DestroyBuffer:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkDestroyBuffer')));
  @DeviceCommands.CreateBufferView:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCreateBufferView')));
  @DeviceCommands.DestroyBufferView:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkDestroyBufferView')));
  @DeviceCommands.CreateImage:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCreateImage')));
  @DeviceCommands.DestroyImage:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkDestroyImage')));
  @DeviceCommands.GetImageSubresourceLayout:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetImageSubresourceLayout')));
  @DeviceCommands.CreateImageView:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCreateImageView')));
  @DeviceCommands.DestroyImageView:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkDestroyImageView')));
  @DeviceCommands.CreateShaderModule:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCreateShaderModule')));
  @DeviceCommands.DestroyShaderModule:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkDestroyShaderModule')));
  @DeviceCommands.CreatePipelineCache:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCreatePipelineCache')));
  @DeviceCommands.DestroyPipelineCache:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkDestroyPipelineCache')));
  @DeviceCommands.GetPipelineCacheData:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetPipelineCacheData')));
  @DeviceCommands.MergePipelineCaches:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkMergePipelineCaches')));
  @DeviceCommands.CreateGraphicsPipelines:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCreateGraphicsPipelines')));
  @DeviceCommands.CreateComputePipelines:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCreateComputePipelines')));
  @DeviceCommands.GetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI')));
  @DeviceCommands.DestroyPipeline:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkDestroyPipeline')));
  @DeviceCommands.CreatePipelineLayout:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCreatePipelineLayout')));
  @DeviceCommands.DestroyPipelineLayout:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkDestroyPipelineLayout')));
  @DeviceCommands.CreateSampler:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCreateSampler')));
  @DeviceCommands.DestroySampler:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkDestroySampler')));
  @DeviceCommands.CreateDescriptorSetLayout:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCreateDescriptorSetLayout')));
  @DeviceCommands.DestroyDescriptorSetLayout:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkDestroyDescriptorSetLayout')));
  @DeviceCommands.CreateDescriptorPool:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCreateDescriptorPool')));
  @DeviceCommands.DestroyDescriptorPool:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkDestroyDescriptorPool')));
  @DeviceCommands.ResetDescriptorPool:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkResetDescriptorPool')));
  @DeviceCommands.AllocateDescriptorSets:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkAllocateDescriptorSets')));
  @DeviceCommands.FreeDescriptorSets:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkFreeDescriptorSets')));
  @DeviceCommands.UpdateDescriptorSets:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkUpdateDescriptorSets')));
  @DeviceCommands.CreateFramebuffer:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCreateFramebuffer')));
  @DeviceCommands.DestroyFramebuffer:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkDestroyFramebuffer')));
  @DeviceCommands.CreateRenderPass:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCreateRenderPass')));
  @DeviceCommands.DestroyRenderPass:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkDestroyRenderPass')));
  @DeviceCommands.GetRenderAreaGranularity:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetRenderAreaGranularity')));
  @DeviceCommands.GetRenderingAreaGranularityKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetRenderingAreaGranularityKHR')));
  @DeviceCommands.CreateCommandPool:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCreateCommandPool')));
  @DeviceCommands.DestroyCommandPool:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkDestroyCommandPool')));
  @DeviceCommands.ResetCommandPool:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkResetCommandPool')));
  @DeviceCommands.AllocateCommandBuffers:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkAllocateCommandBuffers')));
  @DeviceCommands.FreeCommandBuffers:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkFreeCommandBuffers')));
  @DeviceCommands.BeginCommandBuffer:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkBeginCommandBuffer')));
  @DeviceCommands.EndCommandBuffer:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkEndCommandBuffer')));
  @DeviceCommands.ResetCommandBuffer:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkResetCommandBuffer')));
  @DeviceCommands.CmdBindPipeline:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdBindPipeline')));
  @DeviceCommands.CmdSetAttachmentFeedbackLoopEnableEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetAttachmentFeedbackLoopEnableEXT')));
  @DeviceCommands.CmdSetViewport:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetViewport')));
  @DeviceCommands.CmdSetScissor:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetScissor')));
  @DeviceCommands.CmdSetLineWidth:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetLineWidth')));
  @DeviceCommands.CmdSetDepthBias:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetDepthBias')));
  @DeviceCommands.CmdSetBlendConstants:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetBlendConstants')));
  @DeviceCommands.CmdSetDepthBounds:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetDepthBounds')));
  @DeviceCommands.CmdSetStencilCompareMask:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetStencilCompareMask')));
  @DeviceCommands.CmdSetStencilWriteMask:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetStencilWriteMask')));
  @DeviceCommands.CmdSetStencilReference:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetStencilReference')));
  @DeviceCommands.CmdBindDescriptorSets:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdBindDescriptorSets')));
  @DeviceCommands.CmdBindIndexBuffer:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdBindIndexBuffer')));
  @DeviceCommands.CmdBindVertexBuffers:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdBindVertexBuffers')));
  @DeviceCommands.CmdDraw:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdDraw')));
  @DeviceCommands.CmdDrawIndexed:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdDrawIndexed')));
  @DeviceCommands.CmdDrawMultiEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdDrawMultiEXT')));
  @DeviceCommands.CmdDrawMultiIndexedEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdDrawMultiIndexedEXT')));
  @DeviceCommands.CmdDrawIndirect:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdDrawIndirect')));
  @DeviceCommands.CmdDrawIndexedIndirect:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdDrawIndexedIndirect')));
  @DeviceCommands.CmdDispatch:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdDispatch')));
  @DeviceCommands.CmdDispatchIndirect:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdDispatchIndirect')));
  @DeviceCommands.CmdSubpassShadingHUAWEI:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSubpassShadingHUAWEI')));
  @DeviceCommands.CmdDrawClusterHUAWEI:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdDrawClusterHUAWEI')));
  @DeviceCommands.CmdDrawClusterIndirectHUAWEI:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdDrawClusterIndirectHUAWEI')));
  @DeviceCommands.CmdUpdatePipelineIndirectBufferNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdUpdatePipelineIndirectBufferNV')));
  @DeviceCommands.CmdCopyBuffer:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdCopyBuffer')));
  @DeviceCommands.CmdCopyImage:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdCopyImage')));
  @DeviceCommands.CmdBlitImage:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdBlitImage')));
  @DeviceCommands.CmdCopyBufferToImage:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdCopyBufferToImage')));
  @DeviceCommands.CmdCopyImageToBuffer:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdCopyImageToBuffer')));
  @DeviceCommands.CmdCopyMemoryIndirectNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdCopyMemoryIndirectNV')));
  @DeviceCommands.CmdCopyMemoryToImageIndirectNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdCopyMemoryToImageIndirectNV')));
  @DeviceCommands.CmdUpdateBuffer:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdUpdateBuffer')));
  @DeviceCommands.CmdFillBuffer:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdFillBuffer')));
  @DeviceCommands.CmdClearColorImage:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdClearColorImage')));
  @DeviceCommands.CmdClearDepthStencilImage:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdClearDepthStencilImage')));
  @DeviceCommands.CmdClearAttachments:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdClearAttachments')));
  @DeviceCommands.CmdResolveImage:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdResolveImage')));
  @DeviceCommands.CmdSetEvent:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetEvent')));
  @DeviceCommands.CmdResetEvent:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdResetEvent')));
  @DeviceCommands.CmdWaitEvents:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdWaitEvents')));
  @DeviceCommands.CmdPipelineBarrier:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdPipelineBarrier')));
  @DeviceCommands.CmdBeginQuery:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdBeginQuery')));
  @DeviceCommands.CmdEndQuery:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdEndQuery')));
  @DeviceCommands.CmdBeginConditionalRenderingEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdBeginConditionalRenderingEXT')));
  @DeviceCommands.CmdEndConditionalRenderingEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdEndConditionalRenderingEXT')));
  @DeviceCommands.CmdResetQueryPool:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdResetQueryPool')));
  @DeviceCommands.CmdWriteTimestamp:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdWriteTimestamp')));
  @DeviceCommands.CmdCopyQueryPoolResults:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdCopyQueryPoolResults')));
  @DeviceCommands.CmdPushConstants:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdPushConstants')));
  @DeviceCommands.CmdBeginRenderPass:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdBeginRenderPass')));
  @DeviceCommands.CmdNextSubpass:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdNextSubpass')));
  @DeviceCommands.CmdEndRenderPass:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdEndRenderPass')));
  @DeviceCommands.CmdExecuteCommands:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdExecuteCommands')));
  @DeviceCommands.CreateSharedSwapchainsKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCreateSharedSwapchainsKHR')));
  @DeviceCommands.CreateSwapchainKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCreateSwapchainKHR')));
  @DeviceCommands.DestroySwapchainKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkDestroySwapchainKHR')));
  @DeviceCommands.GetSwapchainImagesKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetSwapchainImagesKHR')));
  @DeviceCommands.AcquireNextImageKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkAcquireNextImageKHR')));
  @DeviceCommands.QueuePresentKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkQueuePresentKHR')));
  @DeviceCommands.DebugMarkerSetObjectNameEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkDebugMarkerSetObjectNameEXT')));
  @DeviceCommands.DebugMarkerSetObjectTagEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkDebugMarkerSetObjectTagEXT')));
  @DeviceCommands.CmdDebugMarkerBeginEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdDebugMarkerBeginEXT')));
  @DeviceCommands.CmdDebugMarkerEndEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdDebugMarkerEndEXT')));
  @DeviceCommands.CmdDebugMarkerInsertEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdDebugMarkerInsertEXT')));
{$ifdef Windows}
  @DeviceCommands.GetMemoryWin32HandleNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetMemoryWin32HandleNV')));
{$endif}
  @DeviceCommands.CmdExecuteGeneratedCommandsNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdExecuteGeneratedCommandsNV')));
  @DeviceCommands.CmdPreprocessGeneratedCommandsNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdPreprocessGeneratedCommandsNV')));
  @DeviceCommands.CmdBindPipelineShaderGroupNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdBindPipelineShaderGroupNV')));
  @DeviceCommands.GetGeneratedCommandsMemoryRequirementsNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetGeneratedCommandsMemoryRequirementsNV')));
  @DeviceCommands.CreateIndirectCommandsLayoutNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCreateIndirectCommandsLayoutNV')));
  @DeviceCommands.DestroyIndirectCommandsLayoutNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkDestroyIndirectCommandsLayoutNV')));
  @DeviceCommands.CmdPushDescriptorSetKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdPushDescriptorSetKHR')));
  @DeviceCommands.TrimCommandPool:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkTrimCommandPool')));
  @DeviceCommands.TrimCommandPoolKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkTrimCommandPoolKHR')));
{$ifdef Windows}
  @DeviceCommands.GetMemoryWin32HandleKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetMemoryWin32HandleKHR')));
{$endif}
{$ifdef Windows}
  @DeviceCommands.GetMemoryWin32HandlePropertiesKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetMemoryWin32HandlePropertiesKHR')));
{$endif}
  @DeviceCommands.GetMemoryFdKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetMemoryFdKHR')));
  @DeviceCommands.GetMemoryFdPropertiesKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetMemoryFdPropertiesKHR')));
{$ifdef Fuchsia}
  @DeviceCommands.GetMemoryZirconHandleFUCHSIA:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetMemoryZirconHandleFUCHSIA')));
{$endif}
{$ifdef Fuchsia}
  @DeviceCommands.GetMemoryZirconHandlePropertiesFUCHSIA:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetMemoryZirconHandlePropertiesFUCHSIA')));
{$endif}
  @DeviceCommands.GetMemoryRemoteAddressNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetMemoryRemoteAddressNV')));
{$ifdef NvSci}
  @DeviceCommands.GetMemorySciBufNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetMemorySciBufNV')));
{$endif}
{$ifdef Windows}
  @DeviceCommands.GetSemaphoreWin32HandleKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetSemaphoreWin32HandleKHR')));
{$endif}
{$ifdef Windows}
  @DeviceCommands.ImportSemaphoreWin32HandleKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkImportSemaphoreWin32HandleKHR')));
{$endif}
  @DeviceCommands.GetSemaphoreFdKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetSemaphoreFdKHR')));
  @DeviceCommands.ImportSemaphoreFdKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkImportSemaphoreFdKHR')));
{$ifdef Fuchsia}
  @DeviceCommands.GetSemaphoreZirconHandleFUCHSIA:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetSemaphoreZirconHandleFUCHSIA')));
{$endif}
{$ifdef Fuchsia}
  @DeviceCommands.ImportSemaphoreZirconHandleFUCHSIA:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkImportSemaphoreZirconHandleFUCHSIA')));
{$endif}
{$ifdef Windows}
  @DeviceCommands.GetFenceWin32HandleKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetFenceWin32HandleKHR')));
{$endif}
{$ifdef Windows}
  @DeviceCommands.ImportFenceWin32HandleKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkImportFenceWin32HandleKHR')));
{$endif}
  @DeviceCommands.GetFenceFdKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetFenceFdKHR')));
  @DeviceCommands.ImportFenceFdKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkImportFenceFdKHR')));
{$ifdef NvSci}
  @DeviceCommands.GetFenceSciSyncFenceNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetFenceSciSyncFenceNV')));
{$endif}
{$ifdef NvSci}
  @DeviceCommands.GetFenceSciSyncObjNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetFenceSciSyncObjNV')));
{$endif}
{$ifdef NvSci}
  @DeviceCommands.ImportFenceSciSyncFenceNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkImportFenceSciSyncFenceNV')));
{$endif}
{$ifdef NvSci}
  @DeviceCommands.ImportFenceSciSyncObjNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkImportFenceSciSyncObjNV')));
{$endif}
{$ifdef NvSci}
  @DeviceCommands.GetSemaphoreSciSyncObjNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetSemaphoreSciSyncObjNV')));
{$endif}
{$ifdef NvSci}
  @DeviceCommands.ImportSemaphoreSciSyncObjNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkImportSemaphoreSciSyncObjNV')));
{$endif}
{$ifdef NvSci}
  @DeviceCommands.CreateSemaphoreSciSyncPoolNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCreateSemaphoreSciSyncPoolNV')));
{$endif}
{$ifdef NvSci}
  @DeviceCommands.DestroySemaphoreSciSyncPoolNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkDestroySemaphoreSciSyncPoolNV')));
{$endif}
  @DeviceCommands.DisplayPowerControlEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkDisplayPowerControlEXT')));
  @DeviceCommands.RegisterDeviceEventEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkRegisterDeviceEventEXT')));
  @DeviceCommands.RegisterDisplayEventEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkRegisterDisplayEventEXT')));
  @DeviceCommands.GetSwapchainCounterEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetSwapchainCounterEXT')));
  @DeviceCommands.GetDeviceGroupPeerMemoryFeatures:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetDeviceGroupPeerMemoryFeatures')));
  @DeviceCommands.GetDeviceGroupPeerMemoryFeaturesKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetDeviceGroupPeerMemoryFeaturesKHR')));
  @DeviceCommands.BindBufferMemory2:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkBindBufferMemory2')));
  @DeviceCommands.BindBufferMemory2KHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkBindBufferMemory2KHR')));
  @DeviceCommands.BindImageMemory2:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkBindImageMemory2')));
  @DeviceCommands.BindImageMemory2KHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkBindImageMemory2KHR')));
  @DeviceCommands.CmdSetDeviceMask:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetDeviceMask')));
  @DeviceCommands.CmdSetDeviceMaskKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetDeviceMaskKHR')));
  @DeviceCommands.GetDeviceGroupPresentCapabilitiesKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetDeviceGroupPresentCapabilitiesKHR')));
  @DeviceCommands.GetDeviceGroupSurfacePresentModesKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetDeviceGroupSurfacePresentModesKHR')));
  @DeviceCommands.AcquireNextImage2KHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkAcquireNextImage2KHR')));
  @DeviceCommands.CmdDispatchBase:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdDispatchBase')));
  @DeviceCommands.CmdDispatchBaseKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdDispatchBaseKHR')));
  @DeviceCommands.CreateDescriptorUpdateTemplate:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCreateDescriptorUpdateTemplate')));
  @DeviceCommands.CreateDescriptorUpdateTemplateKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCreateDescriptorUpdateTemplateKHR')));
  @DeviceCommands.DestroyDescriptorUpdateTemplate:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkDestroyDescriptorUpdateTemplate')));
  @DeviceCommands.DestroyDescriptorUpdateTemplateKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkDestroyDescriptorUpdateTemplateKHR')));
  @DeviceCommands.UpdateDescriptorSetWithTemplate:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkUpdateDescriptorSetWithTemplate')));
  @DeviceCommands.UpdateDescriptorSetWithTemplateKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkUpdateDescriptorSetWithTemplateKHR')));
  @DeviceCommands.CmdPushDescriptorSetWithTemplateKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdPushDescriptorSetWithTemplateKHR')));
  @DeviceCommands.SetHdrMetadataEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkSetHdrMetadataEXT')));
  @DeviceCommands.GetSwapchainStatusKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetSwapchainStatusKHR')));
  @DeviceCommands.GetRefreshCycleDurationGOOGLE:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetRefreshCycleDurationGOOGLE')));
  @DeviceCommands.GetPastPresentationTimingGOOGLE:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetPastPresentationTimingGOOGLE')));
  @DeviceCommands.CmdSetViewportWScalingNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetViewportWScalingNV')));
  @DeviceCommands.CmdSetDiscardRectangleEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetDiscardRectangleEXT')));
  @DeviceCommands.CmdSetDiscardRectangleEnableEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetDiscardRectangleEnableEXT')));
  @DeviceCommands.CmdSetDiscardRectangleModeEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetDiscardRectangleModeEXT')));
  @DeviceCommands.CmdSetSampleLocationsEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetSampleLocationsEXT')));
  @DeviceCommands.GetBufferMemoryRequirements2:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetBufferMemoryRequirements2')));
  @DeviceCommands.GetBufferMemoryRequirements2KHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetBufferMemoryRequirements2KHR')));
  @DeviceCommands.GetImageMemoryRequirements2:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetImageMemoryRequirements2')));
  @DeviceCommands.GetImageMemoryRequirements2KHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetImageMemoryRequirements2KHR')));
  @DeviceCommands.GetImageSparseMemoryRequirements2:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetImageSparseMemoryRequirements2')));
  @DeviceCommands.GetImageSparseMemoryRequirements2KHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetImageSparseMemoryRequirements2KHR')));
  @DeviceCommands.GetDeviceBufferMemoryRequirements:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetDeviceBufferMemoryRequirements')));
  @DeviceCommands.GetDeviceBufferMemoryRequirementsKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetDeviceBufferMemoryRequirementsKHR')));
  @DeviceCommands.GetDeviceImageMemoryRequirements:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetDeviceImageMemoryRequirements')));
  @DeviceCommands.GetDeviceImageMemoryRequirementsKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetDeviceImageMemoryRequirementsKHR')));
  @DeviceCommands.GetDeviceImageSparseMemoryRequirements:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetDeviceImageSparseMemoryRequirements')));
  @DeviceCommands.GetDeviceImageSparseMemoryRequirementsKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetDeviceImageSparseMemoryRequirementsKHR')));
  @DeviceCommands.CreateSamplerYcbcrConversion:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCreateSamplerYcbcrConversion')));
  @DeviceCommands.CreateSamplerYcbcrConversionKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCreateSamplerYcbcrConversionKHR')));
  @DeviceCommands.DestroySamplerYcbcrConversion:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkDestroySamplerYcbcrConversion')));
  @DeviceCommands.DestroySamplerYcbcrConversionKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkDestroySamplerYcbcrConversionKHR')));
  @DeviceCommands.GetDeviceQueue2:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetDeviceQueue2')));
  @DeviceCommands.CreateValidationCacheEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCreateValidationCacheEXT')));
  @DeviceCommands.DestroyValidationCacheEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkDestroyValidationCacheEXT')));
  @DeviceCommands.GetValidationCacheDataEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetValidationCacheDataEXT')));
  @DeviceCommands.MergeValidationCachesEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkMergeValidationCachesEXT')));
  @DeviceCommands.GetDescriptorSetLayoutSupport:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetDescriptorSetLayoutSupport')));
  @DeviceCommands.GetDescriptorSetLayoutSupportKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetDescriptorSetLayoutSupportKHR')));
  @DeviceCommands.GetSwapchainGrallocUsageANDROID:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetSwapchainGrallocUsageANDROID')));
{$ifdef Android}
  @DeviceCommands.GetSwapchainGrallocUsage2ANDROID:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetSwapchainGrallocUsage2ANDROID')));
{$endif}
  @DeviceCommands.AcquireImageANDROID:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkAcquireImageANDROID')));
  @DeviceCommands.QueueSignalReleaseImageANDROID:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkQueueSignalReleaseImageANDROID')));
  @DeviceCommands.GetShaderInfoAMD:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetShaderInfoAMD')));
  @DeviceCommands.SetLocalDimmingAMD:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkSetLocalDimmingAMD')));
  @DeviceCommands.GetCalibratedTimestampsEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetCalibratedTimestampsEXT')));
  @DeviceCommands.SetDebugUtilsObjectNameEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkSetDebugUtilsObjectNameEXT')));
  @DeviceCommands.SetDebugUtilsObjectTagEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkSetDebugUtilsObjectTagEXT')));
  @DeviceCommands.QueueBeginDebugUtilsLabelEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkQueueBeginDebugUtilsLabelEXT')));
  @DeviceCommands.QueueEndDebugUtilsLabelEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkQueueEndDebugUtilsLabelEXT')));
  @DeviceCommands.QueueInsertDebugUtilsLabelEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkQueueInsertDebugUtilsLabelEXT')));
  @DeviceCommands.CmdBeginDebugUtilsLabelEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdBeginDebugUtilsLabelEXT')));
  @DeviceCommands.CmdEndDebugUtilsLabelEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdEndDebugUtilsLabelEXT')));
  @DeviceCommands.CmdInsertDebugUtilsLabelEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdInsertDebugUtilsLabelEXT')));
  @DeviceCommands.GetMemoryHostPointerPropertiesEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetMemoryHostPointerPropertiesEXT')));
  @DeviceCommands.CmdWriteBufferMarkerAMD:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdWriteBufferMarkerAMD')));
  @DeviceCommands.CreateRenderPass2:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCreateRenderPass2')));
  @DeviceCommands.CreateRenderPass2KHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCreateRenderPass2KHR')));
  @DeviceCommands.CmdBeginRenderPass2:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdBeginRenderPass2')));
  @DeviceCommands.CmdBeginRenderPass2KHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdBeginRenderPass2KHR')));
  @DeviceCommands.CmdNextSubpass2:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdNextSubpass2')));
  @DeviceCommands.CmdNextSubpass2KHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdNextSubpass2KHR')));
  @DeviceCommands.CmdEndRenderPass2:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdEndRenderPass2')));
  @DeviceCommands.CmdEndRenderPass2KHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdEndRenderPass2KHR')));
  @DeviceCommands.GetSemaphoreCounterValue:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetSemaphoreCounterValue')));
  @DeviceCommands.GetSemaphoreCounterValueKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetSemaphoreCounterValueKHR')));
  @DeviceCommands.WaitSemaphores:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkWaitSemaphores')));
  @DeviceCommands.WaitSemaphoresKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkWaitSemaphoresKHR')));
  @DeviceCommands.SignalSemaphore:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkSignalSemaphore')));
  @DeviceCommands.SignalSemaphoreKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkSignalSemaphoreKHR')));
{$ifdef Android}
  @DeviceCommands.GetAndroidHardwareBufferPropertiesANDROID:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetAndroidHardwareBufferPropertiesANDROID')));
{$endif}
{$ifdef Android}
  @DeviceCommands.GetMemoryAndroidHardwareBufferANDROID:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetMemoryAndroidHardwareBufferANDROID')));
{$endif}
  @DeviceCommands.CmdDrawIndirectCount:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdDrawIndirectCount')));
  @DeviceCommands.CmdDrawIndirectCountKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdDrawIndirectCountKHR')));
  @DeviceCommands.CmdDrawIndirectCountAMD:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdDrawIndirectCountAMD')));
  @DeviceCommands.CmdDrawIndexedIndirectCount:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdDrawIndexedIndirectCount')));
  @DeviceCommands.CmdDrawIndexedIndirectCountKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdDrawIndexedIndirectCountKHR')));
  @DeviceCommands.CmdDrawIndexedIndirectCountAMD:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdDrawIndexedIndirectCountAMD')));
  @DeviceCommands.CmdSetCheckpointNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetCheckpointNV')));
  @DeviceCommands.GetQueueCheckpointDataNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetQueueCheckpointDataNV')));
  @DeviceCommands.CmdBindTransformFeedbackBuffersEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdBindTransformFeedbackBuffersEXT')));
  @DeviceCommands.CmdBeginTransformFeedbackEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdBeginTransformFeedbackEXT')));
  @DeviceCommands.CmdEndTransformFeedbackEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdEndTransformFeedbackEXT')));
  @DeviceCommands.CmdBeginQueryIndexedEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdBeginQueryIndexedEXT')));
  @DeviceCommands.CmdEndQueryIndexedEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdEndQueryIndexedEXT')));
  @DeviceCommands.CmdDrawIndirectByteCountEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdDrawIndirectByteCountEXT')));
  @DeviceCommands.CmdSetExclusiveScissorNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetExclusiveScissorNV')));
  @DeviceCommands.CmdSetExclusiveScissorEnableNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetExclusiveScissorEnableNV')));
  @DeviceCommands.CmdBindShadingRateImageNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdBindShadingRateImageNV')));
  @DeviceCommands.CmdSetViewportShadingRatePaletteNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetViewportShadingRatePaletteNV')));
  @DeviceCommands.CmdSetCoarseSampleOrderNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetCoarseSampleOrderNV')));
  @DeviceCommands.CmdDrawMeshTasksNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdDrawMeshTasksNV')));
  @DeviceCommands.CmdDrawMeshTasksIndirectNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdDrawMeshTasksIndirectNV')));
  @DeviceCommands.CmdDrawMeshTasksIndirectCountNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdDrawMeshTasksIndirectCountNV')));
  @DeviceCommands.CmdDrawMeshTasksEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdDrawMeshTasksEXT')));
  @DeviceCommands.CmdDrawMeshTasksIndirectEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdDrawMeshTasksIndirectEXT')));
  @DeviceCommands.CmdDrawMeshTasksIndirectCountEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdDrawMeshTasksIndirectCountEXT')));
  @DeviceCommands.CompileDeferredNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCompileDeferredNV')));
  @DeviceCommands.CreateAccelerationStructureNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCreateAccelerationStructureNV')));
  @DeviceCommands.CmdBindInvocationMaskHUAWEI:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdBindInvocationMaskHUAWEI')));
  @DeviceCommands.DestroyAccelerationStructureKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkDestroyAccelerationStructureKHR')));
  @DeviceCommands.DestroyAccelerationStructureNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkDestroyAccelerationStructureNV')));
  @DeviceCommands.GetAccelerationStructureMemoryRequirementsNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetAccelerationStructureMemoryRequirementsNV')));
  @DeviceCommands.BindAccelerationStructureMemoryNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkBindAccelerationStructureMemoryNV')));
  @DeviceCommands.CmdCopyAccelerationStructureNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdCopyAccelerationStructureNV')));
  @DeviceCommands.CmdCopyAccelerationStructureKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdCopyAccelerationStructureKHR')));
  @DeviceCommands.CopyAccelerationStructureKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCopyAccelerationStructureKHR')));
  @DeviceCommands.CmdCopyAccelerationStructureToMemoryKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdCopyAccelerationStructureToMemoryKHR')));
  @DeviceCommands.CopyAccelerationStructureToMemoryKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCopyAccelerationStructureToMemoryKHR')));
  @DeviceCommands.CmdCopyMemoryToAccelerationStructureKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdCopyMemoryToAccelerationStructureKHR')));
  @DeviceCommands.CopyMemoryToAccelerationStructureKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCopyMemoryToAccelerationStructureKHR')));
  @DeviceCommands.CmdWriteAccelerationStructuresPropertiesKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdWriteAccelerationStructuresPropertiesKHR')));
  @DeviceCommands.CmdWriteAccelerationStructuresPropertiesNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdWriteAccelerationStructuresPropertiesNV')));
  @DeviceCommands.CmdBuildAccelerationStructureNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdBuildAccelerationStructureNV')));
  @DeviceCommands.WriteAccelerationStructuresPropertiesKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkWriteAccelerationStructuresPropertiesKHR')));
  @DeviceCommands.CmdTraceRaysKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdTraceRaysKHR')));
  @DeviceCommands.CmdTraceRaysNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdTraceRaysNV')));
  @DeviceCommands.GetRayTracingShaderGroupHandlesKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetRayTracingShaderGroupHandlesKHR')));
  @DeviceCommands.GetRayTracingShaderGroupHandlesNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetRayTracingShaderGroupHandlesNV')));
  @DeviceCommands.GetRayTracingCaptureReplayShaderGroupHandlesKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetRayTracingCaptureReplayShaderGroupHandlesKHR')));
  @DeviceCommands.GetAccelerationStructureHandleNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetAccelerationStructureHandleNV')));
  @DeviceCommands.CreateRayTracingPipelinesNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCreateRayTracingPipelinesNV')));
  @DeviceCommands.CreateRayTracingPipelinesKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCreateRayTracingPipelinesKHR')));
  @DeviceCommands.CmdTraceRaysIndirectKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdTraceRaysIndirectKHR')));
  @DeviceCommands.CmdTraceRaysIndirect2KHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdTraceRaysIndirect2KHR')));
  @DeviceCommands.GetDeviceAccelerationStructureCompatibilityKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetDeviceAccelerationStructureCompatibilityKHR')));
  @DeviceCommands.GetRayTracingShaderGroupStackSizeKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetRayTracingShaderGroupStackSizeKHR')));
  @DeviceCommands.CmdSetRayTracingPipelineStackSizeKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetRayTracingPipelineStackSizeKHR')));
  @DeviceCommands.GetImageViewHandleNVX:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetImageViewHandleNVX')));
  @DeviceCommands.GetImageViewAddressNVX:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetImageViewAddressNVX')));
  @DeviceCommands.GetDeviceGroupSurfacePresentModes2EXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetDeviceGroupSurfacePresentModes2EXT')));
  @DeviceCommands.AcquireFullScreenExclusiveModeEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkAcquireFullScreenExclusiveModeEXT')));
  @DeviceCommands.ReleaseFullScreenExclusiveModeEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkReleaseFullScreenExclusiveModeEXT')));
  @DeviceCommands.AcquireProfilingLockKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkAcquireProfilingLockKHR')));
  @DeviceCommands.ReleaseProfilingLockKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkReleaseProfilingLockKHR')));
  @DeviceCommands.GetImageDrmFormatModifierPropertiesEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetImageDrmFormatModifierPropertiesEXT')));
  @DeviceCommands.GetBufferOpaqueCaptureAddress:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetBufferOpaqueCaptureAddress')));
  @DeviceCommands.GetBufferOpaqueCaptureAddressKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetBufferOpaqueCaptureAddressKHR')));
  @DeviceCommands.GetBufferDeviceAddress:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetBufferDeviceAddress')));
  @DeviceCommands.GetBufferDeviceAddressKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetBufferDeviceAddressKHR')));
  @DeviceCommands.GetBufferDeviceAddressEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetBufferDeviceAddressEXT')));
  @DeviceCommands.InitializePerformanceApiINTEL:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkInitializePerformanceApiINTEL')));
  @DeviceCommands.UninitializePerformanceApiINTEL:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkUninitializePerformanceApiINTEL')));
  @DeviceCommands.CmdSetPerformanceMarkerINTEL:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetPerformanceMarkerINTEL')));
  @DeviceCommands.CmdSetPerformanceStreamMarkerINTEL:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetPerformanceStreamMarkerINTEL')));
  @DeviceCommands.CmdSetPerformanceOverrideINTEL:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetPerformanceOverrideINTEL')));
  @DeviceCommands.AcquirePerformanceConfigurationINTEL:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkAcquirePerformanceConfigurationINTEL')));
  @DeviceCommands.ReleasePerformanceConfigurationINTEL:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkReleasePerformanceConfigurationINTEL')));
  @DeviceCommands.QueueSetPerformanceConfigurationINTEL:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkQueueSetPerformanceConfigurationINTEL')));
  @DeviceCommands.GetPerformanceParameterINTEL:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetPerformanceParameterINTEL')));
  @DeviceCommands.GetDeviceMemoryOpaqueCaptureAddress:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetDeviceMemoryOpaqueCaptureAddress')));
  @DeviceCommands.GetDeviceMemoryOpaqueCaptureAddressKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetDeviceMemoryOpaqueCaptureAddressKHR')));
  @DeviceCommands.GetPipelineExecutablePropertiesKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetPipelineExecutablePropertiesKHR')));
  @DeviceCommands.GetPipelineExecutableStatisticsKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetPipelineExecutableStatisticsKHR')));
  @DeviceCommands.GetPipelineExecutableInternalRepresentationsKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetPipelineExecutableInternalRepresentationsKHR')));
  @DeviceCommands.CmdSetLineStippleEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetLineStippleEXT')));
{$ifdef VulkanSC}
  @DeviceCommands.GetFaultData:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetFaultData')));
{$endif}
  @DeviceCommands.CreateAccelerationStructureKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCreateAccelerationStructureKHR')));
  @DeviceCommands.CmdBuildAccelerationStructuresKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdBuildAccelerationStructuresKHR')));
  @DeviceCommands.CmdBuildAccelerationStructuresIndirectKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdBuildAccelerationStructuresIndirectKHR')));
  @DeviceCommands.BuildAccelerationStructuresKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkBuildAccelerationStructuresKHR')));
  @DeviceCommands.GetAccelerationStructureDeviceAddressKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetAccelerationStructureDeviceAddressKHR')));
  @DeviceCommands.CreateDeferredOperationKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCreateDeferredOperationKHR')));
  @DeviceCommands.DestroyDeferredOperationKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkDestroyDeferredOperationKHR')));
  @DeviceCommands.GetDeferredOperationMaxConcurrencyKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetDeferredOperationMaxConcurrencyKHR')));
  @DeviceCommands.GetDeferredOperationResultKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetDeferredOperationResultKHR')));
  @DeviceCommands.DeferredOperationJoinKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkDeferredOperationJoinKHR')));
  @DeviceCommands.GetPipelineIndirectMemoryRequirementsNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetPipelineIndirectMemoryRequirementsNV')));
  @DeviceCommands.GetPipelineIndirectDeviceAddressNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetPipelineIndirectDeviceAddressNV')));
  @DeviceCommands.CmdSetCullMode:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetCullMode')));
  @DeviceCommands.CmdSetCullModeEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetCullModeEXT')));
  @DeviceCommands.CmdSetFrontFace:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetFrontFace')));
  @DeviceCommands.CmdSetFrontFaceEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetFrontFaceEXT')));
  @DeviceCommands.CmdSetPrimitiveTopology:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetPrimitiveTopology')));
  @DeviceCommands.CmdSetPrimitiveTopologyEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetPrimitiveTopologyEXT')));
  @DeviceCommands.CmdSetViewportWithCount:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetViewportWithCount')));
  @DeviceCommands.CmdSetViewportWithCountEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetViewportWithCountEXT')));
  @DeviceCommands.CmdSetScissorWithCount:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetScissorWithCount')));
  @DeviceCommands.CmdSetScissorWithCountEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetScissorWithCountEXT')));
  @DeviceCommands.CmdBindIndexBuffer2KHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdBindIndexBuffer2KHR')));
  @DeviceCommands.CmdBindVertexBuffers2:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdBindVertexBuffers2')));
  @DeviceCommands.CmdBindVertexBuffers2EXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdBindVertexBuffers2EXT')));
  @DeviceCommands.CmdSetDepthTestEnable:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetDepthTestEnable')));
  @DeviceCommands.CmdSetDepthTestEnableEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetDepthTestEnableEXT')));
  @DeviceCommands.CmdSetDepthWriteEnable:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetDepthWriteEnable')));
  @DeviceCommands.CmdSetDepthWriteEnableEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetDepthWriteEnableEXT')));
  @DeviceCommands.CmdSetDepthCompareOp:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetDepthCompareOp')));
  @DeviceCommands.CmdSetDepthCompareOpEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetDepthCompareOpEXT')));
  @DeviceCommands.CmdSetDepthBoundsTestEnable:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetDepthBoundsTestEnable')));
  @DeviceCommands.CmdSetDepthBoundsTestEnableEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetDepthBoundsTestEnableEXT')));
  @DeviceCommands.CmdSetStencilTestEnable:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetStencilTestEnable')));
  @DeviceCommands.CmdSetStencilTestEnableEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetStencilTestEnableEXT')));
  @DeviceCommands.CmdSetStencilOp:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetStencilOp')));
  @DeviceCommands.CmdSetStencilOpEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetStencilOpEXT')));
  @DeviceCommands.CmdSetPatchControlPointsEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetPatchControlPointsEXT')));
  @DeviceCommands.CmdSetRasterizerDiscardEnable:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetRasterizerDiscardEnable')));
  @DeviceCommands.CmdSetRasterizerDiscardEnableEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetRasterizerDiscardEnableEXT')));
  @DeviceCommands.CmdSetDepthBiasEnable:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetDepthBiasEnable')));
  @DeviceCommands.CmdSetDepthBiasEnableEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetDepthBiasEnableEXT')));
  @DeviceCommands.CmdSetLogicOpEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetLogicOpEXT')));
  @DeviceCommands.CmdSetPrimitiveRestartEnable:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetPrimitiveRestartEnable')));
  @DeviceCommands.CmdSetPrimitiveRestartEnableEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetPrimitiveRestartEnableEXT')));
  @DeviceCommands.CmdSetTessellationDomainOriginEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetTessellationDomainOriginEXT')));
  @DeviceCommands.CmdSetDepthClampEnableEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetDepthClampEnableEXT')));
  @DeviceCommands.CmdSetPolygonModeEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetPolygonModeEXT')));
  @DeviceCommands.CmdSetRasterizationSamplesEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetRasterizationSamplesEXT')));
  @DeviceCommands.CmdSetSampleMaskEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetSampleMaskEXT')));
  @DeviceCommands.CmdSetAlphaToCoverageEnableEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetAlphaToCoverageEnableEXT')));
  @DeviceCommands.CmdSetAlphaToOneEnableEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetAlphaToOneEnableEXT')));
  @DeviceCommands.CmdSetLogicOpEnableEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetLogicOpEnableEXT')));
  @DeviceCommands.CmdSetColorBlendEnableEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetColorBlendEnableEXT')));
  @DeviceCommands.CmdSetColorBlendEquationEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetColorBlendEquationEXT')));
  @DeviceCommands.CmdSetColorWriteMaskEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetColorWriteMaskEXT')));
  @DeviceCommands.CmdSetRasterizationStreamEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetRasterizationStreamEXT')));
  @DeviceCommands.CmdSetConservativeRasterizationModeEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetConservativeRasterizationModeEXT')));
  @DeviceCommands.CmdSetExtraPrimitiveOverestimationSizeEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetExtraPrimitiveOverestimationSizeEXT')));
  @DeviceCommands.CmdSetDepthClipEnableEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetDepthClipEnableEXT')));
  @DeviceCommands.CmdSetSampleLocationsEnableEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetSampleLocationsEnableEXT')));
  @DeviceCommands.CmdSetColorBlendAdvancedEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetColorBlendAdvancedEXT')));
  @DeviceCommands.CmdSetProvokingVertexModeEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetProvokingVertexModeEXT')));
  @DeviceCommands.CmdSetLineRasterizationModeEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetLineRasterizationModeEXT')));
  @DeviceCommands.CmdSetLineStippleEnableEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetLineStippleEnableEXT')));
  @DeviceCommands.CmdSetDepthClipNegativeOneToOneEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetDepthClipNegativeOneToOneEXT')));
  @DeviceCommands.CmdSetViewportWScalingEnableNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetViewportWScalingEnableNV')));
  @DeviceCommands.CmdSetViewportSwizzleNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetViewportSwizzleNV')));
  @DeviceCommands.CmdSetCoverageToColorEnableNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetCoverageToColorEnableNV')));
  @DeviceCommands.CmdSetCoverageToColorLocationNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetCoverageToColorLocationNV')));
  @DeviceCommands.CmdSetCoverageModulationModeNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetCoverageModulationModeNV')));
  @DeviceCommands.CmdSetCoverageModulationTableEnableNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetCoverageModulationTableEnableNV')));
  @DeviceCommands.CmdSetCoverageModulationTableNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetCoverageModulationTableNV')));
  @DeviceCommands.CmdSetShadingRateImageEnableNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetShadingRateImageEnableNV')));
  @DeviceCommands.CmdSetCoverageReductionModeNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetCoverageReductionModeNV')));
  @DeviceCommands.CmdSetRepresentativeFragmentTestEnableNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetRepresentativeFragmentTestEnableNV')));
  @DeviceCommands.CreatePrivateDataSlot:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCreatePrivateDataSlot')));
  @DeviceCommands.CreatePrivateDataSlotEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCreatePrivateDataSlotEXT')));
  @DeviceCommands.DestroyPrivateDataSlot:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkDestroyPrivateDataSlot')));
  @DeviceCommands.DestroyPrivateDataSlotEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkDestroyPrivateDataSlotEXT')));
  @DeviceCommands.SetPrivateData:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkSetPrivateData')));
  @DeviceCommands.SetPrivateDataEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkSetPrivateDataEXT')));
  @DeviceCommands.GetPrivateData:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetPrivateData')));
  @DeviceCommands.GetPrivateDataEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetPrivateDataEXT')));
  @DeviceCommands.CmdCopyBuffer2:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdCopyBuffer2')));
  @DeviceCommands.CmdCopyBuffer2KHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdCopyBuffer2KHR')));
  @DeviceCommands.CmdCopyImage2:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdCopyImage2')));
  @DeviceCommands.CmdCopyImage2KHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdCopyImage2KHR')));
  @DeviceCommands.CmdBlitImage2:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdBlitImage2')));
  @DeviceCommands.CmdBlitImage2KHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdBlitImage2KHR')));
  @DeviceCommands.CmdCopyBufferToImage2:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdCopyBufferToImage2')));
  @DeviceCommands.CmdCopyBufferToImage2KHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdCopyBufferToImage2KHR')));
  @DeviceCommands.CmdCopyImageToBuffer2:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdCopyImageToBuffer2')));
  @DeviceCommands.CmdCopyImageToBuffer2KHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdCopyImageToBuffer2KHR')));
  @DeviceCommands.CmdResolveImage2:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdResolveImage2')));
  @DeviceCommands.CmdResolveImage2KHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdResolveImage2KHR')));
  @DeviceCommands.CmdRefreshObjectsKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdRefreshObjectsKHR')));
  @DeviceCommands.CmdSetFragmentShadingRateKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetFragmentShadingRateKHR')));
  @DeviceCommands.CmdSetFragmentShadingRateEnumNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetFragmentShadingRateEnumNV')));
  @DeviceCommands.GetAccelerationStructureBuildSizesKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetAccelerationStructureBuildSizesKHR')));
  @DeviceCommands.CmdSetVertexInputEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetVertexInputEXT')));
  @DeviceCommands.CmdSetColorWriteEnableEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetColorWriteEnableEXT')));
  @DeviceCommands.CmdSetEvent2:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetEvent2')));
  @DeviceCommands.CmdSetEvent2KHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetEvent2KHR')));
  @DeviceCommands.CmdResetEvent2:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdResetEvent2')));
  @DeviceCommands.CmdResetEvent2KHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdResetEvent2KHR')));
  @DeviceCommands.CmdWaitEvents2:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdWaitEvents2')));
  @DeviceCommands.CmdWaitEvents2KHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdWaitEvents2KHR')));
  @DeviceCommands.CmdPipelineBarrier2:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdPipelineBarrier2')));
  @DeviceCommands.CmdPipelineBarrier2KHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdPipelineBarrier2KHR')));
  @DeviceCommands.QueueSubmit2:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkQueueSubmit2')));
  @DeviceCommands.QueueSubmit2KHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkQueueSubmit2KHR')));
  @DeviceCommands.CmdWriteTimestamp2:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdWriteTimestamp2')));
  @DeviceCommands.CmdWriteTimestamp2KHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdWriteTimestamp2KHR')));
  @DeviceCommands.CmdWriteBufferMarker2AMD:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdWriteBufferMarker2AMD')));
  @DeviceCommands.GetQueueCheckpointData2NV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetQueueCheckpointData2NV')));
  @DeviceCommands.CopyMemoryToImageEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCopyMemoryToImageEXT')));
  @DeviceCommands.CopyImageToMemoryEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCopyImageToMemoryEXT')));
  @DeviceCommands.CopyImageToImageEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCopyImageToImageEXT')));
  @DeviceCommands.TransitionImageLayoutEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkTransitionImageLayoutEXT')));
{$ifdef VulkanSC}
  @DeviceCommands.GetCommandPoolMemoryConsumption:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetCommandPoolMemoryConsumption')));
{$endif}
{$ifdef VkVideo}
  @DeviceCommands.CreateVideoSessionKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCreateVideoSessionKHR')));
{$endif}
{$ifdef VkVideo}
  @DeviceCommands.DestroyVideoSessionKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkDestroyVideoSessionKHR')));
{$endif}
{$ifdef VkVideo}
  @DeviceCommands.CreateVideoSessionParametersKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCreateVideoSessionParametersKHR')));
{$endif}
{$ifdef VkVideo}
  @DeviceCommands.UpdateVideoSessionParametersKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkUpdateVideoSessionParametersKHR')));
{$endif}
{$ifdef VkVideo}
  @DeviceCommands.GetEncodedVideoSessionParametersKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetEncodedVideoSessionParametersKHR')));
{$endif}
{$ifdef VkVideo}
  @DeviceCommands.DestroyVideoSessionParametersKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkDestroyVideoSessionParametersKHR')));
{$endif}
{$ifdef VkVideo}
  @DeviceCommands.GetVideoSessionMemoryRequirementsKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetVideoSessionMemoryRequirementsKHR')));
{$endif}
{$ifdef VkVideo}
  @DeviceCommands.BindVideoSessionMemoryKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkBindVideoSessionMemoryKHR')));
{$endif}
{$ifdef VkVideo}
  @DeviceCommands.CmdDecodeVideoKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdDecodeVideoKHR')));
{$endif}
{$ifdef VkVideo}
  @DeviceCommands.CmdBeginVideoCodingKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdBeginVideoCodingKHR')));
{$endif}
{$ifdef VkVideo}
  @DeviceCommands.CmdControlVideoCodingKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdControlVideoCodingKHR')));
{$endif}
{$ifdef VkVideo}
  @DeviceCommands.CmdEndVideoCodingKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdEndVideoCodingKHR')));
{$endif}
{$ifdef VkVideo}
  @DeviceCommands.CmdEncodeVideoKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdEncodeVideoKHR')));
{$endif}
  @DeviceCommands.CmdDecompressMemoryNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdDecompressMemoryNV')));
  @DeviceCommands.CmdDecompressMemoryIndirectCountNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdDecompressMemoryIndirectCountNV')));
  @DeviceCommands.CreateCuModuleNVX:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCreateCuModuleNVX')));
  @DeviceCommands.CreateCuFunctionNVX:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCreateCuFunctionNVX')));
  @DeviceCommands.DestroyCuModuleNVX:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkDestroyCuModuleNVX')));
  @DeviceCommands.DestroyCuFunctionNVX:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkDestroyCuFunctionNVX')));
  @DeviceCommands.CmdCuLaunchKernelNVX:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdCuLaunchKernelNVX')));
  @DeviceCommands.GetDescriptorSetLayoutSizeEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetDescriptorSetLayoutSizeEXT')));
  @DeviceCommands.GetDescriptorSetLayoutBindingOffsetEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetDescriptorSetLayoutBindingOffsetEXT')));
  @DeviceCommands.GetDescriptorEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetDescriptorEXT')));
  @DeviceCommands.CmdBindDescriptorBuffersEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdBindDescriptorBuffersEXT')));
  @DeviceCommands.CmdSetDescriptorBufferOffsetsEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetDescriptorBufferOffsetsEXT')));
  @DeviceCommands.CmdBindDescriptorBufferEmbeddedSamplersEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdBindDescriptorBufferEmbeddedSamplersEXT')));
  @DeviceCommands.GetBufferOpaqueCaptureDescriptorDataEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetBufferOpaqueCaptureDescriptorDataEXT')));
  @DeviceCommands.GetImageOpaqueCaptureDescriptorDataEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetImageOpaqueCaptureDescriptorDataEXT')));
  @DeviceCommands.GetImageViewOpaqueCaptureDescriptorDataEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetImageViewOpaqueCaptureDescriptorDataEXT')));
  @DeviceCommands.GetSamplerOpaqueCaptureDescriptorDataEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetSamplerOpaqueCaptureDescriptorDataEXT')));
  @DeviceCommands.GetAccelerationStructureOpaqueCaptureDescriptorDataEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT')));
  @DeviceCommands.SetDeviceMemoryPriorityEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkSetDeviceMemoryPriorityEXT')));
  @DeviceCommands.WaitForPresentKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkWaitForPresentKHR')));
{$ifdef Fuchsia}
  @DeviceCommands.CreateBufferCollectionFUCHSIA:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCreateBufferCollectionFUCHSIA')));
{$endif}
{$ifdef Fuchsia}
  @DeviceCommands.SetBufferCollectionBufferConstraintsFUCHSIA:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkSetBufferCollectionBufferConstraintsFUCHSIA')));
{$endif}
{$ifdef Fuchsia}
  @DeviceCommands.SetBufferCollectionImageConstraintsFUCHSIA:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkSetBufferCollectionImageConstraintsFUCHSIA')));
{$endif}
{$ifdef Fuchsia}
  @DeviceCommands.DestroyBufferCollectionFUCHSIA:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkDestroyBufferCollectionFUCHSIA')));
{$endif}
{$ifdef Fuchsia}
  @DeviceCommands.GetBufferCollectionPropertiesFUCHSIA:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetBufferCollectionPropertiesFUCHSIA')));
{$endif}
  @DeviceCommands.CmdBeginRendering:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdBeginRendering')));
  @DeviceCommands.CmdBeginRenderingKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdBeginRenderingKHR')));
  @DeviceCommands.CmdEndRendering:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdEndRendering')));
  @DeviceCommands.CmdEndRenderingKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdEndRenderingKHR')));
  @DeviceCommands.GetDescriptorSetLayoutHostMappingInfoVALVE:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetDescriptorSetLayoutHostMappingInfoVALVE')));
  @DeviceCommands.GetDescriptorSetHostMappingVALVE:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetDescriptorSetHostMappingVALVE')));
  @DeviceCommands.CreateMicromapEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCreateMicromapEXT')));
  @DeviceCommands.CmdBuildMicromapsEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdBuildMicromapsEXT')));
  @DeviceCommands.BuildMicromapsEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkBuildMicromapsEXT')));
  @DeviceCommands.DestroyMicromapEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkDestroyMicromapEXT')));
  @DeviceCommands.CmdCopyMicromapEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdCopyMicromapEXT')));
  @DeviceCommands.CopyMicromapEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCopyMicromapEXT')));
  @DeviceCommands.CmdCopyMicromapToMemoryEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdCopyMicromapToMemoryEXT')));
  @DeviceCommands.CopyMicromapToMemoryEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCopyMicromapToMemoryEXT')));
  @DeviceCommands.CmdCopyMemoryToMicromapEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdCopyMemoryToMicromapEXT')));
  @DeviceCommands.CopyMemoryToMicromapEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCopyMemoryToMicromapEXT')));
  @DeviceCommands.CmdWriteMicromapsPropertiesEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdWriteMicromapsPropertiesEXT')));
  @DeviceCommands.WriteMicromapsPropertiesEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkWriteMicromapsPropertiesEXT')));
  @DeviceCommands.GetDeviceMicromapCompatibilityEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetDeviceMicromapCompatibilityEXT')));
  @DeviceCommands.GetMicromapBuildSizesEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetMicromapBuildSizesEXT')));
  @DeviceCommands.GetShaderModuleIdentifierEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetShaderModuleIdentifierEXT')));
  @DeviceCommands.GetShaderModuleCreateInfoIdentifierEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetShaderModuleCreateInfoIdentifierEXT')));
  @DeviceCommands.GetImageSubresourceLayout2KHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetImageSubresourceLayout2KHR')));
  @DeviceCommands.GetImageSubresourceLayout2EXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetImageSubresourceLayout2EXT')));
  @DeviceCommands.GetPipelinePropertiesEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetPipelinePropertiesEXT')));
  @DeviceCommands.ExportMetalObjectsEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkExportMetalObjectsEXT')));
  @DeviceCommands.GetFramebufferTilePropertiesQCOM:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetFramebufferTilePropertiesQCOM')));
  @DeviceCommands.GetDynamicRenderingTilePropertiesQCOM:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetDynamicRenderingTilePropertiesQCOM')));
  @DeviceCommands.CreateOpticalFlowSessionNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCreateOpticalFlowSessionNV')));
  @DeviceCommands.DestroyOpticalFlowSessionNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkDestroyOpticalFlowSessionNV')));
  @DeviceCommands.BindOpticalFlowSessionImageNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkBindOpticalFlowSessionImageNV')));
  @DeviceCommands.CmdOpticalFlowExecuteNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdOpticalFlowExecuteNV')));
  @DeviceCommands.GetDeviceFaultInfoEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetDeviceFaultInfoEXT')));
  @DeviceCommands.CmdSetDepthBias2EXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdSetDepthBias2EXT')));
  @DeviceCommands.ReleaseSwapchainImagesEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkReleaseSwapchainImagesEXT')));
  @DeviceCommands.GetDeviceImageSubresourceLayoutKHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetDeviceImageSubresourceLayoutKHR')));
  @DeviceCommands.MapMemory2KHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkMapMemory2KHR')));
  @DeviceCommands.UnmapMemory2KHR:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkUnmapMemory2KHR')));
  @DeviceCommands.CreateShadersEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCreateShadersEXT')));
  @DeviceCommands.DestroyShaderEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkDestroyShaderEXT')));
  @DeviceCommands.GetShaderBinaryDataEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetShaderBinaryDataEXT')));
  @DeviceCommands.CmdBindShadersEXT:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdBindShadersEXT')));
{$ifdef QNX}
  @DeviceCommands.GetScreenBufferPropertiesQNX:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetScreenBufferPropertiesQNX')));
{$endif}
  @DeviceCommands.GetExecutionGraphPipelineScratchSizeAMDX:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetExecutionGraphPipelineScratchSizeAMDX')));
  @DeviceCommands.GetExecutionGraphPipelineNodeIndexAMDX:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetExecutionGraphPipelineNodeIndexAMDX')));
  @DeviceCommands.CreateExecutionGraphPipelinesAMDX:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCreateExecutionGraphPipelinesAMDX')));
  @DeviceCommands.CmdInitializeGraphScratchMemoryAMDX:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdInitializeGraphScratchMemoryAMDX')));
  @DeviceCommands.CmdDispatchGraphAMDX:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdDispatchGraphAMDX')));
  @DeviceCommands.CmdDispatchGraphIndirectAMDX:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdDispatchGraphIndirectAMDX')));
  @DeviceCommands.CmdDispatchGraphIndirectCountAMDX:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkCmdDispatchGraphIndirectCountAMDX')));
  @DeviceCommands.SetLatencySleepModeNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkSetLatencySleepModeNV')));
  @DeviceCommands.LatencySleepNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkLatencySleepNV')));
  @DeviceCommands.SetLatencyMarkerNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkSetLatencyMarkerNV')));
  @DeviceCommands.GetLatencyTimingsNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkGetLatencyTimingsNV')));
  @DeviceCommands.QueueNotifyOutOfBandNV:=vkVoidFunctionToPointer(vkGetDeviceProcAddr(Device,PVkChar('vkQueueNotifyOutOfBandNV')));
  result:=assigned(DeviceCommands.DestroyDevice);
 end;
end;

{$ifdef HAS_ADVANCED_RECORDS}
constructor TVkDebugUtilsObjectNameInfoEXT.Create(const aObjectType:TVkObjectType;
                                                  const aObjectHandle:TVkUInt64;
                                                  const aPObjectName:PVkChar);
begin
 sType:=VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT;
 pNext:=nil;
 objectType:=aObjectType;
 objectHandle:=aObjectHandle;
 pObjectName:=aPObjectName;
end;

{$ifdef VulkanSC}
constructor TVkFaultData.Create(const aFaultLevel:TVkFaultLevel;
                                const aFaultType:TVkFaultType);
begin
 sType:=VK_STRUCTURE_TYPE_FAULT_DATA;
 pNext:=nil;
 faultLevel:=aFaultLevel;
 faultType:=aFaultType;
end;
{$endif}

constructor TVkDeviceMemoryReportCallbackDataEXT.Create(const aFlags:TVkDeviceMemoryReportFlagsEXT;
                                                        const aType_:TVkDeviceMemoryReportEventTypeEXT;
                                                        const aMemoryObjectId:TVkUInt64;
                                                        const aSize:TVkDeviceSize;
                                                        const aObjectType:TVkObjectType;
                                                        const aObjectHandle:TVkUInt64;
                                                        const aHeapIndex:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT;
 pNext:=nil;
 flags:=aFlags;
 type_:=aType_;
 memoryObjectId:=aMemoryObjectId;
 size:=aSize;
 objectType:=aObjectType;
 objectHandle:=aObjectHandle;
 heapIndex:=aHeapIndex;
end;

constructor TVkOffset2D.Create(const aX:TVkInt32;
                               const aY:TVkInt32);
begin
 x:=aX;
 y:=aY;
end;

constructor TVkOffset3D.Create(const aX:TVkInt32;
                               const aY:TVkInt32;
                               const aZ:TVkInt32);
begin
 x:=aX;
 y:=aY;
 z:=aZ;
end;

constructor TVkExtent2D.Create(const aWidth:TVkUInt32;
                               const aHeight:TVkUInt32);
begin
 width:=aWidth;
 height:=aHeight;
end;

constructor TVkExtent3D.Create(const aWidth:TVkUInt32;
                               const aHeight:TVkUInt32;
                               const aDepth:TVkUInt32);
begin
 width:=aWidth;
 height:=aHeight;
 depth:=aDepth;
end;

constructor TVkViewport.Create(const aX:TVkFloat;
                               const aY:TVkFloat;
                               const aWidth:TVkFloat;
                               const aHeight:TVkFloat;
                               const aMinDepth:TVkFloat;
                               const aMaxDepth:TVkFloat);
begin
 x:=aX;
 y:=aY;
 width:=aWidth;
 height:=aHeight;
 minDepth:=aMinDepth;
 maxDepth:=aMaxDepth;
end;

constructor TVkRect2D.Create(const aOffset:TVkOffset2D;
                             const aExtent:TVkExtent2D);
begin
 offset:=aOffset;
 extent:=aExtent;
end;

constructor TVkClearRect.Create(const aRect:TVkRect2D;
                                const aBaseArrayLayer:TVkUInt32;
                                const aLayerCount:TVkUInt32);
begin
 rect:=aRect;
 baseArrayLayer:=aBaseArrayLayer;
 layerCount:=aLayerCount;
end;

constructor TVkComponentMapping.Create(const aR:TVkComponentSwizzle;
                                       const aG:TVkComponentSwizzle;
                                       const aB:TVkComponentSwizzle;
                                       const aA:TVkComponentSwizzle);
begin
 r:=aR;
 g:=aG;
 b:=aB;
 a:=aA;
end;

constructor TVkPhysicalDeviceSparseProperties.Create(const aResidencyStandard2DBlockShape:TVkBool32;
                                                     const aResidencyStandard2DMultisampleBlockShape:TVkBool32;
                                                     const aResidencyStandard3DBlockShape:TVkBool32;
                                                     const aResidencyAlignedMipSize:TVkBool32;
                                                     const aResidencyNonResidentStrict:TVkBool32);
begin
 residencyStandard2DBlockShape:=aResidencyStandard2DBlockShape;
 residencyStandard2DMultisampleBlockShape:=aResidencyStandard2DMultisampleBlockShape;
 residencyStandard3DBlockShape:=aResidencyStandard3DBlockShape;
 residencyAlignedMipSize:=aResidencyAlignedMipSize;
 residencyNonResidentStrict:=aResidencyNonResidentStrict;
end;

constructor TVkExtensionProperties.Create(const aExtensionName:TVkCharString;
                                          const aSpecVersion:TVkUInt32);
var ArrayItemCount:TVkInt32;
begin
 FillChar(self,SizeOf(TVkExtensionProperties),#0);
 ArrayItemCount:=length(aExtensionName);
 if ArrayItemCount>length(extensionName) then begin
  ArrayItemCount:=length(extensionName);
 end;
 if ArrayItemCount>0 then begin
  Move(aExtensionName[1],extensionName[0],ArrayItemCount*SizeOf(TVkChar));
 end;
 specVersion:=aSpecVersion;
end;

constructor TVkLayerProperties.Create(const aLayerName:TVkCharString;
                                      const aSpecVersion:TVkUInt32;
                                      const aImplementationVersion:TVkUInt32;
                                      const aDescription:TVkCharString);
var ArrayItemCount:TVkInt32;
begin
 FillChar(self,SizeOf(TVkLayerProperties),#0);
 ArrayItemCount:=length(aLayerName);
 if ArrayItemCount>length(layerName) then begin
  ArrayItemCount:=length(layerName);
 end;
 if ArrayItemCount>0 then begin
  Move(aLayerName[1],layerName[0],ArrayItemCount*SizeOf(TVkChar));
 end;
 specVersion:=aSpecVersion;
 implementationVersion:=aImplementationVersion;
 ArrayItemCount:=length(aDescription);
 if ArrayItemCount>length(description) then begin
  ArrayItemCount:=length(description);
 end;
 if ArrayItemCount>0 then begin
  Move(aDescription[1],description[0],ArrayItemCount*SizeOf(TVkChar));
 end;
end;

constructor TVkApplicationInfo.Create(const aPApplicationName:PVkChar;
                                      const aApplicationVersion:TVkUInt32;
                                      const aPEngineName:PVkChar;
                                      const aEngineVersion:TVkUInt32;
                                      const aApiVersion:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_APPLICATION_INFO;
 pNext:=nil;
 pApplicationName:=aPApplicationName;
 applicationVersion:=aApplicationVersion;
 pEngineName:=aPEngineName;
 engineVersion:=aEngineVersion;
 apiVersion:=aApiVersion;
end;

constructor TVkAllocationCallbacks.Create(const aPUserData:PVkVoid;
                                          const aPfnAllocation:TPFN_vkAllocationFunction;
                                          const aPfnReallocation:TPFN_vkReallocationFunction;
                                          const aPfnFree:TPFN_vkFreeFunction;
                                          const aPfnInternalAllocation:TPFN_vkInternalAllocationNotification;
                                          const aPfnInternalFree:TPFN_vkInternalFreeNotification);
begin
 pUserData:=aPUserData;
 pfnAllocation:=aPfnAllocation;
 pfnReallocation:=aPfnReallocation;
 pfnFree:=aPfnFree;
 pfnInternalAllocation:=aPfnInternalAllocation;
 pfnInternalFree:=aPfnInternalFree;
end;

constructor TVkDeviceQueueCreateInfo.Create(const aFlags:TVkDeviceQueueCreateFlags;
                                            const aQueueFamilyIndex:TVkUInt32;
                                            const aQueueCount:TVkUInt32;
                                            const aPQueuePriorities:PVkFloat);
begin
 sType:=VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO;
 pNext:=nil;
 flags:=aFlags;
 queueFamilyIndex:=aQueueFamilyIndex;
 queueCount:=aQueueCount;
 pQueuePriorities:=aPQueuePriorities;
end;

constructor TVkPhysicalDeviceFeatures.Create(const aRobustBufferAccess:TVkBool32;
                                             const aFullDrawIndexUint32:TVkBool32;
                                             const aImageCubeArray:TVkBool32;
                                             const aIndependentBlend:TVkBool32;
                                             const aGeometryShader:TVkBool32;
                                             const aTessellationShader:TVkBool32;
                                             const aSampleRateShading:TVkBool32;
                                             const aDualSrcBlend:TVkBool32;
                                             const aLogicOp:TVkBool32;
                                             const aMultiDrawIndirect:TVkBool32;
                                             const aDrawIndirectFirstInstance:TVkBool32;
                                             const aDepthClamp:TVkBool32;
                                             const aDepthBiasClamp:TVkBool32;
                                             const aFillModeNonSolid:TVkBool32;
                                             const aDepthBounds:TVkBool32;
                                             const aWideLines:TVkBool32;
                                             const aLargePoints:TVkBool32;
                                             const aAlphaToOne:TVkBool32;
                                             const aMultiViewport:TVkBool32;
                                             const aSamplerAnisotropy:TVkBool32;
                                             const aTextureCompressionETC2:TVkBool32;
                                             const aTextureCompressionASTC_LDR:TVkBool32;
                                             const aTextureCompressionBC:TVkBool32;
                                             const aOcclusionQueryPrecise:TVkBool32;
                                             const aPipelineStatisticsQuery:TVkBool32;
                                             const aVertexPipelineStoresAndAtomics:TVkBool32;
                                             const aFragmentStoresAndAtomics:TVkBool32;
                                             const aShaderTessellationAndGeometryPointSize:TVkBool32;
                                             const aShaderImageGatherExtended:TVkBool32;
                                             const aShaderStorageImageExtendedFormats:TVkBool32;
                                             const aShaderStorageImageMultisample:TVkBool32;
                                             const aShaderStorageImageReadWithoutFormat:TVkBool32;
                                             const aShaderStorageImageWriteWithoutFormat:TVkBool32;
                                             const aShaderUniformBufferArrayDynamicIndexing:TVkBool32;
                                             const aShaderSampledImageArrayDynamicIndexing:TVkBool32;
                                             const aShaderStorageBufferArrayDynamicIndexing:TVkBool32;
                                             const aShaderStorageImageArrayDynamicIndexing:TVkBool32;
                                             const aShaderClipDistance:TVkBool32;
                                             const aShaderCullDistance:TVkBool32;
                                             const aShaderFloat64:TVkBool32;
                                             const aShaderInt64:TVkBool32;
                                             const aShaderInt16:TVkBool32;
                                             const aShaderResourceResidency:TVkBool32;
                                             const aShaderResourceMinLod:TVkBool32;
                                             const aSparseBinding:TVkBool32;
                                             const aSparseResidencyBuffer:TVkBool32;
                                             const aSparseResidencyImage2D:TVkBool32;
                                             const aSparseResidencyImage3D:TVkBool32;
                                             const aSparseResidency2Samples:TVkBool32;
                                             const aSparseResidency4Samples:TVkBool32;
                                             const aSparseResidency8Samples:TVkBool32;
                                             const aSparseResidency16Samples:TVkBool32;
                                             const aSparseResidencyAliased:TVkBool32;
                                             const aVariableMultisampleRate:TVkBool32;
                                             const aInheritedQueries:TVkBool32);
begin
 robustBufferAccess:=aRobustBufferAccess;
 fullDrawIndexUint32:=aFullDrawIndexUint32;
 imageCubeArray:=aImageCubeArray;
 independentBlend:=aIndependentBlend;
 geometryShader:=aGeometryShader;
 tessellationShader:=aTessellationShader;
 sampleRateShading:=aSampleRateShading;
 dualSrcBlend:=aDualSrcBlend;
 logicOp:=aLogicOp;
 multiDrawIndirect:=aMultiDrawIndirect;
 drawIndirectFirstInstance:=aDrawIndirectFirstInstance;
 depthClamp:=aDepthClamp;
 depthBiasClamp:=aDepthBiasClamp;
 fillModeNonSolid:=aFillModeNonSolid;
 depthBounds:=aDepthBounds;
 wideLines:=aWideLines;
 largePoints:=aLargePoints;
 alphaToOne:=aAlphaToOne;
 multiViewport:=aMultiViewport;
 samplerAnisotropy:=aSamplerAnisotropy;
 textureCompressionETC2:=aTextureCompressionETC2;
 textureCompressionASTC_LDR:=aTextureCompressionASTC_LDR;
 textureCompressionBC:=aTextureCompressionBC;
 occlusionQueryPrecise:=aOcclusionQueryPrecise;
 pipelineStatisticsQuery:=aPipelineStatisticsQuery;
 vertexPipelineStoresAndAtomics:=aVertexPipelineStoresAndAtomics;
 fragmentStoresAndAtomics:=aFragmentStoresAndAtomics;
 shaderTessellationAndGeometryPointSize:=aShaderTessellationAndGeometryPointSize;
 shaderImageGatherExtended:=aShaderImageGatherExtended;
 shaderStorageImageExtendedFormats:=aShaderStorageImageExtendedFormats;
 shaderStorageImageMultisample:=aShaderStorageImageMultisample;
 shaderStorageImageReadWithoutFormat:=aShaderStorageImageReadWithoutFormat;
 shaderStorageImageWriteWithoutFormat:=aShaderStorageImageWriteWithoutFormat;
 shaderUniformBufferArrayDynamicIndexing:=aShaderUniformBufferArrayDynamicIndexing;
 shaderSampledImageArrayDynamicIndexing:=aShaderSampledImageArrayDynamicIndexing;
 shaderStorageBufferArrayDynamicIndexing:=aShaderStorageBufferArrayDynamicIndexing;
 shaderStorageImageArrayDynamicIndexing:=aShaderStorageImageArrayDynamicIndexing;
 shaderClipDistance:=aShaderClipDistance;
 shaderCullDistance:=aShaderCullDistance;
 shaderFloat64:=aShaderFloat64;
 shaderInt64:=aShaderInt64;
 shaderInt16:=aShaderInt16;
 shaderResourceResidency:=aShaderResourceResidency;
 shaderResourceMinLod:=aShaderResourceMinLod;
 sparseBinding:=aSparseBinding;
 sparseResidencyBuffer:=aSparseResidencyBuffer;
 sparseResidencyImage2D:=aSparseResidencyImage2D;
 sparseResidencyImage3D:=aSparseResidencyImage3D;
 sparseResidency2Samples:=aSparseResidency2Samples;
 sparseResidency4Samples:=aSparseResidency4Samples;
 sparseResidency8Samples:=aSparseResidency8Samples;
 sparseResidency16Samples:=aSparseResidency16Samples;
 sparseResidencyAliased:=aSparseResidencyAliased;
 variableMultisampleRate:=aVariableMultisampleRate;
 inheritedQueries:=aInheritedQueries;
end;

constructor TVkInstanceCreateInfo.Create(const aFlags:TVkInstanceCreateFlags;
                                         const aPApplicationInfo:PVkApplicationInfo;
                                         const aEnabledLayerCount:TVkUInt32;
                                         const aPpEnabledLayerNames:PPVkChar;
                                         const aEnabledExtensionCount:TVkUInt32;
                                         const aPpEnabledExtensionNames:PPVkChar);
begin
 sType:=VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;
 pNext:=nil;
 flags:=aFlags;
 pApplicationInfo:=aPApplicationInfo;
 enabledLayerCount:=aEnabledLayerCount;
 ppEnabledLayerNames:=aPpEnabledLayerNames;
 enabledExtensionCount:=aEnabledExtensionCount;
 ppEnabledExtensionNames:=aPpEnabledExtensionNames;
end;

constructor TVkQueueFamilyProperties.Create(const aQueueFlags:TVkQueueFlags;
                                            const aQueueCount:TVkUInt32;
                                            const aTimestampValidBits:TVkUInt32;
                                            const aMinImageTransferGranularity:TVkExtent3D);
begin
 queueFlags:=aQueueFlags;
 queueCount:=aQueueCount;
 timestampValidBits:=aTimestampValidBits;
 minImageTransferGranularity:=aMinImageTransferGranularity;
end;

constructor TVkMemoryType.Create(const aPropertyFlags:TVkMemoryPropertyFlags;
                                 const aHeapIndex:TVkUInt32);
begin
 propertyFlags:=aPropertyFlags;
 heapIndex:=aHeapIndex;
end;

constructor TVkMemoryAllocateInfo.Create(const aAllocationSize:TVkDeviceSize;
                                         const aMemoryTypeIndex:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO;
 pNext:=nil;
 allocationSize:=aAllocationSize;
 memoryTypeIndex:=aMemoryTypeIndex;
end;

constructor TVkMemoryRequirements.Create(const aSize:TVkDeviceSize;
                                         const aAlignment:TVkDeviceSize;
                                         const aMemoryTypeBits:TVkUInt32);
begin
 size:=aSize;
 alignment:=aAlignment;
 memoryTypeBits:=aMemoryTypeBits;
end;

constructor TVkSparseImageFormatProperties.Create(const aAspectMask:TVkImageAspectFlags;
                                                  const aImageGranularity:TVkExtent3D;
                                                  const aFlags:TVkSparseImageFormatFlags);
begin
 aspectMask:=aAspectMask;
 imageGranularity:=aImageGranularity;
 flags:=aFlags;
end;

constructor TVkSparseImageMemoryRequirements.Create(const aFormatProperties:TVkSparseImageFormatProperties;
                                                    const aImageMipTailFirstLod:TVkUInt32;
                                                    const aImageMipTailSize:TVkDeviceSize;
                                                    const aImageMipTailOffset:TVkDeviceSize;
                                                    const aImageMipTailStride:TVkDeviceSize);
begin
 formatProperties:=aFormatProperties;
 imageMipTailFirstLod:=aImageMipTailFirstLod;
 imageMipTailSize:=aImageMipTailSize;
 imageMipTailOffset:=aImageMipTailOffset;
 imageMipTailStride:=aImageMipTailStride;
end;

constructor TVkMemoryHeap.Create(const aSize:TVkDeviceSize;
                                 const aFlags:TVkMemoryHeapFlags);
begin
 size:=aSize;
 flags:=aFlags;
end;

constructor TVkPhysicalDeviceMemoryProperties.Create(const aMemoryTypeCount:TVkUInt32;
                                                     const aMemoryTypes:array of TVkMemoryType;
                                                     const aMemoryHeapCount:TVkUInt32;
                                                     const aMemoryHeaps:array of TVkMemoryHeap);
var ArrayItemCount:TVkInt32;
begin
 FillChar(self,SizeOf(TVkPhysicalDeviceMemoryProperties),#0);
 memoryTypeCount:=aMemoryTypeCount;
 ArrayItemCount:=length(aMemoryTypes);
 if ArrayItemCount>length(memoryTypes) then begin
  ArrayItemCount:=length(memoryTypes);
 end;
 if ArrayItemCount>0 then begin
  Move(aMemoryTypes[0],memoryTypes[0],ArrayItemCount*SizeOf(TVkMemoryType));
 end;
 memoryHeapCount:=aMemoryHeapCount;
 ArrayItemCount:=length(aMemoryHeaps);
 if ArrayItemCount>length(memoryHeaps) then begin
  ArrayItemCount:=length(memoryHeaps);
 end;
 if ArrayItemCount>0 then begin
  Move(aMemoryHeaps[0],memoryHeaps[0],ArrayItemCount*SizeOf(TVkMemoryHeap));
 end;
end;

constructor TVkMappedMemoryRange.Create(const aMemory:TVkDeviceMemory;
                                        const aOffset:TVkDeviceSize;
                                        const aSize:TVkDeviceSize);
begin
 sType:=VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE;
 pNext:=nil;
 memory:=aMemory;
 offset:=aOffset;
 size:=aSize;
end;

constructor TVkFormatProperties.Create(const aLinearTilingFeatures:TVkFormatFeatureFlags;
                                       const aOptimalTilingFeatures:TVkFormatFeatureFlags;
                                       const aBufferFeatures:TVkFormatFeatureFlags);
begin
 linearTilingFeatures:=aLinearTilingFeatures;
 optimalTilingFeatures:=aOptimalTilingFeatures;
 bufferFeatures:=aBufferFeatures;
end;

constructor TVkImageFormatProperties.Create(const aMaxExtent:TVkExtent3D;
                                            const aMaxMipLevels:TVkUInt32;
                                            const aMaxArrayLayers:TVkUInt32;
                                            const aSampleCounts:TVkSampleCountFlags;
                                            const aMaxResourceSize:TVkDeviceSize);
begin
 maxExtent:=aMaxExtent;
 maxMipLevels:=aMaxMipLevels;
 maxArrayLayers:=aMaxArrayLayers;
 sampleCounts:=aSampleCounts;
 maxResourceSize:=aMaxResourceSize;
end;

constructor TVkDescriptorBufferInfo.Create(const aBuffer:TVkBuffer;
                                           const aOffset:TVkDeviceSize;
                                           const aRange:TVkDeviceSize);
begin
 buffer:=aBuffer;
 offset:=aOffset;
 range:=aRange;
end;

constructor TVkDescriptorImageInfo.Create(const aSampler:TVkSampler;
                                          const aImageView:TVkImageView;
                                          const aImageLayout:TVkImageLayout);
begin
 sampler:=aSampler;
 imageView:=aImageView;
 imageLayout:=aImageLayout;
end;

constructor TVkWriteDescriptorSet.Create(const aDstSet:TVkDescriptorSet;
                                         const aDstBinding:TVkUInt32;
                                         const aDstArrayElement:TVkUInt32;
                                         const aDescriptorCount:TVkUInt32;
                                         const aDescriptorType:TVkDescriptorType;
                                         const aPImageInfo:PVkDescriptorImageInfo;
                                         const aPBufferInfo:PVkDescriptorBufferInfo;
                                         const aPTexelBufferView:PVkBufferView);
begin
 sType:=VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
 pNext:=nil;
 dstSet:=aDstSet;
 dstBinding:=aDstBinding;
 dstArrayElement:=aDstArrayElement;
 descriptorCount:=aDescriptorCount;
 descriptorType:=aDescriptorType;
 pImageInfo:=aPImageInfo;
 pBufferInfo:=aPBufferInfo;
 pTexelBufferView:=aPTexelBufferView;
end;

constructor TVkCopyDescriptorSet.Create(const aSrcSet:TVkDescriptorSet;
                                        const aSrcBinding:TVkUInt32;
                                        const aSrcArrayElement:TVkUInt32;
                                        const aDstSet:TVkDescriptorSet;
                                        const aDstBinding:TVkUInt32;
                                        const aDstArrayElement:TVkUInt32;
                                        const aDescriptorCount:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET;
 pNext:=nil;
 srcSet:=aSrcSet;
 srcBinding:=aSrcBinding;
 srcArrayElement:=aSrcArrayElement;
 dstSet:=aDstSet;
 dstBinding:=aDstBinding;
 dstArrayElement:=aDstArrayElement;
 descriptorCount:=aDescriptorCount;
end;

constructor TVkBufferUsageFlags2CreateInfoKHR.Create(const aUsage:TVkBufferUsageFlags2KHR);
begin
 sType:=VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR;
 pNext:=nil;
 usage:=aUsage;
end;

constructor TVkBufferCreateInfo.Create(const aFlags:TVkBufferCreateFlags;
                                       const aSize:TVkDeviceSize;
                                       const aUsage:TVkBufferUsageFlags;
                                       const aSharingMode:TVkSharingMode;
                                       const aQueueFamilyIndexCount:TVkUInt32;
                                       const aPQueueFamilyIndices:PVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO;
 pNext:=nil;
 flags:=aFlags;
 size:=aSize;
 usage:=aUsage;
 sharingMode:=aSharingMode;
 queueFamilyIndexCount:=aQueueFamilyIndexCount;
 pQueueFamilyIndices:=aPQueueFamilyIndices;
end;

constructor TVkBufferViewCreateInfo.Create(const aFlags:TVkBufferViewCreateFlags;
                                           const aBuffer:TVkBuffer;
                                           const aFormat:TVkFormat;
                                           const aOffset:TVkDeviceSize;
                                           const aRange:TVkDeviceSize);
begin
 sType:=VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO;
 pNext:=nil;
 flags:=aFlags;
 buffer:=aBuffer;
 format:=aFormat;
 offset:=aOffset;
 range:=aRange;
end;

constructor TVkImageSubresource.Create(const aAspectMask:TVkImageAspectFlags;
                                       const aMipLevel:TVkUInt32;
                                       const aArrayLayer:TVkUInt32);
begin
 aspectMask:=aAspectMask;
 mipLevel:=aMipLevel;
 arrayLayer:=aArrayLayer;
end;

constructor TVkImageSubresourceLayers.Create(const aAspectMask:TVkImageAspectFlags;
                                             const aMipLevel:TVkUInt32;
                                             const aBaseArrayLayer:TVkUInt32;
                                             const aLayerCount:TVkUInt32);
begin
 aspectMask:=aAspectMask;
 mipLevel:=aMipLevel;
 baseArrayLayer:=aBaseArrayLayer;
 layerCount:=aLayerCount;
end;

constructor TVkImageSubresourceRange.Create(const aAspectMask:TVkImageAspectFlags;
                                            const aBaseMipLevel:TVkUInt32;
                                            const aLevelCount:TVkUInt32;
                                            const aBaseArrayLayer:TVkUInt32;
                                            const aLayerCount:TVkUInt32);
begin
 aspectMask:=aAspectMask;
 baseMipLevel:=aBaseMipLevel;
 levelCount:=aLevelCount;
 baseArrayLayer:=aBaseArrayLayer;
 layerCount:=aLayerCount;
end;

constructor TVkMemoryBarrier.Create(const aSrcAccessMask:TVkAccessFlags;
                                    const aDstAccessMask:TVkAccessFlags);
begin
 sType:=VK_STRUCTURE_TYPE_MEMORY_BARRIER;
 pNext:=nil;
 srcAccessMask:=aSrcAccessMask;
 dstAccessMask:=aDstAccessMask;
end;

constructor TVkBufferMemoryBarrier.Create(const aSrcAccessMask:TVkAccessFlags;
                                          const aDstAccessMask:TVkAccessFlags;
                                          const aSrcQueueFamilyIndex:TVkUInt32;
                                          const aDstQueueFamilyIndex:TVkUInt32;
                                          const aBuffer:TVkBuffer;
                                          const aOffset:TVkDeviceSize;
                                          const aSize:TVkDeviceSize);
begin
 sType:=VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER;
 pNext:=nil;
 srcAccessMask:=aSrcAccessMask;
 dstAccessMask:=aDstAccessMask;
 srcQueueFamilyIndex:=aSrcQueueFamilyIndex;
 dstQueueFamilyIndex:=aDstQueueFamilyIndex;
 buffer:=aBuffer;
 offset:=aOffset;
 size:=aSize;
end;

constructor TVkImageMemoryBarrier.Create(const aSrcAccessMask:TVkAccessFlags;
                                         const aDstAccessMask:TVkAccessFlags;
                                         const aOldLayout:TVkImageLayout;
                                         const aNewLayout:TVkImageLayout;
                                         const aSrcQueueFamilyIndex:TVkUInt32;
                                         const aDstQueueFamilyIndex:TVkUInt32;
                                         const aImage:TVkImage;
                                         const aSubresourceRange:TVkImageSubresourceRange);
begin
 sType:=VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER;
 pNext:=nil;
 srcAccessMask:=aSrcAccessMask;
 dstAccessMask:=aDstAccessMask;
 oldLayout:=aOldLayout;
 newLayout:=aNewLayout;
 srcQueueFamilyIndex:=aSrcQueueFamilyIndex;
 dstQueueFamilyIndex:=aDstQueueFamilyIndex;
 image:=aImage;
 subresourceRange:=aSubresourceRange;
end;

constructor TVkImageCreateInfo.Create(const aFlags:TVkImageCreateFlags;
                                      const aImageType:TVkImageType;
                                      const aFormat:TVkFormat;
                                      const aExtent:TVkExtent3D;
                                      const aMipLevels:TVkUInt32;
                                      const aArrayLayers:TVkUInt32;
                                      const aSamples:TVkSampleCountFlagBits;
                                      const aTiling:TVkImageTiling;
                                      const aUsage:TVkImageUsageFlags;
                                      const aSharingMode:TVkSharingMode;
                                      const aQueueFamilyIndexCount:TVkUInt32;
                                      const aPQueueFamilyIndices:PVkUInt32;
                                      const aInitialLayout:TVkImageLayout);
begin
 sType:=VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO;
 pNext:=nil;
 flags:=aFlags;
 imageType:=aImageType;
 format:=aFormat;
 extent:=aExtent;
 mipLevels:=aMipLevels;
 arrayLayers:=aArrayLayers;
 samples:=aSamples;
 tiling:=aTiling;
 usage:=aUsage;
 sharingMode:=aSharingMode;
 queueFamilyIndexCount:=aQueueFamilyIndexCount;
 pQueueFamilyIndices:=aPQueueFamilyIndices;
 initialLayout:=aInitialLayout;
end;

constructor TVkSubresourceLayout.Create(const aOffset:TVkDeviceSize;
                                        const aSize:TVkDeviceSize;
                                        const aRowPitch:TVkDeviceSize;
                                        const aArrayPitch:TVkDeviceSize;
                                        const aDepthPitch:TVkDeviceSize);
begin
 offset:=aOffset;
 size:=aSize;
 rowPitch:=aRowPitch;
 arrayPitch:=aArrayPitch;
 depthPitch:=aDepthPitch;
end;

constructor TVkImageViewCreateInfo.Create(const aFlags:TVkImageViewCreateFlags;
                                          const aImage:TVkImage;
                                          const aViewType:TVkImageViewType;
                                          const aFormat:TVkFormat;
                                          const aComponents:TVkComponentMapping;
                                          const aSubresourceRange:TVkImageSubresourceRange);
begin
 sType:=VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO;
 pNext:=nil;
 flags:=aFlags;
 image:=aImage;
 viewType:=aViewType;
 format:=aFormat;
 components:=aComponents;
 subresourceRange:=aSubresourceRange;
end;

constructor TVkBufferCopy.Create(const aSrcOffset:TVkDeviceSize;
                                 const aDstOffset:TVkDeviceSize;
                                 const aSize:TVkDeviceSize);
begin
 srcOffset:=aSrcOffset;
 dstOffset:=aDstOffset;
 size:=aSize;
end;

constructor TVkSparseMemoryBind.Create(const aResourceOffset:TVkDeviceSize;
                                       const aSize:TVkDeviceSize;
                                       const aMemory:TVkDeviceMemory;
                                       const aMemoryOffset:TVkDeviceSize;
                                       const aFlags:TVkSparseMemoryBindFlags);
begin
 resourceOffset:=aResourceOffset;
 size:=aSize;
 memory:=aMemory;
 memoryOffset:=aMemoryOffset;
 flags:=aFlags;
end;

constructor TVkSparseImageMemoryBind.Create(const aSubresource:TVkImageSubresource;
                                            const aOffset:TVkOffset3D;
                                            const aExtent:TVkExtent3D;
                                            const aMemory:TVkDeviceMemory;
                                            const aMemoryOffset:TVkDeviceSize;
                                            const aFlags:TVkSparseMemoryBindFlags);
begin
 subresource:=aSubresource;
 offset:=aOffset;
 extent:=aExtent;
 memory:=aMemory;
 memoryOffset:=aMemoryOffset;
 flags:=aFlags;
end;

constructor TVkSparseBufferMemoryBindInfo.Create(const aBuffer:TVkBuffer;
                                                 const aBindCount:TVkUInt32;
                                                 const aPBinds:PVkSparseMemoryBind);
begin
 buffer:=aBuffer;
 bindCount:=aBindCount;
 pBinds:=aPBinds;
end;

constructor TVkSparseImageOpaqueMemoryBindInfo.Create(const aImage:TVkImage;
                                                      const aBindCount:TVkUInt32;
                                                      const aPBinds:PVkSparseMemoryBind);
begin
 image:=aImage;
 bindCount:=aBindCount;
 pBinds:=aPBinds;
end;

constructor TVkSparseImageMemoryBindInfo.Create(const aImage:TVkImage;
                                                const aBindCount:TVkUInt32;
                                                const aPBinds:PVkSparseImageMemoryBind);
begin
 image:=aImage;
 bindCount:=aBindCount;
 pBinds:=aPBinds;
end;

constructor TVkBindSparseInfo.Create(const aWaitSemaphoreCount:TVkUInt32;
                                     const aPWaitSemaphores:PVkSemaphore;
                                     const aBufferBindCount:TVkUInt32;
                                     const aPBufferBinds:PVkSparseBufferMemoryBindInfo;
                                     const aImageOpaqueBindCount:TVkUInt32;
                                     const aPImageOpaqueBinds:PVkSparseImageOpaqueMemoryBindInfo;
                                     const aImageBindCount:TVkUInt32;
                                     const aPImageBinds:PVkSparseImageMemoryBindInfo;
                                     const aSignalSemaphoreCount:TVkUInt32;
                                     const aPSignalSemaphores:PVkSemaphore);
begin
 sType:=VK_STRUCTURE_TYPE_BIND_SPARSE_INFO;
 pNext:=nil;
 waitSemaphoreCount:=aWaitSemaphoreCount;
 pWaitSemaphores:=aPWaitSemaphores;
 bufferBindCount:=aBufferBindCount;
 pBufferBinds:=aPBufferBinds;
 imageOpaqueBindCount:=aImageOpaqueBindCount;
 pImageOpaqueBinds:=aPImageOpaqueBinds;
 imageBindCount:=aImageBindCount;
 pImageBinds:=aPImageBinds;
 signalSemaphoreCount:=aSignalSemaphoreCount;
 pSignalSemaphores:=aPSignalSemaphores;
end;

constructor TVkImageCopy.Create(const aSrcSubresource:TVkImageSubresourceLayers;
                                const aSrcOffset:TVkOffset3D;
                                const aDstSubresource:TVkImageSubresourceLayers;
                                const aDstOffset:TVkOffset3D;
                                const aExtent:TVkExtent3D);
begin
 srcSubresource:=aSrcSubresource;
 srcOffset:=aSrcOffset;
 dstSubresource:=aDstSubresource;
 dstOffset:=aDstOffset;
 extent:=aExtent;
end;

constructor TVkImageBlit.Create(const aSrcSubresource:TVkImageSubresourceLayers;
                                const aSrcOffsets:array of TVkOffset3D;
                                const aDstSubresource:TVkImageSubresourceLayers;
                                const aDstOffsets:array of TVkOffset3D);
var ArrayItemCount:TVkInt32;
begin
 FillChar(self,SizeOf(TVkImageBlit),#0);
 srcSubresource:=aSrcSubresource;
 ArrayItemCount:=length(aSrcOffsets);
 if ArrayItemCount>length(srcOffsets) then begin
  ArrayItemCount:=length(srcOffsets);
 end;
 if ArrayItemCount>0 then begin
  Move(aSrcOffsets[0],srcOffsets[0],ArrayItemCount*SizeOf(TVkOffset3D));
 end;
 dstSubresource:=aDstSubresource;
 ArrayItemCount:=length(aDstOffsets);
 if ArrayItemCount>length(dstOffsets) then begin
  ArrayItemCount:=length(dstOffsets);
 end;
 if ArrayItemCount>0 then begin
  Move(aDstOffsets[0],dstOffsets[0],ArrayItemCount*SizeOf(TVkOffset3D));
 end;
end;

constructor TVkBufferImageCopy.Create(const aBufferOffset:TVkDeviceSize;
                                      const aBufferRowLength:TVkUInt32;
                                      const aBufferImageHeight:TVkUInt32;
                                      const aImageSubresource:TVkImageSubresourceLayers;
                                      const aImageOffset:TVkOffset3D;
                                      const aImageExtent:TVkExtent3D);
begin
 bufferOffset:=aBufferOffset;
 bufferRowLength:=aBufferRowLength;
 bufferImageHeight:=aBufferImageHeight;
 imageSubresource:=aImageSubresource;
 imageOffset:=aImageOffset;
 imageExtent:=aImageExtent;
end;

constructor TVkCopyMemoryIndirectCommandNV.Create(const aSrcAddress:TVkDeviceAddress;
                                                  const aDstAddress:TVkDeviceAddress;
                                                  const aSize:TVkDeviceSize);
begin
 srcAddress:=aSrcAddress;
 dstAddress:=aDstAddress;
 size:=aSize;
end;

constructor TVkCopyMemoryToImageIndirectCommandNV.Create(const aSrcAddress:TVkDeviceAddress;
                                                         const aBufferRowLength:TVkUInt32;
                                                         const aBufferImageHeight:TVkUInt32;
                                                         const aImageSubresource:TVkImageSubresourceLayers;
                                                         const aImageOffset:TVkOffset3D;
                                                         const aImageExtent:TVkExtent3D);
begin
 srcAddress:=aSrcAddress;
 bufferRowLength:=aBufferRowLength;
 bufferImageHeight:=aBufferImageHeight;
 imageSubresource:=aImageSubresource;
 imageOffset:=aImageOffset;
 imageExtent:=aImageExtent;
end;

constructor TVkImageResolve.Create(const aSrcSubresource:TVkImageSubresourceLayers;
                                   const aSrcOffset:TVkOffset3D;
                                   const aDstSubresource:TVkImageSubresourceLayers;
                                   const aDstOffset:TVkOffset3D;
                                   const aExtent:TVkExtent3D);
begin
 srcSubresource:=aSrcSubresource;
 srcOffset:=aSrcOffset;
 dstSubresource:=aDstSubresource;
 dstOffset:=aDstOffset;
 extent:=aExtent;
end;

constructor TVkShaderModuleCreateInfo.Create(const aFlags:TVkShaderModuleCreateFlags;
                                             const aCodeSize:TVkSize;
                                             const aPCode:PVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO;
 pNext:=nil;
 flags:=aFlags;
 codeSize:=aCodeSize;
 pCode:=aPCode;
end;

constructor TVkDescriptorSetLayoutBinding.Create(const aBinding:TVkUInt32;
                                                 const aDescriptorType:TVkDescriptorType;
                                                 const aDescriptorCount:TVkUInt32;
                                                 const aStageFlags:TVkShaderStageFlags;
                                                 const aPImmutableSamplers:PVkSampler);
begin
 binding:=aBinding;
 descriptorType:=aDescriptorType;
 descriptorCount:=aDescriptorCount;
 stageFlags:=aStageFlags;
 pImmutableSamplers:=aPImmutableSamplers;
end;

constructor TVkDescriptorSetLayoutCreateInfo.Create(const aFlags:TVkDescriptorSetLayoutCreateFlags;
                                                    const aBindingCount:TVkUInt32;
                                                    const aPBindings:PVkDescriptorSetLayoutBinding);
begin
 sType:=VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO;
 pNext:=nil;
 flags:=aFlags;
 bindingCount:=aBindingCount;
 pBindings:=aPBindings;
end;

constructor TVkDescriptorPoolSize.Create(const aType_:TVkDescriptorType;
                                         const aDescriptorCount:TVkUInt32);
begin
 type_:=aType_;
 descriptorCount:=aDescriptorCount;
end;

constructor TVkDescriptorPoolCreateInfo.Create(const aFlags:TVkDescriptorPoolCreateFlags;
                                               const aMaxSets:TVkUInt32;
                                               const aPoolSizeCount:TVkUInt32;
                                               const aPPoolSizes:PVkDescriptorPoolSize);
begin
 sType:=VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO;
 pNext:=nil;
 flags:=aFlags;
 maxSets:=aMaxSets;
 poolSizeCount:=aPoolSizeCount;
 pPoolSizes:=aPPoolSizes;
end;

constructor TVkDescriptorSetAllocateInfo.Create(const aDescriptorPool:TVkDescriptorPool;
                                                const aDescriptorSetCount:TVkUInt32;
                                                const aPSetLayouts:PVkDescriptorSetLayout);
begin
 sType:=VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO;
 pNext:=nil;
 descriptorPool:=aDescriptorPool;
 descriptorSetCount:=aDescriptorSetCount;
 pSetLayouts:=aPSetLayouts;
end;

constructor TVkSpecializationMapEntry.Create(const aConstantID:TVkUInt32;
                                             const aOffset:TVkUInt32;
                                             const aSize:TVkSize);
begin
 constantID:=aConstantID;
 offset:=aOffset;
 size:=aSize;
end;

constructor TVkSpecializationInfo.Create(const aMapEntryCount:TVkUInt32;
                                         const aPMapEntries:PVkSpecializationMapEntry;
                                         const aDataSize:TVkSize;
                                         const aPData:PVkVoid);
begin
 mapEntryCount:=aMapEntryCount;
 pMapEntries:=aPMapEntries;
 dataSize:=aDataSize;
 pData:=aPData;
end;

constructor TVkPipelineShaderStageCreateInfo.Create(const aFlags:TVkPipelineShaderStageCreateFlags;
                                                    const aStage:TVkShaderStageFlagBits;
                                                    const aModule:TVkShaderModule;
                                                    const aPName:PVkChar;
                                                    const aPSpecializationInfo:PVkSpecializationInfo);
begin
 sType:=VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO;
 pNext:=nil;
 flags:=aFlags;
 stage:=aStage;
 module:=aModule;
 pName:=aPName;
 pSpecializationInfo:=aPSpecializationInfo;
end;

constructor TVkComputePipelineCreateInfo.Create(const aFlags:TVkPipelineCreateFlags;
                                                const aStage:TVkPipelineShaderStageCreateInfo;
                                                const aLayout:TVkPipelineLayout;
                                                const aBasePipelineHandle:TVkPipeline;
                                                const aBasePipelineIndex:TVkInt32);
begin
 sType:=VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO;
 pNext:=nil;
 flags:=aFlags;
 stage:=aStage;
 layout:=aLayout;
 basePipelineHandle:=aBasePipelineHandle;
 basePipelineIndex:=aBasePipelineIndex;
end;

constructor TVkComputePipelineIndirectBufferInfoNV.Create(const aDeviceAddress:TVkDeviceAddress;
                                                          const aSize:TVkDeviceSize;
                                                          const aPipelineDeviceAddressCaptureReplay:TVkDeviceAddress);
begin
 sType:=VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV;
 pNext:=nil;
 deviceAddress:=aDeviceAddress;
 size:=aSize;
 pipelineDeviceAddressCaptureReplay:=aPipelineDeviceAddressCaptureReplay;
end;

constructor TVkPipelineCreateFlags2CreateInfoKHR.Create(const aFlags:TVkPipelineCreateFlags2KHR);
begin
 sType:=VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR;
 pNext:=nil;
 flags:=aFlags;
end;

constructor TVkVertexInputBindingDescription.Create(const aBinding:TVkUInt32;
                                                    const aStride:TVkUInt32;
                                                    const aInputRate:TVkVertexInputRate);
begin
 binding:=aBinding;
 stride:=aStride;
 inputRate:=aInputRate;
end;

constructor TVkVertexInputAttributeDescription.Create(const aLocation:TVkUInt32;
                                                      const aBinding:TVkUInt32;
                                                      const aFormat:TVkFormat;
                                                      const aOffset:TVkUInt32);
begin
 location:=aLocation;
 binding:=aBinding;
 format:=aFormat;
 offset:=aOffset;
end;

constructor TVkPipelineVertexInputStateCreateInfo.Create(const aFlags:TVkPipelineVertexInputStateCreateFlags;
                                                         const aVertexBindingDescriptionCount:TVkUInt32;
                                                         const aPVertexBindingDescriptions:PVkVertexInputBindingDescription;
                                                         const aVertexAttributeDescriptionCount:TVkUInt32;
                                                         const aPVertexAttributeDescriptions:PVkVertexInputAttributeDescription);
begin
 sType:=VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO;
 pNext:=nil;
 flags:=aFlags;
 vertexBindingDescriptionCount:=aVertexBindingDescriptionCount;
 pVertexBindingDescriptions:=aPVertexBindingDescriptions;
 vertexAttributeDescriptionCount:=aVertexAttributeDescriptionCount;
 pVertexAttributeDescriptions:=aPVertexAttributeDescriptions;
end;

constructor TVkPipelineInputAssemblyStateCreateInfo.Create(const aFlags:TVkPipelineInputAssemblyStateCreateFlags;
                                                           const aTopology:TVkPrimitiveTopology;
                                                           const aPrimitiveRestartEnable:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO;
 pNext:=nil;
 flags:=aFlags;
 topology:=aTopology;
 primitiveRestartEnable:=aPrimitiveRestartEnable;
end;

constructor TVkPipelineTessellationStateCreateInfo.Create(const aFlags:TVkPipelineTessellationStateCreateFlags;
                                                          const aPatchControlPoints:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO;
 pNext:=nil;
 flags:=aFlags;
 patchControlPoints:=aPatchControlPoints;
end;

constructor TVkPipelineViewportStateCreateInfo.Create(const aFlags:TVkPipelineViewportStateCreateFlags;
                                                      const aViewportCount:TVkUInt32;
                                                      const aPViewports:PVkViewport;
                                                      const aScissorCount:TVkUInt32;
                                                      const aPScissors:PVkRect2D);
begin
 sType:=VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO;
 pNext:=nil;
 flags:=aFlags;
 viewportCount:=aViewportCount;
 pViewports:=aPViewports;
 scissorCount:=aScissorCount;
 pScissors:=aPScissors;
end;

constructor TVkPipelineRasterizationStateCreateInfo.Create(const aFlags:TVkPipelineRasterizationStateCreateFlags;
                                                           const aDepthClampEnable:TVkBool32;
                                                           const aRasterizerDiscardEnable:TVkBool32;
                                                           const aPolygonMode:TVkPolygonMode;
                                                           const aCullMode:TVkCullModeFlags;
                                                           const aFrontFace:TVkFrontFace;
                                                           const aDepthBiasEnable:TVkBool32;
                                                           const aDepthBiasConstantFactor:TVkFloat;
                                                           const aDepthBiasClamp:TVkFloat;
                                                           const aDepthBiasSlopeFactor:TVkFloat;
                                                           const aLineWidth:TVkFloat);
begin
 sType:=VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO;
 pNext:=nil;
 flags:=aFlags;
 depthClampEnable:=aDepthClampEnable;
 rasterizerDiscardEnable:=aRasterizerDiscardEnable;
 polygonMode:=aPolygonMode;
 cullMode:=aCullMode;
 frontFace:=aFrontFace;
 depthBiasEnable:=aDepthBiasEnable;
 depthBiasConstantFactor:=aDepthBiasConstantFactor;
 depthBiasClamp:=aDepthBiasClamp;
 depthBiasSlopeFactor:=aDepthBiasSlopeFactor;
 lineWidth:=aLineWidth;
end;

constructor TVkPipelineMultisampleStateCreateInfo.Create(const aFlags:TVkPipelineMultisampleStateCreateFlags;
                                                         const aRasterizationSamples:TVkSampleCountFlagBits;
                                                         const aSampleShadingEnable:TVkBool32;
                                                         const aMinSampleShading:TVkFloat;
                                                         const aPSampleMask:PVkSampleMask;
                                                         const aAlphaToCoverageEnable:TVkBool32;
                                                         const aAlphaToOneEnable:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO;
 pNext:=nil;
 flags:=aFlags;
 rasterizationSamples:=aRasterizationSamples;
 sampleShadingEnable:=aSampleShadingEnable;
 minSampleShading:=aMinSampleShading;
 pSampleMask:=aPSampleMask;
 alphaToCoverageEnable:=aAlphaToCoverageEnable;
 alphaToOneEnable:=aAlphaToOneEnable;
end;

constructor TVkPipelineColorBlendAttachmentState.Create(const aBlendEnable:TVkBool32;
                                                        const aSrcColorBlendFactor:TVkBlendFactor;
                                                        const aDstColorBlendFactor:TVkBlendFactor;
                                                        const aColorBlendOp:TVkBlendOp;
                                                        const aSrcAlphaBlendFactor:TVkBlendFactor;
                                                        const aDstAlphaBlendFactor:TVkBlendFactor;
                                                        const aAlphaBlendOp:TVkBlendOp;
                                                        const aColorWriteMask:TVkColorComponentFlags);
begin
 blendEnable:=aBlendEnable;
 srcColorBlendFactor:=aSrcColorBlendFactor;
 dstColorBlendFactor:=aDstColorBlendFactor;
 colorBlendOp:=aColorBlendOp;
 srcAlphaBlendFactor:=aSrcAlphaBlendFactor;
 dstAlphaBlendFactor:=aDstAlphaBlendFactor;
 alphaBlendOp:=aAlphaBlendOp;
 colorWriteMask:=aColorWriteMask;
end;

constructor TVkPipelineColorBlendStateCreateInfo.Create(const aFlags:TVkPipelineColorBlendStateCreateFlags;
                                                        const aLogicOpEnable:TVkBool32;
                                                        const aLogicOp:TVkLogicOp;
                                                        const aAttachmentCount:TVkUInt32;
                                                        const aPAttachments:PVkPipelineColorBlendAttachmentState;
                                                        const aBlendConstants:array of TVkFloat);
var ArrayItemCount:TVkInt32;
begin
 FillChar(self,SizeOf(TVkPipelineColorBlendStateCreateInfo),#0);
 sType:=VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO;
 pNext:=nil;
 flags:=aFlags;
 logicOpEnable:=aLogicOpEnable;
 logicOp:=aLogicOp;
 attachmentCount:=aAttachmentCount;
 pAttachments:=aPAttachments;
 ArrayItemCount:=length(aBlendConstants);
 if ArrayItemCount>length(blendConstants) then begin
  ArrayItemCount:=length(blendConstants);
 end;
 if ArrayItemCount>0 then begin
  Move(aBlendConstants[0],blendConstants[0],ArrayItemCount*SizeOf(TVkFloat));
 end;
end;

constructor TVkPipelineDynamicStateCreateInfo.Create(const aFlags:TVkPipelineDynamicStateCreateFlags;
                                                     const aDynamicStateCount:TVkUInt32;
                                                     const aPDynamicStates:PVkDynamicState);
begin
 sType:=VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO;
 pNext:=nil;
 flags:=aFlags;
 dynamicStateCount:=aDynamicStateCount;
 pDynamicStates:=aPDynamicStates;
end;

constructor TVkStencilOpState.Create(const aFailOp:TVkStencilOp;
                                     const aPassOp:TVkStencilOp;
                                     const aDepthFailOp:TVkStencilOp;
                                     const aCompareOp:TVkCompareOp;
                                     const aCompareMask:TVkUInt32;
                                     const aWriteMask:TVkUInt32;
                                     const aReference:TVkUInt32);
begin
 failOp:=aFailOp;
 passOp:=aPassOp;
 depthFailOp:=aDepthFailOp;
 compareOp:=aCompareOp;
 compareMask:=aCompareMask;
 writeMask:=aWriteMask;
 reference:=aReference;
end;

constructor TVkPipelineDepthStencilStateCreateInfo.Create(const aFlags:TVkPipelineDepthStencilStateCreateFlags;
                                                          const aDepthTestEnable:TVkBool32;
                                                          const aDepthWriteEnable:TVkBool32;
                                                          const aDepthCompareOp:TVkCompareOp;
                                                          const aDepthBoundsTestEnable:TVkBool32;
                                                          const aStencilTestEnable:TVkBool32;
                                                          const aFront:TVkStencilOpState;
                                                          const aBack:TVkStencilOpState;
                                                          const aMinDepthBounds:TVkFloat;
                                                          const aMaxDepthBounds:TVkFloat);
begin
 sType:=VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO;
 pNext:=nil;
 flags:=aFlags;
 depthTestEnable:=aDepthTestEnable;
 depthWriteEnable:=aDepthWriteEnable;
 depthCompareOp:=aDepthCompareOp;
 depthBoundsTestEnable:=aDepthBoundsTestEnable;
 stencilTestEnable:=aStencilTestEnable;
 front:=aFront;
 back:=aBack;
 minDepthBounds:=aMinDepthBounds;
 maxDepthBounds:=aMaxDepthBounds;
end;

constructor TVkGraphicsPipelineCreateInfo.Create(const aFlags:TVkPipelineCreateFlags;
                                                 const aStageCount:TVkUInt32;
                                                 const aPStages:PVkPipelineShaderStageCreateInfo;
                                                 const aPVertexInputState:PVkPipelineVertexInputStateCreateInfo;
                                                 const aPInputAssemblyState:PVkPipelineInputAssemblyStateCreateInfo;
                                                 const aPTessellationState:PVkPipelineTessellationStateCreateInfo;
                                                 const aPViewportState:PVkPipelineViewportStateCreateInfo;
                                                 const aPRasterizationState:PVkPipelineRasterizationStateCreateInfo;
                                                 const aPMultisampleState:PVkPipelineMultisampleStateCreateInfo;
                                                 const aPDepthStencilState:PVkPipelineDepthStencilStateCreateInfo;
                                                 const aPColorBlendState:PVkPipelineColorBlendStateCreateInfo;
                                                 const aPDynamicState:PVkPipelineDynamicStateCreateInfo;
                                                 const aLayout:TVkPipelineLayout;
                                                 const aRenderPass:TVkRenderPass;
                                                 const aSubpass:TVkUInt32;
                                                 const aBasePipelineHandle:TVkPipeline;
                                                 const aBasePipelineIndex:TVkInt32);
begin
 sType:=VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO;
 pNext:=nil;
 flags:=aFlags;
 stageCount:=aStageCount;
 pStages:=aPStages;
 pVertexInputState:=aPVertexInputState;
 pInputAssemblyState:=aPInputAssemblyState;
 pTessellationState:=aPTessellationState;
 pViewportState:=aPViewportState;
 pRasterizationState:=aPRasterizationState;
 pMultisampleState:=aPMultisampleState;
 pDepthStencilState:=aPDepthStencilState;
 pColorBlendState:=aPColorBlendState;
 pDynamicState:=aPDynamicState;
 layout:=aLayout;
 renderPass:=aRenderPass;
 subpass:=aSubpass;
 basePipelineHandle:=aBasePipelineHandle;
 basePipelineIndex:=aBasePipelineIndex;
end;

constructor TVkPipelineCacheCreateInfo.Create(const aFlags:TVkPipelineCacheCreateFlags;
                                              const aInitialDataSize:TVkSize;
                                              const aPInitialData:PVkVoid);
begin
 sType:=VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO;
 pNext:=nil;
 flags:=aFlags;
 initialDataSize:=aInitialDataSize;
 pInitialData:=aPInitialData;
end;

constructor TVkPipelineCacheHeaderVersionOne.Create(const aHeaderSize:TVkUInt32;
                                                    const aHeaderVersion:TVkPipelineCacheHeaderVersion;
                                                    const aVendorID:TVkUInt32;
                                                    const aDeviceID:TVkUInt32;
                                                    const aPipelineCacheUUID:array of TVkUInt8);
var ArrayItemCount:TVkInt32;
begin
 FillChar(self,SizeOf(TVkPipelineCacheHeaderVersionOne),#0);
 headerSize:=aHeaderSize;
 headerVersion:=aHeaderVersion;
 vendorID:=aVendorID;
 deviceID:=aDeviceID;
 ArrayItemCount:=length(aPipelineCacheUUID);
 if ArrayItemCount>length(pipelineCacheUUID) then begin
  ArrayItemCount:=length(pipelineCacheUUID);
 end;
 if ArrayItemCount>0 then begin
  Move(aPipelineCacheUUID[0],pipelineCacheUUID[0],ArrayItemCount*SizeOf(TVkUInt8));
 end;
end;

constructor TVkPipelineCacheStageValidationIndexEntry.Create(const aCodeSize:TVkUInt64;
                                                             const aCodeOffset:TVkUInt64);
begin
 codeSize:=aCodeSize;
 codeOffset:=aCodeOffset;
end;

constructor TVkPipelineCacheSafetyCriticalIndexEntry.Create(const aPipelineIdentifier:array of TVkUInt8;
                                                            const aPipelineMemorySize:TVkUInt64;
                                                            const aJsonSize:TVkUInt64;
                                                            const aJsonOffset:TVkUInt64;
                                                            const aStageIndexCount:TVkUInt32;
                                                            const aStageIndexStride:TVkUInt32;
                                                            const aStageIndexOffset:TVkUInt64);
var ArrayItemCount:TVkInt32;
begin
 FillChar(self,SizeOf(TVkPipelineCacheSafetyCriticalIndexEntry),#0);
 ArrayItemCount:=length(aPipelineIdentifier);
 if ArrayItemCount>length(pipelineIdentifier) then begin
  ArrayItemCount:=length(pipelineIdentifier);
 end;
 if ArrayItemCount>0 then begin
  Move(aPipelineIdentifier[0],pipelineIdentifier[0],ArrayItemCount*SizeOf(TVkUInt8));
 end;
 pipelineMemorySize:=aPipelineMemorySize;
 jsonSize:=aJsonSize;
 jsonOffset:=aJsonOffset;
 stageIndexCount:=aStageIndexCount;
 stageIndexStride:=aStageIndexStride;
 stageIndexOffset:=aStageIndexOffset;
end;

constructor TVkPipelineCacheHeaderVersionSafetyCriticalOne.Create(const aHeaderVersionOne:TVkPipelineCacheHeaderVersionOne;
                                                                  const aValidationVersion:TVkPipelineCacheValidationVersion;
                                                                  const aImplementationData:TVkUInt32;
                                                                  const aPipelineIndexCount:TVkUInt32;
                                                                  const aPipelineIndexStride:TVkUInt32;
                                                                  const aPipelineIndexOffset:TVkUInt64);
begin
 headerVersionOne:=aHeaderVersionOne;
 validationVersion:=aValidationVersion;
 implementationData:=aImplementationData;
 pipelineIndexCount:=aPipelineIndexCount;
 pipelineIndexStride:=aPipelineIndexStride;
 pipelineIndexOffset:=aPipelineIndexOffset;
end;

constructor TVkPushConstantRange.Create(const aStageFlags:TVkShaderStageFlags;
                                        const aOffset:TVkUInt32;
                                        const aSize:TVkUInt32);
begin
 stageFlags:=aStageFlags;
 offset:=aOffset;
 size:=aSize;
end;

constructor TVkPipelineLayoutCreateInfo.Create(const aFlags:TVkPipelineLayoutCreateFlags;
                                               const aSetLayoutCount:TVkUInt32;
                                               const aPSetLayouts:PVkDescriptorSetLayout;
                                               const aPushConstantRangeCount:TVkUInt32;
                                               const aPPushConstantRanges:PVkPushConstantRange);
begin
 sType:=VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO;
 pNext:=nil;
 flags:=aFlags;
 setLayoutCount:=aSetLayoutCount;
 pSetLayouts:=aPSetLayouts;
 pushConstantRangeCount:=aPushConstantRangeCount;
 pPushConstantRanges:=aPPushConstantRanges;
end;

constructor TVkSamplerCreateInfo.Create(const aFlags:TVkSamplerCreateFlags;
                                        const aMagFilter:TVkFilter;
                                        const aMinFilter:TVkFilter;
                                        const aMipmapMode:TVkSamplerMipmapMode;
                                        const aAddressModeU:TVkSamplerAddressMode;
                                        const aAddressModeV:TVkSamplerAddressMode;
                                        const aAddressModeW:TVkSamplerAddressMode;
                                        const aMipLodBias:TVkFloat;
                                        const aAnisotropyEnable:TVkBool32;
                                        const aMaxAnisotropy:TVkFloat;
                                        const aCompareEnable:TVkBool32;
                                        const aCompareOp:TVkCompareOp;
                                        const aMinLod:TVkFloat;
                                        const aMaxLod:TVkFloat;
                                        const aBorderColor:TVkBorderColor;
                                        const aUnnormalizedCoordinates:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO;
 pNext:=nil;
 flags:=aFlags;
 magFilter:=aMagFilter;
 minFilter:=aMinFilter;
 mipmapMode:=aMipmapMode;
 addressModeU:=aAddressModeU;
 addressModeV:=aAddressModeV;
 addressModeW:=aAddressModeW;
 mipLodBias:=aMipLodBias;
 anisotropyEnable:=aAnisotropyEnable;
 maxAnisotropy:=aMaxAnisotropy;
 compareEnable:=aCompareEnable;
 compareOp:=aCompareOp;
 minLod:=aMinLod;
 maxLod:=aMaxLod;
 borderColor:=aBorderColor;
 unnormalizedCoordinates:=aUnnormalizedCoordinates;
end;

constructor TVkCommandPoolCreateInfo.Create(const aFlags:TVkCommandPoolCreateFlags;
                                            const aQueueFamilyIndex:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO;
 pNext:=nil;
 flags:=aFlags;
 queueFamilyIndex:=aQueueFamilyIndex;
end;

constructor TVkCommandBufferAllocateInfo.Create(const aCommandPool:TVkCommandPool;
                                                const aLevel:TVkCommandBufferLevel;
                                                const aCommandBufferCount:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO;
 pNext:=nil;
 commandPool:=aCommandPool;
 level:=aLevel;
 commandBufferCount:=aCommandBufferCount;
end;

constructor TVkCommandBufferInheritanceInfo.Create(const aRenderPass:TVkRenderPass;
                                                   const aSubpass:TVkUInt32;
                                                   const aFramebuffer:TVkFramebuffer;
                                                   const aOcclusionQueryEnable:TVkBool32;
                                                   const aQueryFlags:TVkQueryControlFlags;
                                                   const aPipelineStatistics:TVkQueryPipelineStatisticFlags);
begin
 sType:=VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO;
 pNext:=nil;
 renderPass:=aRenderPass;
 subpass:=aSubpass;
 framebuffer:=aFramebuffer;
 occlusionQueryEnable:=aOcclusionQueryEnable;
 queryFlags:=aQueryFlags;
 pipelineStatistics:=aPipelineStatistics;
end;

constructor TVkCommandBufferBeginInfo.Create(const aFlags:TVkCommandBufferUsageFlags;
                                             const aPInheritanceInfo:PVkCommandBufferInheritanceInfo);
begin
 sType:=VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO;
 pNext:=nil;
 flags:=aFlags;
 pInheritanceInfo:=aPInheritanceInfo;
end;

constructor TVkClearDepthStencilValue.Create(const aDepth:TVkFloat;
                                             const aStencil:TVkUInt32);
begin
 depth:=aDepth;
 stencil:=aStencil;
end;

constructor TVkRenderPassBeginInfo.Create(const aRenderPass:TVkRenderPass;
                                          const aFramebuffer:TVkFramebuffer;
                                          const aRenderArea:TVkRect2D;
                                          const aClearValueCount:TVkUInt32;
                                          const aPClearValues:PVkClearValue);
begin
 sType:=VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO;
 pNext:=nil;
 renderPass:=aRenderPass;
 framebuffer:=aFramebuffer;
 renderArea:=aRenderArea;
 clearValueCount:=aClearValueCount;
 pClearValues:=aPClearValues;
end;

constructor TVkClearAttachment.Create(const aAspectMask:TVkImageAspectFlags;
                                      const aColorAttachment:TVkUInt32;
                                      const aClearValue:TVkClearValue);
begin
 aspectMask:=aAspectMask;
 colorAttachment:=aColorAttachment;
 clearValue:=aClearValue;
end;

constructor TVkAttachmentDescription.Create(const aFlags:TVkAttachmentDescriptionFlags;
                                            const aFormat:TVkFormat;
                                            const aSamples:TVkSampleCountFlagBits;
                                            const aLoadOp:TVkAttachmentLoadOp;
                                            const aStoreOp:TVkAttachmentStoreOp;
                                            const aStencilLoadOp:TVkAttachmentLoadOp;
                                            const aStencilStoreOp:TVkAttachmentStoreOp;
                                            const aInitialLayout:TVkImageLayout;
                                            const aFinalLayout:TVkImageLayout);
begin
 flags:=aFlags;
 format:=aFormat;
 samples:=aSamples;
 loadOp:=aLoadOp;
 storeOp:=aStoreOp;
 stencilLoadOp:=aStencilLoadOp;
 stencilStoreOp:=aStencilStoreOp;
 initialLayout:=aInitialLayout;
 finalLayout:=aFinalLayout;
end;

constructor TVkAttachmentReference.Create(const aAttachment:TVkUInt32;
                                          const aLayout:TVkImageLayout);
begin
 attachment:=aAttachment;
 layout:=aLayout;
end;

constructor TVkSubpassDescription.Create(const aFlags:TVkSubpassDescriptionFlags;
                                         const aPipelineBindPoint:TVkPipelineBindPoint;
                                         const aInputAttachmentCount:TVkUInt32;
                                         const aPInputAttachments:PVkAttachmentReference;
                                         const aColorAttachmentCount:TVkUInt32;
                                         const aPColorAttachments:PVkAttachmentReference;
                                         const aPResolveAttachments:PVkAttachmentReference;
                                         const aPDepthStencilAttachment:PVkAttachmentReference;
                                         const aPreserveAttachmentCount:TVkUInt32;
                                         const aPPreserveAttachments:PVkUInt32);
begin
 flags:=aFlags;
 pipelineBindPoint:=aPipelineBindPoint;
 inputAttachmentCount:=aInputAttachmentCount;
 pInputAttachments:=aPInputAttachments;
 colorAttachmentCount:=aColorAttachmentCount;
 pColorAttachments:=aPColorAttachments;
 pResolveAttachments:=aPResolveAttachments;
 pDepthStencilAttachment:=aPDepthStencilAttachment;
 preserveAttachmentCount:=aPreserveAttachmentCount;
 pPreserveAttachments:=aPPreserveAttachments;
end;

constructor TVkSubpassDependency.Create(const aSrcSubpass:TVkUInt32;
                                        const aDstSubpass:TVkUInt32;
                                        const aSrcStageMask:TVkPipelineStageFlags;
                                        const aDstStageMask:TVkPipelineStageFlags;
                                        const aSrcAccessMask:TVkAccessFlags;
                                        const aDstAccessMask:TVkAccessFlags;
                                        const aDependencyFlags:TVkDependencyFlags);
begin
 srcSubpass:=aSrcSubpass;
 dstSubpass:=aDstSubpass;
 srcStageMask:=aSrcStageMask;
 dstStageMask:=aDstStageMask;
 srcAccessMask:=aSrcAccessMask;
 dstAccessMask:=aDstAccessMask;
 dependencyFlags:=aDependencyFlags;
end;

constructor TVkRenderPassCreateInfo.Create(const aFlags:TVkRenderPassCreateFlags;
                                           const aAttachmentCount:TVkUInt32;
                                           const aPAttachments:PVkAttachmentDescription;
                                           const aSubpassCount:TVkUInt32;
                                           const aPSubpasses:PVkSubpassDescription;
                                           const aDependencyCount:TVkUInt32;
                                           const aPDependencies:PVkSubpassDependency);
begin
 sType:=VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO;
 pNext:=nil;
 flags:=aFlags;
 attachmentCount:=aAttachmentCount;
 pAttachments:=aPAttachments;
 subpassCount:=aSubpassCount;
 pSubpasses:=aPSubpasses;
 dependencyCount:=aDependencyCount;
 pDependencies:=aPDependencies;
end;

constructor TVkEventCreateInfo.Create(const aFlags:TVkEventCreateFlags);
begin
 sType:=VK_STRUCTURE_TYPE_EVENT_CREATE_INFO;
 pNext:=nil;
 flags:=aFlags;
end;

constructor TVkFenceCreateInfo.Create(const aFlags:TVkFenceCreateFlags);
begin
 sType:=VK_STRUCTURE_TYPE_FENCE_CREATE_INFO;
 pNext:=nil;
 flags:=aFlags;
end;

constructor TVkDeviceCreateInfo.Create(const aFlags:TVkDeviceCreateFlags;
                                       const aQueueCreateInfoCount:TVkUInt32;
                                       const aPQueueCreateInfos:PVkDeviceQueueCreateInfo;
                                       const aEnabledLayerCount:TVkUInt32;
                                       const aPpEnabledLayerNames:PPVkChar;
                                       const aEnabledExtensionCount:TVkUInt32;
                                       const aPpEnabledExtensionNames:PPVkChar;
                                       const aPEnabledFeatures:PVkPhysicalDeviceFeatures);
begin
 sType:=VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO;
 pNext:=nil;
 flags:=aFlags;
 queueCreateInfoCount:=aQueueCreateInfoCount;
 pQueueCreateInfos:=aPQueueCreateInfos;
 enabledLayerCount:=aEnabledLayerCount;
 ppEnabledLayerNames:=aPpEnabledLayerNames;
 enabledExtensionCount:=aEnabledExtensionCount;
 ppEnabledExtensionNames:=aPpEnabledExtensionNames;
 pEnabledFeatures:=aPEnabledFeatures;
end;

constructor TVkPhysicalDeviceLimits.Create(const aMaxImageDimension1D:TVkUInt32;
                                           const aMaxImageDimension2D:TVkUInt32;
                                           const aMaxImageDimension3D:TVkUInt32;
                                           const aMaxImageDimensionCube:TVkUInt32;
                                           const aMaxImageArrayLayers:TVkUInt32;
                                           const aMaxTexelBufferElements:TVkUInt32;
                                           const aMaxUniformBufferRange:TVkUInt32;
                                           const aMaxStorageBufferRange:TVkUInt32;
                                           const aMaxPushConstantsSize:TVkUInt32;
                                           const aMaxMemoryAllocationCount:TVkUInt32;
                                           const aMaxSamplerAllocationCount:TVkUInt32;
                                           const aBufferImageGranularity:TVkDeviceSize;
                                           const aSparseAddressSpaceSize:TVkDeviceSize;
                                           const aMaxBoundDescriptorSets:TVkUInt32;
                                           const aMaxPerStageDescriptorSamplers:TVkUInt32;
                                           const aMaxPerStageDescriptorUniformBuffers:TVkUInt32;
                                           const aMaxPerStageDescriptorStorageBuffers:TVkUInt32;
                                           const aMaxPerStageDescriptorSampledImages:TVkUInt32;
                                           const aMaxPerStageDescriptorStorageImages:TVkUInt32;
                                           const aMaxPerStageDescriptorInputAttachments:TVkUInt32;
                                           const aMaxPerStageResources:TVkUInt32;
                                           const aMaxDescriptorSetSamplers:TVkUInt32;
                                           const aMaxDescriptorSetUniformBuffers:TVkUInt32;
                                           const aMaxDescriptorSetUniformBuffersDynamic:TVkUInt32;
                                           const aMaxDescriptorSetStorageBuffers:TVkUInt32;
                                           const aMaxDescriptorSetStorageBuffersDynamic:TVkUInt32;
                                           const aMaxDescriptorSetSampledImages:TVkUInt32;
                                           const aMaxDescriptorSetStorageImages:TVkUInt32;
                                           const aMaxDescriptorSetInputAttachments:TVkUInt32;
                                           const aMaxVertexInputAttributes:TVkUInt32;
                                           const aMaxVertexInputBindings:TVkUInt32;
                                           const aMaxVertexInputAttributeOffset:TVkUInt32;
                                           const aMaxVertexInputBindingStride:TVkUInt32;
                                           const aMaxVertexOutputComponents:TVkUInt32;
                                           const aMaxTessellationGenerationLevel:TVkUInt32;
                                           const aMaxTessellationPatchSize:TVkUInt32;
                                           const aMaxTessellationControlPerVertexInputComponents:TVkUInt32;
                                           const aMaxTessellationControlPerVertexOutputComponents:TVkUInt32;
                                           const aMaxTessellationControlPerPatchOutputComponents:TVkUInt32;
                                           const aMaxTessellationControlTotalOutputComponents:TVkUInt32;
                                           const aMaxTessellationEvaluationInputComponents:TVkUInt32;
                                           const aMaxTessellationEvaluationOutputComponents:TVkUInt32;
                                           const aMaxGeometryShaderInvocations:TVkUInt32;
                                           const aMaxGeometryInputComponents:TVkUInt32;
                                           const aMaxGeometryOutputComponents:TVkUInt32;
                                           const aMaxGeometryOutputVertices:TVkUInt32;
                                           const aMaxGeometryTotalOutputComponents:TVkUInt32;
                                           const aMaxFragmentInputComponents:TVkUInt32;
                                           const aMaxFragmentOutputAttachments:TVkUInt32;
                                           const aMaxFragmentDualSrcAttachments:TVkUInt32;
                                           const aMaxFragmentCombinedOutputResources:TVkUInt32;
                                           const aMaxComputeSharedMemorySize:TVkUInt32;
                                           const aMaxComputeWorkGroupCount:array of TVkUInt32;
                                           const aMaxComputeWorkGroupInvocations:TVkUInt32;
                                           const aMaxComputeWorkGroupSize:array of TVkUInt32;
                                           const aSubPixelPrecisionBits:TVkUInt32;
                                           const aSubTexelPrecisionBits:TVkUInt32;
                                           const aMipmapPrecisionBits:TVkUInt32;
                                           const aMaxDrawIndexedIndexValue:TVkUInt32;
                                           const aMaxDrawIndirectCount:TVkUInt32;
                                           const aMaxSamplerLodBias:TVkFloat;
                                           const aMaxSamplerAnisotropy:TVkFloat;
                                           const aMaxViewports:TVkUInt32;
                                           const aMaxViewportDimensions:array of TVkUInt32;
                                           const aViewportBoundsRange:array of TVkFloat;
                                           const aViewportSubPixelBits:TVkUInt32;
                                           const aMinMemoryMapAlignment:TVkSize;
                                           const aMinTexelBufferOffsetAlignment:TVkDeviceSize;
                                           const aMinUniformBufferOffsetAlignment:TVkDeviceSize;
                                           const aMinStorageBufferOffsetAlignment:TVkDeviceSize;
                                           const aMinTexelOffset:TVkInt32;
                                           const aMaxTexelOffset:TVkUInt32;
                                           const aMinTexelGatherOffset:TVkInt32;
                                           const aMaxTexelGatherOffset:TVkUInt32;
                                           const aMinInterpolationOffset:TVkFloat;
                                           const aMaxInterpolationOffset:TVkFloat;
                                           const aSubPixelInterpolationOffsetBits:TVkUInt32;
                                           const aMaxFramebufferWidth:TVkUInt32;
                                           const aMaxFramebufferHeight:TVkUInt32;
                                           const aMaxFramebufferLayers:TVkUInt32;
                                           const aFramebufferColorSampleCounts:TVkSampleCountFlags;
                                           const aFramebufferDepthSampleCounts:TVkSampleCountFlags;
                                           const aFramebufferStencilSampleCounts:TVkSampleCountFlags;
                                           const aFramebufferNoAttachmentsSampleCounts:TVkSampleCountFlags;
                                           const aMaxColorAttachments:TVkUInt32;
                                           const aSampledImageColorSampleCounts:TVkSampleCountFlags;
                                           const aSampledImageIntegerSampleCounts:TVkSampleCountFlags;
                                           const aSampledImageDepthSampleCounts:TVkSampleCountFlags;
                                           const aSampledImageStencilSampleCounts:TVkSampleCountFlags;
                                           const aStorageImageSampleCounts:TVkSampleCountFlags;
                                           const aMaxSampleMaskWords:TVkUInt32;
                                           const aTimestampComputeAndGraphics:TVkBool32;
                                           const aTimestampPeriod:TVkFloat;
                                           const aMaxClipDistances:TVkUInt32;
                                           const aMaxCullDistances:TVkUInt32;
                                           const aMaxCombinedClipAndCullDistances:TVkUInt32;
                                           const aDiscreteQueuePriorities:TVkUInt32;
                                           const aPointSizeRange:array of TVkFloat;
                                           const aLineWidthRange:array of TVkFloat;
                                           const aPointSizeGranularity:TVkFloat;
                                           const aLineWidthGranularity:TVkFloat;
                                           const aStrictLines:TVkBool32;
                                           const aStandardSampleLocations:TVkBool32;
                                           const aOptimalBufferCopyOffsetAlignment:TVkDeviceSize;
                                           const aOptimalBufferCopyRowPitchAlignment:TVkDeviceSize;
                                           const aNonCoherentAtomSize:TVkDeviceSize);
var ArrayItemCount:TVkInt32;
begin
 FillChar(self,SizeOf(TVkPhysicalDeviceLimits),#0);
 maxImageDimension1D:=aMaxImageDimension1D;
 maxImageDimension2D:=aMaxImageDimension2D;
 maxImageDimension3D:=aMaxImageDimension3D;
 maxImageDimensionCube:=aMaxImageDimensionCube;
 maxImageArrayLayers:=aMaxImageArrayLayers;
 maxTexelBufferElements:=aMaxTexelBufferElements;
 maxUniformBufferRange:=aMaxUniformBufferRange;
 maxStorageBufferRange:=aMaxStorageBufferRange;
 maxPushConstantsSize:=aMaxPushConstantsSize;
 maxMemoryAllocationCount:=aMaxMemoryAllocationCount;
 maxSamplerAllocationCount:=aMaxSamplerAllocationCount;
 bufferImageGranularity:=aBufferImageGranularity;
 sparseAddressSpaceSize:=aSparseAddressSpaceSize;
 maxBoundDescriptorSets:=aMaxBoundDescriptorSets;
 maxPerStageDescriptorSamplers:=aMaxPerStageDescriptorSamplers;
 maxPerStageDescriptorUniformBuffers:=aMaxPerStageDescriptorUniformBuffers;
 maxPerStageDescriptorStorageBuffers:=aMaxPerStageDescriptorStorageBuffers;
 maxPerStageDescriptorSampledImages:=aMaxPerStageDescriptorSampledImages;
 maxPerStageDescriptorStorageImages:=aMaxPerStageDescriptorStorageImages;
 maxPerStageDescriptorInputAttachments:=aMaxPerStageDescriptorInputAttachments;
 maxPerStageResources:=aMaxPerStageResources;
 maxDescriptorSetSamplers:=aMaxDescriptorSetSamplers;
 maxDescriptorSetUniformBuffers:=aMaxDescriptorSetUniformBuffers;
 maxDescriptorSetUniformBuffersDynamic:=aMaxDescriptorSetUniformBuffersDynamic;
 maxDescriptorSetStorageBuffers:=aMaxDescriptorSetStorageBuffers;
 maxDescriptorSetStorageBuffersDynamic:=aMaxDescriptorSetStorageBuffersDynamic;
 maxDescriptorSetSampledImages:=aMaxDescriptorSetSampledImages;
 maxDescriptorSetStorageImages:=aMaxDescriptorSetStorageImages;
 maxDescriptorSetInputAttachments:=aMaxDescriptorSetInputAttachments;
 maxVertexInputAttributes:=aMaxVertexInputAttributes;
 maxVertexInputBindings:=aMaxVertexInputBindings;
 maxVertexInputAttributeOffset:=aMaxVertexInputAttributeOffset;
 maxVertexInputBindingStride:=aMaxVertexInputBindingStride;
 maxVertexOutputComponents:=aMaxVertexOutputComponents;
 maxTessellationGenerationLevel:=aMaxTessellationGenerationLevel;
 maxTessellationPatchSize:=aMaxTessellationPatchSize;
 maxTessellationControlPerVertexInputComponents:=aMaxTessellationControlPerVertexInputComponents;
 maxTessellationControlPerVertexOutputComponents:=aMaxTessellationControlPerVertexOutputComponents;
 maxTessellationControlPerPatchOutputComponents:=aMaxTessellationControlPerPatchOutputComponents;
 maxTessellationControlTotalOutputComponents:=aMaxTessellationControlTotalOutputComponents;
 maxTessellationEvaluationInputComponents:=aMaxTessellationEvaluationInputComponents;
 maxTessellationEvaluationOutputComponents:=aMaxTessellationEvaluationOutputComponents;
 maxGeometryShaderInvocations:=aMaxGeometryShaderInvocations;
 maxGeometryInputComponents:=aMaxGeometryInputComponents;
 maxGeometryOutputComponents:=aMaxGeometryOutputComponents;
 maxGeometryOutputVertices:=aMaxGeometryOutputVertices;
 maxGeometryTotalOutputComponents:=aMaxGeometryTotalOutputComponents;
 maxFragmentInputComponents:=aMaxFragmentInputComponents;
 maxFragmentOutputAttachments:=aMaxFragmentOutputAttachments;
 maxFragmentDualSrcAttachments:=aMaxFragmentDualSrcAttachments;
 maxFragmentCombinedOutputResources:=aMaxFragmentCombinedOutputResources;
 maxComputeSharedMemorySize:=aMaxComputeSharedMemorySize;
 ArrayItemCount:=length(aMaxComputeWorkGroupCount);
 if ArrayItemCount>length(maxComputeWorkGroupCount) then begin
  ArrayItemCount:=length(maxComputeWorkGroupCount);
 end;
 if ArrayItemCount>0 then begin
  Move(aMaxComputeWorkGroupCount[0],maxComputeWorkGroupCount[0],ArrayItemCount*SizeOf(TVkUInt32));
 end;
 maxComputeWorkGroupInvocations:=aMaxComputeWorkGroupInvocations;
 ArrayItemCount:=length(aMaxComputeWorkGroupSize);
 if ArrayItemCount>length(maxComputeWorkGroupSize) then begin
  ArrayItemCount:=length(maxComputeWorkGroupSize);
 end;
 if ArrayItemCount>0 then begin
  Move(aMaxComputeWorkGroupSize[0],maxComputeWorkGroupSize[0],ArrayItemCount*SizeOf(TVkUInt32));
 end;
 subPixelPrecisionBits:=aSubPixelPrecisionBits;
 subTexelPrecisionBits:=aSubTexelPrecisionBits;
 mipmapPrecisionBits:=aMipmapPrecisionBits;
 maxDrawIndexedIndexValue:=aMaxDrawIndexedIndexValue;
 maxDrawIndirectCount:=aMaxDrawIndirectCount;
 maxSamplerLodBias:=aMaxSamplerLodBias;
 maxSamplerAnisotropy:=aMaxSamplerAnisotropy;
 maxViewports:=aMaxViewports;
 ArrayItemCount:=length(aMaxViewportDimensions);
 if ArrayItemCount>length(maxViewportDimensions) then begin
  ArrayItemCount:=length(maxViewportDimensions);
 end;
 if ArrayItemCount>0 then begin
  Move(aMaxViewportDimensions[0],maxViewportDimensions[0],ArrayItemCount*SizeOf(TVkUInt32));
 end;
 ArrayItemCount:=length(aViewportBoundsRange);
 if ArrayItemCount>length(viewportBoundsRange) then begin
  ArrayItemCount:=length(viewportBoundsRange);
 end;
 if ArrayItemCount>0 then begin
  Move(aViewportBoundsRange[0],viewportBoundsRange[0],ArrayItemCount*SizeOf(TVkFloat));
 end;
 viewportSubPixelBits:=aViewportSubPixelBits;
 minMemoryMapAlignment:=aMinMemoryMapAlignment;
 minTexelBufferOffsetAlignment:=aMinTexelBufferOffsetAlignment;
 minUniformBufferOffsetAlignment:=aMinUniformBufferOffsetAlignment;
 minStorageBufferOffsetAlignment:=aMinStorageBufferOffsetAlignment;
 minTexelOffset:=aMinTexelOffset;
 maxTexelOffset:=aMaxTexelOffset;
 minTexelGatherOffset:=aMinTexelGatherOffset;
 maxTexelGatherOffset:=aMaxTexelGatherOffset;
 minInterpolationOffset:=aMinInterpolationOffset;
 maxInterpolationOffset:=aMaxInterpolationOffset;
 subPixelInterpolationOffsetBits:=aSubPixelInterpolationOffsetBits;
 maxFramebufferWidth:=aMaxFramebufferWidth;
 maxFramebufferHeight:=aMaxFramebufferHeight;
 maxFramebufferLayers:=aMaxFramebufferLayers;
 framebufferColorSampleCounts:=aFramebufferColorSampleCounts;
 framebufferDepthSampleCounts:=aFramebufferDepthSampleCounts;
 framebufferStencilSampleCounts:=aFramebufferStencilSampleCounts;
 framebufferNoAttachmentsSampleCounts:=aFramebufferNoAttachmentsSampleCounts;
 maxColorAttachments:=aMaxColorAttachments;
 sampledImageColorSampleCounts:=aSampledImageColorSampleCounts;
 sampledImageIntegerSampleCounts:=aSampledImageIntegerSampleCounts;
 sampledImageDepthSampleCounts:=aSampledImageDepthSampleCounts;
 sampledImageStencilSampleCounts:=aSampledImageStencilSampleCounts;
 storageImageSampleCounts:=aStorageImageSampleCounts;
 maxSampleMaskWords:=aMaxSampleMaskWords;
 timestampComputeAndGraphics:=aTimestampComputeAndGraphics;
 timestampPeriod:=aTimestampPeriod;
 maxClipDistances:=aMaxClipDistances;
 maxCullDistances:=aMaxCullDistances;
 maxCombinedClipAndCullDistances:=aMaxCombinedClipAndCullDistances;
 discreteQueuePriorities:=aDiscreteQueuePriorities;
 ArrayItemCount:=length(aPointSizeRange);
 if ArrayItemCount>length(pointSizeRange) then begin
  ArrayItemCount:=length(pointSizeRange);
 end;
 if ArrayItemCount>0 then begin
  Move(aPointSizeRange[0],pointSizeRange[0],ArrayItemCount*SizeOf(TVkFloat));
 end;
 ArrayItemCount:=length(aLineWidthRange);
 if ArrayItemCount>length(lineWidthRange) then begin
  ArrayItemCount:=length(lineWidthRange);
 end;
 if ArrayItemCount>0 then begin
  Move(aLineWidthRange[0],lineWidthRange[0],ArrayItemCount*SizeOf(TVkFloat));
 end;
 pointSizeGranularity:=aPointSizeGranularity;
 lineWidthGranularity:=aLineWidthGranularity;
 strictLines:=aStrictLines;
 standardSampleLocations:=aStandardSampleLocations;
 optimalBufferCopyOffsetAlignment:=aOptimalBufferCopyOffsetAlignment;
 optimalBufferCopyRowPitchAlignment:=aOptimalBufferCopyRowPitchAlignment;
 nonCoherentAtomSize:=aNonCoherentAtomSize;
end;

constructor TVkPhysicalDeviceProperties.Create(const aApiVersion:TVkUInt32;
                                               const aDriverVersion:TVkUInt32;
                                               const aVendorID:TVkUInt32;
                                               const aDeviceID:TVkUInt32;
                                               const aDeviceType:TVkPhysicalDeviceType;
                                               const aDeviceName:TVkCharString;
                                               const aPipelineCacheUUID:array of TVkUInt8;
                                               const aLimits:TVkPhysicalDeviceLimits;
                                               const aSparseProperties:TVkPhysicalDeviceSparseProperties);
var ArrayItemCount:TVkInt32;
begin
 FillChar(self,SizeOf(TVkPhysicalDeviceProperties),#0);
 apiVersion:=aApiVersion;
 driverVersion:=aDriverVersion;
 vendorID:=aVendorID;
 deviceID:=aDeviceID;
 deviceType:=aDeviceType;
 ArrayItemCount:=length(aDeviceName);
 if ArrayItemCount>length(deviceName) then begin
  ArrayItemCount:=length(deviceName);
 end;
 if ArrayItemCount>0 then begin
  Move(aDeviceName[1],deviceName[0],ArrayItemCount*SizeOf(TVkChar));
 end;
 ArrayItemCount:=length(aPipelineCacheUUID);
 if ArrayItemCount>length(pipelineCacheUUID) then begin
  ArrayItemCount:=length(pipelineCacheUUID);
 end;
 if ArrayItemCount>0 then begin
  Move(aPipelineCacheUUID[0],pipelineCacheUUID[0],ArrayItemCount*SizeOf(TVkUInt8));
 end;
 limits:=aLimits;
 sparseProperties:=aSparseProperties;
end;

constructor TVkSemaphoreCreateInfo.Create(const aFlags:TVkSemaphoreCreateFlags);
begin
 sType:=VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO;
 pNext:=nil;
 flags:=aFlags;
end;

constructor TVkQueryPoolCreateInfo.Create(const aFlags:TVkQueryPoolCreateFlags;
                                          const aQueryType:TVkQueryType;
                                          const aQueryCount:TVkUInt32;
                                          const aPipelineStatistics:TVkQueryPipelineStatisticFlags);
begin
 sType:=VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO;
 pNext:=nil;
 flags:=aFlags;
 queryType:=aQueryType;
 queryCount:=aQueryCount;
 pipelineStatistics:=aPipelineStatistics;
end;

constructor TVkFramebufferCreateInfo.Create(const aFlags:TVkFramebufferCreateFlags;
                                            const aRenderPass:TVkRenderPass;
                                            const aAttachmentCount:TVkUInt32;
                                            const aPAttachments:PVkImageView;
                                            const aWidth:TVkUInt32;
                                            const aHeight:TVkUInt32;
                                            const aLayers:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO;
 pNext:=nil;
 flags:=aFlags;
 renderPass:=aRenderPass;
 attachmentCount:=aAttachmentCount;
 pAttachments:=aPAttachments;
 width:=aWidth;
 height:=aHeight;
 layers:=aLayers;
end;

constructor TVkDrawIndirectCommand.Create(const aVertexCount:TVkUInt32;
                                          const aInstanceCount:TVkUInt32;
                                          const aFirstVertex:TVkUInt32;
                                          const aFirstInstance:TVkUInt32);
begin
 vertexCount:=aVertexCount;
 instanceCount:=aInstanceCount;
 firstVertex:=aFirstVertex;
 firstInstance:=aFirstInstance;
end;

constructor TVkDrawIndexedIndirectCommand.Create(const aIndexCount:TVkUInt32;
                                                 const aInstanceCount:TVkUInt32;
                                                 const aFirstIndex:TVkUInt32;
                                                 const aVertexOffset:TVkInt32;
                                                 const aFirstInstance:TVkUInt32);
begin
 indexCount:=aIndexCount;
 instanceCount:=aInstanceCount;
 firstIndex:=aFirstIndex;
 vertexOffset:=aVertexOffset;
 firstInstance:=aFirstInstance;
end;

constructor TVkDispatchIndirectCommand.Create(const aX:TVkUInt32;
                                              const aY:TVkUInt32;
                                              const aZ:TVkUInt32);
begin
 x:=aX;
 y:=aY;
 z:=aZ;
end;

constructor TVkMultiDrawInfoEXT.Create(const aFirstVertex:TVkUInt32;
                                       const aVertexCount:TVkUInt32);
begin
 firstVertex:=aFirstVertex;
 vertexCount:=aVertexCount;
end;

constructor TVkMultiDrawIndexedInfoEXT.Create(const aFirstIndex:TVkUInt32;
                                              const aIndexCount:TVkUInt32;
                                              const aVertexOffset:TVkInt32);
begin
 firstIndex:=aFirstIndex;
 indexCount:=aIndexCount;
 vertexOffset:=aVertexOffset;
end;

constructor TVkSubmitInfo.Create(const aWaitSemaphoreCount:TVkUInt32;
                                 const aPWaitSemaphores:PVkSemaphore;
                                 const aPWaitDstStageMask:PVkPipelineStageFlags;
                                 const aCommandBufferCount:TVkUInt32;
                                 const aPCommandBuffers:PVkCommandBuffer;
                                 const aSignalSemaphoreCount:TVkUInt32;
                                 const aPSignalSemaphores:PVkSemaphore);
begin
 sType:=VK_STRUCTURE_TYPE_SUBMIT_INFO;
 pNext:=nil;
 waitSemaphoreCount:=aWaitSemaphoreCount;
 pWaitSemaphores:=aPWaitSemaphores;
 pWaitDstStageMask:=aPWaitDstStageMask;
 commandBufferCount:=aCommandBufferCount;
 pCommandBuffers:=aPCommandBuffers;
 signalSemaphoreCount:=aSignalSemaphoreCount;
 pSignalSemaphores:=aPSignalSemaphores;
end;

constructor TVkDisplayPropertiesKHR.Create(const aDisplay:TVkDisplayKHR;
                                           const aDisplayName:PVkChar;
                                           const aPhysicalDimensions:TVkExtent2D;
                                           const aPhysicalResolution:TVkExtent2D;
                                           const aSupportedTransforms:TVkSurfaceTransformFlagsKHR;
                                           const aPlaneReorderPossible:TVkBool32;
                                           const aPersistentContent:TVkBool32);
begin
 display:=aDisplay;
 displayName:=aDisplayName;
 physicalDimensions:=aPhysicalDimensions;
 physicalResolution:=aPhysicalResolution;
 supportedTransforms:=aSupportedTransforms;
 planeReorderPossible:=aPlaneReorderPossible;
 persistentContent:=aPersistentContent;
end;

constructor TVkDisplayPlanePropertiesKHR.Create(const aCurrentDisplay:TVkDisplayKHR;
                                                const aCurrentStackIndex:TVkUInt32);
begin
 currentDisplay:=aCurrentDisplay;
 currentStackIndex:=aCurrentStackIndex;
end;

constructor TVkDisplayModeParametersKHR.Create(const aVisibleRegion:TVkExtent2D;
                                               const aRefreshRate:TVkUInt32);
begin
 visibleRegion:=aVisibleRegion;
 refreshRate:=aRefreshRate;
end;

constructor TVkDisplayModePropertiesKHR.Create(const aDisplayMode:TVkDisplayModeKHR;
                                               const aParameters:TVkDisplayModeParametersKHR);
begin
 displayMode:=aDisplayMode;
 parameters:=aParameters;
end;

constructor TVkDisplayModeCreateInfoKHR.Create(const aFlags:TVkDisplayModeCreateFlagsKHR;
                                               const aParameters:TVkDisplayModeParametersKHR);
begin
 sType:=VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR;
 pNext:=nil;
 flags:=aFlags;
 parameters:=aParameters;
end;

constructor TVkDisplayPlaneCapabilitiesKHR.Create(const aSupportedAlpha:TVkDisplayPlaneAlphaFlagsKHR;
                                                  const aMinSrcPosition:TVkOffset2D;
                                                  const aMaxSrcPosition:TVkOffset2D;
                                                  const aMinSrcExtent:TVkExtent2D;
                                                  const aMaxSrcExtent:TVkExtent2D;
                                                  const aMinDstPosition:TVkOffset2D;
                                                  const aMaxDstPosition:TVkOffset2D;
                                                  const aMinDstExtent:TVkExtent2D;
                                                  const aMaxDstExtent:TVkExtent2D);
begin
 supportedAlpha:=aSupportedAlpha;
 minSrcPosition:=aMinSrcPosition;
 maxSrcPosition:=aMaxSrcPosition;
 minSrcExtent:=aMinSrcExtent;
 maxSrcExtent:=aMaxSrcExtent;
 minDstPosition:=aMinDstPosition;
 maxDstPosition:=aMaxDstPosition;
 minDstExtent:=aMinDstExtent;
 maxDstExtent:=aMaxDstExtent;
end;

constructor TVkDisplaySurfaceCreateInfoKHR.Create(const aFlags:TVkDisplaySurfaceCreateFlagsKHR;
                                                  const aDisplayMode:TVkDisplayModeKHR;
                                                  const aPlaneIndex:TVkUInt32;
                                                  const aPlaneStackIndex:TVkUInt32;
                                                  const aTransform:TVkSurfaceTransformFlagBitsKHR;
                                                  const aGlobalAlpha:TVkFloat;
                                                  const aAlphaMode:TVkDisplayPlaneAlphaFlagBitsKHR;
                                                  const aImageExtent:TVkExtent2D);
begin
 sType:=VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR;
 pNext:=nil;
 flags:=aFlags;
 displayMode:=aDisplayMode;
 planeIndex:=aPlaneIndex;
 planeStackIndex:=aPlaneStackIndex;
 transform:=aTransform;
 globalAlpha:=aGlobalAlpha;
 alphaMode:=aAlphaMode;
 imageExtent:=aImageExtent;
end;

constructor TVkDisplayPresentInfoKHR.Create(const aSrcRect:TVkRect2D;
                                            const aDstRect:TVkRect2D;
                                            const aPersistent:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR;
 pNext:=nil;
 srcRect:=aSrcRect;
 dstRect:=aDstRect;
 persistent:=aPersistent;
end;

constructor TVkSurfaceCapabilitiesKHR.Create(const aMinImageCount:TVkUInt32;
                                             const aMaxImageCount:TVkUInt32;
                                             const aCurrentExtent:TVkExtent2D;
                                             const aMinImageExtent:TVkExtent2D;
                                             const aMaxImageExtent:TVkExtent2D;
                                             const aMaxImageArrayLayers:TVkUInt32;
                                             const aSupportedTransforms:TVkSurfaceTransformFlagsKHR;
                                             const aCurrentTransform:TVkSurfaceTransformFlagBitsKHR;
                                             const aSupportedCompositeAlpha:TVkCompositeAlphaFlagsKHR;
                                             const aSupportedUsageFlags:TVkImageUsageFlags);
begin
 minImageCount:=aMinImageCount;
 maxImageCount:=aMaxImageCount;
 currentExtent:=aCurrentExtent;
 minImageExtent:=aMinImageExtent;
 maxImageExtent:=aMaxImageExtent;
 maxImageArrayLayers:=aMaxImageArrayLayers;
 supportedTransforms:=aSupportedTransforms;
 currentTransform:=aCurrentTransform;
 supportedCompositeAlpha:=aSupportedCompositeAlpha;
 supportedUsageFlags:=aSupportedUsageFlags;
end;

{$ifdef Android}
constructor TVkAndroidSurfaceCreateInfoKHR.Create(const aFlags:TVkAndroidSurfaceCreateFlagsKHR;
                                                  const aWindow:PVkAndroidANativeWindow);
begin
 sType:=VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR;
 pNext:=nil;
 flags:=aFlags;
 window:=aWindow;
end;
{$endif}

constructor TVkViSurfaceCreateInfoNN.Create(const aFlags:TVkViSurfaceCreateFlagsNN;
                                            const aWindow:PVkVoid);
begin
 sType:=VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN;
 pNext:=nil;
 flags:=aFlags;
 window:=aWindow;
end;

{$ifdef Wayland}
constructor TVkWaylandSurfaceCreateInfoKHR.Create(const aFlags:TVkWaylandSurfaceCreateFlagsKHR;
                                                  const aDisplay:PVkWaylandDisplay;
                                                  const aSurface:PVkWaylandSurface);
begin
 sType:=VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR;
 pNext:=nil;
 flags:=aFlags;
 display:=aDisplay;
 surface:=aSurface;
end;
{$endif}

{$ifdef Windows}
constructor TVkWin32SurfaceCreateInfoKHR.Create(const aFlags:TVkWin32SurfaceCreateFlagsKHR;
                                                const aHinstance_:TVkHINSTANCE;
                                                const aHwnd_:TVkHWND);
begin
 sType:=VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR;
 pNext:=nil;
 flags:=aFlags;
 hinstance_:=aHinstance_;
 hwnd_:=aHwnd_;
end;
{$endif}

{$ifdef XLIB}
constructor TVkXlibSurfaceCreateInfoKHR.Create(const aFlags:TVkXlibSurfaceCreateFlagsKHR;
                                               const aDpy:PVkXLIBDisplay;
                                               const aWindow:TVkXLIBWindow);
begin
 sType:=VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR;
 pNext:=nil;
 flags:=aFlags;
 dpy:=aDpy;
 window:=aWindow;
end;
{$endif}

{$ifdef XCB}
constructor TVkXcbSurfaceCreateInfoKHR.Create(const aFlags:TVkXcbSurfaceCreateFlagsKHR;
                                              const aConnection:PVkXCBConnection;
                                              const aWindow:TVkXCBWindow);
begin
 sType:=VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR;
 pNext:=nil;
 flags:=aFlags;
 connection:=aConnection;
 window:=aWindow;
end;
{$endif}

{$ifdef DirectFB}
constructor TVkDirectFBSurfaceCreateInfoEXT.Create(const aFlags:TVkDirectFBSurfaceCreateFlagsEXT;
                                                   const aDfb:PVkDirectFBIDirectFB;
                                                   const aSurface:PVkDirectFBIDirectFBSurface);
begin
 sType:=VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT;
 pNext:=nil;
 flags:=aFlags;
 dfb:=aDfb;
 surface:=aSurface;
end;
{$endif}

{$ifdef Fuchsia}
constructor TVkImagePipeSurfaceCreateInfoFUCHSIA.Create(const aFlags:TVkImagePipeSurfaceCreateFlagsFUCHSIA;
                                                        const aImagePipeHandle:TVkFuchsiaZXHandle);
begin
 sType:=VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA;
 pNext:=nil;
 flags:=aFlags;
 imagePipeHandle:=aImagePipeHandle;
end;
{$endif}

constructor TVkStreamDescriptorSurfaceCreateInfoGGP.Create(const aFlags:TVkStreamDescriptorSurfaceCreateFlagsGGP;
                                                           const aStreamDescriptor:TVkGgpStreamDescriptor);
begin
 sType:=VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP;
 pNext:=nil;
 flags:=aFlags;
 streamDescriptor:=aStreamDescriptor;
end;

{$ifdef QNX}
constructor TVkScreenSurfaceCreateInfoQNX.Create(const aFlags:TVkScreenSurfaceCreateFlagsQNX;
                                                 const aContext:PVkQNXScreenContext;
                                                 const aWindow:PVkQNXScreenWindow);
begin
 sType:=VK_STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX;
 pNext:=nil;
 flags:=aFlags;
 context:=aContext;
 window:=aWindow;
end;
{$endif}

constructor TVkSurfaceFormatKHR.Create(const aFormat:TVkFormat;
                                       const aColorSpace:TVkColorSpaceKHR);
begin
 format:=aFormat;
 colorSpace:=aColorSpace;
end;

constructor TVkSwapchainCreateInfoKHR.Create(const aFlags:TVkSwapchainCreateFlagsKHR;
                                             const aSurface:TVkSurfaceKHR;
                                             const aMinImageCount:TVkUInt32;
                                             const aImageFormat:TVkFormat;
                                             const aImageColorSpace:TVkColorSpaceKHR;
                                             const aImageExtent:TVkExtent2D;
                                             const aImageArrayLayers:TVkUInt32;
                                             const aImageUsage:TVkImageUsageFlags;
                                             const aImageSharingMode:TVkSharingMode;
                                             const aQueueFamilyIndexCount:TVkUInt32;
                                             const aPQueueFamilyIndices:PVkUInt32;
                                             const aPreTransform:TVkSurfaceTransformFlagBitsKHR;
                                             const aCompositeAlpha:TVkCompositeAlphaFlagBitsKHR;
                                             const aPresentMode:TVkPresentModeKHR;
                                             const aClipped:TVkBool32;
                                             const aOldSwapchain:TVkSwapchainKHR);
begin
 sType:=VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR;
 pNext:=nil;
 flags:=aFlags;
 surface:=aSurface;
 minImageCount:=aMinImageCount;
 imageFormat:=aImageFormat;
 imageColorSpace:=aImageColorSpace;
 imageExtent:=aImageExtent;
 imageArrayLayers:=aImageArrayLayers;
 imageUsage:=aImageUsage;
 imageSharingMode:=aImageSharingMode;
 queueFamilyIndexCount:=aQueueFamilyIndexCount;
 pQueueFamilyIndices:=aPQueueFamilyIndices;
 preTransform:=aPreTransform;
 compositeAlpha:=aCompositeAlpha;
 presentMode:=aPresentMode;
 clipped:=aClipped;
 oldSwapchain:=aOldSwapchain;
end;

constructor TVkPresentInfoKHR.Create(const aWaitSemaphoreCount:TVkUInt32;
                                     const aPWaitSemaphores:PVkSemaphore;
                                     const aSwapchainCount:TVkUInt32;
                                     const aPSwapchains:PVkSwapchainKHR;
                                     const aPImageIndices:PVkUInt32;
                                     const aPResults:PVkResult);
begin
 sType:=VK_STRUCTURE_TYPE_PRESENT_INFO_KHR;
 pNext:=nil;
 waitSemaphoreCount:=aWaitSemaphoreCount;
 pWaitSemaphores:=aPWaitSemaphores;
 swapchainCount:=aSwapchainCount;
 pSwapchains:=aPSwapchains;
 pImageIndices:=aPImageIndices;
 pResults:=aPResults;
end;

constructor TVkDebugReportCallbackCreateInfoEXT.Create(const aFlags:TVkDebugReportFlagsEXT;
                                                       const aPfnCallback:TPFN_vkDebugReportCallbackEXT;
                                                       const aPUserData:PVkVoid);
begin
 sType:=VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT;
 pNext:=nil;
 flags:=aFlags;
 pfnCallback:=aPfnCallback;
 pUserData:=aPUserData;
end;

constructor TVkValidationFlagsEXT.Create(const aDisabledValidationCheckCount:TVkUInt32;
                                         const aPDisabledValidationChecks:PVkValidationCheckEXT);
begin
 sType:=VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT;
 pNext:=nil;
 disabledValidationCheckCount:=aDisabledValidationCheckCount;
 pDisabledValidationChecks:=aPDisabledValidationChecks;
end;

constructor TVkValidationFeaturesEXT.Create(const aEnabledValidationFeatureCount:TVkUInt32;
                                            const aPEnabledValidationFeatures:PVkValidationFeatureEnableEXT;
                                            const aDisabledValidationFeatureCount:TVkUInt32;
                                            const aPDisabledValidationFeatures:PVkValidationFeatureDisableEXT);
begin
 sType:=VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT;
 pNext:=nil;
 enabledValidationFeatureCount:=aEnabledValidationFeatureCount;
 pEnabledValidationFeatures:=aPEnabledValidationFeatures;
 disabledValidationFeatureCount:=aDisabledValidationFeatureCount;
 pDisabledValidationFeatures:=aPDisabledValidationFeatures;
end;

constructor TVkApplicationParametersEXT.Create(const aVendorID:TVkUInt32;
                                               const aDeviceID:TVkUInt32;
                                               const aKey:TVkUInt32;
                                               const aValue:TVkUInt64);
begin
 sType:=VK_STRUCTURE_TYPE_APPLICATION_PARAMETERS_EXT;
 pNext:=nil;
 vendorID:=aVendorID;
 deviceID:=aDeviceID;
 key:=aKey;
 value:=aValue;
end;

constructor TVkPipelineRasterizationStateRasterizationOrderAMD.Create(const aRasterizationOrder:TVkRasterizationOrderAMD);
begin
 sType:=VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD;
 pNext:=nil;
 rasterizationOrder:=aRasterizationOrder;
end;

constructor TVkDebugMarkerObjectNameInfoEXT.Create(const aObjectType:TVkDebugReportObjectTypeEXT;
                                                   const aObject_:TVkUInt64;
                                                   const aPObjectName:PVkChar);
begin
 sType:=VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT;
 pNext:=nil;
 objectType:=aObjectType;
 object_:=aObject_;
 pObjectName:=aPObjectName;
end;

constructor TVkDebugMarkerObjectTagInfoEXT.Create(const aObjectType:TVkDebugReportObjectTypeEXT;
                                                  const aObject_:TVkUInt64;
                                                  const aTagName:TVkUInt64;
                                                  const aTagSize:TVkSize;
                                                  const aPTag:PVkVoid);
begin
 sType:=VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT;
 pNext:=nil;
 objectType:=aObjectType;
 object_:=aObject_;
 tagName:=aTagName;
 tagSize:=aTagSize;
 pTag:=aPTag;
end;

constructor TVkDebugMarkerMarkerInfoEXT.Create(const aPMarkerName:PVkChar;
                                               const aColor:array of TVkFloat);
var ArrayItemCount:TVkInt32;
begin
 FillChar(self,SizeOf(TVkDebugMarkerMarkerInfoEXT),#0);
 sType:=VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT;
 pNext:=nil;
 pMarkerName:=aPMarkerName;
 ArrayItemCount:=length(aColor);
 if ArrayItemCount>length(color) then begin
  ArrayItemCount:=length(color);
 end;
 if ArrayItemCount>0 then begin
  Move(aColor[0],color[0],ArrayItemCount*SizeOf(TVkFloat));
 end;
end;

constructor TVkDedicatedAllocationImageCreateInfoNV.Create(const aDedicatedAllocation:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV;
 pNext:=nil;
 dedicatedAllocation:=aDedicatedAllocation;
end;

constructor TVkDedicatedAllocationBufferCreateInfoNV.Create(const aDedicatedAllocation:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV;
 pNext:=nil;
 dedicatedAllocation:=aDedicatedAllocation;
end;

constructor TVkDedicatedAllocationMemoryAllocateInfoNV.Create(const aImage:TVkImage;
                                                              const aBuffer:TVkBuffer);
begin
 sType:=VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV;
 pNext:=nil;
 image:=aImage;
 buffer:=aBuffer;
end;

constructor TVkExternalImageFormatPropertiesNV.Create(const aImageFormatProperties:TVkImageFormatProperties;
                                                      const aExternalMemoryFeatures:TVkExternalMemoryFeatureFlagsNV;
                                                      const aExportFromImportedHandleTypes:TVkExternalMemoryHandleTypeFlagsNV;
                                                      const aCompatibleHandleTypes:TVkExternalMemoryHandleTypeFlagsNV);
begin
 imageFormatProperties:=aImageFormatProperties;
 externalMemoryFeatures:=aExternalMemoryFeatures;
 exportFromImportedHandleTypes:=aExportFromImportedHandleTypes;
 compatibleHandleTypes:=aCompatibleHandleTypes;
end;

constructor TVkExternalMemoryImageCreateInfoNV.Create(const aHandleTypes:TVkExternalMemoryHandleTypeFlagsNV);
begin
 sType:=VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV;
 pNext:=nil;
 handleTypes:=aHandleTypes;
end;

constructor TVkExportMemoryAllocateInfoNV.Create(const aHandleTypes:TVkExternalMemoryHandleTypeFlagsNV);
begin
 sType:=VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV;
 pNext:=nil;
 handleTypes:=aHandleTypes;
end;

constructor TVkImportMemoryWin32HandleInfoNV.Create(const aHandleType:TVkExternalMemoryHandleTypeFlagsNV;
                                                    const aHandle:THANDLE);
begin
 sType:=VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV;
 pNext:=nil;
 handleType:=aHandleType;
 handle:=aHandle;
end;

{$ifdef Windows}
constructor TVkExportMemoryWin32HandleInfoNV.Create(const aPAttributes:PSecurityAttributes;
                                                    const aDwAccess:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV;
 pNext:=nil;
 pAttributes:=aPAttributes;
 dwAccess:=aDwAccess;
end;
{$endif}

{$ifdef NvSci}
constructor TVkExportMemorySciBufInfoNV.Create(const aPAttributes:TNvSciBufAttrList);
begin
 sType:=VK_STRUCTURE_TYPE_EXPORT_MEMORY_SCI_BUF_INFO_NV;
 pNext:=nil;
 pAttributes:=aPAttributes;
end;
{$endif}

{$ifdef NvSci}
constructor TVkImportMemorySciBufInfoNV.Create(const aHandleType:TVkExternalMemoryHandleTypeFlagBits;
                                               const aHandle:TNvSciBufObj);
begin
 sType:=VK_STRUCTURE_TYPE_IMPORT_MEMORY_SCI_BUF_INFO_NV;
 pNext:=nil;
 handleType:=aHandleType;
 handle:=aHandle;
end;
{$endif}

{$ifdef NvSci}
constructor TVkMemoryGetSciBufInfoNV.Create(const aMemory:TVkDeviceMemory;
                                            const aHandleType:TVkExternalMemoryHandleTypeFlagBits);
begin
 sType:=VK_STRUCTURE_TYPE_MEMORY_GET_SCI_BUF_INFO_NV;
 pNext:=nil;
 memory:=aMemory;
 handleType:=aHandleType;
end;
{$endif}

{$ifdef NvSci}
constructor TVkMemorySciBufPropertiesNV.Create(const aMemoryTypeBits:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_MEMORY_SCI_BUF_PROPERTIES_NV;
 pNext:=nil;
 memoryTypeBits:=aMemoryTypeBits;
end;
{$endif}

{$ifdef NvSci}
constructor TVkPhysicalDeviceExternalMemorySciBufFeaturesNV.Create(const aSciBufImport:TVkBool32;
                                                                   const aSciBufExport:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCI_BUF_FEATURES_NV;
 pNext:=nil;
 sciBufImport:=aSciBufImport;
 sciBufExport:=aSciBufExport;
end;
{$endif}

constructor TVkWin32KeyedMutexAcquireReleaseInfoNV.Create(const aAcquireCount:TVkUInt32;
                                                          const aPAcquireSyncs:PVkDeviceMemory;
                                                          const aPAcquireKeys:PVkUInt64;
                                                          const aPAcquireTimeoutMilliseconds:PVkUInt32;
                                                          const aReleaseCount:TVkUInt32;
                                                          const aPReleaseSyncs:PVkDeviceMemory;
                                                          const aPReleaseKeys:PVkUInt64);
begin
 sType:=VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV;
 pNext:=nil;
 acquireCount:=aAcquireCount;
 pAcquireSyncs:=aPAcquireSyncs;
 pAcquireKeys:=aPAcquireKeys;
 pAcquireTimeoutMilliseconds:=aPAcquireTimeoutMilliseconds;
 releaseCount:=aReleaseCount;
 pReleaseSyncs:=aPReleaseSyncs;
 pReleaseKeys:=aPReleaseKeys;
end;

constructor TVkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV.Create(const aDeviceGeneratedCommands:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV;
 pNext:=nil;
 deviceGeneratedCommands:=aDeviceGeneratedCommands;
end;

constructor TVkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV.Create(const aDeviceGeneratedCompute:TVkBool32;
                                                                             const aDeviceGeneratedComputePipelines:TVkBool32;
                                                                             const aDeviceGeneratedComputeCaptureReplay:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV;
 pNext:=nil;
 deviceGeneratedCompute:=aDeviceGeneratedCompute;
 deviceGeneratedComputePipelines:=aDeviceGeneratedComputePipelines;
 deviceGeneratedComputeCaptureReplay:=aDeviceGeneratedComputeCaptureReplay;
end;

constructor TVkDevicePrivateDataCreateInfo.Create(const aPrivateDataSlotRequestCount:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO;
 pNext:=nil;
 privateDataSlotRequestCount:=aPrivateDataSlotRequestCount;
end;

constructor TVkPrivateDataSlotCreateInfo.Create(const aFlags:TVkPrivateDataSlotCreateFlags);
begin
 sType:=VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO;
 pNext:=nil;
 flags:=aFlags;
end;

constructor TVkPhysicalDevicePrivateDataFeatures.Create(const aPrivateData:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES;
 pNext:=nil;
 privateData:=aPrivateData;
end;

constructor TVkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV.Create(const aMaxGraphicsShaderGroupCount:TVkUInt32;
                                                                        const aMaxIndirectSequenceCount:TVkUInt32;
                                                                        const aMaxIndirectCommandsTokenCount:TVkUInt32;
                                                                        const aMaxIndirectCommandsStreamCount:TVkUInt32;
                                                                        const aMaxIndirectCommandsTokenOffset:TVkUInt32;
                                                                        const aMaxIndirectCommandsStreamStride:TVkUInt32;
                                                                        const aMinSequencesCountBufferOffsetAlignment:TVkUInt32;
                                                                        const aMinSequencesIndexBufferOffsetAlignment:TVkUInt32;
                                                                        const aMinIndirectCommandsBufferOffsetAlignment:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV;
 pNext:=nil;
 maxGraphicsShaderGroupCount:=aMaxGraphicsShaderGroupCount;
 maxIndirectSequenceCount:=aMaxIndirectSequenceCount;
 maxIndirectCommandsTokenCount:=aMaxIndirectCommandsTokenCount;
 maxIndirectCommandsStreamCount:=aMaxIndirectCommandsStreamCount;
 maxIndirectCommandsTokenOffset:=aMaxIndirectCommandsTokenOffset;
 maxIndirectCommandsStreamStride:=aMaxIndirectCommandsStreamStride;
 minSequencesCountBufferOffsetAlignment:=aMinSequencesCountBufferOffsetAlignment;
 minSequencesIndexBufferOffsetAlignment:=aMinSequencesIndexBufferOffsetAlignment;
 minIndirectCommandsBufferOffsetAlignment:=aMinIndirectCommandsBufferOffsetAlignment;
end;

constructor TVkPhysicalDeviceMultiDrawPropertiesEXT.Create(const aMaxMultiDrawCount:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT;
 pNext:=nil;
 maxMultiDrawCount:=aMaxMultiDrawCount;
end;

constructor TVkGraphicsShaderGroupCreateInfoNV.Create(const aStageCount:TVkUInt32;
                                                      const aPStages:PVkPipelineShaderStageCreateInfo;
                                                      const aPVertexInputState:PVkPipelineVertexInputStateCreateInfo;
                                                      const aPTessellationState:PVkPipelineTessellationStateCreateInfo);
begin
 sType:=VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV;
 pNext:=nil;
 stageCount:=aStageCount;
 pStages:=aPStages;
 pVertexInputState:=aPVertexInputState;
 pTessellationState:=aPTessellationState;
end;

constructor TVkGraphicsPipelineShaderGroupsCreateInfoNV.Create(const aGroupCount:TVkUInt32;
                                                               const aPGroups:PVkGraphicsShaderGroupCreateInfoNV;
                                                               const aPipelineCount:TVkUInt32;
                                                               const aPPipelines:PVkPipeline);
begin
 sType:=VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV;
 pNext:=nil;
 groupCount:=aGroupCount;
 pGroups:=aPGroups;
 pipelineCount:=aPipelineCount;
 pPipelines:=aPPipelines;
end;

constructor TVkBindShaderGroupIndirectCommandNV.Create(const aGroupIndex:TVkUInt32);
begin
 groupIndex:=aGroupIndex;
end;

constructor TVkBindIndexBufferIndirectCommandNV.Create(const aBufferAddress:TVkDeviceAddress;
                                                       const aSize:TVkUInt32;
                                                       const aIndexType:TVkIndexType);
begin
 bufferAddress:=aBufferAddress;
 size:=aSize;
 indexType:=aIndexType;
end;

constructor TVkBindVertexBufferIndirectCommandNV.Create(const aBufferAddress:TVkDeviceAddress;
                                                        const aSize:TVkUInt32;
                                                        const aStride:TVkUInt32);
begin
 bufferAddress:=aBufferAddress;
 size:=aSize;
 stride:=aStride;
end;

constructor TVkSetStateFlagsIndirectCommandNV.Create(const aData:TVkUInt32);
begin
 data:=aData;
end;

constructor TVkIndirectCommandsStreamNV.Create(const aBuffer:TVkBuffer;
                                               const aOffset:TVkDeviceSize);
begin
 buffer:=aBuffer;
 offset:=aOffset;
end;

constructor TVkIndirectCommandsLayoutTokenNV.Create(const aTokenType:TVkIndirectCommandsTokenTypeNV;
                                                    const aStream:TVkUInt32;
                                                    const aOffset:TVkUInt32;
                                                    const aVertexBindingUnit:TVkUInt32;
                                                    const aVertexDynamicStride:TVkBool32;
                                                    const aPushconstantPipelineLayout:TVkPipelineLayout;
                                                    const aPushconstantShaderStageFlags:TVkShaderStageFlags;
                                                    const aPushconstantOffset:TVkUInt32;
                                                    const aPushconstantSize:TVkUInt32;
                                                    const aIndirectStateFlags:TVkIndirectStateFlagsNV;
                                                    const aIndexTypeCount:TVkUInt32;
                                                    const aPIndexTypes:PVkIndexType;
                                                    const aPIndexTypeValues:PVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV;
 pNext:=nil;
 tokenType:=aTokenType;
 stream:=aStream;
 offset:=aOffset;
 vertexBindingUnit:=aVertexBindingUnit;
 vertexDynamicStride:=aVertexDynamicStride;
 pushconstantPipelineLayout:=aPushconstantPipelineLayout;
 pushconstantShaderStageFlags:=aPushconstantShaderStageFlags;
 pushconstantOffset:=aPushconstantOffset;
 pushconstantSize:=aPushconstantSize;
 indirectStateFlags:=aIndirectStateFlags;
 indexTypeCount:=aIndexTypeCount;
 pIndexTypes:=aPIndexTypes;
 pIndexTypeValues:=aPIndexTypeValues;
end;

constructor TVkIndirectCommandsLayoutCreateInfoNV.Create(const aFlags:TVkIndirectCommandsLayoutUsageFlagsNV;
                                                         const aPipelineBindPoint:TVkPipelineBindPoint;
                                                         const aTokenCount:TVkUInt32;
                                                         const aPTokens:PVkIndirectCommandsLayoutTokenNV;
                                                         const aStreamCount:TVkUInt32;
                                                         const aPStreamStrides:PVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV;
 pNext:=nil;
 flags:=aFlags;
 pipelineBindPoint:=aPipelineBindPoint;
 tokenCount:=aTokenCount;
 pTokens:=aPTokens;
 streamCount:=aStreamCount;
 pStreamStrides:=aPStreamStrides;
end;

constructor TVkGeneratedCommandsInfoNV.Create(const aPipelineBindPoint:TVkPipelineBindPoint;
                                              const aPipeline:TVkPipeline;
                                              const aIndirectCommandsLayout:TVkIndirectCommandsLayoutNV;
                                              const aStreamCount:TVkUInt32;
                                              const aPStreams:PVkIndirectCommandsStreamNV;
                                              const aSequencesCount:TVkUInt32;
                                              const aPreprocessBuffer:TVkBuffer;
                                              const aPreprocessOffset:TVkDeviceSize;
                                              const aPreprocessSize:TVkDeviceSize;
                                              const aSequencesCountBuffer:TVkBuffer;
                                              const aSequencesCountOffset:TVkDeviceSize;
                                              const aSequencesIndexBuffer:TVkBuffer;
                                              const aSequencesIndexOffset:TVkDeviceSize);
begin
 sType:=VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV;
 pNext:=nil;
 pipelineBindPoint:=aPipelineBindPoint;
 pipeline:=aPipeline;
 indirectCommandsLayout:=aIndirectCommandsLayout;
 streamCount:=aStreamCount;
 pStreams:=aPStreams;
 sequencesCount:=aSequencesCount;
 preprocessBuffer:=aPreprocessBuffer;
 preprocessOffset:=aPreprocessOffset;
 preprocessSize:=aPreprocessSize;
 sequencesCountBuffer:=aSequencesCountBuffer;
 sequencesCountOffset:=aSequencesCountOffset;
 sequencesIndexBuffer:=aSequencesIndexBuffer;
 sequencesIndexOffset:=aSequencesIndexOffset;
end;

constructor TVkGeneratedCommandsMemoryRequirementsInfoNV.Create(const aPipelineBindPoint:TVkPipelineBindPoint;
                                                                const aPipeline:TVkPipeline;
                                                                const aIndirectCommandsLayout:TVkIndirectCommandsLayoutNV;
                                                                const aMaxSequencesCount:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV;
 pNext:=nil;
 pipelineBindPoint:=aPipelineBindPoint;
 pipeline:=aPipeline;
 indirectCommandsLayout:=aIndirectCommandsLayout;
 maxSequencesCount:=aMaxSequencesCount;
end;

constructor TVkPipelineIndirectDeviceAddressInfoNV.Create(const aPipelineBindPoint:TVkPipelineBindPoint;
                                                          const aPipeline:TVkPipeline);
begin
 sType:=VK_STRUCTURE_TYPE_PIPELINE_INDIRECT_DEVICE_ADDRESS_INFO_NV;
 pNext:=nil;
 pipelineBindPoint:=aPipelineBindPoint;
 pipeline:=aPipeline;
end;

constructor TVkBindPipelineIndirectCommandNV.Create(const aPipelineAddress:TVkDeviceAddress);
begin
 pipelineAddress:=aPipelineAddress;
end;

constructor TVkPhysicalDeviceFeatures2.Create(const aFeatures:TVkPhysicalDeviceFeatures);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2;
 pNext:=nil;
 features:=aFeatures;
end;

constructor TVkPhysicalDeviceProperties2.Create(const aProperties:TVkPhysicalDeviceProperties);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2;
 pNext:=nil;
 properties:=aProperties;
end;

constructor TVkFormatProperties2.Create(const aFormatProperties:TVkFormatProperties);
begin
 sType:=VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2;
 pNext:=nil;
 formatProperties:=aFormatProperties;
end;

constructor TVkImageFormatProperties2.Create(const aImageFormatProperties:TVkImageFormatProperties);
begin
 sType:=VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2;
 pNext:=nil;
 imageFormatProperties:=aImageFormatProperties;
end;

constructor TVkPhysicalDeviceImageFormatInfo2.Create(const aFormat:TVkFormat;
                                                     const aType_:TVkImageType;
                                                     const aTiling:TVkImageTiling;
                                                     const aUsage:TVkImageUsageFlags;
                                                     const aFlags:TVkImageCreateFlags);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2;
 pNext:=nil;
 format:=aFormat;
 type_:=aType_;
 tiling:=aTiling;
 usage:=aUsage;
 flags:=aFlags;
end;

constructor TVkQueueFamilyProperties2.Create(const aQueueFamilyProperties:TVkQueueFamilyProperties);
begin
 sType:=VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2;
 pNext:=nil;
 queueFamilyProperties:=aQueueFamilyProperties;
end;

constructor TVkPhysicalDeviceMemoryProperties2.Create(const aMemoryProperties:TVkPhysicalDeviceMemoryProperties);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2;
 pNext:=nil;
 memoryProperties:=aMemoryProperties;
end;

constructor TVkSparseImageFormatProperties2.Create(const aProperties:TVkSparseImageFormatProperties);
begin
 sType:=VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2;
 pNext:=nil;
 properties:=aProperties;
end;

constructor TVkPhysicalDeviceSparseImageFormatInfo2.Create(const aFormat:TVkFormat;
                                                           const aType_:TVkImageType;
                                                           const aSamples:TVkSampleCountFlagBits;
                                                           const aUsage:TVkImageUsageFlags;
                                                           const aTiling:TVkImageTiling);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2;
 pNext:=nil;
 format:=aFormat;
 type_:=aType_;
 samples:=aSamples;
 usage:=aUsage;
 tiling:=aTiling;
end;

constructor TVkPhysicalDevicePushDescriptorPropertiesKHR.Create(const aMaxPushDescriptors:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR;
 pNext:=nil;
 maxPushDescriptors:=aMaxPushDescriptors;
end;

constructor TVkConformanceVersion.Create(const aMajor:TVkUInt8;
                                         const aMinor:TVkUInt8;
                                         const aSubminor:TVkUInt8;
                                         const aPatch:TVkUInt8);
begin
 major:=aMajor;
 minor:=aMinor;
 subminor:=aSubminor;
 patch:=aPatch;
end;

constructor TVkPhysicalDeviceDriverProperties.Create(const aDriverID:TVkDriverId;
                                                     const aDriverName:TVkCharString;
                                                     const aDriverInfo:TVkCharString;
                                                     const aConformanceVersion:TVkConformanceVersion);
var ArrayItemCount:TVkInt32;
begin
 FillChar(self,SizeOf(TVkPhysicalDeviceDriverProperties),#0);
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES;
 pNext:=nil;
 driverID:=aDriverID;
 ArrayItemCount:=length(aDriverName);
 if ArrayItemCount>length(driverName) then begin
  ArrayItemCount:=length(driverName);
 end;
 if ArrayItemCount>0 then begin
  Move(aDriverName[1],driverName[0],ArrayItemCount*SizeOf(TVkChar));
 end;
 ArrayItemCount:=length(aDriverInfo);
 if ArrayItemCount>length(driverInfo) then begin
  ArrayItemCount:=length(driverInfo);
 end;
 if ArrayItemCount>0 then begin
  Move(aDriverInfo[1],driverInfo[0],ArrayItemCount*SizeOf(TVkChar));
 end;
 conformanceVersion:=aConformanceVersion;
end;

constructor TVkRectLayerKHR.Create(const aOffset:TVkOffset2D;
                                   const aExtent:TVkExtent2D;
                                   const aLayer:TVkUInt32);
begin
 offset:=aOffset;
 extent:=aExtent;
 layer:=aLayer;
end;

constructor TVkPresentRegionKHR.Create(const aRectangleCount:TVkUInt32;
                                       const aPRectangles:PVkRectLayerKHR);
begin
 rectangleCount:=aRectangleCount;
 pRectangles:=aPRectangles;
end;

constructor TVkPresentRegionsKHR.Create(const aSwapchainCount:TVkUInt32;
                                        const aPRegions:PVkPresentRegionKHR);
begin
 sType:=VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR;
 pNext:=nil;
 swapchainCount:=aSwapchainCount;
 pRegions:=aPRegions;
end;

constructor TVkPhysicalDeviceVariablePointersFeatures.Create(const aVariablePointersStorageBuffer:TVkBool32;
                                                             const aVariablePointers:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES;
 pNext:=nil;
 variablePointersStorageBuffer:=aVariablePointersStorageBuffer;
 variablePointers:=aVariablePointers;
end;

constructor TVkExternalMemoryProperties.Create(const aExternalMemoryFeatures:TVkExternalMemoryFeatureFlags;
                                               const aExportFromImportedHandleTypes:TVkExternalMemoryHandleTypeFlags;
                                               const aCompatibleHandleTypes:TVkExternalMemoryHandleTypeFlags);
begin
 externalMemoryFeatures:=aExternalMemoryFeatures;
 exportFromImportedHandleTypes:=aExportFromImportedHandleTypes;
 compatibleHandleTypes:=aCompatibleHandleTypes;
end;

constructor TVkPhysicalDeviceExternalImageFormatInfo.Create(const aHandleType:TVkExternalMemoryHandleTypeFlagBits);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO;
 pNext:=nil;
 handleType:=aHandleType;
end;

constructor TVkExternalImageFormatProperties.Create(const aExternalMemoryProperties:TVkExternalMemoryProperties);
begin
 sType:=VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES;
 pNext:=nil;
 externalMemoryProperties:=aExternalMemoryProperties;
end;

constructor TVkPhysicalDeviceExternalBufferInfo.Create(const aFlags:TVkBufferCreateFlags;
                                                       const aUsage:TVkBufferUsageFlags;
                                                       const aHandleType:TVkExternalMemoryHandleTypeFlagBits);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO;
 pNext:=nil;
 flags:=aFlags;
 usage:=aUsage;
 handleType:=aHandleType;
end;

constructor TVkExternalBufferProperties.Create(const aExternalMemoryProperties:TVkExternalMemoryProperties);
begin
 sType:=VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES;
 pNext:=nil;
 externalMemoryProperties:=aExternalMemoryProperties;
end;

constructor TVkPhysicalDeviceIDProperties.Create(const aDeviceUUID:array of TVkUInt8;
                                                 const aDriverUUID:array of TVkUInt8;
                                                 const aDeviceLUID:array of TVkUInt8;
                                                 const aDeviceNodeMask:TVkUInt32;
                                                 const aDeviceLUIDValid:TVkBool32);
var ArrayItemCount:TVkInt32;
begin
 FillChar(self,SizeOf(TVkPhysicalDeviceIDProperties),#0);
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES;
 pNext:=nil;
 ArrayItemCount:=length(aDeviceUUID);
 if ArrayItemCount>length(deviceUUID) then begin
  ArrayItemCount:=length(deviceUUID);
 end;
 if ArrayItemCount>0 then begin
  Move(aDeviceUUID[0],deviceUUID[0],ArrayItemCount*SizeOf(TVkUInt8));
 end;
 ArrayItemCount:=length(aDriverUUID);
 if ArrayItemCount>length(driverUUID) then begin
  ArrayItemCount:=length(driverUUID);
 end;
 if ArrayItemCount>0 then begin
  Move(aDriverUUID[0],driverUUID[0],ArrayItemCount*SizeOf(TVkUInt8));
 end;
 ArrayItemCount:=length(aDeviceLUID);
 if ArrayItemCount>length(deviceLUID) then begin
  ArrayItemCount:=length(deviceLUID);
 end;
 if ArrayItemCount>0 then begin
  Move(aDeviceLUID[0],deviceLUID[0],ArrayItemCount*SizeOf(TVkUInt8));
 end;
 deviceNodeMask:=aDeviceNodeMask;
 deviceLUIDValid:=aDeviceLUIDValid;
end;

constructor TVkExternalMemoryImageCreateInfo.Create(const aHandleTypes:TVkExternalMemoryHandleTypeFlags);
begin
 sType:=VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO;
 pNext:=nil;
 handleTypes:=aHandleTypes;
end;

constructor TVkExternalMemoryBufferCreateInfo.Create(const aHandleTypes:TVkExternalMemoryHandleTypeFlags);
begin
 sType:=VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO;
 pNext:=nil;
 handleTypes:=aHandleTypes;
end;

constructor TVkExportMemoryAllocateInfo.Create(const aHandleTypes:TVkExternalMemoryHandleTypeFlags);
begin
 sType:=VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO;
 pNext:=nil;
 handleTypes:=aHandleTypes;
end;

constructor TVkImportMemoryWin32HandleInfoKHR.Create(const aHandleType:TVkExternalMemoryHandleTypeFlagBits;
                                                     const aHandle:THANDLE;
                                                     const aName:PWideChar);
begin
 sType:=VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR;
 pNext:=nil;
 handleType:=aHandleType;
 handle:=aHandle;
 name:=aName;
end;

{$ifdef Windows}
constructor TVkExportMemoryWin32HandleInfoKHR.Create(const aPAttributes:PSecurityAttributes;
                                                     const aDwAccess:TVkUInt32;
                                                     const aName:PWideChar);
begin
 sType:=VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR;
 pNext:=nil;
 pAttributes:=aPAttributes;
 dwAccess:=aDwAccess;
 name:=aName;
end;
{$endif}

{$ifdef Fuchsia}
constructor TVkImportMemoryZirconHandleInfoFUCHSIA.Create(const aHandleType:TVkExternalMemoryHandleTypeFlagBits;
                                                          const aHandle:TVkFuchsiaZXHandle);
begin
 sType:=VK_STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA;
 pNext:=nil;
 handleType:=aHandleType;
 handle:=aHandle;
end;
{$endif}

constructor TVkMemoryZirconHandlePropertiesFUCHSIA.Create(const aMemoryTypeBits:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA;
 pNext:=nil;
 memoryTypeBits:=aMemoryTypeBits;
end;

constructor TVkMemoryGetZirconHandleInfoFUCHSIA.Create(const aMemory:TVkDeviceMemory;
                                                       const aHandleType:TVkExternalMemoryHandleTypeFlagBits);
begin
 sType:=VK_STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA;
 pNext:=nil;
 memory:=aMemory;
 handleType:=aHandleType;
end;

constructor TVkMemoryWin32HandlePropertiesKHR.Create(const aMemoryTypeBits:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR;
 pNext:=nil;
 memoryTypeBits:=aMemoryTypeBits;
end;

constructor TVkMemoryGetWin32HandleInfoKHR.Create(const aMemory:TVkDeviceMemory;
                                                  const aHandleType:TVkExternalMemoryHandleTypeFlagBits);
begin
 sType:=VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR;
 pNext:=nil;
 memory:=aMemory;
 handleType:=aHandleType;
end;

constructor TVkImportMemoryFdInfoKHR.Create(const aHandleType:TVkExternalMemoryHandleTypeFlagBits;
                                            const aFd:TVkInt32);
begin
 sType:=VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR;
 pNext:=nil;
 handleType:=aHandleType;
 fd:=aFd;
end;

constructor TVkMemoryFdPropertiesKHR.Create(const aMemoryTypeBits:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR;
 pNext:=nil;
 memoryTypeBits:=aMemoryTypeBits;
end;

constructor TVkMemoryGetFdInfoKHR.Create(const aMemory:TVkDeviceMemory;
                                         const aHandleType:TVkExternalMemoryHandleTypeFlagBits);
begin
 sType:=VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR;
 pNext:=nil;
 memory:=aMemory;
 handleType:=aHandleType;
end;

constructor TVkWin32KeyedMutexAcquireReleaseInfoKHR.Create(const aAcquireCount:TVkUInt32;
                                                           const aPAcquireSyncs:PVkDeviceMemory;
                                                           const aPAcquireKeys:PVkUInt64;
                                                           const aPAcquireTimeouts:PVkUInt32;
                                                           const aReleaseCount:TVkUInt32;
                                                           const aPReleaseSyncs:PVkDeviceMemory;
                                                           const aPReleaseKeys:PVkUInt64);
begin
 sType:=VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR;
 pNext:=nil;
 acquireCount:=aAcquireCount;
 pAcquireSyncs:=aPAcquireSyncs;
 pAcquireKeys:=aPAcquireKeys;
 pAcquireTimeouts:=aPAcquireTimeouts;
 releaseCount:=aReleaseCount;
 pReleaseSyncs:=aPReleaseSyncs;
 pReleaseKeys:=aPReleaseKeys;
end;

constructor TVkPhysicalDeviceExternalSemaphoreInfo.Create(const aHandleType:TVkExternalSemaphoreHandleTypeFlagBits);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO;
 pNext:=nil;
 handleType:=aHandleType;
end;

constructor TVkExternalSemaphoreProperties.Create(const aExportFromImportedHandleTypes:TVkExternalSemaphoreHandleTypeFlags;
                                                  const aCompatibleHandleTypes:TVkExternalSemaphoreHandleTypeFlags;
                                                  const aExternalSemaphoreFeatures:TVkExternalSemaphoreFeatureFlags);
begin
 sType:=VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES;
 pNext:=nil;
 exportFromImportedHandleTypes:=aExportFromImportedHandleTypes;
 compatibleHandleTypes:=aCompatibleHandleTypes;
 externalSemaphoreFeatures:=aExternalSemaphoreFeatures;
end;

constructor TVkExportSemaphoreCreateInfo.Create(const aHandleTypes:TVkExternalSemaphoreHandleTypeFlags);
begin
 sType:=VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO;
 pNext:=nil;
 handleTypes:=aHandleTypes;
end;

constructor TVkImportSemaphoreWin32HandleInfoKHR.Create(const aSemaphore:TVkSemaphore;
                                                        const aFlags:TVkSemaphoreImportFlags;
                                                        const aHandleType:TVkExternalSemaphoreHandleTypeFlagBits;
                                                        const aHandle:THANDLE;
                                                        const aName:PWideChar);
begin
 sType:=VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR;
 pNext:=nil;
 semaphore:=aSemaphore;
 flags:=aFlags;
 handleType:=aHandleType;
 handle:=aHandle;
 name:=aName;
end;

{$ifdef Windows}
constructor TVkExportSemaphoreWin32HandleInfoKHR.Create(const aPAttributes:PSecurityAttributes;
                                                        const aDwAccess:TVkUInt32;
                                                        const aName:PWideChar);
begin
 sType:=VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR;
 pNext:=nil;
 pAttributes:=aPAttributes;
 dwAccess:=aDwAccess;
 name:=aName;
end;
{$endif}

constructor TVkD3D12FenceSubmitInfoKHR.Create(const aWaitSemaphoreValuesCount:TVkUInt32;
                                              const aPWaitSemaphoreValues:PVkUInt64;
                                              const aSignalSemaphoreValuesCount:TVkUInt32;
                                              const aPSignalSemaphoreValues:PVkUInt64);
begin
 sType:=VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR;
 pNext:=nil;
 waitSemaphoreValuesCount:=aWaitSemaphoreValuesCount;
 pWaitSemaphoreValues:=aPWaitSemaphoreValues;
 signalSemaphoreValuesCount:=aSignalSemaphoreValuesCount;
 pSignalSemaphoreValues:=aPSignalSemaphoreValues;
end;

constructor TVkSemaphoreGetWin32HandleInfoKHR.Create(const aSemaphore:TVkSemaphore;
                                                     const aHandleType:TVkExternalSemaphoreHandleTypeFlagBits);
begin
 sType:=VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR;
 pNext:=nil;
 semaphore:=aSemaphore;
 handleType:=aHandleType;
end;

constructor TVkImportSemaphoreFdInfoKHR.Create(const aSemaphore:TVkSemaphore;
                                               const aFlags:TVkSemaphoreImportFlags;
                                               const aHandleType:TVkExternalSemaphoreHandleTypeFlagBits;
                                               const aFd:TVkInt32);
begin
 sType:=VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR;
 pNext:=nil;
 semaphore:=aSemaphore;
 flags:=aFlags;
 handleType:=aHandleType;
 fd:=aFd;
end;

constructor TVkSemaphoreGetFdInfoKHR.Create(const aSemaphore:TVkSemaphore;
                                            const aHandleType:TVkExternalSemaphoreHandleTypeFlagBits);
begin
 sType:=VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR;
 pNext:=nil;
 semaphore:=aSemaphore;
 handleType:=aHandleType;
end;

{$ifdef Fuchsia}
constructor TVkImportSemaphoreZirconHandleInfoFUCHSIA.Create(const aSemaphore:TVkSemaphore;
                                                             const aFlags:TVkSemaphoreImportFlags;
                                                             const aHandleType:TVkExternalSemaphoreHandleTypeFlagBits;
                                                             const aZirconHandle:TVkFuchsiaZXHandle);
begin
 sType:=VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA;
 pNext:=nil;
 semaphore:=aSemaphore;
 flags:=aFlags;
 handleType:=aHandleType;
 zirconHandle:=aZirconHandle;
end;
{$endif}

constructor TVkSemaphoreGetZirconHandleInfoFUCHSIA.Create(const aSemaphore:TVkSemaphore;
                                                          const aHandleType:TVkExternalSemaphoreHandleTypeFlagBits);
begin
 sType:=VK_STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA;
 pNext:=nil;
 semaphore:=aSemaphore;
 handleType:=aHandleType;
end;

constructor TVkPhysicalDeviceExternalFenceInfo.Create(const aHandleType:TVkExternalFenceHandleTypeFlagBits);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO;
 pNext:=nil;
 handleType:=aHandleType;
end;

constructor TVkExternalFenceProperties.Create(const aExportFromImportedHandleTypes:TVkExternalFenceHandleTypeFlags;
                                              const aCompatibleHandleTypes:TVkExternalFenceHandleTypeFlags;
                                              const aExternalFenceFeatures:TVkExternalFenceFeatureFlags);
begin
 sType:=VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES;
 pNext:=nil;
 exportFromImportedHandleTypes:=aExportFromImportedHandleTypes;
 compatibleHandleTypes:=aCompatibleHandleTypes;
 externalFenceFeatures:=aExternalFenceFeatures;
end;

constructor TVkExportFenceCreateInfo.Create(const aHandleTypes:TVkExternalFenceHandleTypeFlags);
begin
 sType:=VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO;
 pNext:=nil;
 handleTypes:=aHandleTypes;
end;

constructor TVkImportFenceWin32HandleInfoKHR.Create(const aFence:TVkFence;
                                                    const aFlags:TVkFenceImportFlags;
                                                    const aHandleType:TVkExternalFenceHandleTypeFlagBits;
                                                    const aHandle:THANDLE;
                                                    const aName:PWideChar);
begin
 sType:=VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR;
 pNext:=nil;
 fence:=aFence;
 flags:=aFlags;
 handleType:=aHandleType;
 handle:=aHandle;
 name:=aName;
end;

{$ifdef Windows}
constructor TVkExportFenceWin32HandleInfoKHR.Create(const aPAttributes:PSecurityAttributes;
                                                    const aDwAccess:TVkUInt32;
                                                    const aName:PWideChar);
begin
 sType:=VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR;
 pNext:=nil;
 pAttributes:=aPAttributes;
 dwAccess:=aDwAccess;
 name:=aName;
end;
{$endif}

constructor TVkFenceGetWin32HandleInfoKHR.Create(const aFence:TVkFence;
                                                 const aHandleType:TVkExternalFenceHandleTypeFlagBits);
begin
 sType:=VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR;
 pNext:=nil;
 fence:=aFence;
 handleType:=aHandleType;
end;

constructor TVkImportFenceFdInfoKHR.Create(const aFence:TVkFence;
                                           const aFlags:TVkFenceImportFlags;
                                           const aHandleType:TVkExternalFenceHandleTypeFlagBits;
                                           const aFd:TVkInt32);
begin
 sType:=VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR;
 pNext:=nil;
 fence:=aFence;
 flags:=aFlags;
 handleType:=aHandleType;
 fd:=aFd;
end;

constructor TVkFenceGetFdInfoKHR.Create(const aFence:TVkFence;
                                        const aHandleType:TVkExternalFenceHandleTypeFlagBits);
begin
 sType:=VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR;
 pNext:=nil;
 fence:=aFence;
 handleType:=aHandleType;
end;

{$ifdef NvSci}
constructor TVkExportFenceSciSyncInfoNV.Create(const aPAttributes:TNvSciSyncAttrList);
begin
 sType:=VK_STRUCTURE_TYPE_EXPORT_FENCE_SCI_SYNC_INFO_NV;
 pNext:=nil;
 pAttributes:=aPAttributes;
end;
{$endif}

{$ifdef NvSci}
constructor TVkImportFenceSciSyncInfoNV.Create(const aFence:TVkFence;
                                               const aHandleType:TVkExternalFenceHandleTypeFlagBits;
                                               const aHandle:PVkVoid);
begin
 sType:=VK_STRUCTURE_TYPE_IMPORT_FENCE_SCI_SYNC_INFO_NV;
 pNext:=nil;
 fence:=aFence;
 handleType:=aHandleType;
 handle:=aHandle;
end;
{$endif}

{$ifdef NvSci}
constructor TVkFenceGetSciSyncInfoNV.Create(const aFence:TVkFence;
                                            const aHandleType:TVkExternalFenceHandleTypeFlagBits);
begin
 sType:=VK_STRUCTURE_TYPE_FENCE_GET_SCI_SYNC_INFO_NV;
 pNext:=nil;
 fence:=aFence;
 handleType:=aHandleType;
end;
{$endif}

{$ifdef NvSci}
constructor TVkExportSemaphoreSciSyncInfoNV.Create(const aPAttributes:TNvSciSyncAttrList);
begin
 sType:=VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_SCI_SYNC_INFO_NV;
 pNext:=nil;
 pAttributes:=aPAttributes;
end;
{$endif}

{$ifdef NvSci}
constructor TVkImportSemaphoreSciSyncInfoNV.Create(const aSemaphore:TVkSemaphore;
                                                   const aHandleType:TVkExternalSemaphoreHandleTypeFlagBits;
                                                   const aHandle:PVkVoid);
begin
 sType:=VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_SCI_SYNC_INFO_NV;
 pNext:=nil;
 semaphore:=aSemaphore;
 handleType:=aHandleType;
 handle:=aHandle;
end;
{$endif}

{$ifdef NvSci}
constructor TVkSemaphoreGetSciSyncInfoNV.Create(const aSemaphore:TVkSemaphore;
                                                const aHandleType:TVkExternalSemaphoreHandleTypeFlagBits);
begin
 sType:=VK_STRUCTURE_TYPE_SEMAPHORE_GET_SCI_SYNC_INFO_NV;
 pNext:=nil;
 semaphore:=aSemaphore;
 handleType:=aHandleType;
end;
{$endif}

{$ifdef NvSci}
constructor TVkSciSyncAttributesInfoNV.Create(const aClientType:TVkSciSyncClientTypeNV;
                                              const aPrimitiveType:TVkSciSyncPrimitiveTypeNV);
begin
 sType:=VK_STRUCTURE_TYPE_SCI_SYNC_ATTRIBUTES_INFO_NV;
 pNext:=nil;
 clientType:=aClientType;
 primitiveType:=aPrimitiveType;
end;
{$endif}

{$ifdef NvSci}
constructor TVkPhysicalDeviceExternalSciSyncFeaturesNV.Create(const aSciSyncFence:TVkBool32;
                                                              const aSciSyncSemaphore:TVkBool32;
                                                              const aSciSyncImport:TVkBool32;
                                                              const aSciSyncExport:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SCI_SYNC_FEATURES_NV;
 pNext:=nil;
 sciSyncFence:=aSciSyncFence;
 sciSyncSemaphore:=aSciSyncSemaphore;
 sciSyncImport:=aSciSyncImport;
 sciSyncExport:=aSciSyncExport;
end;
{$endif}

{$ifdef NvSci}
constructor TVkPhysicalDeviceExternalSciSync2FeaturesNV.Create(const aSciSyncFence:TVkBool32;
                                                               const aSciSyncSemaphore2:TVkBool32;
                                                               const aSciSyncImport:TVkBool32;
                                                               const aSciSyncExport:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SCI_SYNC_2_FEATURES_NV;
 pNext:=nil;
 sciSyncFence:=aSciSyncFence;
 sciSyncSemaphore2:=aSciSyncSemaphore2;
 sciSyncImport:=aSciSyncImport;
 sciSyncExport:=aSciSyncExport;
end;
{$endif}

{$ifdef NvSci}
constructor TVkSemaphoreSciSyncPoolCreateInfoNV.Create(const aHandle:TNvSciSyncObj);
begin
 sType:=VK_STRUCTURE_TYPE_SEMAPHORE_SCI_SYNC_POOL_CREATE_INFO_NV;
 pNext:=nil;
 handle:=aHandle;
end;
{$endif}

{$ifdef NvSci}
constructor TVkSemaphoreSciSyncCreateInfoNV.Create(const aSemaphorePool:TVkSemaphoreSciSyncPoolNV;
                                                   const aPFence:PNvSciSyncFence);
begin
 sType:=VK_STRUCTURE_TYPE_SEMAPHORE_SCI_SYNC_CREATE_INFO_NV;
 pNext:=nil;
 semaphorePool:=aSemaphorePool;
 pFence:=aPFence;
end;
{$endif}

{$ifdef NvSci}
constructor TVkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV.Create(const aSemaphoreSciSyncPoolRequestCount:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_DEVICE_SEMAPHORE_SCI_SYNC_POOL_RESERVATION_CREATE_INFO_NV;
 pNext:=nil;
 semaphoreSciSyncPoolRequestCount:=aSemaphoreSciSyncPoolRequestCount;
end;
{$endif}

constructor TVkPhysicalDeviceMultiviewFeatures.Create(const aMultiview:TVkBool32;
                                                      const aMultiviewGeometryShader:TVkBool32;
                                                      const aMultiviewTessellationShader:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES;
 pNext:=nil;
 multiview:=aMultiview;
 multiviewGeometryShader:=aMultiviewGeometryShader;
 multiviewTessellationShader:=aMultiviewTessellationShader;
end;

constructor TVkPhysicalDeviceMultiviewProperties.Create(const aMaxMultiviewViewCount:TVkUInt32;
                                                        const aMaxMultiviewInstanceIndex:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES;
 pNext:=nil;
 maxMultiviewViewCount:=aMaxMultiviewViewCount;
 maxMultiviewInstanceIndex:=aMaxMultiviewInstanceIndex;
end;

constructor TVkRenderPassMultiviewCreateInfo.Create(const aSubpassCount:TVkUInt32;
                                                    const aPViewMasks:PVkUInt32;
                                                    const aDependencyCount:TVkUInt32;
                                                    const aPViewOffsets:PVkInt32;
                                                    const aCorrelationMaskCount:TVkUInt32;
                                                    const aPCorrelationMasks:PVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO;
 pNext:=nil;
 subpassCount:=aSubpassCount;
 pViewMasks:=aPViewMasks;
 dependencyCount:=aDependencyCount;
 pViewOffsets:=aPViewOffsets;
 correlationMaskCount:=aCorrelationMaskCount;
 pCorrelationMasks:=aPCorrelationMasks;
end;

constructor TVkSurfaceCapabilities2EXT.Create(const aMinImageCount:TVkUInt32;
                                              const aMaxImageCount:TVkUInt32;
                                              const aCurrentExtent:TVkExtent2D;
                                              const aMinImageExtent:TVkExtent2D;
                                              const aMaxImageExtent:TVkExtent2D;
                                              const aMaxImageArrayLayers:TVkUInt32;
                                              const aSupportedTransforms:TVkSurfaceTransformFlagsKHR;
                                              const aCurrentTransform:TVkSurfaceTransformFlagBitsKHR;
                                              const aSupportedCompositeAlpha:TVkCompositeAlphaFlagsKHR;
                                              const aSupportedUsageFlags:TVkImageUsageFlags;
                                              const aSupportedSurfaceCounters:TVkSurfaceCounterFlagsEXT);
begin
 sType:=VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT;
 pNext:=nil;
 minImageCount:=aMinImageCount;
 maxImageCount:=aMaxImageCount;
 currentExtent:=aCurrentExtent;
 minImageExtent:=aMinImageExtent;
 maxImageExtent:=aMaxImageExtent;
 maxImageArrayLayers:=aMaxImageArrayLayers;
 supportedTransforms:=aSupportedTransforms;
 currentTransform:=aCurrentTransform;
 supportedCompositeAlpha:=aSupportedCompositeAlpha;
 supportedUsageFlags:=aSupportedUsageFlags;
 supportedSurfaceCounters:=aSupportedSurfaceCounters;
end;

constructor TVkDisplayPowerInfoEXT.Create(const aPowerState:TVkDisplayPowerStateEXT);
begin
 sType:=VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT;
 pNext:=nil;
 powerState:=aPowerState;
end;

constructor TVkDeviceEventInfoEXT.Create(const aDeviceEvent:TVkDeviceEventTypeEXT);
begin
 sType:=VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT;
 pNext:=nil;
 deviceEvent:=aDeviceEvent;
end;

constructor TVkDisplayEventInfoEXT.Create(const aDisplayEvent:TVkDisplayEventTypeEXT);
begin
 sType:=VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT;
 pNext:=nil;
 displayEvent:=aDisplayEvent;
end;

constructor TVkSwapchainCounterCreateInfoEXT.Create(const aSurfaceCounters:TVkSurfaceCounterFlagsEXT);
begin
 sType:=VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT;
 pNext:=nil;
 surfaceCounters:=aSurfaceCounters;
end;

constructor TVkPhysicalDeviceGroupProperties.Create(const aPhysicalDeviceCount:TVkUInt32;
                                                    const aPhysicalDevices:array of TVkPhysicalDevice;
                                                    const aSubsetAllocation:TVkBool32);
var ArrayItemCount:TVkInt32;
begin
 FillChar(self,SizeOf(TVkPhysicalDeviceGroupProperties),#0);
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES;
 pNext:=nil;
 physicalDeviceCount:=aPhysicalDeviceCount;
 ArrayItemCount:=length(aPhysicalDevices);
 if ArrayItemCount>length(physicalDevices) then begin
  ArrayItemCount:=length(physicalDevices);
 end;
 if ArrayItemCount>0 then begin
  Move(aPhysicalDevices[0],physicalDevices[0],ArrayItemCount*SizeOf(TVkPhysicalDevice));
 end;
 subsetAllocation:=aSubsetAllocation;
end;

constructor TVkMemoryAllocateFlagsInfo.Create(const aFlags:TVkMemoryAllocateFlags;
                                              const aDeviceMask:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO;
 pNext:=nil;
 flags:=aFlags;
 deviceMask:=aDeviceMask;
end;

constructor TVkBindBufferMemoryInfo.Create(const aBuffer:TVkBuffer;
                                           const aMemory:TVkDeviceMemory;
                                           const aMemoryOffset:TVkDeviceSize);
begin
 sType:=VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO;
 pNext:=nil;
 buffer:=aBuffer;
 memory:=aMemory;
 memoryOffset:=aMemoryOffset;
end;

constructor TVkBindBufferMemoryDeviceGroupInfo.Create(const aDeviceIndexCount:TVkUInt32;
                                                      const aPDeviceIndices:PVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO;
 pNext:=nil;
 deviceIndexCount:=aDeviceIndexCount;
 pDeviceIndices:=aPDeviceIndices;
end;

constructor TVkBindImageMemoryInfo.Create(const aImage:TVkImage;
                                          const aMemory:TVkDeviceMemory;
                                          const aMemoryOffset:TVkDeviceSize);
begin
 sType:=VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO;
 pNext:=nil;
 image:=aImage;
 memory:=aMemory;
 memoryOffset:=aMemoryOffset;
end;

constructor TVkBindImageMemoryDeviceGroupInfo.Create(const aDeviceIndexCount:TVkUInt32;
                                                     const aPDeviceIndices:PVkUInt32;
                                                     const aSplitInstanceBindRegionCount:TVkUInt32;
                                                     const aPSplitInstanceBindRegions:PVkRect2D);
begin
 sType:=VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO;
 pNext:=nil;
 deviceIndexCount:=aDeviceIndexCount;
 pDeviceIndices:=aPDeviceIndices;
 splitInstanceBindRegionCount:=aSplitInstanceBindRegionCount;
 pSplitInstanceBindRegions:=aPSplitInstanceBindRegions;
end;

constructor TVkDeviceGroupRenderPassBeginInfo.Create(const aDeviceMask:TVkUInt32;
                                                     const aDeviceRenderAreaCount:TVkUInt32;
                                                     const aPDeviceRenderAreas:PVkRect2D);
begin
 sType:=VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO;
 pNext:=nil;
 deviceMask:=aDeviceMask;
 deviceRenderAreaCount:=aDeviceRenderAreaCount;
 pDeviceRenderAreas:=aPDeviceRenderAreas;
end;

constructor TVkDeviceGroupCommandBufferBeginInfo.Create(const aDeviceMask:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO;
 pNext:=nil;
 deviceMask:=aDeviceMask;
end;

constructor TVkDeviceGroupSubmitInfo.Create(const aWaitSemaphoreCount:TVkUInt32;
                                            const aPWaitSemaphoreDeviceIndices:PVkUInt32;
                                            const aCommandBufferCount:TVkUInt32;
                                            const aPCommandBufferDeviceMasks:PVkUInt32;
                                            const aSignalSemaphoreCount:TVkUInt32;
                                            const aPSignalSemaphoreDeviceIndices:PVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO;
 pNext:=nil;
 waitSemaphoreCount:=aWaitSemaphoreCount;
 pWaitSemaphoreDeviceIndices:=aPWaitSemaphoreDeviceIndices;
 commandBufferCount:=aCommandBufferCount;
 pCommandBufferDeviceMasks:=aPCommandBufferDeviceMasks;
 signalSemaphoreCount:=aSignalSemaphoreCount;
 pSignalSemaphoreDeviceIndices:=aPSignalSemaphoreDeviceIndices;
end;

constructor TVkDeviceGroupBindSparseInfo.Create(const aResourceDeviceIndex:TVkUInt32;
                                                const aMemoryDeviceIndex:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO;
 pNext:=nil;
 resourceDeviceIndex:=aResourceDeviceIndex;
 memoryDeviceIndex:=aMemoryDeviceIndex;
end;

constructor TVkDeviceGroupPresentCapabilitiesKHR.Create(const aPresentMask:array of TVkUInt32;
                                                        const aModes:TVkDeviceGroupPresentModeFlagsKHR);
var ArrayItemCount:TVkInt32;
begin
 FillChar(self,SizeOf(TVkDeviceGroupPresentCapabilitiesKHR),#0);
 sType:=VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR;
 pNext:=nil;
 ArrayItemCount:=length(aPresentMask);
 if ArrayItemCount>length(presentMask) then begin
  ArrayItemCount:=length(presentMask);
 end;
 if ArrayItemCount>0 then begin
  Move(aPresentMask[0],presentMask[0],ArrayItemCount*SizeOf(TVkUInt32));
 end;
 modes:=aModes;
end;

constructor TVkImageSwapchainCreateInfoKHR.Create(const aSwapchain:TVkSwapchainKHR);
begin
 sType:=VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR;
 pNext:=nil;
 swapchain:=aSwapchain;
end;

constructor TVkBindImageMemorySwapchainInfoKHR.Create(const aSwapchain:TVkSwapchainKHR;
                                                      const aImageIndex:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR;
 pNext:=nil;
 swapchain:=aSwapchain;
 imageIndex:=aImageIndex;
end;

constructor TVkAcquireNextImageInfoKHR.Create(const aSwapchain:TVkSwapchainKHR;
                                              const aTimeout:TVkUInt64;
                                              const aSemaphore:TVkSemaphore;
                                              const aFence:TVkFence;
                                              const aDeviceMask:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR;
 pNext:=nil;
 swapchain:=aSwapchain;
 timeout:=aTimeout;
 semaphore:=aSemaphore;
 fence:=aFence;
 deviceMask:=aDeviceMask;
end;

constructor TVkDeviceGroupPresentInfoKHR.Create(const aSwapchainCount:TVkUInt32;
                                                const aPDeviceMasks:PVkUInt32;
                                                const aMode:TVkDeviceGroupPresentModeFlagBitsKHR);
begin
 sType:=VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR;
 pNext:=nil;
 swapchainCount:=aSwapchainCount;
 pDeviceMasks:=aPDeviceMasks;
 mode:=aMode;
end;

constructor TVkDeviceGroupDeviceCreateInfo.Create(const aPhysicalDeviceCount:TVkUInt32;
                                                  const aPPhysicalDevices:PVkPhysicalDevice);
begin
 sType:=VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO;
 pNext:=nil;
 physicalDeviceCount:=aPhysicalDeviceCount;
 pPhysicalDevices:=aPPhysicalDevices;
end;

constructor TVkDeviceGroupSwapchainCreateInfoKHR.Create(const aModes:TVkDeviceGroupPresentModeFlagsKHR);
begin
 sType:=VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR;
 pNext:=nil;
 modes:=aModes;
end;

constructor TVkDescriptorUpdateTemplateEntry.Create(const aDstBinding:TVkUInt32;
                                                    const aDstArrayElement:TVkUInt32;
                                                    const aDescriptorCount:TVkUInt32;
                                                    const aDescriptorType:TVkDescriptorType;
                                                    const aOffset:TVkSize;
                                                    const aStride:TVkSize);
begin
 dstBinding:=aDstBinding;
 dstArrayElement:=aDstArrayElement;
 descriptorCount:=aDescriptorCount;
 descriptorType:=aDescriptorType;
 offset:=aOffset;
 stride:=aStride;
end;

constructor TVkDescriptorUpdateTemplateCreateInfo.Create(const aFlags:TVkDescriptorUpdateTemplateCreateFlags;
                                                         const aDescriptorUpdateEntryCount:TVkUInt32;
                                                         const aPDescriptorUpdateEntries:PVkDescriptorUpdateTemplateEntry;
                                                         const aTemplateType:TVkDescriptorUpdateTemplateType;
                                                         const aDescriptorSetLayout:TVkDescriptorSetLayout;
                                                         const aPipelineBindPoint:TVkPipelineBindPoint;
                                                         const aPipelineLayout:TVkPipelineLayout;
                                                         const aSet_:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO;
 pNext:=nil;
 flags:=aFlags;
 descriptorUpdateEntryCount:=aDescriptorUpdateEntryCount;
 pDescriptorUpdateEntries:=aPDescriptorUpdateEntries;
 templateType:=aTemplateType;
 descriptorSetLayout:=aDescriptorSetLayout;
 pipelineBindPoint:=aPipelineBindPoint;
 pipelineLayout:=aPipelineLayout;
 set_:=aSet_;
end;

constructor TVkXYColorEXT.Create(const aX:TVkFloat;
                                 const aY:TVkFloat);
begin
 x:=aX;
 y:=aY;
end;

constructor TVkPhysicalDevicePresentIdFeaturesKHR.Create(const aPresentId:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR;
 pNext:=nil;
 presentId:=aPresentId;
end;

constructor TVkPresentIdKHR.Create(const aSwapchainCount:TVkUInt32;
                                   const aPPresentIds:PVkUInt64);
begin
 sType:=VK_STRUCTURE_TYPE_PRESENT_ID_KHR;
 pNext:=nil;
 swapchainCount:=aSwapchainCount;
 pPresentIds:=aPPresentIds;
end;

constructor TVkPhysicalDevicePresentWaitFeaturesKHR.Create(const aPresentWait:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR;
 pNext:=nil;
 presentWait:=aPresentWait;
end;

constructor TVkHdrMetadataEXT.Create(const aDisplayPrimaryRed:TVkXYColorEXT;
                                     const aDisplayPrimaryGreen:TVkXYColorEXT;
                                     const aDisplayPrimaryBlue:TVkXYColorEXT;
                                     const aWhitePoint:TVkXYColorEXT;
                                     const aMaxLuminance:TVkFloat;
                                     const aMinLuminance:TVkFloat;
                                     const aMaxContentLightLevel:TVkFloat;
                                     const aMaxFrameAverageLightLevel:TVkFloat);
begin
 sType:=VK_STRUCTURE_TYPE_HDR_METADATA_EXT;
 pNext:=nil;
 displayPrimaryRed:=aDisplayPrimaryRed;
 displayPrimaryGreen:=aDisplayPrimaryGreen;
 displayPrimaryBlue:=aDisplayPrimaryBlue;
 whitePoint:=aWhitePoint;
 maxLuminance:=aMaxLuminance;
 minLuminance:=aMinLuminance;
 maxContentLightLevel:=aMaxContentLightLevel;
 maxFrameAverageLightLevel:=aMaxFrameAverageLightLevel;
end;

constructor TVkDisplayNativeHdrSurfaceCapabilitiesAMD.Create(const aLocalDimmingSupport:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD;
 pNext:=nil;
 localDimmingSupport:=aLocalDimmingSupport;
end;

constructor TVkSwapchainDisplayNativeHdrCreateInfoAMD.Create(const aLocalDimmingEnable:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD;
 pNext:=nil;
 localDimmingEnable:=aLocalDimmingEnable;
end;

constructor TVkRefreshCycleDurationGOOGLE.Create(const aRefreshDuration:TVkUInt64);
begin
 refreshDuration:=aRefreshDuration;
end;

constructor TVkPastPresentationTimingGOOGLE.Create(const aPresentID:TVkUInt32;
                                                   const aDesiredPresentTime:TVkUInt64;
                                                   const aActualPresentTime:TVkUInt64;
                                                   const aEarliestPresentTime:TVkUInt64;
                                                   const aPresentMargin:TVkUInt64);
begin
 presentID:=aPresentID;
 desiredPresentTime:=aDesiredPresentTime;
 actualPresentTime:=aActualPresentTime;
 earliestPresentTime:=aEarliestPresentTime;
 presentMargin:=aPresentMargin;
end;

constructor TVkPresentTimeGOOGLE.Create(const aPresentID:TVkUInt32;
                                        const aDesiredPresentTime:TVkUInt64);
begin
 presentID:=aPresentID;
 desiredPresentTime:=aDesiredPresentTime;
end;

constructor TVkPresentTimesInfoGOOGLE.Create(const aSwapchainCount:TVkUInt32;
                                             const aPTimes:PVkPresentTimeGOOGLE);
begin
 sType:=VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE;
 pNext:=nil;
 swapchainCount:=aSwapchainCount;
 pTimes:=aPTimes;
end;

{$ifdef MoltenVK_IOS}
constructor TVkIOSSurfaceCreateInfoMVK.Create(const aFlags:TVkIOSSurfaceCreateFlagsMVK;
                                              const aPView:PVkVoid);
begin
 sType:=VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK;
 pNext:=nil;
 flags:=aFlags;
 pView:=aPView;
end;
{$endif}

{$ifdef MoltenVK_MacOS}
constructor TVkMacOSSurfaceCreateInfoMVK.Create(const aFlags:TVkMacOSSurfaceCreateFlagsMVK;
                                                const aPView:PVkVoid);
begin
 sType:=VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK;
 pNext:=nil;
 flags:=aFlags;
 pView:=aPView;
end;
{$endif}

constructor TVkMetalSurfaceCreateInfoEXT.Create(const aFlags:TVkMetalSurfaceCreateFlagsEXT;
                                                const aPLayer:PVkCAMetalLayer);
begin
 sType:=VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT;
 pNext:=nil;
 flags:=aFlags;
 pLayer:=aPLayer;
end;

constructor TVkViewportWScalingNV.Create(const aXcoeff:TVkFloat;
                                         const aYcoeff:TVkFloat);
begin
 xcoeff:=aXcoeff;
 ycoeff:=aYcoeff;
end;

constructor TVkPipelineViewportWScalingStateCreateInfoNV.Create(const aViewportWScalingEnable:TVkBool32;
                                                                const aViewportCount:TVkUInt32;
                                                                const aPViewportWScalings:PVkViewportWScalingNV);
begin
 sType:=VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV;
 pNext:=nil;
 viewportWScalingEnable:=aViewportWScalingEnable;
 viewportCount:=aViewportCount;
 pViewportWScalings:=aPViewportWScalings;
end;

constructor TVkViewportSwizzleNV.Create(const aX:TVkViewportCoordinateSwizzleNV;
                                        const aY:TVkViewportCoordinateSwizzleNV;
                                        const aZ:TVkViewportCoordinateSwizzleNV;
                                        const aW:TVkViewportCoordinateSwizzleNV);
begin
 x:=aX;
 y:=aY;
 z:=aZ;
 w:=aW;
end;

constructor TVkPipelineViewportSwizzleStateCreateInfoNV.Create(const aFlags:TVkPipelineViewportSwizzleStateCreateFlagsNV;
                                                               const aViewportCount:TVkUInt32;
                                                               const aPViewportSwizzles:PVkViewportSwizzleNV);
begin
 sType:=VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV;
 pNext:=nil;
 flags:=aFlags;
 viewportCount:=aViewportCount;
 pViewportSwizzles:=aPViewportSwizzles;
end;

constructor TVkPhysicalDeviceDiscardRectanglePropertiesEXT.Create(const aMaxDiscardRectangles:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT;
 pNext:=nil;
 maxDiscardRectangles:=aMaxDiscardRectangles;
end;

constructor TVkPipelineDiscardRectangleStateCreateInfoEXT.Create(const aFlags:TVkPipelineDiscardRectangleStateCreateFlagsEXT;
                                                                 const aDiscardRectangleMode:TVkDiscardRectangleModeEXT;
                                                                 const aDiscardRectangleCount:TVkUInt32;
                                                                 const aPDiscardRectangles:PVkRect2D);
begin
 sType:=VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT;
 pNext:=nil;
 flags:=aFlags;
 discardRectangleMode:=aDiscardRectangleMode;
 discardRectangleCount:=aDiscardRectangleCount;
 pDiscardRectangles:=aPDiscardRectangles;
end;

constructor TVkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX.Create(const aPerViewPositionAllComponents:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX;
 pNext:=nil;
 perViewPositionAllComponents:=aPerViewPositionAllComponents;
end;

constructor TVkInputAttachmentAspectReference.Create(const aSubpass:TVkUInt32;
                                                     const aInputAttachmentIndex:TVkUInt32;
                                                     const aAspectMask:TVkImageAspectFlags);
begin
 subpass:=aSubpass;
 inputAttachmentIndex:=aInputAttachmentIndex;
 aspectMask:=aAspectMask;
end;

constructor TVkRenderPassInputAttachmentAspectCreateInfo.Create(const aAspectReferenceCount:TVkUInt32;
                                                                const aPAspectReferences:PVkInputAttachmentAspectReference);
begin
 sType:=VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO;
 pNext:=nil;
 aspectReferenceCount:=aAspectReferenceCount;
 pAspectReferences:=aPAspectReferences;
end;

constructor TVkPhysicalDeviceSurfaceInfo2KHR.Create(const aSurface:TVkSurfaceKHR);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR;
 pNext:=nil;
 surface:=aSurface;
end;

constructor TVkSurfaceCapabilities2KHR.Create(const aSurfaceCapabilities:TVkSurfaceCapabilitiesKHR);
begin
 sType:=VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR;
 pNext:=nil;
 surfaceCapabilities:=aSurfaceCapabilities;
end;

constructor TVkSurfaceFormat2KHR.Create(const aSurfaceFormat:TVkSurfaceFormatKHR);
begin
 sType:=VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR;
 pNext:=nil;
 surfaceFormat:=aSurfaceFormat;
end;

constructor TVkDisplayProperties2KHR.Create(const aDisplayProperties:TVkDisplayPropertiesKHR);
begin
 sType:=VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR;
 pNext:=nil;
 displayProperties:=aDisplayProperties;
end;

constructor TVkDisplayPlaneProperties2KHR.Create(const aDisplayPlaneProperties:TVkDisplayPlanePropertiesKHR);
begin
 sType:=VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR;
 pNext:=nil;
 displayPlaneProperties:=aDisplayPlaneProperties;
end;

constructor TVkDisplayModeProperties2KHR.Create(const aDisplayModeProperties:TVkDisplayModePropertiesKHR);
begin
 sType:=VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR;
 pNext:=nil;
 displayModeProperties:=aDisplayModeProperties;
end;

constructor TVkDisplayPlaneInfo2KHR.Create(const aMode:TVkDisplayModeKHR;
                                           const aPlaneIndex:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR;
 pNext:=nil;
 mode:=aMode;
 planeIndex:=aPlaneIndex;
end;

constructor TVkDisplayPlaneCapabilities2KHR.Create(const aCapabilities:TVkDisplayPlaneCapabilitiesKHR);
begin
 sType:=VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR;
 pNext:=nil;
 capabilities:=aCapabilities;
end;

constructor TVkSharedPresentSurfaceCapabilitiesKHR.Create(const aSharedPresentSupportedUsageFlags:TVkImageUsageFlags);
begin
 sType:=VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR;
 pNext:=nil;
 sharedPresentSupportedUsageFlags:=aSharedPresentSupportedUsageFlags;
end;

constructor TVkPhysicalDevice16BitStorageFeatures.Create(const aStorageBuffer16BitAccess:TVkBool32;
                                                         const aUniformAndStorageBuffer16BitAccess:TVkBool32;
                                                         const aStoragePushConstant16:TVkBool32;
                                                         const aStorageInputOutput16:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES;
 pNext:=nil;
 storageBuffer16BitAccess:=aStorageBuffer16BitAccess;
 uniformAndStorageBuffer16BitAccess:=aUniformAndStorageBuffer16BitAccess;
 storagePushConstant16:=aStoragePushConstant16;
 storageInputOutput16:=aStorageInputOutput16;
end;

constructor TVkPhysicalDeviceSubgroupProperties.Create(const aSubgroupSize:TVkUInt32;
                                                       const aSupportedStages:TVkShaderStageFlags;
                                                       const aSupportedOperations:TVkSubgroupFeatureFlags;
                                                       const aQuadOperationsInAllStages:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES;
 pNext:=nil;
 subgroupSize:=aSubgroupSize;
 supportedStages:=aSupportedStages;
 supportedOperations:=aSupportedOperations;
 quadOperationsInAllStages:=aQuadOperationsInAllStages;
end;

constructor TVkPhysicalDeviceShaderSubgroupExtendedTypesFeatures.Create(const aShaderSubgroupExtendedTypes:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES;
 pNext:=nil;
 shaderSubgroupExtendedTypes:=aShaderSubgroupExtendedTypes;
end;

constructor TVkBufferMemoryRequirementsInfo2.Create(const aBuffer:TVkBuffer);
begin
 sType:=VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2;
 pNext:=nil;
 buffer:=aBuffer;
end;

constructor TVkDeviceBufferMemoryRequirements.Create(const aPCreateInfo:PVkBufferCreateInfo);
begin
 sType:=VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS;
 pNext:=nil;
 pCreateInfo:=aPCreateInfo;
end;

constructor TVkImageMemoryRequirementsInfo2.Create(const aImage:TVkImage);
begin
 sType:=VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2;
 pNext:=nil;
 image:=aImage;
end;

constructor TVkImageSparseMemoryRequirementsInfo2.Create(const aImage:TVkImage);
begin
 sType:=VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2;
 pNext:=nil;
 image:=aImage;
end;

constructor TVkDeviceImageMemoryRequirements.Create(const aPCreateInfo:PVkImageCreateInfo;
                                                    const aPlaneAspect:TVkImageAspectFlagBits);
begin
 sType:=VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS;
 pNext:=nil;
 pCreateInfo:=aPCreateInfo;
 planeAspect:=aPlaneAspect;
end;

constructor TVkMemoryRequirements2.Create(const aMemoryRequirements:TVkMemoryRequirements);
begin
 sType:=VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2;
 pNext:=nil;
 memoryRequirements:=aMemoryRequirements;
end;

constructor TVkSparseImageMemoryRequirements2.Create(const aMemoryRequirements:TVkSparseImageMemoryRequirements);
begin
 sType:=VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2;
 pNext:=nil;
 memoryRequirements:=aMemoryRequirements;
end;

constructor TVkPhysicalDevicePointClippingProperties.Create(const aPointClippingBehavior:TVkPointClippingBehavior);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES;
 pNext:=nil;
 pointClippingBehavior:=aPointClippingBehavior;
end;

constructor TVkMemoryDedicatedRequirements.Create(const aPrefersDedicatedAllocation:TVkBool32;
                                                  const aRequiresDedicatedAllocation:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS;
 pNext:=nil;
 prefersDedicatedAllocation:=aPrefersDedicatedAllocation;
 requiresDedicatedAllocation:=aRequiresDedicatedAllocation;
end;

constructor TVkMemoryDedicatedAllocateInfo.Create(const aImage:TVkImage;
                                                  const aBuffer:TVkBuffer);
begin
 sType:=VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO;
 pNext:=nil;
 image:=aImage;
 buffer:=aBuffer;
end;

constructor TVkImageViewUsageCreateInfo.Create(const aUsage:TVkImageUsageFlags);
begin
 sType:=VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO;
 pNext:=nil;
 usage:=aUsage;
end;

constructor TVkImageViewSlicedCreateInfoEXT.Create(const aSliceOffset:TVkUInt32;
                                                   const aSliceCount:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_IMAGE_VIEW_SLICED_CREATE_INFO_EXT;
 pNext:=nil;
 sliceOffset:=aSliceOffset;
 sliceCount:=aSliceCount;
end;

constructor TVkPipelineTessellationDomainOriginStateCreateInfo.Create(const aDomainOrigin:TVkTessellationDomainOrigin);
begin
 sType:=VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO;
 pNext:=nil;
 domainOrigin:=aDomainOrigin;
end;

constructor TVkSamplerYcbcrConversionInfo.Create(const aConversion:TVkSamplerYcbcrConversion);
begin
 sType:=VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO;
 pNext:=nil;
 conversion:=aConversion;
end;

constructor TVkSamplerYcbcrConversionCreateInfo.Create(const aFormat:TVkFormat;
                                                       const aYcbcrModel:TVkSamplerYcbcrModelConversion;
                                                       const aYcbcrRange:TVkSamplerYcbcrRange;
                                                       const aComponents:TVkComponentMapping;
                                                       const aXChromaOffset:TVkChromaLocation;
                                                       const aYChromaOffset:TVkChromaLocation;
                                                       const aChromaFilter:TVkFilter;
                                                       const aForceExplicitReconstruction:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO;
 pNext:=nil;
 format:=aFormat;
 ycbcrModel:=aYcbcrModel;
 ycbcrRange:=aYcbcrRange;
 components:=aComponents;
 xChromaOffset:=aXChromaOffset;
 yChromaOffset:=aYChromaOffset;
 chromaFilter:=aChromaFilter;
 forceExplicitReconstruction:=aForceExplicitReconstruction;
end;

constructor TVkBindImagePlaneMemoryInfo.Create(const aPlaneAspect:TVkImageAspectFlagBits);
begin
 sType:=VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO;
 pNext:=nil;
 planeAspect:=aPlaneAspect;
end;

constructor TVkImagePlaneMemoryRequirementsInfo.Create(const aPlaneAspect:TVkImageAspectFlagBits);
begin
 sType:=VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO;
 pNext:=nil;
 planeAspect:=aPlaneAspect;
end;

constructor TVkPhysicalDeviceSamplerYcbcrConversionFeatures.Create(const aSamplerYcbcrConversion:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES;
 pNext:=nil;
 samplerYcbcrConversion:=aSamplerYcbcrConversion;
end;

constructor TVkSamplerYcbcrConversionImageFormatProperties.Create(const aCombinedImageSamplerDescriptorCount:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES;
 pNext:=nil;
 combinedImageSamplerDescriptorCount:=aCombinedImageSamplerDescriptorCount;
end;

constructor TVkTextureLODGatherFormatPropertiesAMD.Create(const aSupportsTextureGatherLODBiasAMD:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD;
 pNext:=nil;
 supportsTextureGatherLODBiasAMD:=aSupportsTextureGatherLODBiasAMD;
end;

constructor TVkConditionalRenderingBeginInfoEXT.Create(const aBuffer:TVkBuffer;
                                                       const aOffset:TVkDeviceSize;
                                                       const aFlags:TVkConditionalRenderingFlagsEXT);
begin
 sType:=VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT;
 pNext:=nil;
 buffer:=aBuffer;
 offset:=aOffset;
 flags:=aFlags;
end;

constructor TVkProtectedSubmitInfo.Create(const aProtectedSubmit:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO;
 pNext:=nil;
 protectedSubmit:=aProtectedSubmit;
end;

constructor TVkPhysicalDeviceProtectedMemoryFeatures.Create(const aProtectedMemory:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES;
 pNext:=nil;
 protectedMemory:=aProtectedMemory;
end;

constructor TVkPhysicalDeviceProtectedMemoryProperties.Create(const aProtectedNoFault:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES;
 pNext:=nil;
 protectedNoFault:=aProtectedNoFault;
end;

constructor TVkDeviceQueueInfo2.Create(const aFlags:TVkDeviceQueueCreateFlags;
                                       const aQueueFamilyIndex:TVkUInt32;
                                       const aQueueIndex:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2;
 pNext:=nil;
 flags:=aFlags;
 queueFamilyIndex:=aQueueFamilyIndex;
 queueIndex:=aQueueIndex;
end;

constructor TVkPipelineCoverageToColorStateCreateInfoNV.Create(const aFlags:TVkPipelineCoverageToColorStateCreateFlagsNV;
                                                               const aCoverageToColorEnable:TVkBool32;
                                                               const aCoverageToColorLocation:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV;
 pNext:=nil;
 flags:=aFlags;
 coverageToColorEnable:=aCoverageToColorEnable;
 coverageToColorLocation:=aCoverageToColorLocation;
end;

constructor TVkPhysicalDeviceSamplerFilterMinmaxProperties.Create(const aFilterMinmaxSingleComponentFormats:TVkBool32;
                                                                  const aFilterMinmaxImageComponentMapping:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES;
 pNext:=nil;
 filterMinmaxSingleComponentFormats:=aFilterMinmaxSingleComponentFormats;
 filterMinmaxImageComponentMapping:=aFilterMinmaxImageComponentMapping;
end;

constructor TVkSampleLocationEXT.Create(const aX:TVkFloat;
                                        const aY:TVkFloat);
begin
 x:=aX;
 y:=aY;
end;

constructor TVkSampleLocationsInfoEXT.Create(const aSampleLocationsPerPixel:TVkSampleCountFlagBits;
                                             const aSampleLocationGridSize:TVkExtent2D;
                                             const aSampleLocationsCount:TVkUInt32;
                                             const aPSampleLocations:PVkSampleLocationEXT);
begin
 sType:=VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT;
 pNext:=nil;
 sampleLocationsPerPixel:=aSampleLocationsPerPixel;
 sampleLocationGridSize:=aSampleLocationGridSize;
 sampleLocationsCount:=aSampleLocationsCount;
 pSampleLocations:=aPSampleLocations;
end;

constructor TVkAttachmentSampleLocationsEXT.Create(const aAttachmentIndex:TVkUInt32;
                                                   const aSampleLocationsInfo:TVkSampleLocationsInfoEXT);
begin
 attachmentIndex:=aAttachmentIndex;
 sampleLocationsInfo:=aSampleLocationsInfo;
end;

constructor TVkSubpassSampleLocationsEXT.Create(const aSubpassIndex:TVkUInt32;
                                                const aSampleLocationsInfo:TVkSampleLocationsInfoEXT);
begin
 subpassIndex:=aSubpassIndex;
 sampleLocationsInfo:=aSampleLocationsInfo;
end;

constructor TVkRenderPassSampleLocationsBeginInfoEXT.Create(const aAttachmentInitialSampleLocationsCount:TVkUInt32;
                                                            const aPAttachmentInitialSampleLocations:PVkAttachmentSampleLocationsEXT;
                                                            const aPostSubpassSampleLocationsCount:TVkUInt32;
                                                            const aPPostSubpassSampleLocations:PVkSubpassSampleLocationsEXT);
begin
 sType:=VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT;
 pNext:=nil;
 attachmentInitialSampleLocationsCount:=aAttachmentInitialSampleLocationsCount;
 pAttachmentInitialSampleLocations:=aPAttachmentInitialSampleLocations;
 postSubpassSampleLocationsCount:=aPostSubpassSampleLocationsCount;
 pPostSubpassSampleLocations:=aPPostSubpassSampleLocations;
end;

constructor TVkPipelineSampleLocationsStateCreateInfoEXT.Create(const aSampleLocationsEnable:TVkBool32;
                                                                const aSampleLocationsInfo:TVkSampleLocationsInfoEXT);
begin
 sType:=VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT;
 pNext:=nil;
 sampleLocationsEnable:=aSampleLocationsEnable;
 sampleLocationsInfo:=aSampleLocationsInfo;
end;

constructor TVkPhysicalDeviceSampleLocationsPropertiesEXT.Create(const aSampleLocationSampleCounts:TVkSampleCountFlags;
                                                                 const aMaxSampleLocationGridSize:TVkExtent2D;
                                                                 const aSampleLocationCoordinateRange:array of TVkFloat;
                                                                 const aSampleLocationSubPixelBits:TVkUInt32;
                                                                 const aVariableSampleLocations:TVkBool32);
var ArrayItemCount:TVkInt32;
begin
 FillChar(self,SizeOf(TVkPhysicalDeviceSampleLocationsPropertiesEXT),#0);
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT;
 pNext:=nil;
 sampleLocationSampleCounts:=aSampleLocationSampleCounts;
 maxSampleLocationGridSize:=aMaxSampleLocationGridSize;
 ArrayItemCount:=length(aSampleLocationCoordinateRange);
 if ArrayItemCount>length(sampleLocationCoordinateRange) then begin
  ArrayItemCount:=length(sampleLocationCoordinateRange);
 end;
 if ArrayItemCount>0 then begin
  Move(aSampleLocationCoordinateRange[0],sampleLocationCoordinateRange[0],ArrayItemCount*SizeOf(TVkFloat));
 end;
 sampleLocationSubPixelBits:=aSampleLocationSubPixelBits;
 variableSampleLocations:=aVariableSampleLocations;
end;

constructor TVkMultisamplePropertiesEXT.Create(const aMaxSampleLocationGridSize:TVkExtent2D);
begin
 sType:=VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT;
 pNext:=nil;
 maxSampleLocationGridSize:=aMaxSampleLocationGridSize;
end;

constructor TVkSamplerReductionModeCreateInfo.Create(const aReductionMode:TVkSamplerReductionMode);
begin
 sType:=VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO;
 pNext:=nil;
 reductionMode:=aReductionMode;
end;

constructor TVkPhysicalDeviceBlendOperationAdvancedFeaturesEXT.Create(const aAdvancedBlendCoherentOperations:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT;
 pNext:=nil;
 advancedBlendCoherentOperations:=aAdvancedBlendCoherentOperations;
end;

constructor TVkPhysicalDeviceMultiDrawFeaturesEXT.Create(const aMultiDraw:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT;
 pNext:=nil;
 multiDraw:=aMultiDraw;
end;

constructor TVkPhysicalDeviceBlendOperationAdvancedPropertiesEXT.Create(const aAdvancedBlendMaxColorAttachments:TVkUInt32;
                                                                        const aAdvancedBlendIndependentBlend:TVkBool32;
                                                                        const aAdvancedBlendNonPremultipliedSrcColor:TVkBool32;
                                                                        const aAdvancedBlendNonPremultipliedDstColor:TVkBool32;
                                                                        const aAdvancedBlendCorrelatedOverlap:TVkBool32;
                                                                        const aAdvancedBlendAllOperations:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT;
 pNext:=nil;
 advancedBlendMaxColorAttachments:=aAdvancedBlendMaxColorAttachments;
 advancedBlendIndependentBlend:=aAdvancedBlendIndependentBlend;
 advancedBlendNonPremultipliedSrcColor:=aAdvancedBlendNonPremultipliedSrcColor;
 advancedBlendNonPremultipliedDstColor:=aAdvancedBlendNonPremultipliedDstColor;
 advancedBlendCorrelatedOverlap:=aAdvancedBlendCorrelatedOverlap;
 advancedBlendAllOperations:=aAdvancedBlendAllOperations;
end;

constructor TVkPipelineColorBlendAdvancedStateCreateInfoEXT.Create(const aSrcPremultiplied:TVkBool32;
                                                                   const aDstPremultiplied:TVkBool32;
                                                                   const aBlendOverlap:TVkBlendOverlapEXT);
begin
 sType:=VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT;
 pNext:=nil;
 srcPremultiplied:=aSrcPremultiplied;
 dstPremultiplied:=aDstPremultiplied;
 blendOverlap:=aBlendOverlap;
end;

constructor TVkPhysicalDeviceInlineUniformBlockFeatures.Create(const aInlineUniformBlock:TVkBool32;
                                                               const aDescriptorBindingInlineUniformBlockUpdateAfterBind:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES;
 pNext:=nil;
 inlineUniformBlock:=aInlineUniformBlock;
 descriptorBindingInlineUniformBlockUpdateAfterBind:=aDescriptorBindingInlineUniformBlockUpdateAfterBind;
end;

constructor TVkPhysicalDeviceInlineUniformBlockProperties.Create(const aMaxInlineUniformBlockSize:TVkUInt32;
                                                                 const aMaxPerStageDescriptorInlineUniformBlocks:TVkUInt32;
                                                                 const aMaxPerStageDescriptorUpdateAfterBindInlineUniformBlocks:TVkUInt32;
                                                                 const aMaxDescriptorSetInlineUniformBlocks:TVkUInt32;
                                                                 const aMaxDescriptorSetUpdateAfterBindInlineUniformBlocks:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES;
 pNext:=nil;
 maxInlineUniformBlockSize:=aMaxInlineUniformBlockSize;
 maxPerStageDescriptorInlineUniformBlocks:=aMaxPerStageDescriptorInlineUniformBlocks;
 maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks:=aMaxPerStageDescriptorUpdateAfterBindInlineUniformBlocks;
 maxDescriptorSetInlineUniformBlocks:=aMaxDescriptorSetInlineUniformBlocks;
 maxDescriptorSetUpdateAfterBindInlineUniformBlocks:=aMaxDescriptorSetUpdateAfterBindInlineUniformBlocks;
end;

constructor TVkWriteDescriptorSetInlineUniformBlock.Create(const aDataSize:TVkUInt32;
                                                           const aPData:PVkVoid);
begin
 sType:=VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK;
 pNext:=nil;
 dataSize:=aDataSize;
 pData:=aPData;
end;

constructor TVkDescriptorPoolInlineUniformBlockCreateInfo.Create(const aMaxInlineUniformBlockBindings:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO;
 pNext:=nil;
 maxInlineUniformBlockBindings:=aMaxInlineUniformBlockBindings;
end;

constructor TVkPipelineCoverageModulationStateCreateInfoNV.Create(const aFlags:TVkPipelineCoverageModulationStateCreateFlagsNV;
                                                                  const aCoverageModulationMode:TVkCoverageModulationModeNV;
                                                                  const aCoverageModulationTableEnable:TVkBool32;
                                                                  const aCoverageModulationTableCount:TVkUInt32;
                                                                  const aPCoverageModulationTable:PVkFloat);
begin
 sType:=VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV;
 pNext:=nil;
 flags:=aFlags;
 coverageModulationMode:=aCoverageModulationMode;
 coverageModulationTableEnable:=aCoverageModulationTableEnable;
 coverageModulationTableCount:=aCoverageModulationTableCount;
 pCoverageModulationTable:=aPCoverageModulationTable;
end;

constructor TVkImageFormatListCreateInfo.Create(const aViewFormatCount:TVkUInt32;
                                                const aPViewFormats:PVkFormat);
begin
 sType:=VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO;
 pNext:=nil;
 viewFormatCount:=aViewFormatCount;
 pViewFormats:=aPViewFormats;
end;

constructor TVkValidationCacheCreateInfoEXT.Create(const aFlags:TVkValidationCacheCreateFlagsEXT;
                                                   const aInitialDataSize:TVkSize;
                                                   const aPInitialData:PVkVoid);
begin
 sType:=VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT;
 pNext:=nil;
 flags:=aFlags;
 initialDataSize:=aInitialDataSize;
 pInitialData:=aPInitialData;
end;

constructor TVkShaderModuleValidationCacheCreateInfoEXT.Create(const aValidationCache:TVkValidationCacheEXT);
begin
 sType:=VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT;
 pNext:=nil;
 validationCache:=aValidationCache;
end;

constructor TVkPhysicalDeviceMaintenance3Properties.Create(const aMaxPerSetDescriptors:TVkUInt32;
                                                           const aMaxMemoryAllocationSize:TVkDeviceSize);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES;
 pNext:=nil;
 maxPerSetDescriptors:=aMaxPerSetDescriptors;
 maxMemoryAllocationSize:=aMaxMemoryAllocationSize;
end;

constructor TVkPhysicalDeviceMaintenance4Features.Create(const aMaintenance4:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES;
 pNext:=nil;
 maintenance4:=aMaintenance4;
end;

constructor TVkPhysicalDeviceMaintenance4Properties.Create(const aMaxBufferSize:TVkDeviceSize);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES;
 pNext:=nil;
 maxBufferSize:=aMaxBufferSize;
end;

constructor TVkPhysicalDeviceMaintenance5FeaturesKHR.Create(const aMaintenance5:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR;
 pNext:=nil;
 maintenance5:=aMaintenance5;
end;

constructor TVkPhysicalDeviceMaintenance5PropertiesKHR.Create(const aEarlyFragmentMultisampleCoverageAfterSampleCounting:TVkBool32;
                                                              const aEarlyFragmentSampleMaskTestBeforeSampleCounting:TVkBool32;
                                                              const aDepthStencilSwizzleOneSupport:TVkBool32;
                                                              const aPolygonModePointSize:TVkBool32;
                                                              const aNonStrictSinglePixelWideLinesUseParallelogram:TVkBool32;
                                                              const aNonStrictWideLinesUseParallelogram:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR;
 pNext:=nil;
 earlyFragmentMultisampleCoverageAfterSampleCounting:=aEarlyFragmentMultisampleCoverageAfterSampleCounting;
 earlyFragmentSampleMaskTestBeforeSampleCounting:=aEarlyFragmentSampleMaskTestBeforeSampleCounting;
 depthStencilSwizzleOneSupport:=aDepthStencilSwizzleOneSupport;
 polygonModePointSize:=aPolygonModePointSize;
 nonStrictSinglePixelWideLinesUseParallelogram:=aNonStrictSinglePixelWideLinesUseParallelogram;
 nonStrictWideLinesUseParallelogram:=aNonStrictWideLinesUseParallelogram;
end;

constructor TVkRenderingAreaInfoKHR.Create(const aViewMask:TVkUInt32;
                                           const aColorAttachmentCount:TVkUInt32;
                                           const aPColorAttachmentFormats:PVkFormat;
                                           const aDepthAttachmentFormat:TVkFormat;
                                           const aStencilAttachmentFormat:TVkFormat);
begin
 sType:=VK_STRUCTURE_TYPE_RENDERING_AREA_INFO_KHR;
 pNext:=nil;
 viewMask:=aViewMask;
 colorAttachmentCount:=aColorAttachmentCount;
 pColorAttachmentFormats:=aPColorAttachmentFormats;
 depthAttachmentFormat:=aDepthAttachmentFormat;
 stencilAttachmentFormat:=aStencilAttachmentFormat;
end;

constructor TVkDescriptorSetLayoutSupport.Create(const aSupported:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT;
 pNext:=nil;
 supported:=aSupported;
end;

constructor TVkPhysicalDeviceShaderDrawParametersFeatures.Create(const aShaderDrawParameters:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES;
 pNext:=nil;
 shaderDrawParameters:=aShaderDrawParameters;
end;

constructor TVkPhysicalDeviceShaderFloat16Int8Features.Create(const aShaderFloat16:TVkBool32;
                                                              const aShaderInt8:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES;
 pNext:=nil;
 shaderFloat16:=aShaderFloat16;
 shaderInt8:=aShaderInt8;
end;

constructor TVkPhysicalDeviceFloatControlsProperties.Create(const aDenormBehaviorIndependence:TVkShaderFloatControlsIndependence;
                                                            const aRoundingModeIndependence:TVkShaderFloatControlsIndependence;
                                                            const aShaderSignedZeroInfNanPreserveFloat16:TVkBool32;
                                                            const aShaderSignedZeroInfNanPreserveFloat32:TVkBool32;
                                                            const aShaderSignedZeroInfNanPreserveFloat64:TVkBool32;
                                                            const aShaderDenormPreserveFloat16:TVkBool32;
                                                            const aShaderDenormPreserveFloat32:TVkBool32;
                                                            const aShaderDenormPreserveFloat64:TVkBool32;
                                                            const aShaderDenormFlushToZeroFloat16:TVkBool32;
                                                            const aShaderDenormFlushToZeroFloat32:TVkBool32;
                                                            const aShaderDenormFlushToZeroFloat64:TVkBool32;
                                                            const aShaderRoundingModeRTEFloat16:TVkBool32;
                                                            const aShaderRoundingModeRTEFloat32:TVkBool32;
                                                            const aShaderRoundingModeRTEFloat64:TVkBool32;
                                                            const aShaderRoundingModeRTZFloat16:TVkBool32;
                                                            const aShaderRoundingModeRTZFloat32:TVkBool32;
                                                            const aShaderRoundingModeRTZFloat64:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES;
 pNext:=nil;
 denormBehaviorIndependence:=aDenormBehaviorIndependence;
 roundingModeIndependence:=aRoundingModeIndependence;
 shaderSignedZeroInfNanPreserveFloat16:=aShaderSignedZeroInfNanPreserveFloat16;
 shaderSignedZeroInfNanPreserveFloat32:=aShaderSignedZeroInfNanPreserveFloat32;
 shaderSignedZeroInfNanPreserveFloat64:=aShaderSignedZeroInfNanPreserveFloat64;
 shaderDenormPreserveFloat16:=aShaderDenormPreserveFloat16;
 shaderDenormPreserveFloat32:=aShaderDenormPreserveFloat32;
 shaderDenormPreserveFloat64:=aShaderDenormPreserveFloat64;
 shaderDenormFlushToZeroFloat16:=aShaderDenormFlushToZeroFloat16;
 shaderDenormFlushToZeroFloat32:=aShaderDenormFlushToZeroFloat32;
 shaderDenormFlushToZeroFloat64:=aShaderDenormFlushToZeroFloat64;
 shaderRoundingModeRTEFloat16:=aShaderRoundingModeRTEFloat16;
 shaderRoundingModeRTEFloat32:=aShaderRoundingModeRTEFloat32;
 shaderRoundingModeRTEFloat64:=aShaderRoundingModeRTEFloat64;
 shaderRoundingModeRTZFloat16:=aShaderRoundingModeRTZFloat16;
 shaderRoundingModeRTZFloat32:=aShaderRoundingModeRTZFloat32;
 shaderRoundingModeRTZFloat64:=aShaderRoundingModeRTZFloat64;
end;

constructor TVkPhysicalDeviceHostQueryResetFeatures.Create(const aHostQueryReset:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES;
 pNext:=nil;
 hostQueryReset:=aHostQueryReset;
end;

{$ifdef Android}
constructor TVkNativeBufferUsage2ANDROID.Create(const aConsumer:TVkUInt64;
                                                const aProducer:TVkUInt64);
begin
 consumer:=aConsumer;
 producer:=aProducer;
end;
{$endif}

{$ifdef Android}
constructor TVkNativeBufferANDROID.Create(const aHandle:PVkVoid;
                                          const aStride:TVkInt32;
                                          const aFormat:TVkInt32;
                                          const aUsage:TVkInt32;
                                          const aUsage2:TVkNativeBufferUsage2ANDROID);
begin
 sType:=VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID;
 pNext:=nil;
 handle:=aHandle;
 stride:=aStride;
 format:=aFormat;
 usage:=aUsage;
 usage2:=aUsage2;
end;
{$endif}

{$ifdef Android}
constructor TVkSwapchainImageCreateInfoANDROID.Create(const aUsage:TVkSwapchainImageUsageFlagsANDROID);
begin
 sType:=VK_STRUCTURE_TYPE_SWAPCHAIN_IMAGE_CREATE_INFO_ANDROID;
 pNext:=nil;
 usage:=aUsage;
end;
{$endif}

{$ifdef Android}
constructor TVkPhysicalDevicePresentationPropertiesANDROID.Create(const aSharedImage:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENTATION_PROPERTIES_ANDROID;
 pNext:=nil;
 sharedImage:=aSharedImage;
end;
{$endif}

constructor TVkShaderResourceUsageAMD.Create(const aNumUsedVgprs:TVkUInt32;
                                             const aNumUsedSgprs:TVkUInt32;
                                             const aLdsSizePerLocalWorkGroup:TVkUInt32;
                                             const aLdsUsageSizeInBytes:TVkSize;
                                             const aScratchMemUsageInBytes:TVkSize);
begin
 numUsedVgprs:=aNumUsedVgprs;
 numUsedSgprs:=aNumUsedSgprs;
 ldsSizePerLocalWorkGroup:=aLdsSizePerLocalWorkGroup;
 ldsUsageSizeInBytes:=aLdsUsageSizeInBytes;
 scratchMemUsageInBytes:=aScratchMemUsageInBytes;
end;

constructor TVkShaderStatisticsInfoAMD.Create(const aShaderStageMask:TVkShaderStageFlags;
                                              const aResourceUsage:TVkShaderResourceUsageAMD;
                                              const aNumPhysicalVgprs:TVkUInt32;
                                              const aNumPhysicalSgprs:TVkUInt32;
                                              const aNumAvailableVgprs:TVkUInt32;
                                              const aNumAvailableSgprs:TVkUInt32;
                                              const aComputeWorkGroupSize:array of TVkUInt32);
var ArrayItemCount:TVkInt32;
begin
 FillChar(self,SizeOf(TVkShaderStatisticsInfoAMD),#0);
 shaderStageMask:=aShaderStageMask;
 resourceUsage:=aResourceUsage;
 numPhysicalVgprs:=aNumPhysicalVgprs;
 numPhysicalSgprs:=aNumPhysicalSgprs;
 numAvailableVgprs:=aNumAvailableVgprs;
 numAvailableSgprs:=aNumAvailableSgprs;
 ArrayItemCount:=length(aComputeWorkGroupSize);
 if ArrayItemCount>length(computeWorkGroupSize) then begin
  ArrayItemCount:=length(computeWorkGroupSize);
 end;
 if ArrayItemCount>0 then begin
  Move(aComputeWorkGroupSize[0],computeWorkGroupSize[0],ArrayItemCount*SizeOf(TVkUInt32));
 end;
end;

constructor TVkDeviceQueueGlobalPriorityCreateInfoKHR.Create(const aGlobalPriority:TVkQueueGlobalPriorityKHR);
begin
 sType:=VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR;
 pNext:=nil;
 globalPriority:=aGlobalPriority;
end;

constructor TVkPhysicalDeviceGlobalPriorityQueryFeaturesKHR.Create(const aGlobalPriorityQuery:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR;
 pNext:=nil;
 globalPriorityQuery:=aGlobalPriorityQuery;
end;

constructor TVkQueueFamilyGlobalPriorityPropertiesKHR.Create(const aPriorityCount:TVkUInt32;
                                                             const aPriorities:array of TVkQueueGlobalPriorityKHR);
var ArrayItemCount:TVkInt32;
begin
 FillChar(self,SizeOf(TVkQueueFamilyGlobalPriorityPropertiesKHR),#0);
 sType:=VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR;
 pNext:=nil;
 priorityCount:=aPriorityCount;
 ArrayItemCount:=length(aPriorities);
 if ArrayItemCount>length(priorities) then begin
  ArrayItemCount:=length(priorities);
 end;
 if ArrayItemCount>0 then begin
  Move(aPriorities[0],priorities[0],ArrayItemCount*SizeOf(TVkQueueGlobalPriorityKHR));
 end;
end;

constructor TVkDebugUtilsLabelEXT.Create(const aPLabelName:PVkChar;
                                         const aColor:array of TVkFloat);
var ArrayItemCount:TVkInt32;
begin
 FillChar(self,SizeOf(TVkDebugUtilsLabelEXT),#0);
 sType:=VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT;
 pNext:=nil;
 pLabelName:=aPLabelName;
 ArrayItemCount:=length(aColor);
 if ArrayItemCount>length(color) then begin
  ArrayItemCount:=length(color);
 end;
 if ArrayItemCount>0 then begin
  Move(aColor[0],color[0],ArrayItemCount*SizeOf(TVkFloat));
 end;
end;

constructor TVkDebugUtilsObjectTagInfoEXT.Create(const aObjectType:TVkObjectType;
                                                 const aObjectHandle:TVkUInt64;
                                                 const aTagName:TVkUInt64;
                                                 const aTagSize:TVkSize;
                                                 const aPTag:PVkVoid);
begin
 sType:=VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT;
 pNext:=nil;
 objectType:=aObjectType;
 objectHandle:=aObjectHandle;
 tagName:=aTagName;
 tagSize:=aTagSize;
 pTag:=aPTag;
end;

constructor TVkDebugUtilsMessengerCallbackDataEXT.Create(const aFlags:TVkDebugUtilsMessengerCallbackDataFlagsEXT;
                                                         const aPMessageIdName:PVkChar;
                                                         const aMessageIdNumber:TVkInt32;
                                                         const aPMessage:PVkChar;
                                                         const aQueueLabelCount:TVkUInt32;
                                                         const aPQueueLabels:PVkDebugUtilsLabelEXT;
                                                         const aCmdBufLabelCount:TVkUInt32;
                                                         const aPCmdBufLabels:PVkDebugUtilsLabelEXT;
                                                         const aObjectCount:TVkUInt32;
                                                         const aPObjects:PVkDebugUtilsObjectNameInfoEXT);
begin
 sType:=VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT;
 pNext:=nil;
 flags:=aFlags;
 pMessageIdName:=aPMessageIdName;
 messageIdNumber:=aMessageIdNumber;
 pMessage:=aPMessage;
 queueLabelCount:=aQueueLabelCount;
 pQueueLabels:=aPQueueLabels;
 cmdBufLabelCount:=aCmdBufLabelCount;
 pCmdBufLabels:=aPCmdBufLabels;
 objectCount:=aObjectCount;
 pObjects:=aPObjects;
end;

constructor TVkDebugUtilsMessengerCreateInfoEXT.Create(const aFlags:TVkDebugUtilsMessengerCreateFlagsEXT;
                                                       const aMessageSeverity:TVkDebugUtilsMessageSeverityFlagsEXT;
                                                       const aMessageType:TVkDebugUtilsMessageTypeFlagsEXT;
                                                       const aPfnUserCallback:TPFN_vkDebugUtilsMessengerCallbackEXT;
                                                       const aPUserData:PVkVoid);
begin
 sType:=VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT;
 pNext:=nil;
 flags:=aFlags;
 messageSeverity:=aMessageSeverity;
 messageType:=aMessageType;
 pfnUserCallback:=aPfnUserCallback;
 pUserData:=aPUserData;
end;

constructor TVkPhysicalDeviceDeviceMemoryReportFeaturesEXT.Create(const aDeviceMemoryReport:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT;
 pNext:=nil;
 deviceMemoryReport:=aDeviceMemoryReport;
end;

constructor TVkDeviceDeviceMemoryReportCreateInfoEXT.Create(const aFlags:TVkDeviceMemoryReportFlagsEXT;
                                                            const aPfnUserCallback:TPFN_vkDeviceMemoryReportCallbackEXT;
                                                            const aPUserData:PVkVoid);
begin
 sType:=VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT;
 pNext:=nil;
 flags:=aFlags;
 pfnUserCallback:=aPfnUserCallback;
 pUserData:=aPUserData;
end;

constructor TVkImportMemoryHostPointerInfoEXT.Create(const aHandleType:TVkExternalMemoryHandleTypeFlagBits;
                                                     const aPHostPointer:PVkVoid);
begin
 sType:=VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT;
 pNext:=nil;
 handleType:=aHandleType;
 pHostPointer:=aPHostPointer;
end;

constructor TVkMemoryHostPointerPropertiesEXT.Create(const aMemoryTypeBits:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT;
 pNext:=nil;
 memoryTypeBits:=aMemoryTypeBits;
end;

constructor TVkPhysicalDeviceExternalMemoryHostPropertiesEXT.Create(const aMinImportedHostPointerAlignment:TVkDeviceSize);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT;
 pNext:=nil;
 minImportedHostPointerAlignment:=aMinImportedHostPointerAlignment;
end;

constructor TVkPhysicalDeviceConservativeRasterizationPropertiesEXT.Create(const aPrimitiveOverestimationSize:TVkFloat;
                                                                           const aMaxExtraPrimitiveOverestimationSize:TVkFloat;
                                                                           const aExtraPrimitiveOverestimationSizeGranularity:TVkFloat;
                                                                           const aPrimitiveUnderestimation:TVkBool32;
                                                                           const aConservativePointAndLineRasterization:TVkBool32;
                                                                           const aDegenerateTrianglesRasterized:TVkBool32;
                                                                           const aDegenerateLinesRasterized:TVkBool32;
                                                                           const aFullyCoveredFragmentShaderInputVariable:TVkBool32;
                                                                           const aConservativeRasterizationPostDepthCoverage:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT;
 pNext:=nil;
 primitiveOverestimationSize:=aPrimitiveOverestimationSize;
 maxExtraPrimitiveOverestimationSize:=aMaxExtraPrimitiveOverestimationSize;
 extraPrimitiveOverestimationSizeGranularity:=aExtraPrimitiveOverestimationSizeGranularity;
 primitiveUnderestimation:=aPrimitiveUnderestimation;
 conservativePointAndLineRasterization:=aConservativePointAndLineRasterization;
 degenerateTrianglesRasterized:=aDegenerateTrianglesRasterized;
 degenerateLinesRasterized:=aDegenerateLinesRasterized;
 fullyCoveredFragmentShaderInputVariable:=aFullyCoveredFragmentShaderInputVariable;
 conservativeRasterizationPostDepthCoverage:=aConservativeRasterizationPostDepthCoverage;
end;

constructor TVkCalibratedTimestampInfoEXT.Create(const aTimeDomain:TVkTimeDomainEXT);
begin
 sType:=VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT;
 pNext:=nil;
 timeDomain:=aTimeDomain;
end;

constructor TVkPhysicalDeviceShaderCorePropertiesAMD.Create(const aShaderEngineCount:TVkUInt32;
                                                            const aShaderArraysPerEngineCount:TVkUInt32;
                                                            const aComputeUnitsPerShaderArray:TVkUInt32;
                                                            const aSimdPerComputeUnit:TVkUInt32;
                                                            const aWavefrontsPerSimd:TVkUInt32;
                                                            const aWavefrontSize:TVkUInt32;
                                                            const aSgprsPerSimd:TVkUInt32;
                                                            const aMinSgprAllocation:TVkUInt32;
                                                            const aMaxSgprAllocation:TVkUInt32;
                                                            const aSgprAllocationGranularity:TVkUInt32;
                                                            const aVgprsPerSimd:TVkUInt32;
                                                            const aMinVgprAllocation:TVkUInt32;
                                                            const aMaxVgprAllocation:TVkUInt32;
                                                            const aVgprAllocationGranularity:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD;
 pNext:=nil;
 shaderEngineCount:=aShaderEngineCount;
 shaderArraysPerEngineCount:=aShaderArraysPerEngineCount;
 computeUnitsPerShaderArray:=aComputeUnitsPerShaderArray;
 simdPerComputeUnit:=aSimdPerComputeUnit;
 wavefrontsPerSimd:=aWavefrontsPerSimd;
 wavefrontSize:=aWavefrontSize;
 sgprsPerSimd:=aSgprsPerSimd;
 minSgprAllocation:=aMinSgprAllocation;
 maxSgprAllocation:=aMaxSgprAllocation;
 sgprAllocationGranularity:=aSgprAllocationGranularity;
 vgprsPerSimd:=aVgprsPerSimd;
 minVgprAllocation:=aMinVgprAllocation;
 maxVgprAllocation:=aMaxVgprAllocation;
 vgprAllocationGranularity:=aVgprAllocationGranularity;
end;

constructor TVkPhysicalDeviceShaderCoreProperties2AMD.Create(const aShaderCoreFeatures:TVkShaderCorePropertiesFlagsAMD;
                                                             const aActiveComputeUnitCount:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD;
 pNext:=nil;
 shaderCoreFeatures:=aShaderCoreFeatures;
 activeComputeUnitCount:=aActiveComputeUnitCount;
end;

constructor TVkPipelineRasterizationConservativeStateCreateInfoEXT.Create(const aFlags:TVkPipelineRasterizationConservativeStateCreateFlagsEXT;
                                                                          const aConservativeRasterizationMode:TVkConservativeRasterizationModeEXT;
                                                                          const aExtraPrimitiveOverestimationSize:TVkFloat);
begin
 sType:=VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT;
 pNext:=nil;
 flags:=aFlags;
 conservativeRasterizationMode:=aConservativeRasterizationMode;
 extraPrimitiveOverestimationSize:=aExtraPrimitiveOverestimationSize;
end;

constructor TVkPhysicalDeviceDescriptorIndexingFeatures.Create(const aShaderInputAttachmentArrayDynamicIndexing:TVkBool32;
                                                               const aShaderUniformTexelBufferArrayDynamicIndexing:TVkBool32;
                                                               const aShaderStorageTexelBufferArrayDynamicIndexing:TVkBool32;
                                                               const aShaderUniformBufferArrayNonUniformIndexing:TVkBool32;
                                                               const aShaderSampledImageArrayNonUniformIndexing:TVkBool32;
                                                               const aShaderStorageBufferArrayNonUniformIndexing:TVkBool32;
                                                               const aShaderStorageImageArrayNonUniformIndexing:TVkBool32;
                                                               const aShaderInputAttachmentArrayNonUniformIndexing:TVkBool32;
                                                               const aShaderUniformTexelBufferArrayNonUniformIndexing:TVkBool32;
                                                               const aShaderStorageTexelBufferArrayNonUniformIndexing:TVkBool32;
                                                               const aDescriptorBindingUniformBufferUpdateAfterBind:TVkBool32;
                                                               const aDescriptorBindingSampledImageUpdateAfterBind:TVkBool32;
                                                               const aDescriptorBindingStorageImageUpdateAfterBind:TVkBool32;
                                                               const aDescriptorBindingStorageBufferUpdateAfterBind:TVkBool32;
                                                               const aDescriptorBindingUniformTexelBufferUpdateAfterBind:TVkBool32;
                                                               const aDescriptorBindingStorageTexelBufferUpdateAfterBind:TVkBool32;
                                                               const aDescriptorBindingUpdateUnusedWhilePending:TVkBool32;
                                                               const aDescriptorBindingPartiallyBound:TVkBool32;
                                                               const aDescriptorBindingVariableDescriptorCount:TVkBool32;
                                                               const aRuntimeDescriptorArray:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES;
 pNext:=nil;
 shaderInputAttachmentArrayDynamicIndexing:=aShaderInputAttachmentArrayDynamicIndexing;
 shaderUniformTexelBufferArrayDynamicIndexing:=aShaderUniformTexelBufferArrayDynamicIndexing;
 shaderStorageTexelBufferArrayDynamicIndexing:=aShaderStorageTexelBufferArrayDynamicIndexing;
 shaderUniformBufferArrayNonUniformIndexing:=aShaderUniformBufferArrayNonUniformIndexing;
 shaderSampledImageArrayNonUniformIndexing:=aShaderSampledImageArrayNonUniformIndexing;
 shaderStorageBufferArrayNonUniformIndexing:=aShaderStorageBufferArrayNonUniformIndexing;
 shaderStorageImageArrayNonUniformIndexing:=aShaderStorageImageArrayNonUniformIndexing;
 shaderInputAttachmentArrayNonUniformIndexing:=aShaderInputAttachmentArrayNonUniformIndexing;
 shaderUniformTexelBufferArrayNonUniformIndexing:=aShaderUniformTexelBufferArrayNonUniformIndexing;
 shaderStorageTexelBufferArrayNonUniformIndexing:=aShaderStorageTexelBufferArrayNonUniformIndexing;
 descriptorBindingUniformBufferUpdateAfterBind:=aDescriptorBindingUniformBufferUpdateAfterBind;
 descriptorBindingSampledImageUpdateAfterBind:=aDescriptorBindingSampledImageUpdateAfterBind;
 descriptorBindingStorageImageUpdateAfterBind:=aDescriptorBindingStorageImageUpdateAfterBind;
 descriptorBindingStorageBufferUpdateAfterBind:=aDescriptorBindingStorageBufferUpdateAfterBind;
 descriptorBindingUniformTexelBufferUpdateAfterBind:=aDescriptorBindingUniformTexelBufferUpdateAfterBind;
 descriptorBindingStorageTexelBufferUpdateAfterBind:=aDescriptorBindingStorageTexelBufferUpdateAfterBind;
 descriptorBindingUpdateUnusedWhilePending:=aDescriptorBindingUpdateUnusedWhilePending;
 descriptorBindingPartiallyBound:=aDescriptorBindingPartiallyBound;
 descriptorBindingVariableDescriptorCount:=aDescriptorBindingVariableDescriptorCount;
 runtimeDescriptorArray:=aRuntimeDescriptorArray;
end;

constructor TVkPhysicalDeviceDescriptorIndexingProperties.Create(const aMaxUpdateAfterBindDescriptorsInAllPools:TVkUInt32;
                                                                 const aShaderUniformBufferArrayNonUniformIndexingNative:TVkBool32;
                                                                 const aShaderSampledImageArrayNonUniformIndexingNative:TVkBool32;
                                                                 const aShaderStorageBufferArrayNonUniformIndexingNative:TVkBool32;
                                                                 const aShaderStorageImageArrayNonUniformIndexingNative:TVkBool32;
                                                                 const aShaderInputAttachmentArrayNonUniformIndexingNative:TVkBool32;
                                                                 const aRobustBufferAccessUpdateAfterBind:TVkBool32;
                                                                 const aQuadDivergentImplicitLod:TVkBool32;
                                                                 const aMaxPerStageDescriptorUpdateAfterBindSamplers:TVkUInt32;
                                                                 const aMaxPerStageDescriptorUpdateAfterBindUniformBuffers:TVkUInt32;
                                                                 const aMaxPerStageDescriptorUpdateAfterBindStorageBuffers:TVkUInt32;
                                                                 const aMaxPerStageDescriptorUpdateAfterBindSampledImages:TVkUInt32;
                                                                 const aMaxPerStageDescriptorUpdateAfterBindStorageImages:TVkUInt32;
                                                                 const aMaxPerStageDescriptorUpdateAfterBindInputAttachments:TVkUInt32;
                                                                 const aMaxPerStageUpdateAfterBindResources:TVkUInt32;
                                                                 const aMaxDescriptorSetUpdateAfterBindSamplers:TVkUInt32;
                                                                 const aMaxDescriptorSetUpdateAfterBindUniformBuffers:TVkUInt32;
                                                                 const aMaxDescriptorSetUpdateAfterBindUniformBuffersDynamic:TVkUInt32;
                                                                 const aMaxDescriptorSetUpdateAfterBindStorageBuffers:TVkUInt32;
                                                                 const aMaxDescriptorSetUpdateAfterBindStorageBuffersDynamic:TVkUInt32;
                                                                 const aMaxDescriptorSetUpdateAfterBindSampledImages:TVkUInt32;
                                                                 const aMaxDescriptorSetUpdateAfterBindStorageImages:TVkUInt32;
                                                                 const aMaxDescriptorSetUpdateAfterBindInputAttachments:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES;
 pNext:=nil;
 maxUpdateAfterBindDescriptorsInAllPools:=aMaxUpdateAfterBindDescriptorsInAllPools;
 shaderUniformBufferArrayNonUniformIndexingNative:=aShaderUniformBufferArrayNonUniformIndexingNative;
 shaderSampledImageArrayNonUniformIndexingNative:=aShaderSampledImageArrayNonUniformIndexingNative;
 shaderStorageBufferArrayNonUniformIndexingNative:=aShaderStorageBufferArrayNonUniformIndexingNative;
 shaderStorageImageArrayNonUniformIndexingNative:=aShaderStorageImageArrayNonUniformIndexingNative;
 shaderInputAttachmentArrayNonUniformIndexingNative:=aShaderInputAttachmentArrayNonUniformIndexingNative;
 robustBufferAccessUpdateAfterBind:=aRobustBufferAccessUpdateAfterBind;
 quadDivergentImplicitLod:=aQuadDivergentImplicitLod;
 maxPerStageDescriptorUpdateAfterBindSamplers:=aMaxPerStageDescriptorUpdateAfterBindSamplers;
 maxPerStageDescriptorUpdateAfterBindUniformBuffers:=aMaxPerStageDescriptorUpdateAfterBindUniformBuffers;
 maxPerStageDescriptorUpdateAfterBindStorageBuffers:=aMaxPerStageDescriptorUpdateAfterBindStorageBuffers;
 maxPerStageDescriptorUpdateAfterBindSampledImages:=aMaxPerStageDescriptorUpdateAfterBindSampledImages;
 maxPerStageDescriptorUpdateAfterBindStorageImages:=aMaxPerStageDescriptorUpdateAfterBindStorageImages;
 maxPerStageDescriptorUpdateAfterBindInputAttachments:=aMaxPerStageDescriptorUpdateAfterBindInputAttachments;
 maxPerStageUpdateAfterBindResources:=aMaxPerStageUpdateAfterBindResources;
 maxDescriptorSetUpdateAfterBindSamplers:=aMaxDescriptorSetUpdateAfterBindSamplers;
 maxDescriptorSetUpdateAfterBindUniformBuffers:=aMaxDescriptorSetUpdateAfterBindUniformBuffers;
 maxDescriptorSetUpdateAfterBindUniformBuffersDynamic:=aMaxDescriptorSetUpdateAfterBindUniformBuffersDynamic;
 maxDescriptorSetUpdateAfterBindStorageBuffers:=aMaxDescriptorSetUpdateAfterBindStorageBuffers;
 maxDescriptorSetUpdateAfterBindStorageBuffersDynamic:=aMaxDescriptorSetUpdateAfterBindStorageBuffersDynamic;
 maxDescriptorSetUpdateAfterBindSampledImages:=aMaxDescriptorSetUpdateAfterBindSampledImages;
 maxDescriptorSetUpdateAfterBindStorageImages:=aMaxDescriptorSetUpdateAfterBindStorageImages;
 maxDescriptorSetUpdateAfterBindInputAttachments:=aMaxDescriptorSetUpdateAfterBindInputAttachments;
end;

constructor TVkDescriptorSetLayoutBindingFlagsCreateInfo.Create(const aBindingCount:TVkUInt32;
                                                                const aPBindingFlags:PVkDescriptorBindingFlags);
begin
 sType:=VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO;
 pNext:=nil;
 bindingCount:=aBindingCount;
 pBindingFlags:=aPBindingFlags;
end;

constructor TVkDescriptorSetVariableDescriptorCountAllocateInfo.Create(const aDescriptorSetCount:TVkUInt32;
                                                                       const aPDescriptorCounts:PVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO;
 pNext:=nil;
 descriptorSetCount:=aDescriptorSetCount;
 pDescriptorCounts:=aPDescriptorCounts;
end;

constructor TVkDescriptorSetVariableDescriptorCountLayoutSupport.Create(const aMaxVariableDescriptorCount:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT;
 pNext:=nil;
 maxVariableDescriptorCount:=aMaxVariableDescriptorCount;
end;

constructor TVkAttachmentDescription2.Create(const aFlags:TVkAttachmentDescriptionFlags;
                                             const aFormat:TVkFormat;
                                             const aSamples:TVkSampleCountFlagBits;
                                             const aLoadOp:TVkAttachmentLoadOp;
                                             const aStoreOp:TVkAttachmentStoreOp;
                                             const aStencilLoadOp:TVkAttachmentLoadOp;
                                             const aStencilStoreOp:TVkAttachmentStoreOp;
                                             const aInitialLayout:TVkImageLayout;
                                             const aFinalLayout:TVkImageLayout);
begin
 sType:=VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2;
 pNext:=nil;
 flags:=aFlags;
 format:=aFormat;
 samples:=aSamples;
 loadOp:=aLoadOp;
 storeOp:=aStoreOp;
 stencilLoadOp:=aStencilLoadOp;
 stencilStoreOp:=aStencilStoreOp;
 initialLayout:=aInitialLayout;
 finalLayout:=aFinalLayout;
end;

constructor TVkAttachmentReference2.Create(const aAttachment:TVkUInt32;
                                           const aLayout:TVkImageLayout;
                                           const aAspectMask:TVkImageAspectFlags);
begin
 sType:=VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2;
 pNext:=nil;
 attachment:=aAttachment;
 layout:=aLayout;
 aspectMask:=aAspectMask;
end;

constructor TVkSubpassDescription2.Create(const aFlags:TVkSubpassDescriptionFlags;
                                          const aPipelineBindPoint:TVkPipelineBindPoint;
                                          const aViewMask:TVkUInt32;
                                          const aInputAttachmentCount:TVkUInt32;
                                          const aPInputAttachments:PVkAttachmentReference2;
                                          const aColorAttachmentCount:TVkUInt32;
                                          const aPColorAttachments:PVkAttachmentReference2;
                                          const aPResolveAttachments:PVkAttachmentReference2;
                                          const aPDepthStencilAttachment:PVkAttachmentReference2;
                                          const aPreserveAttachmentCount:TVkUInt32;
                                          const aPPreserveAttachments:PVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2;
 pNext:=nil;
 flags:=aFlags;
 pipelineBindPoint:=aPipelineBindPoint;
 viewMask:=aViewMask;
 inputAttachmentCount:=aInputAttachmentCount;
 pInputAttachments:=aPInputAttachments;
 colorAttachmentCount:=aColorAttachmentCount;
 pColorAttachments:=aPColorAttachments;
 pResolveAttachments:=aPResolveAttachments;
 pDepthStencilAttachment:=aPDepthStencilAttachment;
 preserveAttachmentCount:=aPreserveAttachmentCount;
 pPreserveAttachments:=aPPreserveAttachments;
end;

constructor TVkSubpassDependency2.Create(const aSrcSubpass:TVkUInt32;
                                         const aDstSubpass:TVkUInt32;
                                         const aSrcStageMask:TVkPipelineStageFlags;
                                         const aDstStageMask:TVkPipelineStageFlags;
                                         const aSrcAccessMask:TVkAccessFlags;
                                         const aDstAccessMask:TVkAccessFlags;
                                         const aDependencyFlags:TVkDependencyFlags;
                                         const aViewOffset:TVkInt32);
begin
 sType:=VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2;
 pNext:=nil;
 srcSubpass:=aSrcSubpass;
 dstSubpass:=aDstSubpass;
 srcStageMask:=aSrcStageMask;
 dstStageMask:=aDstStageMask;
 srcAccessMask:=aSrcAccessMask;
 dstAccessMask:=aDstAccessMask;
 dependencyFlags:=aDependencyFlags;
 viewOffset:=aViewOffset;
end;

constructor TVkRenderPassCreateInfo2.Create(const aFlags:TVkRenderPassCreateFlags;
                                            const aAttachmentCount:TVkUInt32;
                                            const aPAttachments:PVkAttachmentDescription2;
                                            const aSubpassCount:TVkUInt32;
                                            const aPSubpasses:PVkSubpassDescription2;
                                            const aDependencyCount:TVkUInt32;
                                            const aPDependencies:PVkSubpassDependency2;
                                            const aCorrelatedViewMaskCount:TVkUInt32;
                                            const aPCorrelatedViewMasks:PVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2;
 pNext:=nil;
 flags:=aFlags;
 attachmentCount:=aAttachmentCount;
 pAttachments:=aPAttachments;
 subpassCount:=aSubpassCount;
 pSubpasses:=aPSubpasses;
 dependencyCount:=aDependencyCount;
 pDependencies:=aPDependencies;
 correlatedViewMaskCount:=aCorrelatedViewMaskCount;
 pCorrelatedViewMasks:=aPCorrelatedViewMasks;
end;

constructor TVkSubpassBeginInfo.Create(const aContents:TVkSubpassContents);
begin
 sType:=VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO;
 pNext:=nil;
 contents:=aContents;
end;

constructor TVkPhysicalDeviceTimelineSemaphoreFeatures.Create(const aTimelineSemaphore:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES;
 pNext:=nil;
 timelineSemaphore:=aTimelineSemaphore;
end;

constructor TVkPhysicalDeviceTimelineSemaphoreProperties.Create(const aMaxTimelineSemaphoreValueDifference:TVkUInt64);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES;
 pNext:=nil;
 maxTimelineSemaphoreValueDifference:=aMaxTimelineSemaphoreValueDifference;
end;

constructor TVkSemaphoreTypeCreateInfo.Create(const aSemaphoreType:TVkSemaphoreType;
                                              const aInitialValue:TVkUInt64);
begin
 sType:=VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO;
 pNext:=nil;
 semaphoreType:=aSemaphoreType;
 initialValue:=aInitialValue;
end;

constructor TVkTimelineSemaphoreSubmitInfo.Create(const aWaitSemaphoreValueCount:TVkUInt32;
                                                  const aPWaitSemaphoreValues:PVkUInt64;
                                                  const aSignalSemaphoreValueCount:TVkUInt32;
                                                  const aPSignalSemaphoreValues:PVkUInt64);
begin
 sType:=VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO;
 pNext:=nil;
 waitSemaphoreValueCount:=aWaitSemaphoreValueCount;
 pWaitSemaphoreValues:=aPWaitSemaphoreValues;
 signalSemaphoreValueCount:=aSignalSemaphoreValueCount;
 pSignalSemaphoreValues:=aPSignalSemaphoreValues;
end;

constructor TVkSemaphoreWaitInfo.Create(const aFlags:TVkSemaphoreWaitFlags;
                                        const aSemaphoreCount:TVkUInt32;
                                        const aPSemaphores:PVkSemaphore;
                                        const aPValues:PVkUInt64);
begin
 sType:=VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO;
 pNext:=nil;
 flags:=aFlags;
 semaphoreCount:=aSemaphoreCount;
 pSemaphores:=aPSemaphores;
 pValues:=aPValues;
end;

constructor TVkSemaphoreSignalInfo.Create(const aSemaphore:TVkSemaphore;
                                          const aValue:TVkUInt64);
begin
 sType:=VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO;
 pNext:=nil;
 semaphore:=aSemaphore;
 value:=aValue;
end;

constructor TVkVertexInputBindingDivisorDescriptionEXT.Create(const aBinding:TVkUInt32;
                                                              const aDivisor:TVkUInt32);
begin
 binding:=aBinding;
 divisor:=aDivisor;
end;

constructor TVkPipelineVertexInputDivisorStateCreateInfoEXT.Create(const aVertexBindingDivisorCount:TVkUInt32;
                                                                   const aPVertexBindingDivisors:PVkVertexInputBindingDivisorDescriptionEXT);
begin
 sType:=VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT;
 pNext:=nil;
 vertexBindingDivisorCount:=aVertexBindingDivisorCount;
 pVertexBindingDivisors:=aPVertexBindingDivisors;
end;

constructor TVkPhysicalDeviceVertexAttributeDivisorPropertiesEXT.Create(const aMaxVertexAttribDivisor:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT;
 pNext:=nil;
 maxVertexAttribDivisor:=aMaxVertexAttribDivisor;
end;

constructor TVkPhysicalDevicePCIBusInfoPropertiesEXT.Create(const aPciDomain:TVkUInt32;
                                                            const aPciBus:TVkUInt32;
                                                            const aPciDevice:TVkUInt32;
                                                            const aPciFunction:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT;
 pNext:=nil;
 pciDomain:=aPciDomain;
 pciBus:=aPciBus;
 pciDevice:=aPciDevice;
 pciFunction:=aPciFunction;
end;

{$ifdef Android}
constructor TVkImportAndroidHardwareBufferInfoANDROID.Create(const aBuffer:PVkAndroidAHardwareBuffer);
begin
 sType:=VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID;
 pNext:=nil;
 buffer:=aBuffer;
end;
{$endif}

{$ifdef Android}
constructor TVkAndroidHardwareBufferUsageANDROID.Create(const aAndroidHardwareBufferUsage:TVkUInt64);
begin
 sType:=VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID;
 pNext:=nil;
 androidHardwareBufferUsage:=aAndroidHardwareBufferUsage;
end;
{$endif}

{$ifdef Android}
constructor TVkAndroidHardwareBufferPropertiesANDROID.Create(const aAllocationSize:TVkDeviceSize;
                                                             const aMemoryTypeBits:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID;
 pNext:=nil;
 allocationSize:=aAllocationSize;
 memoryTypeBits:=aMemoryTypeBits;
end;
{$endif}

{$ifdef Android}
constructor TVkMemoryGetAndroidHardwareBufferInfoANDROID.Create(const aMemory:TVkDeviceMemory);
begin
 sType:=VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID;
 pNext:=nil;
 memory:=aMemory;
end;
{$endif}

{$ifdef Android}
constructor TVkAndroidHardwareBufferFormatPropertiesANDROID.Create(const aFormat:TVkFormat;
                                                                   const aExternalFormat:TVkUInt64;
                                                                   const aFormatFeatures:TVkFormatFeatureFlags;
                                                                   const aSamplerYcbcrConversionComponents:TVkComponentMapping;
                                                                   const aSuggestedYcbcrModel:TVkSamplerYcbcrModelConversion;
                                                                   const aSuggestedYcbcrRange:TVkSamplerYcbcrRange;
                                                                   const aSuggestedXChromaOffset:TVkChromaLocation;
                                                                   const aSuggestedYChromaOffset:TVkChromaLocation);
begin
 sType:=VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID;
 pNext:=nil;
 format:=aFormat;
 externalFormat:=aExternalFormat;
 formatFeatures:=aFormatFeatures;
 samplerYcbcrConversionComponents:=aSamplerYcbcrConversionComponents;
 suggestedYcbcrModel:=aSuggestedYcbcrModel;
 suggestedYcbcrRange:=aSuggestedYcbcrRange;
 suggestedXChromaOffset:=aSuggestedXChromaOffset;
 suggestedYChromaOffset:=aSuggestedYChromaOffset;
end;
{$endif}

constructor TVkCommandBufferInheritanceConditionalRenderingInfoEXT.Create(const aConditionalRenderingEnable:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT;
 pNext:=nil;
 conditionalRenderingEnable:=aConditionalRenderingEnable;
end;

{$ifdef Android}
constructor TVkExternalFormatANDROID.Create(const aExternalFormat:TVkUInt64);
begin
 sType:=VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID;
 pNext:=nil;
 externalFormat:=aExternalFormat;
end;
{$endif}

constructor TVkPhysicalDevice8BitStorageFeatures.Create(const aStorageBuffer8BitAccess:TVkBool32;
                                                        const aUniformAndStorageBuffer8BitAccess:TVkBool32;
                                                        const aStoragePushConstant8:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES;
 pNext:=nil;
 storageBuffer8BitAccess:=aStorageBuffer8BitAccess;
 uniformAndStorageBuffer8BitAccess:=aUniformAndStorageBuffer8BitAccess;
 storagePushConstant8:=aStoragePushConstant8;
end;

constructor TVkPhysicalDeviceConditionalRenderingFeaturesEXT.Create(const aConditionalRendering:TVkBool32;
                                                                    const aInheritedConditionalRendering:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT;
 pNext:=nil;
 conditionalRendering:=aConditionalRendering;
 inheritedConditionalRendering:=aInheritedConditionalRendering;
end;

constructor TVkPhysicalDeviceVulkanMemoryModelFeatures.Create(const aVulkanMemoryModel:TVkBool32;
                                                              const aVulkanMemoryModelDeviceScope:TVkBool32;
                                                              const aVulkanMemoryModelAvailabilityVisibilityChains:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES;
 pNext:=nil;
 vulkanMemoryModel:=aVulkanMemoryModel;
 vulkanMemoryModelDeviceScope:=aVulkanMemoryModelDeviceScope;
 vulkanMemoryModelAvailabilityVisibilityChains:=aVulkanMemoryModelAvailabilityVisibilityChains;
end;

constructor TVkPhysicalDeviceShaderAtomicInt64Features.Create(const aShaderBufferInt64Atomics:TVkBool32;
                                                              const aShaderSharedInt64Atomics:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES;
 pNext:=nil;
 shaderBufferInt64Atomics:=aShaderBufferInt64Atomics;
 shaderSharedInt64Atomics:=aShaderSharedInt64Atomics;
end;

constructor TVkPhysicalDeviceShaderAtomicFloatFeaturesEXT.Create(const aShaderBufferFloat32Atomics:TVkBool32;
                                                                 const aShaderBufferFloat32AtomicAdd:TVkBool32;
                                                                 const aShaderBufferFloat64Atomics:TVkBool32;
                                                                 const aShaderBufferFloat64AtomicAdd:TVkBool32;
                                                                 const aShaderSharedFloat32Atomics:TVkBool32;
                                                                 const aShaderSharedFloat32AtomicAdd:TVkBool32;
                                                                 const aShaderSharedFloat64Atomics:TVkBool32;
                                                                 const aShaderSharedFloat64AtomicAdd:TVkBool32;
                                                                 const aShaderImageFloat32Atomics:TVkBool32;
                                                                 const aShaderImageFloat32AtomicAdd:TVkBool32;
                                                                 const aSparseImageFloat32Atomics:TVkBool32;
                                                                 const aSparseImageFloat32AtomicAdd:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT;
 pNext:=nil;
 shaderBufferFloat32Atomics:=aShaderBufferFloat32Atomics;
 shaderBufferFloat32AtomicAdd:=aShaderBufferFloat32AtomicAdd;
 shaderBufferFloat64Atomics:=aShaderBufferFloat64Atomics;
 shaderBufferFloat64AtomicAdd:=aShaderBufferFloat64AtomicAdd;
 shaderSharedFloat32Atomics:=aShaderSharedFloat32Atomics;
 shaderSharedFloat32AtomicAdd:=aShaderSharedFloat32AtomicAdd;
 shaderSharedFloat64Atomics:=aShaderSharedFloat64Atomics;
 shaderSharedFloat64AtomicAdd:=aShaderSharedFloat64AtomicAdd;
 shaderImageFloat32Atomics:=aShaderImageFloat32Atomics;
 shaderImageFloat32AtomicAdd:=aShaderImageFloat32AtomicAdd;
 sparseImageFloat32Atomics:=aSparseImageFloat32Atomics;
 sparseImageFloat32AtomicAdd:=aSparseImageFloat32AtomicAdd;
end;

constructor TVkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.Create(const aShaderBufferFloat16Atomics:TVkBool32;
                                                                  const aShaderBufferFloat16AtomicAdd:TVkBool32;
                                                                  const aShaderBufferFloat16AtomicMinMax:TVkBool32;
                                                                  const aShaderBufferFloat32AtomicMinMax:TVkBool32;
                                                                  const aShaderBufferFloat64AtomicMinMax:TVkBool32;
                                                                  const aShaderSharedFloat16Atomics:TVkBool32;
                                                                  const aShaderSharedFloat16AtomicAdd:TVkBool32;
                                                                  const aShaderSharedFloat16AtomicMinMax:TVkBool32;
                                                                  const aShaderSharedFloat32AtomicMinMax:TVkBool32;
                                                                  const aShaderSharedFloat64AtomicMinMax:TVkBool32;
                                                                  const aShaderImageFloat32AtomicMinMax:TVkBool32;
                                                                  const aSparseImageFloat32AtomicMinMax:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT;
 pNext:=nil;
 shaderBufferFloat16Atomics:=aShaderBufferFloat16Atomics;
 shaderBufferFloat16AtomicAdd:=aShaderBufferFloat16AtomicAdd;
 shaderBufferFloat16AtomicMinMax:=aShaderBufferFloat16AtomicMinMax;
 shaderBufferFloat32AtomicMinMax:=aShaderBufferFloat32AtomicMinMax;
 shaderBufferFloat64AtomicMinMax:=aShaderBufferFloat64AtomicMinMax;
 shaderSharedFloat16Atomics:=aShaderSharedFloat16Atomics;
 shaderSharedFloat16AtomicAdd:=aShaderSharedFloat16AtomicAdd;
 shaderSharedFloat16AtomicMinMax:=aShaderSharedFloat16AtomicMinMax;
 shaderSharedFloat32AtomicMinMax:=aShaderSharedFloat32AtomicMinMax;
 shaderSharedFloat64AtomicMinMax:=aShaderSharedFloat64AtomicMinMax;
 shaderImageFloat32AtomicMinMax:=aShaderImageFloat32AtomicMinMax;
 sparseImageFloat32AtomicMinMax:=aSparseImageFloat32AtomicMinMax;
end;

constructor TVkPhysicalDeviceVertexAttributeDivisorFeaturesEXT.Create(const aVertexAttributeInstanceRateDivisor:TVkBool32;
                                                                      const aVertexAttributeInstanceRateZeroDivisor:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT;
 pNext:=nil;
 vertexAttributeInstanceRateDivisor:=aVertexAttributeInstanceRateDivisor;
 vertexAttributeInstanceRateZeroDivisor:=aVertexAttributeInstanceRateZeroDivisor;
end;

constructor TVkQueueFamilyCheckpointPropertiesNV.Create(const aCheckpointExecutionStageMask:TVkPipelineStageFlags);
begin
 sType:=VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV;
 pNext:=nil;
 checkpointExecutionStageMask:=aCheckpointExecutionStageMask;
end;

constructor TVkCheckpointDataNV.Create(const aStage:TVkPipelineStageFlagBits;
                                       const aPCheckpointMarker:PVkVoid);
begin
 sType:=VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV;
 pNext:=nil;
 stage:=aStage;
 pCheckpointMarker:=aPCheckpointMarker;
end;

constructor TVkPhysicalDeviceDepthStencilResolveProperties.Create(const aSupportedDepthResolveModes:TVkResolveModeFlags;
                                                                  const aSupportedStencilResolveModes:TVkResolveModeFlags;
                                                                  const aIndependentResolveNone:TVkBool32;
                                                                  const aIndependentResolve:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES;
 pNext:=nil;
 supportedDepthResolveModes:=aSupportedDepthResolveModes;
 supportedStencilResolveModes:=aSupportedStencilResolveModes;
 independentResolveNone:=aIndependentResolveNone;
 independentResolve:=aIndependentResolve;
end;

constructor TVkSubpassDescriptionDepthStencilResolve.Create(const aDepthResolveMode:TVkResolveModeFlagBits;
                                                            const aStencilResolveMode:TVkResolveModeFlagBits;
                                                            const aPDepthStencilResolveAttachment:PVkAttachmentReference2);
begin
 sType:=VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE;
 pNext:=nil;
 depthResolveMode:=aDepthResolveMode;
 stencilResolveMode:=aStencilResolveMode;
 pDepthStencilResolveAttachment:=aPDepthStencilResolveAttachment;
end;

constructor TVkImageViewASTCDecodeModeEXT.Create(const aDecodeMode:TVkFormat);
begin
 sType:=VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT;
 pNext:=nil;
 decodeMode:=aDecodeMode;
end;

constructor TVkPhysicalDeviceASTCDecodeFeaturesEXT.Create(const aDecodeModeSharedExponent:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT;
 pNext:=nil;
 decodeModeSharedExponent:=aDecodeModeSharedExponent;
end;

constructor TVkPhysicalDeviceTransformFeedbackFeaturesEXT.Create(const aTransformFeedback:TVkBool32;
                                                                 const aGeometryStreams:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT;
 pNext:=nil;
 transformFeedback:=aTransformFeedback;
 geometryStreams:=aGeometryStreams;
end;

constructor TVkPhysicalDeviceTransformFeedbackPropertiesEXT.Create(const aMaxTransformFeedbackStreams:TVkUInt32;
                                                                   const aMaxTransformFeedbackBuffers:TVkUInt32;
                                                                   const aMaxTransformFeedbackBufferSize:TVkDeviceSize;
                                                                   const aMaxTransformFeedbackStreamDataSize:TVkUInt32;
                                                                   const aMaxTransformFeedbackBufferDataSize:TVkUInt32;
                                                                   const aMaxTransformFeedbackBufferDataStride:TVkUInt32;
                                                                   const aTransformFeedbackQueries:TVkBool32;
                                                                   const aTransformFeedbackStreamsLinesTriangles:TVkBool32;
                                                                   const aTransformFeedbackRasterizationStreamSelect:TVkBool32;
                                                                   const aTransformFeedbackDraw:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT;
 pNext:=nil;
 maxTransformFeedbackStreams:=aMaxTransformFeedbackStreams;
 maxTransformFeedbackBuffers:=aMaxTransformFeedbackBuffers;
 maxTransformFeedbackBufferSize:=aMaxTransformFeedbackBufferSize;
 maxTransformFeedbackStreamDataSize:=aMaxTransformFeedbackStreamDataSize;
 maxTransformFeedbackBufferDataSize:=aMaxTransformFeedbackBufferDataSize;
 maxTransformFeedbackBufferDataStride:=aMaxTransformFeedbackBufferDataStride;
 transformFeedbackQueries:=aTransformFeedbackQueries;
 transformFeedbackStreamsLinesTriangles:=aTransformFeedbackStreamsLinesTriangles;
 transformFeedbackRasterizationStreamSelect:=aTransformFeedbackRasterizationStreamSelect;
 transformFeedbackDraw:=aTransformFeedbackDraw;
end;

constructor TVkPipelineRasterizationStateStreamCreateInfoEXT.Create(const aFlags:TVkPipelineRasterizationStateStreamCreateFlagsEXT;
                                                                    const aRasterizationStream:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT;
 pNext:=nil;
 flags:=aFlags;
 rasterizationStream:=aRasterizationStream;
end;

constructor TVkPhysicalDeviceRepresentativeFragmentTestFeaturesNV.Create(const aRepresentativeFragmentTest:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV;
 pNext:=nil;
 representativeFragmentTest:=aRepresentativeFragmentTest;
end;

constructor TVkPipelineRepresentativeFragmentTestStateCreateInfoNV.Create(const aRepresentativeFragmentTestEnable:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV;
 pNext:=nil;
 representativeFragmentTestEnable:=aRepresentativeFragmentTestEnable;
end;

{$ifdef NvSci}
constructor TVkPhysicalDeviceExclusiveScissorFeaturesNV.Create(const aExclusiveScissor:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV;
 pNext:=nil;
 exclusiveScissor:=aExclusiveScissor;
end;
{$endif}

{$ifdef NvSci}
constructor TVkPipelineViewportExclusiveScissorStateCreateInfoNV.Create(const aExclusiveScissorCount:TVkUInt32;
                                                                        const aPExclusiveScissors:PVkRect2D);
begin
 sType:=VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV;
 pNext:=nil;
 exclusiveScissorCount:=aExclusiveScissorCount;
 pExclusiveScissors:=aPExclusiveScissors;
end;
{$endif}

constructor TVkPhysicalDeviceCornerSampledImageFeaturesNV.Create(const aCornerSampledImage:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV;
 pNext:=nil;
 cornerSampledImage:=aCornerSampledImage;
end;

constructor TVkPhysicalDeviceComputeShaderDerivativesFeaturesNV.Create(const aComputeDerivativeGroupQuads:TVkBool32;
                                                                       const aComputeDerivativeGroupLinear:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV;
 pNext:=nil;
 computeDerivativeGroupQuads:=aComputeDerivativeGroupQuads;
 computeDerivativeGroupLinear:=aComputeDerivativeGroupLinear;
end;

constructor TVkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR.Create(const aFragmentShaderBarycentric:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR;
 pNext:=nil;
 fragmentShaderBarycentric:=aFragmentShaderBarycentric;
end;

constructor TVkPhysicalDeviceShaderImageFootprintFeaturesNV.Create(const aImageFootprint:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV;
 pNext:=nil;
 imageFootprint:=aImageFootprint;
end;

constructor TVkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV.Create(const aDedicatedAllocationImageAliasing:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV;
 pNext:=nil;
 dedicatedAllocationImageAliasing:=aDedicatedAllocationImageAliasing;
end;

constructor TVkPhysicalDeviceCopyMemoryIndirectFeaturesNV.Create(const aIndirectCopy:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV;
 pNext:=nil;
 indirectCopy:=aIndirectCopy;
end;

constructor TVkPhysicalDeviceCopyMemoryIndirectPropertiesNV.Create(const aSupportedQueues:TVkQueueFlags);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV;
 pNext:=nil;
 supportedQueues:=aSupportedQueues;
end;

constructor TVkPhysicalDeviceMemoryDecompressionFeaturesNV.Create(const aMemoryDecompression:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV;
 pNext:=nil;
 memoryDecompression:=aMemoryDecompression;
end;

constructor TVkPhysicalDeviceMemoryDecompressionPropertiesNV.Create(const aDecompressionMethods:TVkMemoryDecompressionMethodFlagsNV;
                                                                    const aMaxDecompressionIndirectCount:TVkUInt64);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV;
 pNext:=nil;
 decompressionMethods:=aDecompressionMethods;
 maxDecompressionIndirectCount:=aMaxDecompressionIndirectCount;
end;

constructor TVkShadingRatePaletteNV.Create(const aShadingRatePaletteEntryCount:TVkUInt32;
                                           const aPShadingRatePaletteEntries:PVkShadingRatePaletteEntryNV);
begin
 shadingRatePaletteEntryCount:=aShadingRatePaletteEntryCount;
 pShadingRatePaletteEntries:=aPShadingRatePaletteEntries;
end;

constructor TVkPipelineViewportShadingRateImageStateCreateInfoNV.Create(const aShadingRateImageEnable:TVkBool32;
                                                                        const aViewportCount:TVkUInt32;
                                                                        const aPShadingRatePalettes:PVkShadingRatePaletteNV);
begin
 sType:=VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV;
 pNext:=nil;
 shadingRateImageEnable:=aShadingRateImageEnable;
 viewportCount:=aViewportCount;
 pShadingRatePalettes:=aPShadingRatePalettes;
end;

constructor TVkPhysicalDeviceShadingRateImageFeaturesNV.Create(const aShadingRateImage:TVkBool32;
                                                               const aShadingRateCoarseSampleOrder:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV;
 pNext:=nil;
 shadingRateImage:=aShadingRateImage;
 shadingRateCoarseSampleOrder:=aShadingRateCoarseSampleOrder;
end;

constructor TVkPhysicalDeviceShadingRateImagePropertiesNV.Create(const aShadingRateTexelSize:TVkExtent2D;
                                                                 const aShadingRatePaletteSize:TVkUInt32;
                                                                 const aShadingRateMaxCoarseSamples:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV;
 pNext:=nil;
 shadingRateTexelSize:=aShadingRateTexelSize;
 shadingRatePaletteSize:=aShadingRatePaletteSize;
 shadingRateMaxCoarseSamples:=aShadingRateMaxCoarseSamples;
end;

constructor TVkPhysicalDeviceInvocationMaskFeaturesHUAWEI.Create(const aInvocationMask:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI;
 pNext:=nil;
 invocationMask:=aInvocationMask;
end;

constructor TVkCoarseSampleLocationNV.Create(const aPixelX:TVkUInt32;
                                             const aPixelY:TVkUInt32;
                                             const aSample:TVkUInt32);
begin
 pixelX:=aPixelX;
 pixelY:=aPixelY;
 sample:=aSample;
end;

constructor TVkCoarseSampleOrderCustomNV.Create(const aShadingRate:TVkShadingRatePaletteEntryNV;
                                                const aSampleCount:TVkUInt32;
                                                const aSampleLocationCount:TVkUInt32;
                                                const aPSampleLocations:PVkCoarseSampleLocationNV);
begin
 shadingRate:=aShadingRate;
 sampleCount:=aSampleCount;
 sampleLocationCount:=aSampleLocationCount;
 pSampleLocations:=aPSampleLocations;
end;

constructor TVkPipelineViewportCoarseSampleOrderStateCreateInfoNV.Create(const aSampleOrderType:TVkCoarseSampleOrderTypeNV;
                                                                         const aCustomSampleOrderCount:TVkUInt32;
                                                                         const aPCustomSampleOrders:PVkCoarseSampleOrderCustomNV);
begin
 sType:=VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV;
 pNext:=nil;
 sampleOrderType:=aSampleOrderType;
 customSampleOrderCount:=aCustomSampleOrderCount;
 pCustomSampleOrders:=aPCustomSampleOrders;
end;

constructor TVkPhysicalDeviceMeshShaderFeaturesNV.Create(const aTaskShader:TVkBool32;
                                                         const aMeshShader:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV;
 pNext:=nil;
 taskShader:=aTaskShader;
 meshShader:=aMeshShader;
end;

constructor TVkPhysicalDeviceMeshShaderPropertiesNV.Create(const aMaxDrawMeshTasksCount:TVkUInt32;
                                                           const aMaxTaskWorkGroupInvocations:TVkUInt32;
                                                           const aMaxTaskWorkGroupSize:array of TVkUInt32;
                                                           const aMaxTaskTotalMemorySize:TVkUInt32;
                                                           const aMaxTaskOutputCount:TVkUInt32;
                                                           const aMaxMeshWorkGroupInvocations:TVkUInt32;
                                                           const aMaxMeshWorkGroupSize:array of TVkUInt32;
                                                           const aMaxMeshTotalMemorySize:TVkUInt32;
                                                           const aMaxMeshOutputVertices:TVkUInt32;
                                                           const aMaxMeshOutputPrimitives:TVkUInt32;
                                                           const aMaxMeshMultiviewViewCount:TVkUInt32;
                                                           const aMeshOutputPerVertexGranularity:TVkUInt32;
                                                           const aMeshOutputPerPrimitiveGranularity:TVkUInt32);
var ArrayItemCount:TVkInt32;
begin
 FillChar(self,SizeOf(TVkPhysicalDeviceMeshShaderPropertiesNV),#0);
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV;
 pNext:=nil;
 maxDrawMeshTasksCount:=aMaxDrawMeshTasksCount;
 maxTaskWorkGroupInvocations:=aMaxTaskWorkGroupInvocations;
 ArrayItemCount:=length(aMaxTaskWorkGroupSize);
 if ArrayItemCount>length(maxTaskWorkGroupSize) then begin
  ArrayItemCount:=length(maxTaskWorkGroupSize);
 end;
 if ArrayItemCount>0 then begin
  Move(aMaxTaskWorkGroupSize[0],maxTaskWorkGroupSize[0],ArrayItemCount*SizeOf(TVkUInt32));
 end;
 maxTaskTotalMemorySize:=aMaxTaskTotalMemorySize;
 maxTaskOutputCount:=aMaxTaskOutputCount;
 maxMeshWorkGroupInvocations:=aMaxMeshWorkGroupInvocations;
 ArrayItemCount:=length(aMaxMeshWorkGroupSize);
 if ArrayItemCount>length(maxMeshWorkGroupSize) then begin
  ArrayItemCount:=length(maxMeshWorkGroupSize);
 end;
 if ArrayItemCount>0 then begin
  Move(aMaxMeshWorkGroupSize[0],maxMeshWorkGroupSize[0],ArrayItemCount*SizeOf(TVkUInt32));
 end;
 maxMeshTotalMemorySize:=aMaxMeshTotalMemorySize;
 maxMeshOutputVertices:=aMaxMeshOutputVertices;
 maxMeshOutputPrimitives:=aMaxMeshOutputPrimitives;
 maxMeshMultiviewViewCount:=aMaxMeshMultiviewViewCount;
 meshOutputPerVertexGranularity:=aMeshOutputPerVertexGranularity;
 meshOutputPerPrimitiveGranularity:=aMeshOutputPerPrimitiveGranularity;
end;

constructor TVkDrawMeshTasksIndirectCommandNV.Create(const aTaskCount:TVkUInt32;
                                                     const aFirstTask:TVkUInt32);
begin
 taskCount:=aTaskCount;
 firstTask:=aFirstTask;
end;

constructor TVkPhysicalDeviceMeshShaderFeaturesEXT.Create(const aTaskShader:TVkBool32;
                                                          const aMeshShader:TVkBool32;
                                                          const aMultiviewMeshShader:TVkBool32;
                                                          const aPrimitiveFragmentShadingRateMeshShader:TVkBool32;
                                                          const aMeshShaderQueries:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT;
 pNext:=nil;
 taskShader:=aTaskShader;
 meshShader:=aMeshShader;
 multiviewMeshShader:=aMultiviewMeshShader;
 primitiveFragmentShadingRateMeshShader:=aPrimitiveFragmentShadingRateMeshShader;
 meshShaderQueries:=aMeshShaderQueries;
end;

constructor TVkPhysicalDeviceMeshShaderPropertiesEXT.Create(const aMaxTaskWorkGroupTotalCount:TVkUInt32;
                                                            const aMaxTaskWorkGroupCount:array of TVkUInt32;
                                                            const aMaxTaskWorkGroupInvocations:TVkUInt32;
                                                            const aMaxTaskWorkGroupSize:array of TVkUInt32;
                                                            const aMaxTaskPayloadSize:TVkUInt32;
                                                            const aMaxTaskSharedMemorySize:TVkUInt32;
                                                            const aMaxTaskPayloadAndSharedMemorySize:TVkUInt32;
                                                            const aMaxMeshWorkGroupTotalCount:TVkUInt32;
                                                            const aMaxMeshWorkGroupCount:array of TVkUInt32;
                                                            const aMaxMeshWorkGroupInvocations:TVkUInt32;
                                                            const aMaxMeshWorkGroupSize:array of TVkUInt32;
                                                            const aMaxMeshSharedMemorySize:TVkUInt32;
                                                            const aMaxMeshPayloadAndSharedMemorySize:TVkUInt32;
                                                            const aMaxMeshOutputMemorySize:TVkUInt32;
                                                            const aMaxMeshPayloadAndOutputMemorySize:TVkUInt32;
                                                            const aMaxMeshOutputComponents:TVkUInt32;
                                                            const aMaxMeshOutputVertices:TVkUInt32;
                                                            const aMaxMeshOutputPrimitives:TVkUInt32;
                                                            const aMaxMeshOutputLayers:TVkUInt32;
                                                            const aMaxMeshMultiviewViewCount:TVkUInt32;
                                                            const aMeshOutputPerVertexGranularity:TVkUInt32;
                                                            const aMeshOutputPerPrimitiveGranularity:TVkUInt32;
                                                            const aMaxPreferredTaskWorkGroupInvocations:TVkUInt32;
                                                            const aMaxPreferredMeshWorkGroupInvocations:TVkUInt32;
                                                            const aPrefersLocalInvocationVertexOutput:TVkBool32;
                                                            const aPrefersLocalInvocationPrimitiveOutput:TVkBool32;
                                                            const aPrefersCompactVertexOutput:TVkBool32;
                                                            const aPrefersCompactPrimitiveOutput:TVkBool32);
var ArrayItemCount:TVkInt32;
begin
 FillChar(self,SizeOf(TVkPhysicalDeviceMeshShaderPropertiesEXT),#0);
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT;
 pNext:=nil;
 maxTaskWorkGroupTotalCount:=aMaxTaskWorkGroupTotalCount;
 ArrayItemCount:=length(aMaxTaskWorkGroupCount);
 if ArrayItemCount>length(maxTaskWorkGroupCount) then begin
  ArrayItemCount:=length(maxTaskWorkGroupCount);
 end;
 if ArrayItemCount>0 then begin
  Move(aMaxTaskWorkGroupCount[0],maxTaskWorkGroupCount[0],ArrayItemCount*SizeOf(TVkUInt32));
 end;
 maxTaskWorkGroupInvocations:=aMaxTaskWorkGroupInvocations;
 ArrayItemCount:=length(aMaxTaskWorkGroupSize);
 if ArrayItemCount>length(maxTaskWorkGroupSize) then begin
  ArrayItemCount:=length(maxTaskWorkGroupSize);
 end;
 if ArrayItemCount>0 then begin
  Move(aMaxTaskWorkGroupSize[0],maxTaskWorkGroupSize[0],ArrayItemCount*SizeOf(TVkUInt32));
 end;
 maxTaskPayloadSize:=aMaxTaskPayloadSize;
 maxTaskSharedMemorySize:=aMaxTaskSharedMemorySize;
 maxTaskPayloadAndSharedMemorySize:=aMaxTaskPayloadAndSharedMemorySize;
 maxMeshWorkGroupTotalCount:=aMaxMeshWorkGroupTotalCount;
 ArrayItemCount:=length(aMaxMeshWorkGroupCount);
 if ArrayItemCount>length(maxMeshWorkGroupCount) then begin
  ArrayItemCount:=length(maxMeshWorkGroupCount);
 end;
 if ArrayItemCount>0 then begin
  Move(aMaxMeshWorkGroupCount[0],maxMeshWorkGroupCount[0],ArrayItemCount*SizeOf(TVkUInt32));
 end;
 maxMeshWorkGroupInvocations:=aMaxMeshWorkGroupInvocations;
 ArrayItemCount:=length(aMaxMeshWorkGroupSize);
 if ArrayItemCount>length(maxMeshWorkGroupSize) then begin
  ArrayItemCount:=length(maxMeshWorkGroupSize);
 end;
 if ArrayItemCount>0 then begin
  Move(aMaxMeshWorkGroupSize[0],maxMeshWorkGroupSize[0],ArrayItemCount*SizeOf(TVkUInt32));
 end;
 maxMeshSharedMemorySize:=aMaxMeshSharedMemorySize;
 maxMeshPayloadAndSharedMemorySize:=aMaxMeshPayloadAndSharedMemorySize;
 maxMeshOutputMemorySize:=aMaxMeshOutputMemorySize;
 maxMeshPayloadAndOutputMemorySize:=aMaxMeshPayloadAndOutputMemorySize;
 maxMeshOutputComponents:=aMaxMeshOutputComponents;
 maxMeshOutputVertices:=aMaxMeshOutputVertices;
 maxMeshOutputPrimitives:=aMaxMeshOutputPrimitives;
 maxMeshOutputLayers:=aMaxMeshOutputLayers;
 maxMeshMultiviewViewCount:=aMaxMeshMultiviewViewCount;
 meshOutputPerVertexGranularity:=aMeshOutputPerVertexGranularity;
 meshOutputPerPrimitiveGranularity:=aMeshOutputPerPrimitiveGranularity;
 maxPreferredTaskWorkGroupInvocations:=aMaxPreferredTaskWorkGroupInvocations;
 maxPreferredMeshWorkGroupInvocations:=aMaxPreferredMeshWorkGroupInvocations;
 prefersLocalInvocationVertexOutput:=aPrefersLocalInvocationVertexOutput;
 prefersLocalInvocationPrimitiveOutput:=aPrefersLocalInvocationPrimitiveOutput;
 prefersCompactVertexOutput:=aPrefersCompactVertexOutput;
 prefersCompactPrimitiveOutput:=aPrefersCompactPrimitiveOutput;
end;

constructor TVkDrawMeshTasksIndirectCommandEXT.Create(const aGroupCountX:TVkUInt32;
                                                      const aGroupCountY:TVkUInt32;
                                                      const aGroupCountZ:TVkUInt32);
begin
 groupCountX:=aGroupCountX;
 groupCountY:=aGroupCountY;
 groupCountZ:=aGroupCountZ;
end;

constructor TVkRayTracingShaderGroupCreateInfoNV.Create(const aType_:TVkRayTracingShaderGroupTypeKHR;
                                                        const aGeneralShader:TVkUInt32;
                                                        const aClosestHitShader:TVkUInt32;
                                                        const aAnyHitShader:TVkUInt32;
                                                        const aIntersectionShader:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV;
 pNext:=nil;
 type_:=aType_;
 generalShader:=aGeneralShader;
 closestHitShader:=aClosestHitShader;
 anyHitShader:=aAnyHitShader;
 intersectionShader:=aIntersectionShader;
end;

constructor TVkRayTracingShaderGroupCreateInfoKHR.Create(const aType_:TVkRayTracingShaderGroupTypeKHR;
                                                         const aGeneralShader:TVkUInt32;
                                                         const aClosestHitShader:TVkUInt32;
                                                         const aAnyHitShader:TVkUInt32;
                                                         const aIntersectionShader:TVkUInt32;
                                                         const aPShaderGroupCaptureReplayHandle:PVkVoid);
begin
 sType:=VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR;
 pNext:=nil;
 type_:=aType_;
 generalShader:=aGeneralShader;
 closestHitShader:=aClosestHitShader;
 anyHitShader:=aAnyHitShader;
 intersectionShader:=aIntersectionShader;
 pShaderGroupCaptureReplayHandle:=aPShaderGroupCaptureReplayHandle;
end;

constructor TVkRayTracingPipelineCreateInfoNV.Create(const aFlags:TVkPipelineCreateFlags;
                                                     const aStageCount:TVkUInt32;
                                                     const aPStages:PVkPipelineShaderStageCreateInfo;
                                                     const aGroupCount:TVkUInt32;
                                                     const aPGroups:PVkRayTracingShaderGroupCreateInfoNV;
                                                     const aMaxRecursionDepth:TVkUInt32;
                                                     const aLayout:TVkPipelineLayout;
                                                     const aBasePipelineHandle:TVkPipeline;
                                                     const aBasePipelineIndex:TVkInt32);
begin
 sType:=VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV;
 pNext:=nil;
 flags:=aFlags;
 stageCount:=aStageCount;
 pStages:=aPStages;
 groupCount:=aGroupCount;
 pGroups:=aPGroups;
 maxRecursionDepth:=aMaxRecursionDepth;
 layout:=aLayout;
 basePipelineHandle:=aBasePipelineHandle;
 basePipelineIndex:=aBasePipelineIndex;
end;

constructor TVkRayTracingPipelineInterfaceCreateInfoKHR.Create(const aMaxPipelineRayPayloadSize:TVkUInt32;
                                                               const aMaxPipelineRayHitAttributeSize:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR;
 pNext:=nil;
 maxPipelineRayPayloadSize:=aMaxPipelineRayPayloadSize;
 maxPipelineRayHitAttributeSize:=aMaxPipelineRayHitAttributeSize;
end;

constructor TVkGeometryTrianglesNV.Create(const aVertexData:TVkBuffer;
                                          const aVertexOffset:TVkDeviceSize;
                                          const aVertexCount:TVkUInt32;
                                          const aVertexStride:TVkDeviceSize;
                                          const aVertexFormat:TVkFormat;
                                          const aIndexData:TVkBuffer;
                                          const aIndexOffset:TVkDeviceSize;
                                          const aIndexCount:TVkUInt32;
                                          const aIndexType:TVkIndexType;
                                          const aTransformData:TVkBuffer;
                                          const aTransformOffset:TVkDeviceSize);
begin
 sType:=VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV;
 pNext:=nil;
 vertexData:=aVertexData;
 vertexOffset:=aVertexOffset;
 vertexCount:=aVertexCount;
 vertexStride:=aVertexStride;
 vertexFormat:=aVertexFormat;
 indexData:=aIndexData;
 indexOffset:=aIndexOffset;
 indexCount:=aIndexCount;
 indexType:=aIndexType;
 transformData:=aTransformData;
 transformOffset:=aTransformOffset;
end;

constructor TVkGeometryAABBNV.Create(const aAabbData:TVkBuffer;
                                     const aNumAABBs:TVkUInt32;
                                     const aStride:TVkUInt32;
                                     const aOffset:TVkDeviceSize);
begin
 sType:=VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV;
 pNext:=nil;
 aabbData:=aAabbData;
 numAABBs:=aNumAABBs;
 stride:=aStride;
 offset:=aOffset;
end;

constructor TVkGeometryDataNV.Create(const aTriangles:TVkGeometryTrianglesNV;
                                     const aAabbs:TVkGeometryAABBNV);
begin
 triangles:=aTriangles;
 aabbs:=aAabbs;
end;

constructor TVkGeometryNV.Create(const aGeometryType:TVkGeometryTypeKHR;
                                 const aGeometry:TVkGeometryDataNV;
                                 const aFlags:TVkGeometryFlagsKHR);
begin
 sType:=VK_STRUCTURE_TYPE_GEOMETRY_NV;
 pNext:=nil;
 geometryType:=aGeometryType;
 geometry:=aGeometry;
 flags:=aFlags;
end;

constructor TVkAccelerationStructureInfoNV.Create(const aType_:TVkAccelerationStructureTypeNV;
                                                  const aFlags:TVkBuildAccelerationStructureFlagsNV;
                                                  const aInstanceCount:TVkUInt32;
                                                  const aGeometryCount:TVkUInt32;
                                                  const aPGeometries:PVkGeometryNV);
begin
 sType:=VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV;
 pNext:=nil;
 type_:=aType_;
 flags:=aFlags;
 instanceCount:=aInstanceCount;
 geometryCount:=aGeometryCount;
 pGeometries:=aPGeometries;
end;

constructor TVkAccelerationStructureCreateInfoNV.Create(const aCompactedSize:TVkDeviceSize;
                                                        const aInfo:TVkAccelerationStructureInfoNV);
begin
 sType:=VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV;
 pNext:=nil;
 compactedSize:=aCompactedSize;
 info:=aInfo;
end;

constructor TVkBindAccelerationStructureMemoryInfoNV.Create(const aAccelerationStructure:TVkAccelerationStructureNV;
                                                            const aMemory:TVkDeviceMemory;
                                                            const aMemoryOffset:TVkDeviceSize;
                                                            const aDeviceIndexCount:TVkUInt32;
                                                            const aPDeviceIndices:PVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV;
 pNext:=nil;
 accelerationStructure:=aAccelerationStructure;
 memory:=aMemory;
 memoryOffset:=aMemoryOffset;
 deviceIndexCount:=aDeviceIndexCount;
 pDeviceIndices:=aPDeviceIndices;
end;

constructor TVkWriteDescriptorSetAccelerationStructureKHR.Create(const aAccelerationStructureCount:TVkUInt32;
                                                                 const aPAccelerationStructures:PVkAccelerationStructureKHR);
begin
 sType:=VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR;
 pNext:=nil;
 accelerationStructureCount:=aAccelerationStructureCount;
 pAccelerationStructures:=aPAccelerationStructures;
end;

constructor TVkWriteDescriptorSetAccelerationStructureNV.Create(const aAccelerationStructureCount:TVkUInt32;
                                                                const aPAccelerationStructures:PVkAccelerationStructureNV);
begin
 sType:=VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV;
 pNext:=nil;
 accelerationStructureCount:=aAccelerationStructureCount;
 pAccelerationStructures:=aPAccelerationStructures;
end;

constructor TVkAccelerationStructureMemoryRequirementsInfoNV.Create(const aType_:TVkAccelerationStructureMemoryRequirementsTypeNV;
                                                                    const aAccelerationStructure:TVkAccelerationStructureNV);
begin
 sType:=VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV;
 pNext:=nil;
 type_:=aType_;
 accelerationStructure:=aAccelerationStructure;
end;

constructor TVkPhysicalDeviceAccelerationStructureFeaturesKHR.Create(const aAccelerationStructure:TVkBool32;
                                                                     const aAccelerationStructureCaptureReplay:TVkBool32;
                                                                     const aAccelerationStructureIndirectBuild:TVkBool32;
                                                                     const aAccelerationStructureHostCommands:TVkBool32;
                                                                     const aDescriptorBindingAccelerationStructureUpdateAfterBind:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR;
 pNext:=nil;
 accelerationStructure:=aAccelerationStructure;
 accelerationStructureCaptureReplay:=aAccelerationStructureCaptureReplay;
 accelerationStructureIndirectBuild:=aAccelerationStructureIndirectBuild;
 accelerationStructureHostCommands:=aAccelerationStructureHostCommands;
 descriptorBindingAccelerationStructureUpdateAfterBind:=aDescriptorBindingAccelerationStructureUpdateAfterBind;
end;

constructor TVkPhysicalDeviceRayTracingPipelineFeaturesKHR.Create(const aRayTracingPipeline:TVkBool32;
                                                                  const aRayTracingPipelineShaderGroupHandleCaptureReplay:TVkBool32;
                                                                  const aRayTracingPipelineShaderGroupHandleCaptureReplayMixed:TVkBool32;
                                                                  const aRayTracingPipelineTraceRaysIndirect:TVkBool32;
                                                                  const aRayTraversalPrimitiveCulling:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR;
 pNext:=nil;
 rayTracingPipeline:=aRayTracingPipeline;
 rayTracingPipelineShaderGroupHandleCaptureReplay:=aRayTracingPipelineShaderGroupHandleCaptureReplay;
 rayTracingPipelineShaderGroupHandleCaptureReplayMixed:=aRayTracingPipelineShaderGroupHandleCaptureReplayMixed;
 rayTracingPipelineTraceRaysIndirect:=aRayTracingPipelineTraceRaysIndirect;
 rayTraversalPrimitiveCulling:=aRayTraversalPrimitiveCulling;
end;

constructor TVkPhysicalDeviceRayQueryFeaturesKHR.Create(const aRayQuery:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR;
 pNext:=nil;
 rayQuery:=aRayQuery;
end;

constructor TVkPhysicalDeviceAccelerationStructurePropertiesKHR.Create(const aMaxGeometryCount:TVkUInt64;
                                                                       const aMaxInstanceCount:TVkUInt64;
                                                                       const aMaxPrimitiveCount:TVkUInt64;
                                                                       const aMaxPerStageDescriptorAccelerationStructures:TVkUInt32;
                                                                       const aMaxPerStageDescriptorUpdateAfterBindAccelerationStructures:TVkUInt32;
                                                                       const aMaxDescriptorSetAccelerationStructures:TVkUInt32;
                                                                       const aMaxDescriptorSetUpdateAfterBindAccelerationStructures:TVkUInt32;
                                                                       const aMinAccelerationStructureScratchOffsetAlignment:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR;
 pNext:=nil;
 maxGeometryCount:=aMaxGeometryCount;
 maxInstanceCount:=aMaxInstanceCount;
 maxPrimitiveCount:=aMaxPrimitiveCount;
 maxPerStageDescriptorAccelerationStructures:=aMaxPerStageDescriptorAccelerationStructures;
 maxPerStageDescriptorUpdateAfterBindAccelerationStructures:=aMaxPerStageDescriptorUpdateAfterBindAccelerationStructures;
 maxDescriptorSetAccelerationStructures:=aMaxDescriptorSetAccelerationStructures;
 maxDescriptorSetUpdateAfterBindAccelerationStructures:=aMaxDescriptorSetUpdateAfterBindAccelerationStructures;
 minAccelerationStructureScratchOffsetAlignment:=aMinAccelerationStructureScratchOffsetAlignment;
end;

constructor TVkPhysicalDeviceRayTracingPipelinePropertiesKHR.Create(const aShaderGroupHandleSize:TVkUInt32;
                                                                    const aMaxRayRecursionDepth:TVkUInt32;
                                                                    const aMaxShaderGroupStride:TVkUInt32;
                                                                    const aShaderGroupBaseAlignment:TVkUInt32;
                                                                    const aShaderGroupHandleCaptureReplaySize:TVkUInt32;
                                                                    const aMaxRayDispatchInvocationCount:TVkUInt32;
                                                                    const aShaderGroupHandleAlignment:TVkUInt32;
                                                                    const aMaxRayHitAttributeSize:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR;
 pNext:=nil;
 shaderGroupHandleSize:=aShaderGroupHandleSize;
 maxRayRecursionDepth:=aMaxRayRecursionDepth;
 maxShaderGroupStride:=aMaxShaderGroupStride;
 shaderGroupBaseAlignment:=aShaderGroupBaseAlignment;
 shaderGroupHandleCaptureReplaySize:=aShaderGroupHandleCaptureReplaySize;
 maxRayDispatchInvocationCount:=aMaxRayDispatchInvocationCount;
 shaderGroupHandleAlignment:=aShaderGroupHandleAlignment;
 maxRayHitAttributeSize:=aMaxRayHitAttributeSize;
end;

constructor TVkPhysicalDeviceRayTracingPropertiesNV.Create(const aShaderGroupHandleSize:TVkUInt32;
                                                           const aMaxRecursionDepth:TVkUInt32;
                                                           const aMaxShaderGroupStride:TVkUInt32;
                                                           const aShaderGroupBaseAlignment:TVkUInt32;
                                                           const aMaxGeometryCount:TVkUInt64;
                                                           const aMaxInstanceCount:TVkUInt64;
                                                           const aMaxTriangleCount:TVkUInt64;
                                                           const aMaxDescriptorSetAccelerationStructures:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV;
 pNext:=nil;
 shaderGroupHandleSize:=aShaderGroupHandleSize;
 maxRecursionDepth:=aMaxRecursionDepth;
 maxShaderGroupStride:=aMaxShaderGroupStride;
 shaderGroupBaseAlignment:=aShaderGroupBaseAlignment;
 maxGeometryCount:=aMaxGeometryCount;
 maxInstanceCount:=aMaxInstanceCount;
 maxTriangleCount:=aMaxTriangleCount;
 maxDescriptorSetAccelerationStructures:=aMaxDescriptorSetAccelerationStructures;
end;

constructor TVkStridedDeviceAddressRegionKHR.Create(const aDeviceAddress:TVkDeviceAddress;
                                                    const aStride:TVkDeviceSize;
                                                    const aSize:TVkDeviceSize);
begin
 deviceAddress:=aDeviceAddress;
 stride:=aStride;
 size:=aSize;
end;

constructor TVkTraceRaysIndirectCommandKHR.Create(const aWidth:TVkUInt32;
                                                  const aHeight:TVkUInt32;
                                                  const aDepth:TVkUInt32);
begin
 width:=aWidth;
 height:=aHeight;
 depth:=aDepth;
end;

constructor TVkTraceRaysIndirectCommand2KHR.Create(const aRaygenShaderRecordAddress:TVkDeviceAddress;
                                                   const aRaygenShaderRecordSize:TVkDeviceSize;
                                                   const aMissShaderBindingTableAddress:TVkDeviceAddress;
                                                   const aMissShaderBindingTableSize:TVkDeviceSize;
                                                   const aMissShaderBindingTableStride:TVkDeviceSize;
                                                   const aHitShaderBindingTableAddress:TVkDeviceAddress;
                                                   const aHitShaderBindingTableSize:TVkDeviceSize;
                                                   const aHitShaderBindingTableStride:TVkDeviceSize;
                                                   const aCallableShaderBindingTableAddress:TVkDeviceAddress;
                                                   const aCallableShaderBindingTableSize:TVkDeviceSize;
                                                   const aCallableShaderBindingTableStride:TVkDeviceSize;
                                                   const aWidth:TVkUInt32;
                                                   const aHeight:TVkUInt32;
                                                   const aDepth:TVkUInt32);
begin
 raygenShaderRecordAddress:=aRaygenShaderRecordAddress;
 raygenShaderRecordSize:=aRaygenShaderRecordSize;
 missShaderBindingTableAddress:=aMissShaderBindingTableAddress;
 missShaderBindingTableSize:=aMissShaderBindingTableSize;
 missShaderBindingTableStride:=aMissShaderBindingTableStride;
 hitShaderBindingTableAddress:=aHitShaderBindingTableAddress;
 hitShaderBindingTableSize:=aHitShaderBindingTableSize;
 hitShaderBindingTableStride:=aHitShaderBindingTableStride;
 callableShaderBindingTableAddress:=aCallableShaderBindingTableAddress;
 callableShaderBindingTableSize:=aCallableShaderBindingTableSize;
 callableShaderBindingTableStride:=aCallableShaderBindingTableStride;
 width:=aWidth;
 height:=aHeight;
 depth:=aDepth;
end;

constructor TVkPhysicalDeviceRayTracingMaintenance1FeaturesKHR.Create(const aRayTracingMaintenance1:TVkBool32;
                                                                      const aRayTracingPipelineTraceRaysIndirect2:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR;
 pNext:=nil;
 rayTracingMaintenance1:=aRayTracingMaintenance1;
 rayTracingPipelineTraceRaysIndirect2:=aRayTracingPipelineTraceRaysIndirect2;
end;

constructor TVkDrmFormatModifierPropertiesEXT.Create(const aDrmFormatModifier:TVkUInt64;
                                                     const aDrmFormatModifierPlaneCount:TVkUInt32;
                                                     const aDrmFormatModifierTilingFeatures:TVkFormatFeatureFlags);
begin
 drmFormatModifier:=aDrmFormatModifier;
 drmFormatModifierPlaneCount:=aDrmFormatModifierPlaneCount;
 drmFormatModifierTilingFeatures:=aDrmFormatModifierTilingFeatures;
end;

constructor TVkDrmFormatModifierPropertiesListEXT.Create(const aDrmFormatModifierCount:TVkUInt32;
                                                         const aPDrmFormatModifierProperties:PVkDrmFormatModifierPropertiesEXT);
begin
 sType:=VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT;
 pNext:=nil;
 drmFormatModifierCount:=aDrmFormatModifierCount;
 pDrmFormatModifierProperties:=aPDrmFormatModifierProperties;
end;

constructor TVkPhysicalDeviceImageDrmFormatModifierInfoEXT.Create(const aDrmFormatModifier:TVkUInt64;
                                                                  const aSharingMode:TVkSharingMode;
                                                                  const aQueueFamilyIndexCount:TVkUInt32;
                                                                  const aPQueueFamilyIndices:PVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT;
 pNext:=nil;
 drmFormatModifier:=aDrmFormatModifier;
 sharingMode:=aSharingMode;
 queueFamilyIndexCount:=aQueueFamilyIndexCount;
 pQueueFamilyIndices:=aPQueueFamilyIndices;
end;

constructor TVkImageDrmFormatModifierListCreateInfoEXT.Create(const aDrmFormatModifierCount:TVkUInt32;
                                                              const aPDrmFormatModifiers:PVkUInt64);
begin
 sType:=VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT;
 pNext:=nil;
 drmFormatModifierCount:=aDrmFormatModifierCount;
 pDrmFormatModifiers:=aPDrmFormatModifiers;
end;

constructor TVkImageDrmFormatModifierExplicitCreateInfoEXT.Create(const aDrmFormatModifier:TVkUInt64;
                                                                  const aDrmFormatModifierPlaneCount:TVkUInt32;
                                                                  const aPPlaneLayouts:PVkSubresourceLayout);
begin
 sType:=VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT;
 pNext:=nil;
 drmFormatModifier:=aDrmFormatModifier;
 drmFormatModifierPlaneCount:=aDrmFormatModifierPlaneCount;
 pPlaneLayouts:=aPPlaneLayouts;
end;

constructor TVkImageDrmFormatModifierPropertiesEXT.Create(const aDrmFormatModifier:TVkUInt64);
begin
 sType:=VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT;
 pNext:=nil;
 drmFormatModifier:=aDrmFormatModifier;
end;

constructor TVkImageStencilUsageCreateInfo.Create(const aStencilUsage:TVkImageUsageFlags);
begin
 sType:=VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO;
 pNext:=nil;
 stencilUsage:=aStencilUsage;
end;

constructor TVkDeviceMemoryOverallocationCreateInfoAMD.Create(const aOverallocationBehavior:TVkMemoryOverallocationBehaviorAMD);
begin
 sType:=VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD;
 pNext:=nil;
 overallocationBehavior:=aOverallocationBehavior;
end;

constructor TVkPhysicalDeviceFragmentDensityMapFeaturesEXT.Create(const aFragmentDensityMap:TVkBool32;
                                                                  const aFragmentDensityMapDynamic:TVkBool32;
                                                                  const aFragmentDensityMapNonSubsampledImages:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT;
 pNext:=nil;
 fragmentDensityMap:=aFragmentDensityMap;
 fragmentDensityMapDynamic:=aFragmentDensityMapDynamic;
 fragmentDensityMapNonSubsampledImages:=aFragmentDensityMapNonSubsampledImages;
end;

constructor TVkPhysicalDeviceFragmentDensityMap2FeaturesEXT.Create(const aFragmentDensityMapDeferred:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT;
 pNext:=nil;
 fragmentDensityMapDeferred:=aFragmentDensityMapDeferred;
end;

constructor TVkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM.Create(const aFragmentDensityMapOffset:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM;
 pNext:=nil;
 fragmentDensityMapOffset:=aFragmentDensityMapOffset;
end;

constructor TVkPhysicalDeviceFragmentDensityMapPropertiesEXT.Create(const aMinFragmentDensityTexelSize:TVkExtent2D;
                                                                    const aMaxFragmentDensityTexelSize:TVkExtent2D;
                                                                    const aFragmentDensityInvocations:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT;
 pNext:=nil;
 minFragmentDensityTexelSize:=aMinFragmentDensityTexelSize;
 maxFragmentDensityTexelSize:=aMaxFragmentDensityTexelSize;
 fragmentDensityInvocations:=aFragmentDensityInvocations;
end;

constructor TVkPhysicalDeviceFragmentDensityMap2PropertiesEXT.Create(const aSubsampledLoads:TVkBool32;
                                                                     const aSubsampledCoarseReconstructionEarlyAccess:TVkBool32;
                                                                     const aMaxSubsampledArrayLayers:TVkUInt32;
                                                                     const aMaxDescriptorSetSubsampledSamplers:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT;
 pNext:=nil;
 subsampledLoads:=aSubsampledLoads;
 subsampledCoarseReconstructionEarlyAccess:=aSubsampledCoarseReconstructionEarlyAccess;
 maxSubsampledArrayLayers:=aMaxSubsampledArrayLayers;
 maxDescriptorSetSubsampledSamplers:=aMaxDescriptorSetSubsampledSamplers;
end;

constructor TVkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM.Create(const aFragmentDensityOffsetGranularity:TVkExtent2D);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM;
 pNext:=nil;
 fragmentDensityOffsetGranularity:=aFragmentDensityOffsetGranularity;
end;

constructor TVkRenderPassFragmentDensityMapCreateInfoEXT.Create(const aFragmentDensityMapAttachment:TVkAttachmentReference);
begin
 sType:=VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT;
 pNext:=nil;
 fragmentDensityMapAttachment:=aFragmentDensityMapAttachment;
end;

constructor TVkSubpassFragmentDensityMapOffsetEndInfoQCOM.Create(const aFragmentDensityOffsetCount:TVkUInt32;
                                                                 const aPFragmentDensityOffsets:PVkOffset2D);
begin
 sType:=VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM;
 pNext:=nil;
 fragmentDensityOffsetCount:=aFragmentDensityOffsetCount;
 pFragmentDensityOffsets:=aPFragmentDensityOffsets;
end;

constructor TVkPhysicalDeviceScalarBlockLayoutFeatures.Create(const aScalarBlockLayout:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES;
 pNext:=nil;
 scalarBlockLayout:=aScalarBlockLayout;
end;

constructor TVkSurfaceProtectedCapabilitiesKHR.Create(const aSupportsProtected:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR;
 pNext:=nil;
 supportsProtected:=aSupportsProtected;
end;

constructor TVkPhysicalDeviceUniformBufferStandardLayoutFeatures.Create(const aUniformBufferStandardLayout:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES;
 pNext:=nil;
 uniformBufferStandardLayout:=aUniformBufferStandardLayout;
end;

constructor TVkPhysicalDeviceDepthClipEnableFeaturesEXT.Create(const aDepthClipEnable:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT;
 pNext:=nil;
 depthClipEnable:=aDepthClipEnable;
end;

constructor TVkPipelineRasterizationDepthClipStateCreateInfoEXT.Create(const aFlags:TVkPipelineRasterizationDepthClipStateCreateFlagsEXT;
                                                                       const aDepthClipEnable:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT;
 pNext:=nil;
 flags:=aFlags;
 depthClipEnable:=aDepthClipEnable;
end;

constructor TVkPhysicalDeviceMemoryBudgetPropertiesEXT.Create(const aHeapBudget:array of TVkDeviceSize;
                                                              const aHeapUsage:array of TVkDeviceSize);
var ArrayItemCount:TVkInt32;
begin
 FillChar(self,SizeOf(TVkPhysicalDeviceMemoryBudgetPropertiesEXT),#0);
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT;
 pNext:=nil;
 ArrayItemCount:=length(aHeapBudget);
 if ArrayItemCount>length(heapBudget) then begin
  ArrayItemCount:=length(heapBudget);
 end;
 if ArrayItemCount>0 then begin
  Move(aHeapBudget[0],heapBudget[0],ArrayItemCount*SizeOf(TVkDeviceSize));
 end;
 ArrayItemCount:=length(aHeapUsage);
 if ArrayItemCount>length(heapUsage) then begin
  ArrayItemCount:=length(heapUsage);
 end;
 if ArrayItemCount>0 then begin
  Move(aHeapUsage[0],heapUsage[0],ArrayItemCount*SizeOf(TVkDeviceSize));
 end;
end;

constructor TVkPhysicalDeviceMemoryPriorityFeaturesEXT.Create(const aMemoryPriority:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT;
 pNext:=nil;
 memoryPriority:=aMemoryPriority;
end;

constructor TVkMemoryPriorityAllocateInfoEXT.Create(const aPriority:TVkFloat);
begin
 sType:=VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT;
 pNext:=nil;
 priority:=aPriority;
end;

constructor TVkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT.Create(const aPageableDeviceLocalMemory:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT;
 pNext:=nil;
 pageableDeviceLocalMemory:=aPageableDeviceLocalMemory;
end;

constructor TVkPhysicalDeviceBufferDeviceAddressFeatures.Create(const aBufferDeviceAddress:TVkBool32;
                                                                const aBufferDeviceAddressCaptureReplay:TVkBool32;
                                                                const aBufferDeviceAddressMultiDevice:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES;
 pNext:=nil;
 bufferDeviceAddress:=aBufferDeviceAddress;
 bufferDeviceAddressCaptureReplay:=aBufferDeviceAddressCaptureReplay;
 bufferDeviceAddressMultiDevice:=aBufferDeviceAddressMultiDevice;
end;

constructor TVkPhysicalDeviceBufferDeviceAddressFeaturesEXT.Create(const aBufferDeviceAddress:TVkBool32;
                                                                   const aBufferDeviceAddressCaptureReplay:TVkBool32;
                                                                   const aBufferDeviceAddressMultiDevice:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT;
 pNext:=nil;
 bufferDeviceAddress:=aBufferDeviceAddress;
 bufferDeviceAddressCaptureReplay:=aBufferDeviceAddressCaptureReplay;
 bufferDeviceAddressMultiDevice:=aBufferDeviceAddressMultiDevice;
end;

constructor TVkBufferDeviceAddressInfo.Create(const aBuffer:TVkBuffer);
begin
 sType:=VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO;
 pNext:=nil;
 buffer:=aBuffer;
end;

constructor TVkBufferOpaqueCaptureAddressCreateInfo.Create(const aOpaqueCaptureAddress:TVkUInt64);
begin
 sType:=VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO;
 pNext:=nil;
 opaqueCaptureAddress:=aOpaqueCaptureAddress;
end;

constructor TVkBufferDeviceAddressCreateInfoEXT.Create(const aDeviceAddress:TVkDeviceAddress);
begin
 sType:=VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT;
 pNext:=nil;
 deviceAddress:=aDeviceAddress;
end;

constructor TVkPhysicalDeviceImageViewImageFormatInfoEXT.Create(const aImageViewType:TVkImageViewType);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT;
 pNext:=nil;
 imageViewType:=aImageViewType;
end;

constructor TVkFilterCubicImageViewImageFormatPropertiesEXT.Create(const aFilterCubic:TVkBool32;
                                                                   const aFilterCubicMinmax:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT;
 pNext:=nil;
 filterCubic:=aFilterCubic;
 filterCubicMinmax:=aFilterCubicMinmax;
end;

constructor TVkPhysicalDeviceImagelessFramebufferFeatures.Create(const aImagelessFramebuffer:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES;
 pNext:=nil;
 imagelessFramebuffer:=aImagelessFramebuffer;
end;

constructor TVkFramebufferAttachmentImageInfo.Create(const aFlags:TVkImageCreateFlags;
                                                     const aUsage:TVkImageUsageFlags;
                                                     const aWidth:TVkUInt32;
                                                     const aHeight:TVkUInt32;
                                                     const aLayerCount:TVkUInt32;
                                                     const aViewFormatCount:TVkUInt32;
                                                     const aPViewFormats:PVkFormat);
begin
 sType:=VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO;
 pNext:=nil;
 flags:=aFlags;
 usage:=aUsage;
 width:=aWidth;
 height:=aHeight;
 layerCount:=aLayerCount;
 viewFormatCount:=aViewFormatCount;
 pViewFormats:=aPViewFormats;
end;

constructor TVkFramebufferAttachmentsCreateInfo.Create(const aAttachmentImageInfoCount:TVkUInt32;
                                                       const aPAttachmentImageInfos:PVkFramebufferAttachmentImageInfo);
begin
 sType:=VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO;
 pNext:=nil;
 attachmentImageInfoCount:=aAttachmentImageInfoCount;
 pAttachmentImageInfos:=aPAttachmentImageInfos;
end;

constructor TVkRenderPassAttachmentBeginInfo.Create(const aAttachmentCount:TVkUInt32;
                                                    const aPAttachments:PVkImageView);
begin
 sType:=VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO;
 pNext:=nil;
 attachmentCount:=aAttachmentCount;
 pAttachments:=aPAttachments;
end;

constructor TVkPhysicalDeviceTextureCompressionASTCHDRFeatures.Create(const aTextureCompressionASTC_HDR:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES;
 pNext:=nil;
 textureCompressionASTC_HDR:=aTextureCompressionASTC_HDR;
end;

constructor TVkPhysicalDeviceCooperativeMatrixFeaturesNV.Create(const aCooperativeMatrix:TVkBool32;
                                                                const aCooperativeMatrixRobustBufferAccess:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV;
 pNext:=nil;
 cooperativeMatrix:=aCooperativeMatrix;
 cooperativeMatrixRobustBufferAccess:=aCooperativeMatrixRobustBufferAccess;
end;

constructor TVkPhysicalDeviceCooperativeMatrixPropertiesNV.Create(const aCooperativeMatrixSupportedStages:TVkShaderStageFlags);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV;
 pNext:=nil;
 cooperativeMatrixSupportedStages:=aCooperativeMatrixSupportedStages;
end;

constructor TVkCooperativeMatrixPropertiesNV.Create(const aMSize:TVkUInt32;
                                                    const aNSize:TVkUInt32;
                                                    const aKSize:TVkUInt32;
                                                    const aAType:TVkComponentTypeNV;
                                                    const aBType:TVkComponentTypeNV;
                                                    const aCType:TVkComponentTypeNV;
                                                    const aDType:TVkComponentTypeNV;
                                                    const aScope:TVkScopeNV);
begin
 sType:=VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV;
 pNext:=nil;
 MSize:=aMSize;
 NSize:=aNSize;
 KSize:=aKSize;
 AType:=aAType;
 BType:=aBType;
 CType:=aCType;
 DType:=aDType;
 scope:=aScope;
end;

constructor TVkPhysicalDeviceYcbcrImageArraysFeaturesEXT.Create(const aYcbcrImageArrays:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT;
 pNext:=nil;
 ycbcrImageArrays:=aYcbcrImageArrays;
end;

constructor TVkImageViewHandleInfoNVX.Create(const aImageView:TVkImageView;
                                             const aDescriptorType:TVkDescriptorType;
                                             const aSampler:TVkSampler);
begin
 sType:=VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX;
 pNext:=nil;
 imageView:=aImageView;
 descriptorType:=aDescriptorType;
 sampler:=aSampler;
end;

constructor TVkImageViewAddressPropertiesNVX.Create(const aDeviceAddress:TVkDeviceAddress;
                                                    const aSize:TVkDeviceSize);
begin
 sType:=VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX;
 pNext:=nil;
 deviceAddress:=aDeviceAddress;
 size:=aSize;
end;

constructor TVkPresentFrameTokenGGP.Create(const aFrameToken:TVkGgpFrameToken);
begin
 sType:=VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP;
 pNext:=nil;
 frameToken:=aFrameToken;
end;

constructor TVkPipelineCreationFeedback.Create(const aFlags:TVkPipelineCreationFeedbackFlags;
                                               const aDuration:TVkUInt64);
begin
 flags:=aFlags;
 duration:=aDuration;
end;

constructor TVkPipelineCreationFeedbackCreateInfo.Create(const aPPipelineCreationFeedback:PVkPipelineCreationFeedback;
                                                         const aPipelineStageCreationFeedbackCount:TVkUInt32;
                                                         const aPPipelineStageCreationFeedbacks:PPVkPipelineCreationFeedback);
begin
 sType:=VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO;
 pNext:=nil;
 pPipelineCreationFeedback:=aPPipelineCreationFeedback;
 pipelineStageCreationFeedbackCount:=aPipelineStageCreationFeedbackCount;
 pPipelineStageCreationFeedbacks:=aPPipelineStageCreationFeedbacks;
end;

constructor TVkSurfaceFullScreenExclusiveInfoEXT.Create(const aFullScreenExclusive:TVkFullScreenExclusiveEXT);
begin
 sType:=VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT;
 pNext:=nil;
 fullScreenExclusive:=aFullScreenExclusive;
end;

{$ifdef Windows}
constructor TVkSurfaceFullScreenExclusiveWin32InfoEXT.Create(const aHmonitor_:TVkHMONITOR);
begin
 sType:=VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT;
 pNext:=nil;
 hmonitor_:=aHmonitor_;
end;
{$endif}

constructor TVkSurfaceCapabilitiesFullScreenExclusiveEXT.Create(const aFullScreenExclusiveSupported:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT;
 pNext:=nil;
 fullScreenExclusiveSupported:=aFullScreenExclusiveSupported;
end;

constructor TVkPhysicalDevicePresentBarrierFeaturesNV.Create(const aPresentBarrier:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_BARRIER_FEATURES_NV;
 pNext:=nil;
 presentBarrier:=aPresentBarrier;
end;

constructor TVkSurfaceCapabilitiesPresentBarrierNV.Create(const aPresentBarrierSupported:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_BARRIER_NV;
 pNext:=nil;
 presentBarrierSupported:=aPresentBarrierSupported;
end;

constructor TVkSwapchainPresentBarrierCreateInfoNV.Create(const aPresentBarrierEnable:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV;
 pNext:=nil;
 presentBarrierEnable:=aPresentBarrierEnable;
end;

constructor TVkPhysicalDevicePerformanceQueryFeaturesKHR.Create(const aPerformanceCounterQueryPools:TVkBool32;
                                                                const aPerformanceCounterMultipleQueryPools:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR;
 pNext:=nil;
 performanceCounterQueryPools:=aPerformanceCounterQueryPools;
 performanceCounterMultipleQueryPools:=aPerformanceCounterMultipleQueryPools;
end;

constructor TVkPhysicalDevicePerformanceQueryPropertiesKHR.Create(const aAllowCommandBufferQueryCopies:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR;
 pNext:=nil;
 allowCommandBufferQueryCopies:=aAllowCommandBufferQueryCopies;
end;

constructor TVkPerformanceCounterKHR.Create(const aUnit_:TVkPerformanceCounterUnitKHR;
                                            const aScope:TVkPerformanceCounterScopeKHR;
                                            const aStorage:TVkPerformanceCounterStorageKHR;
                                            const aUuid:array of TVkUInt8);
var ArrayItemCount:TVkInt32;
begin
 FillChar(self,SizeOf(TVkPerformanceCounterKHR),#0);
 sType:=VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR;
 pNext:=nil;
 unit_:=aUnit_;
 scope:=aScope;
 storage:=aStorage;
 ArrayItemCount:=length(aUuid);
 if ArrayItemCount>length(uuid) then begin
  ArrayItemCount:=length(uuid);
 end;
 if ArrayItemCount>0 then begin
  Move(aUuid[0],uuid[0],ArrayItemCount*SizeOf(TVkUInt8));
 end;
end;

constructor TVkPerformanceCounterDescriptionKHR.Create(const aFlags:TVkPerformanceCounterDescriptionFlagsKHR;
                                                       const aName:TVkCharString;
                                                       const aCategory:TVkCharString;
                                                       const aDescription:TVkCharString);
var ArrayItemCount:TVkInt32;
begin
 FillChar(self,SizeOf(TVkPerformanceCounterDescriptionKHR),#0);
 sType:=VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR;
 pNext:=nil;
 flags:=aFlags;
 ArrayItemCount:=length(aName);
 if ArrayItemCount>length(name) then begin
  ArrayItemCount:=length(name);
 end;
 if ArrayItemCount>0 then begin
  Move(aName[1],name[0],ArrayItemCount*SizeOf(TVkChar));
 end;
 ArrayItemCount:=length(aCategory);
 if ArrayItemCount>length(category) then begin
  ArrayItemCount:=length(category);
 end;
 if ArrayItemCount>0 then begin
  Move(aCategory[1],category[0],ArrayItemCount*SizeOf(TVkChar));
 end;
 ArrayItemCount:=length(aDescription);
 if ArrayItemCount>length(description) then begin
  ArrayItemCount:=length(description);
 end;
 if ArrayItemCount>0 then begin
  Move(aDescription[1],description[0],ArrayItemCount*SizeOf(TVkChar));
 end;
end;

constructor TVkQueryPoolPerformanceCreateInfoKHR.Create(const aQueueFamilyIndex:TVkUInt32;
                                                        const aCounterIndexCount:TVkUInt32;
                                                        const aPCounterIndices:PVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR;
 pNext:=nil;
 queueFamilyIndex:=aQueueFamilyIndex;
 counterIndexCount:=aCounterIndexCount;
 pCounterIndices:=aPCounterIndices;
end;

constructor TVkAcquireProfilingLockInfoKHR.Create(const aFlags:TVkAcquireProfilingLockFlagsKHR;
                                                  const aTimeout:TVkUInt64);
begin
 sType:=VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR;
 pNext:=nil;
 flags:=aFlags;
 timeout:=aTimeout;
end;

constructor TVkPerformanceQuerySubmitInfoKHR.Create(const aCounterPassIndex:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR;
 pNext:=nil;
 counterPassIndex:=aCounterPassIndex;
end;

{$ifdef VulkanSC}
constructor TVkPerformanceQueryReservationInfoKHR.Create(const aMaxPerformanceQueriesPerPool:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_RESERVATION_INFO_KHR;
 pNext:=nil;
 maxPerformanceQueriesPerPool:=aMaxPerformanceQueriesPerPool;
end;
{$endif}

constructor TVkHeadlessSurfaceCreateInfoEXT.Create(const aFlags:TVkHeadlessSurfaceCreateFlagsEXT);
begin
 sType:=VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT;
 pNext:=nil;
 flags:=aFlags;
end;

constructor TVkPhysicalDeviceCoverageReductionModeFeaturesNV.Create(const aCoverageReductionMode:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV;
 pNext:=nil;
 coverageReductionMode:=aCoverageReductionMode;
end;

constructor TVkPipelineCoverageReductionStateCreateInfoNV.Create(const aFlags:TVkPipelineCoverageReductionStateCreateFlagsNV;
                                                                 const aCoverageReductionMode:TVkCoverageReductionModeNV);
begin
 sType:=VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV;
 pNext:=nil;
 flags:=aFlags;
 coverageReductionMode:=aCoverageReductionMode;
end;

constructor TVkFramebufferMixedSamplesCombinationNV.Create(const aCoverageReductionMode:TVkCoverageReductionModeNV;
                                                           const aRasterizationSamples:TVkSampleCountFlagBits;
                                                           const aDepthStencilSamples:TVkSampleCountFlags;
                                                           const aColorSamples:TVkSampleCountFlags);
begin
 sType:=VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV;
 pNext:=nil;
 coverageReductionMode:=aCoverageReductionMode;
 rasterizationSamples:=aRasterizationSamples;
 depthStencilSamples:=aDepthStencilSamples;
 colorSamples:=aColorSamples;
end;

constructor TVkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL.Create(const aShaderIntegerFunctions2:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL;
 pNext:=nil;
 shaderIntegerFunctions2:=aShaderIntegerFunctions2;
end;

constructor TVkPerformanceValueINTEL.Create(const aType_:TVkPerformanceValueTypeINTEL;
                                            const aData:TVkPerformanceValueDataINTEL);
begin
 type_:=aType_;
 data:=aData;
end;

constructor TVkInitializePerformanceApiInfoINTEL.Create(const aPUserData:PVkVoid);
begin
 sType:=VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL;
 pNext:=nil;
 pUserData:=aPUserData;
end;

constructor TVkQueryPoolPerformanceQueryCreateInfoINTEL.Create(const aPerformanceCountersSampling:TVkQueryPoolSamplingModeINTEL);
begin
 sType:=VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL;
 pNext:=nil;
 performanceCountersSampling:=aPerformanceCountersSampling;
end;

constructor TVkPerformanceMarkerInfoINTEL.Create(const aMarker:TVkUInt64);
begin
 sType:=VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL;
 pNext:=nil;
 marker:=aMarker;
end;

constructor TVkPerformanceStreamMarkerInfoINTEL.Create(const aMarker:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL;
 pNext:=nil;
 marker:=aMarker;
end;

constructor TVkPerformanceOverrideInfoINTEL.Create(const aType_:TVkPerformanceOverrideTypeINTEL;
                                                   const aEnable:TVkBool32;
                                                   const aParameter:TVkUInt64);
begin
 sType:=VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL;
 pNext:=nil;
 type_:=aType_;
 enable:=aEnable;
 parameter:=aParameter;
end;

constructor TVkPerformanceConfigurationAcquireInfoINTEL.Create(const aType_:TVkPerformanceConfigurationTypeINTEL);
begin
 sType:=VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL;
 pNext:=nil;
 type_:=aType_;
end;

constructor TVkPhysicalDeviceShaderClockFeaturesKHR.Create(const aShaderSubgroupClock:TVkBool32;
                                                           const aShaderDeviceClock:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR;
 pNext:=nil;
 shaderSubgroupClock:=aShaderSubgroupClock;
 shaderDeviceClock:=aShaderDeviceClock;
end;

constructor TVkPhysicalDeviceIndexTypeUint8FeaturesEXT.Create(const aIndexTypeUint8:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT;
 pNext:=nil;
 indexTypeUint8:=aIndexTypeUint8;
end;

constructor TVkPhysicalDeviceShaderSMBuiltinsPropertiesNV.Create(const aShaderSMCount:TVkUInt32;
                                                                 const aShaderWarpsPerSM:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV;
 pNext:=nil;
 shaderSMCount:=aShaderSMCount;
 shaderWarpsPerSM:=aShaderWarpsPerSM;
end;

constructor TVkPhysicalDeviceShaderSMBuiltinsFeaturesNV.Create(const aShaderSMBuiltins:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV;
 pNext:=nil;
 shaderSMBuiltins:=aShaderSMBuiltins;
end;

constructor TVkPhysicalDeviceFragmentShaderInterlockFeaturesEXT.Create(const aFragmentShaderSampleInterlock:TVkBool32;
                                                                       const aFragmentShaderPixelInterlock:TVkBool32;
                                                                       const aFragmentShaderShadingRateInterlock:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT;
 pNext:=nil;
 fragmentShaderSampleInterlock:=aFragmentShaderSampleInterlock;
 fragmentShaderPixelInterlock:=aFragmentShaderPixelInterlock;
 fragmentShaderShadingRateInterlock:=aFragmentShaderShadingRateInterlock;
end;

constructor TVkPhysicalDeviceSeparateDepthStencilLayoutsFeatures.Create(const aSeparateDepthStencilLayouts:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES;
 pNext:=nil;
 separateDepthStencilLayouts:=aSeparateDepthStencilLayouts;
end;

constructor TVkAttachmentReferenceStencilLayout.Create(const aStencilLayout:TVkImageLayout);
begin
 sType:=VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT;
 pNext:=nil;
 stencilLayout:=aStencilLayout;
end;

constructor TVkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT.Create(const aPrimitiveTopologyListRestart:TVkBool32;
                                                                            const aPrimitiveTopologyPatchListRestart:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT;
 pNext:=nil;
 primitiveTopologyListRestart:=aPrimitiveTopologyListRestart;
 primitiveTopologyPatchListRestart:=aPrimitiveTopologyPatchListRestart;
end;

constructor TVkAttachmentDescriptionStencilLayout.Create(const aStencilInitialLayout:TVkImageLayout;
                                                         const aStencilFinalLayout:TVkImageLayout);
begin
 sType:=VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT;
 pNext:=nil;
 stencilInitialLayout:=aStencilInitialLayout;
 stencilFinalLayout:=aStencilFinalLayout;
end;

constructor TVkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR.Create(const aPipelineExecutableInfo:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR;
 pNext:=nil;
 pipelineExecutableInfo:=aPipelineExecutableInfo;
end;

constructor TVkPipelineInfoKHR.Create(const aPipeline:TVkPipeline);
begin
 sType:=VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR;
 pNext:=nil;
 pipeline:=aPipeline;
end;

constructor TVkPipelineExecutablePropertiesKHR.Create(const aStages:TVkShaderStageFlags;
                                                      const aName:TVkCharString;
                                                      const aDescription:TVkCharString;
                                                      const aSubgroupSize:TVkUInt32);
var ArrayItemCount:TVkInt32;
begin
 FillChar(self,SizeOf(TVkPipelineExecutablePropertiesKHR),#0);
 sType:=VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR;
 pNext:=nil;
 stages:=aStages;
 ArrayItemCount:=length(aName);
 if ArrayItemCount>length(name) then begin
  ArrayItemCount:=length(name);
 end;
 if ArrayItemCount>0 then begin
  Move(aName[1],name[0],ArrayItemCount*SizeOf(TVkChar));
 end;
 ArrayItemCount:=length(aDescription);
 if ArrayItemCount>length(description) then begin
  ArrayItemCount:=length(description);
 end;
 if ArrayItemCount>0 then begin
  Move(aDescription[1],description[0],ArrayItemCount*SizeOf(TVkChar));
 end;
 subgroupSize:=aSubgroupSize;
end;

constructor TVkPipelineExecutableInfoKHR.Create(const aPipeline:TVkPipeline;
                                                const aExecutableIndex:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR;
 pNext:=nil;
 pipeline:=aPipeline;
 executableIndex:=aExecutableIndex;
end;

constructor TVkPipelineExecutableStatisticKHR.Create(const aName:TVkCharString;
                                                     const aDescription:TVkCharString;
                                                     const aFormat:TVkPipelineExecutableStatisticFormatKHR;
                                                     const aValue:TVkPipelineExecutableStatisticValueKHR);
var ArrayItemCount:TVkInt32;
begin
 FillChar(self,SizeOf(TVkPipelineExecutableStatisticKHR),#0);
 sType:=VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR;
 pNext:=nil;
 ArrayItemCount:=length(aName);
 if ArrayItemCount>length(name) then begin
  ArrayItemCount:=length(name);
 end;
 if ArrayItemCount>0 then begin
  Move(aName[1],name[0],ArrayItemCount*SizeOf(TVkChar));
 end;
 ArrayItemCount:=length(aDescription);
 if ArrayItemCount>length(description) then begin
  ArrayItemCount:=length(description);
 end;
 if ArrayItemCount>0 then begin
  Move(aDescription[1],description[0],ArrayItemCount*SizeOf(TVkChar));
 end;
 format:=aFormat;
 value:=aValue;
end;

constructor TVkPipelineExecutableInternalRepresentationKHR.Create(const aName:TVkCharString;
                                                                  const aDescription:TVkCharString;
                                                                  const aIsText:TVkBool32;
                                                                  const aDataSize:TVkSize;
                                                                  const aPData:PVkVoid);
var ArrayItemCount:TVkInt32;
begin
 FillChar(self,SizeOf(TVkPipelineExecutableInternalRepresentationKHR),#0);
 sType:=VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR;
 pNext:=nil;
 ArrayItemCount:=length(aName);
 if ArrayItemCount>length(name) then begin
  ArrayItemCount:=length(name);
 end;
 if ArrayItemCount>0 then begin
  Move(aName[1],name[0],ArrayItemCount*SizeOf(TVkChar));
 end;
 ArrayItemCount:=length(aDescription);
 if ArrayItemCount>length(description) then begin
  ArrayItemCount:=length(description);
 end;
 if ArrayItemCount>0 then begin
  Move(aDescription[1],description[0],ArrayItemCount*SizeOf(TVkChar));
 end;
 isText:=aIsText;
 dataSize:=aDataSize;
 pData:=aPData;
end;

constructor TVkPhysicalDeviceShaderDemoteToHelperInvocationFeatures.Create(const aShaderDemoteToHelperInvocation:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES;
 pNext:=nil;
 shaderDemoteToHelperInvocation:=aShaderDemoteToHelperInvocation;
end;

constructor TVkPhysicalDeviceTexelBufferAlignmentFeaturesEXT.Create(const aTexelBufferAlignment:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT;
 pNext:=nil;
 texelBufferAlignment:=aTexelBufferAlignment;
end;

constructor TVkPhysicalDeviceTexelBufferAlignmentProperties.Create(const aStorageTexelBufferOffsetAlignmentBytes:TVkDeviceSize;
                                                                   const aStorageTexelBufferOffsetSingleTexelAlignment:TVkBool32;
                                                                   const aUniformTexelBufferOffsetAlignmentBytes:TVkDeviceSize;
                                                                   const aUniformTexelBufferOffsetSingleTexelAlignment:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES;
 pNext:=nil;
 storageTexelBufferOffsetAlignmentBytes:=aStorageTexelBufferOffsetAlignmentBytes;
 storageTexelBufferOffsetSingleTexelAlignment:=aStorageTexelBufferOffsetSingleTexelAlignment;
 uniformTexelBufferOffsetAlignmentBytes:=aUniformTexelBufferOffsetAlignmentBytes;
 uniformTexelBufferOffsetSingleTexelAlignment:=aUniformTexelBufferOffsetSingleTexelAlignment;
end;

constructor TVkPhysicalDeviceSubgroupSizeControlFeatures.Create(const aSubgroupSizeControl:TVkBool32;
                                                                const aComputeFullSubgroups:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES;
 pNext:=nil;
 subgroupSizeControl:=aSubgroupSizeControl;
 computeFullSubgroups:=aComputeFullSubgroups;
end;

constructor TVkPhysicalDeviceSubgroupSizeControlProperties.Create(const aMinSubgroupSize:TVkUInt32;
                                                                  const aMaxSubgroupSize:TVkUInt32;
                                                                  const aMaxComputeWorkgroupSubgroups:TVkUInt32;
                                                                  const aRequiredSubgroupSizeStages:TVkShaderStageFlags);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES;
 pNext:=nil;
 minSubgroupSize:=aMinSubgroupSize;
 maxSubgroupSize:=aMaxSubgroupSize;
 maxComputeWorkgroupSubgroups:=aMaxComputeWorkgroupSubgroups;
 requiredSubgroupSizeStages:=aRequiredSubgroupSizeStages;
end;

constructor TVkPipelineShaderStageRequiredSubgroupSizeCreateInfo.Create(const aRequiredSubgroupSize:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO;
 pNext:=nil;
 requiredSubgroupSize:=aRequiredSubgroupSize;
end;

constructor TVkSubpassShadingPipelineCreateInfoHUAWEI.Create(const aRenderPass:TVkRenderPass;
                                                             const aSubpass:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI;
 pNext:=nil;
 renderPass:=aRenderPass;
 subpass:=aSubpass;
end;

constructor TVkPhysicalDeviceSubpassShadingPropertiesHUAWEI.Create(const aMaxSubpassShadingWorkgroupSizeAspectRatio:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI;
 pNext:=nil;
 maxSubpassShadingWorkgroupSizeAspectRatio:=aMaxSubpassShadingWorkgroupSizeAspectRatio;
end;

constructor TVkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.Create(const aMaxWorkGroupCount:array of TVkUInt32;
                                                                         const aMaxWorkGroupSize:array of TVkUInt32;
                                                                         const aMaxOutputClusterCount:TVkUInt32;
                                                                         const aIndirectBufferOffsetAlignment:TVkDeviceSize);
var ArrayItemCount:TVkInt32;
begin
 FillChar(self,SizeOf(TVkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI),#0);
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI;
 pNext:=nil;
 ArrayItemCount:=length(aMaxWorkGroupCount);
 if ArrayItemCount>length(maxWorkGroupCount) then begin
  ArrayItemCount:=length(maxWorkGroupCount);
 end;
 if ArrayItemCount>0 then begin
  Move(aMaxWorkGroupCount[0],maxWorkGroupCount[0],ArrayItemCount*SizeOf(TVkUInt32));
 end;
 ArrayItemCount:=length(aMaxWorkGroupSize);
 if ArrayItemCount>length(maxWorkGroupSize) then begin
  ArrayItemCount:=length(maxWorkGroupSize);
 end;
 if ArrayItemCount>0 then begin
  Move(aMaxWorkGroupSize[0],maxWorkGroupSize[0],ArrayItemCount*SizeOf(TVkUInt32));
 end;
 maxOutputClusterCount:=aMaxOutputClusterCount;
 indirectBufferOffsetAlignment:=aIndirectBufferOffsetAlignment;
end;

constructor TVkMemoryOpaqueCaptureAddressAllocateInfo.Create(const aOpaqueCaptureAddress:TVkUInt64);
begin
 sType:=VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO;
 pNext:=nil;
 opaqueCaptureAddress:=aOpaqueCaptureAddress;
end;

constructor TVkDeviceMemoryOpaqueCaptureAddressInfo.Create(const aMemory:TVkDeviceMemory);
begin
 sType:=VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO;
 pNext:=nil;
 memory:=aMemory;
end;

constructor TVkPhysicalDeviceLineRasterizationFeaturesEXT.Create(const aRectangularLines:TVkBool32;
                                                                 const aBresenhamLines:TVkBool32;
                                                                 const aSmoothLines:TVkBool32;
                                                                 const aStippledRectangularLines:TVkBool32;
                                                                 const aStippledBresenhamLines:TVkBool32;
                                                                 const aStippledSmoothLines:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT;
 pNext:=nil;
 rectangularLines:=aRectangularLines;
 bresenhamLines:=aBresenhamLines;
 smoothLines:=aSmoothLines;
 stippledRectangularLines:=aStippledRectangularLines;
 stippledBresenhamLines:=aStippledBresenhamLines;
 stippledSmoothLines:=aStippledSmoothLines;
end;

constructor TVkPhysicalDeviceLineRasterizationPropertiesEXT.Create(const aLineSubPixelPrecisionBits:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT;
 pNext:=nil;
 lineSubPixelPrecisionBits:=aLineSubPixelPrecisionBits;
end;

constructor TVkPipelineRasterizationLineStateCreateInfoEXT.Create(const aLineRasterizationMode:TVkLineRasterizationModeEXT;
                                                                  const aStippledLineEnable:TVkBool32;
                                                                  const aLineStippleFactor:TVkUInt32;
                                                                  const aLineStipplePattern:TVkUInt16);
begin
 sType:=VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT;
 pNext:=nil;
 lineRasterizationMode:=aLineRasterizationMode;
 stippledLineEnable:=aStippledLineEnable;
 lineStippleFactor:=aLineStippleFactor;
 lineStipplePattern:=aLineStipplePattern;
end;

constructor TVkPhysicalDevicePipelineCreationCacheControlFeatures.Create(const aPipelineCreationCacheControl:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES;
 pNext:=nil;
 pipelineCreationCacheControl:=aPipelineCreationCacheControl;
end;

constructor TVkPhysicalDeviceVulkan11Features.Create(const aStorageBuffer16BitAccess:TVkBool32;
                                                     const aUniformAndStorageBuffer16BitAccess:TVkBool32;
                                                     const aStoragePushConstant16:TVkBool32;
                                                     const aStorageInputOutput16:TVkBool32;
                                                     const aMultiview:TVkBool32;
                                                     const aMultiviewGeometryShader:TVkBool32;
                                                     const aMultiviewTessellationShader:TVkBool32;
                                                     const aVariablePointersStorageBuffer:TVkBool32;
                                                     const aVariablePointers:TVkBool32;
                                                     const aProtectedMemory:TVkBool32;
                                                     const aSamplerYcbcrConversion:TVkBool32;
                                                     const aShaderDrawParameters:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES;
 pNext:=nil;
 storageBuffer16BitAccess:=aStorageBuffer16BitAccess;
 uniformAndStorageBuffer16BitAccess:=aUniformAndStorageBuffer16BitAccess;
 storagePushConstant16:=aStoragePushConstant16;
 storageInputOutput16:=aStorageInputOutput16;
 multiview:=aMultiview;
 multiviewGeometryShader:=aMultiviewGeometryShader;
 multiviewTessellationShader:=aMultiviewTessellationShader;
 variablePointersStorageBuffer:=aVariablePointersStorageBuffer;
 variablePointers:=aVariablePointers;
 protectedMemory:=aProtectedMemory;
 samplerYcbcrConversion:=aSamplerYcbcrConversion;
 shaderDrawParameters:=aShaderDrawParameters;
end;

constructor TVkPhysicalDeviceVulkan11Properties.Create(const aDeviceUUID:array of TVkUInt8;
                                                       const aDriverUUID:array of TVkUInt8;
                                                       const aDeviceLUID:array of TVkUInt8;
                                                       const aDeviceNodeMask:TVkUInt32;
                                                       const aDeviceLUIDValid:TVkBool32;
                                                       const aSubgroupSize:TVkUInt32;
                                                       const aSubgroupSupportedStages:TVkShaderStageFlags;
                                                       const aSubgroupSupportedOperations:TVkSubgroupFeatureFlags;
                                                       const aSubgroupQuadOperationsInAllStages:TVkBool32;
                                                       const aPointClippingBehavior:TVkPointClippingBehavior;
                                                       const aMaxMultiviewViewCount:TVkUInt32;
                                                       const aMaxMultiviewInstanceIndex:TVkUInt32;
                                                       const aProtectedNoFault:TVkBool32;
                                                       const aMaxPerSetDescriptors:TVkUInt32;
                                                       const aMaxMemoryAllocationSize:TVkDeviceSize);
var ArrayItemCount:TVkInt32;
begin
 FillChar(self,SizeOf(TVkPhysicalDeviceVulkan11Properties),#0);
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES;
 pNext:=nil;
 ArrayItemCount:=length(aDeviceUUID);
 if ArrayItemCount>length(deviceUUID) then begin
  ArrayItemCount:=length(deviceUUID);
 end;
 if ArrayItemCount>0 then begin
  Move(aDeviceUUID[0],deviceUUID[0],ArrayItemCount*SizeOf(TVkUInt8));
 end;
 ArrayItemCount:=length(aDriverUUID);
 if ArrayItemCount>length(driverUUID) then begin
  ArrayItemCount:=length(driverUUID);
 end;
 if ArrayItemCount>0 then begin
  Move(aDriverUUID[0],driverUUID[0],ArrayItemCount*SizeOf(TVkUInt8));
 end;
 ArrayItemCount:=length(aDeviceLUID);
 if ArrayItemCount>length(deviceLUID) then begin
  ArrayItemCount:=length(deviceLUID);
 end;
 if ArrayItemCount>0 then begin
  Move(aDeviceLUID[0],deviceLUID[0],ArrayItemCount*SizeOf(TVkUInt8));
 end;
 deviceNodeMask:=aDeviceNodeMask;
 deviceLUIDValid:=aDeviceLUIDValid;
 subgroupSize:=aSubgroupSize;
 subgroupSupportedStages:=aSubgroupSupportedStages;
 subgroupSupportedOperations:=aSubgroupSupportedOperations;
 subgroupQuadOperationsInAllStages:=aSubgroupQuadOperationsInAllStages;
 pointClippingBehavior:=aPointClippingBehavior;
 maxMultiviewViewCount:=aMaxMultiviewViewCount;
 maxMultiviewInstanceIndex:=aMaxMultiviewInstanceIndex;
 protectedNoFault:=aProtectedNoFault;
 maxPerSetDescriptors:=aMaxPerSetDescriptors;
 maxMemoryAllocationSize:=aMaxMemoryAllocationSize;
end;

constructor TVkPhysicalDeviceVulkan12Features.Create(const aSamplerMirrorClampToEdge:TVkBool32;
                                                     const aDrawIndirectCount:TVkBool32;
                                                     const aStorageBuffer8BitAccess:TVkBool32;
                                                     const aUniformAndStorageBuffer8BitAccess:TVkBool32;
                                                     const aStoragePushConstant8:TVkBool32;
                                                     const aShaderBufferInt64Atomics:TVkBool32;
                                                     const aShaderSharedInt64Atomics:TVkBool32;
                                                     const aShaderFloat16:TVkBool32;
                                                     const aShaderInt8:TVkBool32;
                                                     const aDescriptorIndexing:TVkBool32;
                                                     const aShaderInputAttachmentArrayDynamicIndexing:TVkBool32;
                                                     const aShaderUniformTexelBufferArrayDynamicIndexing:TVkBool32;
                                                     const aShaderStorageTexelBufferArrayDynamicIndexing:TVkBool32;
                                                     const aShaderUniformBufferArrayNonUniformIndexing:TVkBool32;
                                                     const aShaderSampledImageArrayNonUniformIndexing:TVkBool32;
                                                     const aShaderStorageBufferArrayNonUniformIndexing:TVkBool32;
                                                     const aShaderStorageImageArrayNonUniformIndexing:TVkBool32;
                                                     const aShaderInputAttachmentArrayNonUniformIndexing:TVkBool32;
                                                     const aShaderUniformTexelBufferArrayNonUniformIndexing:TVkBool32;
                                                     const aShaderStorageTexelBufferArrayNonUniformIndexing:TVkBool32;
                                                     const aDescriptorBindingUniformBufferUpdateAfterBind:TVkBool32;
                                                     const aDescriptorBindingSampledImageUpdateAfterBind:TVkBool32;
                                                     const aDescriptorBindingStorageImageUpdateAfterBind:TVkBool32;
                                                     const aDescriptorBindingStorageBufferUpdateAfterBind:TVkBool32;
                                                     const aDescriptorBindingUniformTexelBufferUpdateAfterBind:TVkBool32;
                                                     const aDescriptorBindingStorageTexelBufferUpdateAfterBind:TVkBool32;
                                                     const aDescriptorBindingUpdateUnusedWhilePending:TVkBool32;
                                                     const aDescriptorBindingPartiallyBound:TVkBool32;
                                                     const aDescriptorBindingVariableDescriptorCount:TVkBool32;
                                                     const aRuntimeDescriptorArray:TVkBool32;
                                                     const aSamplerFilterMinmax:TVkBool32;
                                                     const aScalarBlockLayout:TVkBool32;
                                                     const aImagelessFramebuffer:TVkBool32;
                                                     const aUniformBufferStandardLayout:TVkBool32;
                                                     const aShaderSubgroupExtendedTypes:TVkBool32;
                                                     const aSeparateDepthStencilLayouts:TVkBool32;
                                                     const aHostQueryReset:TVkBool32;
                                                     const aTimelineSemaphore:TVkBool32;
                                                     const aBufferDeviceAddress:TVkBool32;
                                                     const aBufferDeviceAddressCaptureReplay:TVkBool32;
                                                     const aBufferDeviceAddressMultiDevice:TVkBool32;
                                                     const aVulkanMemoryModel:TVkBool32;
                                                     const aVulkanMemoryModelDeviceScope:TVkBool32;
                                                     const aVulkanMemoryModelAvailabilityVisibilityChains:TVkBool32;
                                                     const aShaderOutputViewportIndex:TVkBool32;
                                                     const aShaderOutputLayer:TVkBool32;
                                                     const aSubgroupBroadcastDynamicId:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES;
 pNext:=nil;
 samplerMirrorClampToEdge:=aSamplerMirrorClampToEdge;
 drawIndirectCount:=aDrawIndirectCount;
 storageBuffer8BitAccess:=aStorageBuffer8BitAccess;
 uniformAndStorageBuffer8BitAccess:=aUniformAndStorageBuffer8BitAccess;
 storagePushConstant8:=aStoragePushConstant8;
 shaderBufferInt64Atomics:=aShaderBufferInt64Atomics;
 shaderSharedInt64Atomics:=aShaderSharedInt64Atomics;
 shaderFloat16:=aShaderFloat16;
 shaderInt8:=aShaderInt8;
 descriptorIndexing:=aDescriptorIndexing;
 shaderInputAttachmentArrayDynamicIndexing:=aShaderInputAttachmentArrayDynamicIndexing;
 shaderUniformTexelBufferArrayDynamicIndexing:=aShaderUniformTexelBufferArrayDynamicIndexing;
 shaderStorageTexelBufferArrayDynamicIndexing:=aShaderStorageTexelBufferArrayDynamicIndexing;
 shaderUniformBufferArrayNonUniformIndexing:=aShaderUniformBufferArrayNonUniformIndexing;
 shaderSampledImageArrayNonUniformIndexing:=aShaderSampledImageArrayNonUniformIndexing;
 shaderStorageBufferArrayNonUniformIndexing:=aShaderStorageBufferArrayNonUniformIndexing;
 shaderStorageImageArrayNonUniformIndexing:=aShaderStorageImageArrayNonUniformIndexing;
 shaderInputAttachmentArrayNonUniformIndexing:=aShaderInputAttachmentArrayNonUniformIndexing;
 shaderUniformTexelBufferArrayNonUniformIndexing:=aShaderUniformTexelBufferArrayNonUniformIndexing;
 shaderStorageTexelBufferArrayNonUniformIndexing:=aShaderStorageTexelBufferArrayNonUniformIndexing;
 descriptorBindingUniformBufferUpdateAfterBind:=aDescriptorBindingUniformBufferUpdateAfterBind;
 descriptorBindingSampledImageUpdateAfterBind:=aDescriptorBindingSampledImageUpdateAfterBind;
 descriptorBindingStorageImageUpdateAfterBind:=aDescriptorBindingStorageImageUpdateAfterBind;
 descriptorBindingStorageBufferUpdateAfterBind:=aDescriptorBindingStorageBufferUpdateAfterBind;
 descriptorBindingUniformTexelBufferUpdateAfterBind:=aDescriptorBindingUniformTexelBufferUpdateAfterBind;
 descriptorBindingStorageTexelBufferUpdateAfterBind:=aDescriptorBindingStorageTexelBufferUpdateAfterBind;
 descriptorBindingUpdateUnusedWhilePending:=aDescriptorBindingUpdateUnusedWhilePending;
 descriptorBindingPartiallyBound:=aDescriptorBindingPartiallyBound;
 descriptorBindingVariableDescriptorCount:=aDescriptorBindingVariableDescriptorCount;
 runtimeDescriptorArray:=aRuntimeDescriptorArray;
 samplerFilterMinmax:=aSamplerFilterMinmax;
 scalarBlockLayout:=aScalarBlockLayout;
 imagelessFramebuffer:=aImagelessFramebuffer;
 uniformBufferStandardLayout:=aUniformBufferStandardLayout;
 shaderSubgroupExtendedTypes:=aShaderSubgroupExtendedTypes;
 separateDepthStencilLayouts:=aSeparateDepthStencilLayouts;
 hostQueryReset:=aHostQueryReset;
 timelineSemaphore:=aTimelineSemaphore;
 bufferDeviceAddress:=aBufferDeviceAddress;
 bufferDeviceAddressCaptureReplay:=aBufferDeviceAddressCaptureReplay;
 bufferDeviceAddressMultiDevice:=aBufferDeviceAddressMultiDevice;
 vulkanMemoryModel:=aVulkanMemoryModel;
 vulkanMemoryModelDeviceScope:=aVulkanMemoryModelDeviceScope;
 vulkanMemoryModelAvailabilityVisibilityChains:=aVulkanMemoryModelAvailabilityVisibilityChains;
 shaderOutputViewportIndex:=aShaderOutputViewportIndex;
 shaderOutputLayer:=aShaderOutputLayer;
 subgroupBroadcastDynamicId:=aSubgroupBroadcastDynamicId;
end;

constructor TVkPhysicalDeviceVulkan12Properties.Create(const aDriverID:TVkDriverId;
                                                       const aDriverName:TVkCharString;
                                                       const aDriverInfo:TVkCharString;
                                                       const aConformanceVersion:TVkConformanceVersion;
                                                       const aDenormBehaviorIndependence:TVkShaderFloatControlsIndependence;
                                                       const aRoundingModeIndependence:TVkShaderFloatControlsIndependence;
                                                       const aShaderSignedZeroInfNanPreserveFloat16:TVkBool32;
                                                       const aShaderSignedZeroInfNanPreserveFloat32:TVkBool32;
                                                       const aShaderSignedZeroInfNanPreserveFloat64:TVkBool32;
                                                       const aShaderDenormPreserveFloat16:TVkBool32;
                                                       const aShaderDenormPreserveFloat32:TVkBool32;
                                                       const aShaderDenormPreserveFloat64:TVkBool32;
                                                       const aShaderDenormFlushToZeroFloat16:TVkBool32;
                                                       const aShaderDenormFlushToZeroFloat32:TVkBool32;
                                                       const aShaderDenormFlushToZeroFloat64:TVkBool32;
                                                       const aShaderRoundingModeRTEFloat16:TVkBool32;
                                                       const aShaderRoundingModeRTEFloat32:TVkBool32;
                                                       const aShaderRoundingModeRTEFloat64:TVkBool32;
                                                       const aShaderRoundingModeRTZFloat16:TVkBool32;
                                                       const aShaderRoundingModeRTZFloat32:TVkBool32;
                                                       const aShaderRoundingModeRTZFloat64:TVkBool32;
                                                       const aMaxUpdateAfterBindDescriptorsInAllPools:TVkUInt32;
                                                       const aShaderUniformBufferArrayNonUniformIndexingNative:TVkBool32;
                                                       const aShaderSampledImageArrayNonUniformIndexingNative:TVkBool32;
                                                       const aShaderStorageBufferArrayNonUniformIndexingNative:TVkBool32;
                                                       const aShaderStorageImageArrayNonUniformIndexingNative:TVkBool32;
                                                       const aShaderInputAttachmentArrayNonUniformIndexingNative:TVkBool32;
                                                       const aRobustBufferAccessUpdateAfterBind:TVkBool32;
                                                       const aQuadDivergentImplicitLod:TVkBool32;
                                                       const aMaxPerStageDescriptorUpdateAfterBindSamplers:TVkUInt32;
                                                       const aMaxPerStageDescriptorUpdateAfterBindUniformBuffers:TVkUInt32;
                                                       const aMaxPerStageDescriptorUpdateAfterBindStorageBuffers:TVkUInt32;
                                                       const aMaxPerStageDescriptorUpdateAfterBindSampledImages:TVkUInt32;
                                                       const aMaxPerStageDescriptorUpdateAfterBindStorageImages:TVkUInt32;
                                                       const aMaxPerStageDescriptorUpdateAfterBindInputAttachments:TVkUInt32;
                                                       const aMaxPerStageUpdateAfterBindResources:TVkUInt32;
                                                       const aMaxDescriptorSetUpdateAfterBindSamplers:TVkUInt32;
                                                       const aMaxDescriptorSetUpdateAfterBindUniformBuffers:TVkUInt32;
                                                       const aMaxDescriptorSetUpdateAfterBindUniformBuffersDynamic:TVkUInt32;
                                                       const aMaxDescriptorSetUpdateAfterBindStorageBuffers:TVkUInt32;
                                                       const aMaxDescriptorSetUpdateAfterBindStorageBuffersDynamic:TVkUInt32;
                                                       const aMaxDescriptorSetUpdateAfterBindSampledImages:TVkUInt32;
                                                       const aMaxDescriptorSetUpdateAfterBindStorageImages:TVkUInt32;
                                                       const aMaxDescriptorSetUpdateAfterBindInputAttachments:TVkUInt32;
                                                       const aSupportedDepthResolveModes:TVkResolveModeFlags;
                                                       const aSupportedStencilResolveModes:TVkResolveModeFlags;
                                                       const aIndependentResolveNone:TVkBool32;
                                                       const aIndependentResolve:TVkBool32;
                                                       const aFilterMinmaxSingleComponentFormats:TVkBool32;
                                                       const aFilterMinmaxImageComponentMapping:TVkBool32;
                                                       const aMaxTimelineSemaphoreValueDifference:TVkUInt64;
                                                       const aFramebufferIntegerColorSampleCounts:TVkSampleCountFlags);
var ArrayItemCount:TVkInt32;
begin
 FillChar(self,SizeOf(TVkPhysicalDeviceVulkan12Properties),#0);
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES;
 pNext:=nil;
 driverID:=aDriverID;
 ArrayItemCount:=length(aDriverName);
 if ArrayItemCount>length(driverName) then begin
  ArrayItemCount:=length(driverName);
 end;
 if ArrayItemCount>0 then begin
  Move(aDriverName[1],driverName[0],ArrayItemCount*SizeOf(TVkChar));
 end;
 ArrayItemCount:=length(aDriverInfo);
 if ArrayItemCount>length(driverInfo) then begin
  ArrayItemCount:=length(driverInfo);
 end;
 if ArrayItemCount>0 then begin
  Move(aDriverInfo[1],driverInfo[0],ArrayItemCount*SizeOf(TVkChar));
 end;
 conformanceVersion:=aConformanceVersion;
 denormBehaviorIndependence:=aDenormBehaviorIndependence;
 roundingModeIndependence:=aRoundingModeIndependence;
 shaderSignedZeroInfNanPreserveFloat16:=aShaderSignedZeroInfNanPreserveFloat16;
 shaderSignedZeroInfNanPreserveFloat32:=aShaderSignedZeroInfNanPreserveFloat32;
 shaderSignedZeroInfNanPreserveFloat64:=aShaderSignedZeroInfNanPreserveFloat64;
 shaderDenormPreserveFloat16:=aShaderDenormPreserveFloat16;
 shaderDenormPreserveFloat32:=aShaderDenormPreserveFloat32;
 shaderDenormPreserveFloat64:=aShaderDenormPreserveFloat64;
 shaderDenormFlushToZeroFloat16:=aShaderDenormFlushToZeroFloat16;
 shaderDenormFlushToZeroFloat32:=aShaderDenormFlushToZeroFloat32;
 shaderDenormFlushToZeroFloat64:=aShaderDenormFlushToZeroFloat64;
 shaderRoundingModeRTEFloat16:=aShaderRoundingModeRTEFloat16;
 shaderRoundingModeRTEFloat32:=aShaderRoundingModeRTEFloat32;
 shaderRoundingModeRTEFloat64:=aShaderRoundingModeRTEFloat64;
 shaderRoundingModeRTZFloat16:=aShaderRoundingModeRTZFloat16;
 shaderRoundingModeRTZFloat32:=aShaderRoundingModeRTZFloat32;
 shaderRoundingModeRTZFloat64:=aShaderRoundingModeRTZFloat64;
 maxUpdateAfterBindDescriptorsInAllPools:=aMaxUpdateAfterBindDescriptorsInAllPools;
 shaderUniformBufferArrayNonUniformIndexingNative:=aShaderUniformBufferArrayNonUniformIndexingNative;
 shaderSampledImageArrayNonUniformIndexingNative:=aShaderSampledImageArrayNonUniformIndexingNative;
 shaderStorageBufferArrayNonUniformIndexingNative:=aShaderStorageBufferArrayNonUniformIndexingNative;
 shaderStorageImageArrayNonUniformIndexingNative:=aShaderStorageImageArrayNonUniformIndexingNative;
 shaderInputAttachmentArrayNonUniformIndexingNative:=aShaderInputAttachmentArrayNonUniformIndexingNative;
 robustBufferAccessUpdateAfterBind:=aRobustBufferAccessUpdateAfterBind;
 quadDivergentImplicitLod:=aQuadDivergentImplicitLod;
 maxPerStageDescriptorUpdateAfterBindSamplers:=aMaxPerStageDescriptorUpdateAfterBindSamplers;
 maxPerStageDescriptorUpdateAfterBindUniformBuffers:=aMaxPerStageDescriptorUpdateAfterBindUniformBuffers;
 maxPerStageDescriptorUpdateAfterBindStorageBuffers:=aMaxPerStageDescriptorUpdateAfterBindStorageBuffers;
 maxPerStageDescriptorUpdateAfterBindSampledImages:=aMaxPerStageDescriptorUpdateAfterBindSampledImages;
 maxPerStageDescriptorUpdateAfterBindStorageImages:=aMaxPerStageDescriptorUpdateAfterBindStorageImages;
 maxPerStageDescriptorUpdateAfterBindInputAttachments:=aMaxPerStageDescriptorUpdateAfterBindInputAttachments;
 maxPerStageUpdateAfterBindResources:=aMaxPerStageUpdateAfterBindResources;
 maxDescriptorSetUpdateAfterBindSamplers:=aMaxDescriptorSetUpdateAfterBindSamplers;
 maxDescriptorSetUpdateAfterBindUniformBuffers:=aMaxDescriptorSetUpdateAfterBindUniformBuffers;
 maxDescriptorSetUpdateAfterBindUniformBuffersDynamic:=aMaxDescriptorSetUpdateAfterBindUniformBuffersDynamic;
 maxDescriptorSetUpdateAfterBindStorageBuffers:=aMaxDescriptorSetUpdateAfterBindStorageBuffers;
 maxDescriptorSetUpdateAfterBindStorageBuffersDynamic:=aMaxDescriptorSetUpdateAfterBindStorageBuffersDynamic;
 maxDescriptorSetUpdateAfterBindSampledImages:=aMaxDescriptorSetUpdateAfterBindSampledImages;
 maxDescriptorSetUpdateAfterBindStorageImages:=aMaxDescriptorSetUpdateAfterBindStorageImages;
 maxDescriptorSetUpdateAfterBindInputAttachments:=aMaxDescriptorSetUpdateAfterBindInputAttachments;
 supportedDepthResolveModes:=aSupportedDepthResolveModes;
 supportedStencilResolveModes:=aSupportedStencilResolveModes;
 independentResolveNone:=aIndependentResolveNone;
 independentResolve:=aIndependentResolve;
 filterMinmaxSingleComponentFormats:=aFilterMinmaxSingleComponentFormats;
 filterMinmaxImageComponentMapping:=aFilterMinmaxImageComponentMapping;
 maxTimelineSemaphoreValueDifference:=aMaxTimelineSemaphoreValueDifference;
 framebufferIntegerColorSampleCounts:=aFramebufferIntegerColorSampleCounts;
end;

constructor TVkPhysicalDeviceVulkan13Features.Create(const aRobustImageAccess:TVkBool32;
                                                     const aInlineUniformBlock:TVkBool32;
                                                     const aDescriptorBindingInlineUniformBlockUpdateAfterBind:TVkBool32;
                                                     const aPipelineCreationCacheControl:TVkBool32;
                                                     const aPrivateData:TVkBool32;
                                                     const aShaderDemoteToHelperInvocation:TVkBool32;
                                                     const aShaderTerminateInvocation:TVkBool32;
                                                     const aSubgroupSizeControl:TVkBool32;
                                                     const aComputeFullSubgroups:TVkBool32;
                                                     const aSynchronization2:TVkBool32;
                                                     const aTextureCompressionASTC_HDR:TVkBool32;
                                                     const aShaderZeroInitializeWorkgroupMemory:TVkBool32;
                                                     const aDynamicRendering:TVkBool32;
                                                     const aShaderIntegerDotProduct:TVkBool32;
                                                     const aMaintenance4:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES;
 pNext:=nil;
 robustImageAccess:=aRobustImageAccess;
 inlineUniformBlock:=aInlineUniformBlock;
 descriptorBindingInlineUniformBlockUpdateAfterBind:=aDescriptorBindingInlineUniformBlockUpdateAfterBind;
 pipelineCreationCacheControl:=aPipelineCreationCacheControl;
 privateData:=aPrivateData;
 shaderDemoteToHelperInvocation:=aShaderDemoteToHelperInvocation;
 shaderTerminateInvocation:=aShaderTerminateInvocation;
 subgroupSizeControl:=aSubgroupSizeControl;
 computeFullSubgroups:=aComputeFullSubgroups;
 synchronization2:=aSynchronization2;
 textureCompressionASTC_HDR:=aTextureCompressionASTC_HDR;
 shaderZeroInitializeWorkgroupMemory:=aShaderZeroInitializeWorkgroupMemory;
 dynamicRendering:=aDynamicRendering;
 shaderIntegerDotProduct:=aShaderIntegerDotProduct;
 maintenance4:=aMaintenance4;
end;

constructor TVkPhysicalDeviceVulkan13Properties.Create(const aMinSubgroupSize:TVkUInt32;
                                                       const aMaxSubgroupSize:TVkUInt32;
                                                       const aMaxComputeWorkgroupSubgroups:TVkUInt32;
                                                       const aRequiredSubgroupSizeStages:TVkShaderStageFlags;
                                                       const aMaxInlineUniformBlockSize:TVkUInt32;
                                                       const aMaxPerStageDescriptorInlineUniformBlocks:TVkUInt32;
                                                       const aMaxPerStageDescriptorUpdateAfterBindInlineUniformBlocks:TVkUInt32;
                                                       const aMaxDescriptorSetInlineUniformBlocks:TVkUInt32;
                                                       const aMaxDescriptorSetUpdateAfterBindInlineUniformBlocks:TVkUInt32;
                                                       const aMaxInlineUniformTotalSize:TVkUInt32;
                                                       const aIntegerDotProduct8BitUnsignedAccelerated:TVkBool32;
                                                       const aIntegerDotProduct8BitSignedAccelerated:TVkBool32;
                                                       const aIntegerDotProduct8BitMixedSignednessAccelerated:TVkBool32;
                                                       const aIntegerDotProduct4x8BitPackedUnsignedAccelerated:TVkBool32;
                                                       const aIntegerDotProduct4x8BitPackedSignedAccelerated:TVkBool32;
                                                       const aIntegerDotProduct4x8BitPackedMixedSignednessAccelerated:TVkBool32;
                                                       const aIntegerDotProduct16BitUnsignedAccelerated:TVkBool32;
                                                       const aIntegerDotProduct16BitSignedAccelerated:TVkBool32;
                                                       const aIntegerDotProduct16BitMixedSignednessAccelerated:TVkBool32;
                                                       const aIntegerDotProduct32BitUnsignedAccelerated:TVkBool32;
                                                       const aIntegerDotProduct32BitSignedAccelerated:TVkBool32;
                                                       const aIntegerDotProduct32BitMixedSignednessAccelerated:TVkBool32;
                                                       const aIntegerDotProduct64BitUnsignedAccelerated:TVkBool32;
                                                       const aIntegerDotProduct64BitSignedAccelerated:TVkBool32;
                                                       const aIntegerDotProduct64BitMixedSignednessAccelerated:TVkBool32;
                                                       const aIntegerDotProductAccumulatingSaturating8BitUnsignedAccelerated:TVkBool32;
                                                       const aIntegerDotProductAccumulatingSaturating8BitSignedAccelerated:TVkBool32;
                                                       const aIntegerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated:TVkBool32;
                                                       const aIntegerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated:TVkBool32;
                                                       const aIntegerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated:TVkBool32;
                                                       const aIntegerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated:TVkBool32;
                                                       const aIntegerDotProductAccumulatingSaturating16BitUnsignedAccelerated:TVkBool32;
                                                       const aIntegerDotProductAccumulatingSaturating16BitSignedAccelerated:TVkBool32;
                                                       const aIntegerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated:TVkBool32;
                                                       const aIntegerDotProductAccumulatingSaturating32BitUnsignedAccelerated:TVkBool32;
                                                       const aIntegerDotProductAccumulatingSaturating32BitSignedAccelerated:TVkBool32;
                                                       const aIntegerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated:TVkBool32;
                                                       const aIntegerDotProductAccumulatingSaturating64BitUnsignedAccelerated:TVkBool32;
                                                       const aIntegerDotProductAccumulatingSaturating64BitSignedAccelerated:TVkBool32;
                                                       const aIntegerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated:TVkBool32;
                                                       const aStorageTexelBufferOffsetAlignmentBytes:TVkDeviceSize;
                                                       const aStorageTexelBufferOffsetSingleTexelAlignment:TVkBool32;
                                                       const aUniformTexelBufferOffsetAlignmentBytes:TVkDeviceSize;
                                                       const aUniformTexelBufferOffsetSingleTexelAlignment:TVkBool32;
                                                       const aMaxBufferSize:TVkDeviceSize);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES;
 pNext:=nil;
 minSubgroupSize:=aMinSubgroupSize;
 maxSubgroupSize:=aMaxSubgroupSize;
 maxComputeWorkgroupSubgroups:=aMaxComputeWorkgroupSubgroups;
 requiredSubgroupSizeStages:=aRequiredSubgroupSizeStages;
 maxInlineUniformBlockSize:=aMaxInlineUniformBlockSize;
 maxPerStageDescriptorInlineUniformBlocks:=aMaxPerStageDescriptorInlineUniformBlocks;
 maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks:=aMaxPerStageDescriptorUpdateAfterBindInlineUniformBlocks;
 maxDescriptorSetInlineUniformBlocks:=aMaxDescriptorSetInlineUniformBlocks;
 maxDescriptorSetUpdateAfterBindInlineUniformBlocks:=aMaxDescriptorSetUpdateAfterBindInlineUniformBlocks;
 maxInlineUniformTotalSize:=aMaxInlineUniformTotalSize;
 integerDotProduct8BitUnsignedAccelerated:=aIntegerDotProduct8BitUnsignedAccelerated;
 integerDotProduct8BitSignedAccelerated:=aIntegerDotProduct8BitSignedAccelerated;
 integerDotProduct8BitMixedSignednessAccelerated:=aIntegerDotProduct8BitMixedSignednessAccelerated;
 integerDotProduct4x8BitPackedUnsignedAccelerated:=aIntegerDotProduct4x8BitPackedUnsignedAccelerated;
 integerDotProduct4x8BitPackedSignedAccelerated:=aIntegerDotProduct4x8BitPackedSignedAccelerated;
 integerDotProduct4x8BitPackedMixedSignednessAccelerated:=aIntegerDotProduct4x8BitPackedMixedSignednessAccelerated;
 integerDotProduct16BitUnsignedAccelerated:=aIntegerDotProduct16BitUnsignedAccelerated;
 integerDotProduct16BitSignedAccelerated:=aIntegerDotProduct16BitSignedAccelerated;
 integerDotProduct16BitMixedSignednessAccelerated:=aIntegerDotProduct16BitMixedSignednessAccelerated;
 integerDotProduct32BitUnsignedAccelerated:=aIntegerDotProduct32BitUnsignedAccelerated;
 integerDotProduct32BitSignedAccelerated:=aIntegerDotProduct32BitSignedAccelerated;
 integerDotProduct32BitMixedSignednessAccelerated:=aIntegerDotProduct32BitMixedSignednessAccelerated;
 integerDotProduct64BitUnsignedAccelerated:=aIntegerDotProduct64BitUnsignedAccelerated;
 integerDotProduct64BitSignedAccelerated:=aIntegerDotProduct64BitSignedAccelerated;
 integerDotProduct64BitMixedSignednessAccelerated:=aIntegerDotProduct64BitMixedSignednessAccelerated;
 integerDotProductAccumulatingSaturating8BitUnsignedAccelerated:=aIntegerDotProductAccumulatingSaturating8BitUnsignedAccelerated;
 integerDotProductAccumulatingSaturating8BitSignedAccelerated:=aIntegerDotProductAccumulatingSaturating8BitSignedAccelerated;
 integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated:=aIntegerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated;
 integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated:=aIntegerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated;
 integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated:=aIntegerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated;
 integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated:=aIntegerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated;
 integerDotProductAccumulatingSaturating16BitUnsignedAccelerated:=aIntegerDotProductAccumulatingSaturating16BitUnsignedAccelerated;
 integerDotProductAccumulatingSaturating16BitSignedAccelerated:=aIntegerDotProductAccumulatingSaturating16BitSignedAccelerated;
 integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated:=aIntegerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated;
 integerDotProductAccumulatingSaturating32BitUnsignedAccelerated:=aIntegerDotProductAccumulatingSaturating32BitUnsignedAccelerated;
 integerDotProductAccumulatingSaturating32BitSignedAccelerated:=aIntegerDotProductAccumulatingSaturating32BitSignedAccelerated;
 integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated:=aIntegerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated;
 integerDotProductAccumulatingSaturating64BitUnsignedAccelerated:=aIntegerDotProductAccumulatingSaturating64BitUnsignedAccelerated;
 integerDotProductAccumulatingSaturating64BitSignedAccelerated:=aIntegerDotProductAccumulatingSaturating64BitSignedAccelerated;
 integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated:=aIntegerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated;
 storageTexelBufferOffsetAlignmentBytes:=aStorageTexelBufferOffsetAlignmentBytes;
 storageTexelBufferOffsetSingleTexelAlignment:=aStorageTexelBufferOffsetSingleTexelAlignment;
 uniformTexelBufferOffsetAlignmentBytes:=aUniformTexelBufferOffsetAlignmentBytes;
 uniformTexelBufferOffsetSingleTexelAlignment:=aUniformTexelBufferOffsetSingleTexelAlignment;
 maxBufferSize:=aMaxBufferSize;
end;

constructor TVkPipelineCompilerControlCreateInfoAMD.Create(const aCompilerControlFlags:TVkPipelineCompilerControlFlagsAMD);
begin
 sType:=VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD;
 pNext:=nil;
 compilerControlFlags:=aCompilerControlFlags;
end;

constructor TVkPhysicalDeviceCoherentMemoryFeaturesAMD.Create(const aDeviceCoherentMemory:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD;
 pNext:=nil;
 deviceCoherentMemory:=aDeviceCoherentMemory;
end;

{$ifdef VulkanSC}
constructor TVkFaultCallbackInfo.Create(const aFaultCount:TVkUInt32;
                                        const aPFaults:PVkFaultData;
                                        const aPfnFaultCallback:TPFN_vkFaultCallbackFunction);
begin
 sType:=VK_STRUCTURE_TYPE_FAULT_CALLBACK_INFO;
 pNext:=nil;
 faultCount:=aFaultCount;
 pFaults:=aPFaults;
 pfnFaultCallback:=aPfnFaultCallback;
end;
{$endif}

constructor TVkPhysicalDeviceToolProperties.Create(const aName:TVkCharString;
                                                   const aVersion:TVkCharString;
                                                   const aPurposes:TVkToolPurposeFlags;
                                                   const aDescription:TVkCharString;
                                                   const aLayer:TVkCharString);
var ArrayItemCount:TVkInt32;
begin
 FillChar(self,SizeOf(TVkPhysicalDeviceToolProperties),#0);
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES;
 pNext:=nil;
 ArrayItemCount:=length(aName);
 if ArrayItemCount>length(name) then begin
  ArrayItemCount:=length(name);
 end;
 if ArrayItemCount>0 then begin
  Move(aName[1],name[0],ArrayItemCount*SizeOf(TVkChar));
 end;
 ArrayItemCount:=length(aVersion);
 if ArrayItemCount>length(version) then begin
  ArrayItemCount:=length(version);
 end;
 if ArrayItemCount>0 then begin
  Move(aVersion[1],version[0],ArrayItemCount*SizeOf(TVkChar));
 end;
 purposes:=aPurposes;
 ArrayItemCount:=length(aDescription);
 if ArrayItemCount>length(description) then begin
  ArrayItemCount:=length(description);
 end;
 if ArrayItemCount>0 then begin
  Move(aDescription[1],description[0],ArrayItemCount*SizeOf(TVkChar));
 end;
 ArrayItemCount:=length(aLayer);
 if ArrayItemCount>length(layer) then begin
  ArrayItemCount:=length(layer);
 end;
 if ArrayItemCount>0 then begin
  Move(aLayer[1],layer[0],ArrayItemCount*SizeOf(TVkChar));
 end;
end;

constructor TVkSamplerCustomBorderColorCreateInfoEXT.Create(const aCustomBorderColor:TVkClearColorValue;
                                                            const aFormat:TVkFormat);
begin
 sType:=VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT;
 pNext:=nil;
 customBorderColor:=aCustomBorderColor;
 format:=aFormat;
end;

constructor TVkPhysicalDeviceCustomBorderColorPropertiesEXT.Create(const aMaxCustomBorderColorSamplers:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT;
 pNext:=nil;
 maxCustomBorderColorSamplers:=aMaxCustomBorderColorSamplers;
end;

constructor TVkPhysicalDeviceCustomBorderColorFeaturesEXT.Create(const aCustomBorderColors:TVkBool32;
                                                                 const aCustomBorderColorWithoutFormat:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT;
 pNext:=nil;
 customBorderColors:=aCustomBorderColors;
 customBorderColorWithoutFormat:=aCustomBorderColorWithoutFormat;
end;

constructor TVkSamplerBorderColorComponentMappingCreateInfoEXT.Create(const aComponents:TVkComponentMapping;
                                                                      const aSrgb:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT;
 pNext:=nil;
 components:=aComponents;
 srgb:=aSrgb;
end;

constructor TVkPhysicalDeviceBorderColorSwizzleFeaturesEXT.Create(const aBorderColorSwizzle:TVkBool32;
                                                                  const aBorderColorSwizzleFromImage:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT;
 pNext:=nil;
 borderColorSwizzle:=aBorderColorSwizzle;
 borderColorSwizzleFromImage:=aBorderColorSwizzleFromImage;
end;

constructor TVkAccelerationStructureGeometryTrianglesDataKHR.Create(const aVertexFormat:TVkFormat;
                                                                    const aVertexData:TVkDeviceOrHostAddressConstKHR;
                                                                    const aVertexStride:TVkDeviceSize;
                                                                    const aMaxVertex:TVkUInt32;
                                                                    const aIndexType:TVkIndexType;
                                                                    const aIndexData:TVkDeviceOrHostAddressConstKHR;
                                                                    const aTransformData:TVkDeviceOrHostAddressConstKHR);
begin
 sType:=VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR;
 pNext:=nil;
 vertexFormat:=aVertexFormat;
 vertexData:=aVertexData;
 vertexStride:=aVertexStride;
 maxVertex:=aMaxVertex;
 indexType:=aIndexType;
 indexData:=aIndexData;
 transformData:=aTransformData;
end;

constructor TVkAccelerationStructureGeometryAabbsDataKHR.Create(const aData:TVkDeviceOrHostAddressConstKHR;
                                                                const aStride:TVkDeviceSize);
begin
 sType:=VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR;
 pNext:=nil;
 data:=aData;
 stride:=aStride;
end;

constructor TVkAccelerationStructureGeometryInstancesDataKHR.Create(const aArrayOfPointers:TVkBool32;
                                                                    const aData:TVkDeviceOrHostAddressConstKHR);
begin
 sType:=VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR;
 pNext:=nil;
 arrayOfPointers:=aArrayOfPointers;
 data:=aData;
end;

constructor TVkAccelerationStructureGeometryKHR.Create(const aGeometryType:TVkGeometryTypeKHR;
                                                       const aGeometry:TVkAccelerationStructureGeometryDataKHR;
                                                       const aFlags:TVkGeometryFlagsKHR);
begin
 sType:=VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR;
 pNext:=nil;
 geometryType:=aGeometryType;
 geometry:=aGeometry;
 flags:=aFlags;
end;

constructor TVkAccelerationStructureBuildGeometryInfoKHR.Create(const aType_:TVkAccelerationStructureTypeKHR;
                                                                const aFlags:TVkBuildAccelerationStructureFlagsKHR;
                                                                const aMode:TVkBuildAccelerationStructureModeKHR;
                                                                const aSrcAccelerationStructure:TVkAccelerationStructureKHR;
                                                                const aDstAccelerationStructure:TVkAccelerationStructureKHR;
                                                                const aGeometryCount:TVkUInt32;
                                                                const aPGeometries:PVkAccelerationStructureGeometryKHR;
                                                                const aPpGeometries:PPVkAccelerationStructureGeometryKHR;
                                                                const aScratchData:TVkDeviceOrHostAddressKHR);
begin
 sType:=VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR;
 pNext:=nil;
 type_:=aType_;
 flags:=aFlags;
 mode:=aMode;
 srcAccelerationStructure:=aSrcAccelerationStructure;
 dstAccelerationStructure:=aDstAccelerationStructure;
 geometryCount:=aGeometryCount;
 pGeometries:=aPGeometries;
 ppGeometries:=aPpGeometries;
 scratchData:=aScratchData;
end;

constructor TVkAccelerationStructureBuildRangeInfoKHR.Create(const aPrimitiveCount:TVkUInt32;
                                                             const aPrimitiveOffset:TVkUInt32;
                                                             const aFirstVertex:TVkUInt32;
                                                             const aTransformOffset:TVkUInt32);
begin
 primitiveCount:=aPrimitiveCount;
 primitiveOffset:=aPrimitiveOffset;
 firstVertex:=aFirstVertex;
 transformOffset:=aTransformOffset;
end;

constructor TVkAccelerationStructureCreateInfoKHR.Create(const aCreateFlags:TVkAccelerationStructureCreateFlagsKHR;
                                                         const aBuffer:TVkBuffer;
                                                         const aOffset:TVkDeviceSize;
                                                         const aSize:TVkDeviceSize;
                                                         const aType_:TVkAccelerationStructureTypeKHR;
                                                         const aDeviceAddress:TVkDeviceAddress);
begin
 sType:=VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR;
 pNext:=nil;
 createFlags:=aCreateFlags;
 buffer:=aBuffer;
 offset:=aOffset;
 size:=aSize;
 type_:=aType_;
 deviceAddress:=aDeviceAddress;
end;

constructor TVkAabbPositionsKHR.Create(const aMinX:TVkFloat;
                                       const aMinY:TVkFloat;
                                       const aMinZ:TVkFloat;
                                       const aMaxX:TVkFloat;
                                       const aMaxY:TVkFloat;
                                       const aMaxZ:TVkFloat);
begin
 minX:=aMinX;
 minY:=aMinY;
 minZ:=aMinZ;
 maxX:=aMaxX;
 maxY:=aMaxY;
 maxZ:=aMaxZ;
end;

constructor TVkTransformMatrixKHR.Create(const aMatrix:array of TVkFloat);
var ArrayItemCount:TVkInt32;
begin
 FillChar(self,SizeOf(TVkTransformMatrixKHR),#0);
 ArrayItemCount:=length(aMatrix);
 if ArrayItemCount>length(matrix) then begin
  ArrayItemCount:=length(matrix);
 end;
 if ArrayItemCount>0 then begin
  Move(aMatrix[0],matrix[0],ArrayItemCount*SizeOf(TVkFloat));
 end;
end;

constructor TVkAccelerationStructureInstanceKHR.Create(const aTransform:TVkTransformMatrixKHR;
                                                       const aInstanceCustomIndex:TVkUInt32;
                                                       const aMask:TVkUInt32;
                                                       const aInstanceShaderBindingTableRecordOffset:TVkUInt32;
                                                       const aFlags:TVkGeometryInstanceFlagsKHR;
                                                       const aAccelerationStructureReference:TVkUInt64);
begin
 transform:=aTransform;
 instanceCustomIndexMask:=(aInstanceCustomIndex and TVkUInt32($00ffffff)) or ((aMask and TVkUInt32($000000ff)) shl 24);
 instanceShaderBindingTableRecordOffsetFlags:=(aInstanceShaderBindingTableRecordOffset and TVkUInt32($00ffffff)) or ((TVkUInt32(aFlags) and TVkUInt32($000000ff)) shl 24);
 accelerationStructureReference:=aAccelerationStructureReference;
end;

function TVkAccelerationStructureInstanceKHR.GetInstanceCustomIndex:TVkUInt32;
begin
 result:=instanceCustomIndexMask and TVkUInt32($00ffffff);
end;

procedure TVkAccelerationStructureInstanceKHR.SetInstanceCustomIndex(const aValue:TVkUInt32);
begin
 instanceCustomIndexMask:=(instanceCustomIndexMask and TVkUInt32($ff000000)) or (aValue and TVkUInt32($00ffffff));
end;

function TVkAccelerationStructureInstanceKHR.GetMask:TVkUInt32;
begin
 result:=instanceCustomIndexMask shr 24;
end;

procedure TVkAccelerationStructureInstanceKHR.SetMask(const aValue:TVkUInt32);
begin
 instanceCustomIndexMask:=(instanceCustomIndexMask and TVkUInt32($00ffffff)) or ((aValue and TVkUInt32($000000ff)) shl 24);
end;

function TVkAccelerationStructureInstanceKHR.GetInstanceShaderBindingTableRecordOffset:TVkUInt32;
begin
 result:=instanceShaderBindingTableRecordOffsetFlags and TVkUInt32($00ffffff);
end;

procedure TVkAccelerationStructureInstanceKHR.SetInstanceShaderBindingTableRecordOffset(const aValue:TVkUInt32);
begin
 instanceShaderBindingTableRecordOffsetFlags:=(instanceShaderBindingTableRecordOffsetFlags and TVkUInt32($ff000000)) or (aValue and TVkUInt32($00ffffff));
end;

function TVkAccelerationStructureInstanceKHR.GetFlags:TVkGeometryInstanceFlagsKHR;
begin
 result:=TVkGeometryInstanceFlagsKHR(TVkUInt32(instanceShaderBindingTableRecordOffsetFlags shr 24));
end;

procedure TVkAccelerationStructureInstanceKHR.SetFlags(const aValue:TVkGeometryInstanceFlagsKHR);
begin
 instanceShaderBindingTableRecordOffsetFlags:=(instanceShaderBindingTableRecordOffsetFlags and TVkUInt32($00ffffff)) or ((TVkUInt32(aValue) and TVkUInt32($000000ff)) shl 24);
end;

constructor TVkAccelerationStructureDeviceAddressInfoKHR.Create(const aAccelerationStructure:TVkAccelerationStructureKHR);
begin
 sType:=VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR;
 pNext:=nil;
 accelerationStructure:=aAccelerationStructure;
end;

constructor TVkAccelerationStructureVersionInfoKHR.Create(const aPVersionData:PVkUInt8);
begin
 sType:=VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR;
 pNext:=nil;
 pVersionData:=aPVersionData;
end;

constructor TVkCopyAccelerationStructureInfoKHR.Create(const aSrc:TVkAccelerationStructureKHR;
                                                       const aDst:TVkAccelerationStructureKHR;
                                                       const aMode:TVkCopyAccelerationStructureModeKHR);
begin
 sType:=VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR;
 pNext:=nil;
 src:=aSrc;
 dst:=aDst;
 mode:=aMode;
end;

constructor TVkCopyAccelerationStructureToMemoryInfoKHR.Create(const aSrc:TVkAccelerationStructureKHR;
                                                               const aDst:TVkDeviceOrHostAddressKHR;
                                                               const aMode:TVkCopyAccelerationStructureModeKHR);
begin
 sType:=VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR;
 pNext:=nil;
 src:=aSrc;
 dst:=aDst;
 mode:=aMode;
end;

constructor TVkCopyMemoryToAccelerationStructureInfoKHR.Create(const aSrc:TVkDeviceOrHostAddressConstKHR;
                                                               const aDst:TVkAccelerationStructureKHR;
                                                               const aMode:TVkCopyAccelerationStructureModeKHR);
begin
 sType:=VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR;
 pNext:=nil;
 src:=aSrc;
 dst:=aDst;
 mode:=aMode;
end;

constructor TVkPipelineLibraryCreateInfoKHR.Create(const aLibraryCount:TVkUInt32;
                                                   const aPLibraries:PVkPipeline);
begin
 sType:=VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR;
 pNext:=nil;
 libraryCount:=aLibraryCount;
 pLibraries:=aPLibraries;
end;

constructor TVkRayTracingPipelineCreateInfoKHR.Create(const aFlags:TVkPipelineCreateFlags;
                                                      const aStageCount:TVkUInt32;
                                                      const aPStages:PVkPipelineShaderStageCreateInfo;
                                                      const aGroupCount:TVkUInt32;
                                                      const aPGroups:PVkRayTracingShaderGroupCreateInfoKHR;
                                                      const aMaxPipelineRayRecursionDepth:TVkUInt32;
                                                      const aPLibraryInfo:PVkPipelineLibraryCreateInfoKHR;
                                                      const aPLibraryInterface:PVkRayTracingPipelineInterfaceCreateInfoKHR;
                                                      const aPDynamicState:PVkPipelineDynamicStateCreateInfo;
                                                      const aLayout:TVkPipelineLayout;
                                                      const aBasePipelineHandle:TVkPipeline;
                                                      const aBasePipelineIndex:TVkInt32);
begin
 sType:=VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR;
 pNext:=nil;
 flags:=aFlags;
 stageCount:=aStageCount;
 pStages:=aPStages;
 groupCount:=aGroupCount;
 pGroups:=aPGroups;
 maxPipelineRayRecursionDepth:=aMaxPipelineRayRecursionDepth;
 pLibraryInfo:=aPLibraryInfo;
 pLibraryInterface:=aPLibraryInterface;
 pDynamicState:=aPDynamicState;
 layout:=aLayout;
 basePipelineHandle:=aBasePipelineHandle;
 basePipelineIndex:=aBasePipelineIndex;
end;

constructor TVkRefreshObjectKHR.Create(const aObjectType:TVkObjectType;
                                       const aObjectHandle:TVkUInt64;
                                       const aFlags:TVkRefreshObjectFlagsKHR);
begin
 objectType:=aObjectType;
 objectHandle:=aObjectHandle;
 flags:=aFlags;
end;

constructor TVkRefreshObjectListKHR.Create(const aObjectCount:TVkUInt32;
                                           const aPObjects:PVkRefreshObjectKHR);
begin
 sType:=VK_STRUCTURE_TYPE_REFRESH_OBJECT_LIST_KHR;
 pNext:=nil;
 objectCount:=aObjectCount;
 pObjects:=aPObjects;
end;

constructor TVkPhysicalDeviceExtendedDynamicStateFeaturesEXT.Create(const aExtendedDynamicState:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT;
 pNext:=nil;
 extendedDynamicState:=aExtendedDynamicState;
end;

constructor TVkPhysicalDeviceExtendedDynamicState2FeaturesEXT.Create(const aExtendedDynamicState2:TVkBool32;
                                                                     const aExtendedDynamicState2LogicOp:TVkBool32;
                                                                     const aExtendedDynamicState2PatchControlPoints:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT;
 pNext:=nil;
 extendedDynamicState2:=aExtendedDynamicState2;
 extendedDynamicState2LogicOp:=aExtendedDynamicState2LogicOp;
 extendedDynamicState2PatchControlPoints:=aExtendedDynamicState2PatchControlPoints;
end;

constructor TVkPhysicalDeviceExtendedDynamicState3FeaturesEXT.Create(const aExtendedDynamicState3TessellationDomainOrigin:TVkBool32;
                                                                     const aExtendedDynamicState3DepthClampEnable:TVkBool32;
                                                                     const aExtendedDynamicState3PolygonMode:TVkBool32;
                                                                     const aExtendedDynamicState3RasterizationSamples:TVkBool32;
                                                                     const aExtendedDynamicState3SampleMask:TVkBool32;
                                                                     const aExtendedDynamicState3AlphaToCoverageEnable:TVkBool32;
                                                                     const aExtendedDynamicState3AlphaToOneEnable:TVkBool32;
                                                                     const aExtendedDynamicState3LogicOpEnable:TVkBool32;
                                                                     const aExtendedDynamicState3ColorBlendEnable:TVkBool32;
                                                                     const aExtendedDynamicState3ColorBlendEquation:TVkBool32;
                                                                     const aExtendedDynamicState3ColorWriteMask:TVkBool32;
                                                                     const aExtendedDynamicState3RasterizationStream:TVkBool32;
                                                                     const aExtendedDynamicState3ConservativeRasterizationMode:TVkBool32;
                                                                     const aExtendedDynamicState3ExtraPrimitiveOverestimationSize:TVkBool32;
                                                                     const aExtendedDynamicState3DepthClipEnable:TVkBool32;
                                                                     const aExtendedDynamicState3SampleLocationsEnable:TVkBool32;
                                                                     const aExtendedDynamicState3ColorBlendAdvanced:TVkBool32;
                                                                     const aExtendedDynamicState3ProvokingVertexMode:TVkBool32;
                                                                     const aExtendedDynamicState3LineRasterizationMode:TVkBool32;
                                                                     const aExtendedDynamicState3LineStippleEnable:TVkBool32;
                                                                     const aExtendedDynamicState3DepthClipNegativeOneToOne:TVkBool32;
                                                                     const aExtendedDynamicState3ViewportWScalingEnable:TVkBool32;
                                                                     const aExtendedDynamicState3ViewportSwizzle:TVkBool32;
                                                                     const aExtendedDynamicState3CoverageToColorEnable:TVkBool32;
                                                                     const aExtendedDynamicState3CoverageToColorLocation:TVkBool32;
                                                                     const aExtendedDynamicState3CoverageModulationMode:TVkBool32;
                                                                     const aExtendedDynamicState3CoverageModulationTableEnable:TVkBool32;
                                                                     const aExtendedDynamicState3CoverageModulationTable:TVkBool32;
                                                                     const aExtendedDynamicState3CoverageReductionMode:TVkBool32;
                                                                     const aExtendedDynamicState3RepresentativeFragmentTestEnable:TVkBool32;
                                                                     const aExtendedDynamicState3ShadingRateImageEnable:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT;
 pNext:=nil;
 extendedDynamicState3TessellationDomainOrigin:=aExtendedDynamicState3TessellationDomainOrigin;
 extendedDynamicState3DepthClampEnable:=aExtendedDynamicState3DepthClampEnable;
 extendedDynamicState3PolygonMode:=aExtendedDynamicState3PolygonMode;
 extendedDynamicState3RasterizationSamples:=aExtendedDynamicState3RasterizationSamples;
 extendedDynamicState3SampleMask:=aExtendedDynamicState3SampleMask;
 extendedDynamicState3AlphaToCoverageEnable:=aExtendedDynamicState3AlphaToCoverageEnable;
 extendedDynamicState3AlphaToOneEnable:=aExtendedDynamicState3AlphaToOneEnable;
 extendedDynamicState3LogicOpEnable:=aExtendedDynamicState3LogicOpEnable;
 extendedDynamicState3ColorBlendEnable:=aExtendedDynamicState3ColorBlendEnable;
 extendedDynamicState3ColorBlendEquation:=aExtendedDynamicState3ColorBlendEquation;
 extendedDynamicState3ColorWriteMask:=aExtendedDynamicState3ColorWriteMask;
 extendedDynamicState3RasterizationStream:=aExtendedDynamicState3RasterizationStream;
 extendedDynamicState3ConservativeRasterizationMode:=aExtendedDynamicState3ConservativeRasterizationMode;
 extendedDynamicState3ExtraPrimitiveOverestimationSize:=aExtendedDynamicState3ExtraPrimitiveOverestimationSize;
 extendedDynamicState3DepthClipEnable:=aExtendedDynamicState3DepthClipEnable;
 extendedDynamicState3SampleLocationsEnable:=aExtendedDynamicState3SampleLocationsEnable;
 extendedDynamicState3ColorBlendAdvanced:=aExtendedDynamicState3ColorBlendAdvanced;
 extendedDynamicState3ProvokingVertexMode:=aExtendedDynamicState3ProvokingVertexMode;
 extendedDynamicState3LineRasterizationMode:=aExtendedDynamicState3LineRasterizationMode;
 extendedDynamicState3LineStippleEnable:=aExtendedDynamicState3LineStippleEnable;
 extendedDynamicState3DepthClipNegativeOneToOne:=aExtendedDynamicState3DepthClipNegativeOneToOne;
 extendedDynamicState3ViewportWScalingEnable:=aExtendedDynamicState3ViewportWScalingEnable;
 extendedDynamicState3ViewportSwizzle:=aExtendedDynamicState3ViewportSwizzle;
 extendedDynamicState3CoverageToColorEnable:=aExtendedDynamicState3CoverageToColorEnable;
 extendedDynamicState3CoverageToColorLocation:=aExtendedDynamicState3CoverageToColorLocation;
 extendedDynamicState3CoverageModulationMode:=aExtendedDynamicState3CoverageModulationMode;
 extendedDynamicState3CoverageModulationTableEnable:=aExtendedDynamicState3CoverageModulationTableEnable;
 extendedDynamicState3CoverageModulationTable:=aExtendedDynamicState3CoverageModulationTable;
 extendedDynamicState3CoverageReductionMode:=aExtendedDynamicState3CoverageReductionMode;
 extendedDynamicState3RepresentativeFragmentTestEnable:=aExtendedDynamicState3RepresentativeFragmentTestEnable;
 extendedDynamicState3ShadingRateImageEnable:=aExtendedDynamicState3ShadingRateImageEnable;
end;

constructor TVkPhysicalDeviceExtendedDynamicState3PropertiesEXT.Create(const aDynamicPrimitiveTopologyUnrestricted:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT;
 pNext:=nil;
 dynamicPrimitiveTopologyUnrestricted:=aDynamicPrimitiveTopologyUnrestricted;
end;

constructor TVkColorBlendEquationEXT.Create(const aSrcColorBlendFactor:TVkBlendFactor;
                                            const aDstColorBlendFactor:TVkBlendFactor;
                                            const aColorBlendOp:TVkBlendOp;
                                            const aSrcAlphaBlendFactor:TVkBlendFactor;
                                            const aDstAlphaBlendFactor:TVkBlendFactor;
                                            const aAlphaBlendOp:TVkBlendOp);
begin
 srcColorBlendFactor:=aSrcColorBlendFactor;
 dstColorBlendFactor:=aDstColorBlendFactor;
 colorBlendOp:=aColorBlendOp;
 srcAlphaBlendFactor:=aSrcAlphaBlendFactor;
 dstAlphaBlendFactor:=aDstAlphaBlendFactor;
 alphaBlendOp:=aAlphaBlendOp;
end;

constructor TVkColorBlendAdvancedEXT.Create(const aAdvancedBlendOp:TVkBlendOp;
                                            const aSrcPremultiplied:TVkBool32;
                                            const aDstPremultiplied:TVkBool32;
                                            const aBlendOverlap:TVkBlendOverlapEXT;
                                            const aClampResults:TVkBool32);
begin
 advancedBlendOp:=aAdvancedBlendOp;
 srcPremultiplied:=aSrcPremultiplied;
 dstPremultiplied:=aDstPremultiplied;
 blendOverlap:=aBlendOverlap;
 clampResults:=aClampResults;
end;

constructor TVkRenderPassTransformBeginInfoQCOM.Create(const aTransform:TVkSurfaceTransformFlagBitsKHR);
begin
 sType:=VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM;
 pNext:=nil;
 transform:=aTransform;
end;

constructor TVkCopyCommandTransformInfoQCOM.Create(const aTransform:TVkSurfaceTransformFlagBitsKHR);
begin
 sType:=VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM;
 pNext:=nil;
 transform:=aTransform;
end;

constructor TVkCommandBufferInheritanceRenderPassTransformInfoQCOM.Create(const aTransform:TVkSurfaceTransformFlagBitsKHR;
                                                                          const aRenderArea:TVkRect2D);
begin
 sType:=VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM;
 pNext:=nil;
 transform:=aTransform;
 renderArea:=aRenderArea;
end;

constructor TVkPhysicalDeviceDiagnosticsConfigFeaturesNV.Create(const aDiagnosticsConfig:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV;
 pNext:=nil;
 diagnosticsConfig:=aDiagnosticsConfig;
end;

constructor TVkDeviceDiagnosticsConfigCreateInfoNV.Create(const aFlags:TVkDeviceDiagnosticsConfigFlagsNV);
begin
 sType:=VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV;
 pNext:=nil;
 flags:=aFlags;
end;

{$ifdef VulkanSC}
constructor TVkPipelineOfflineCreateInfo.Create(const aPipelineIdentifier:array of TVkUInt8;
                                                const aMatchControl:TVkPipelineMatchControl;
                                                const aPoolEntrySize:TVkDeviceSize);
var ArrayItemCount:TVkInt32;
begin
 FillChar(self,SizeOf(TVkPipelineOfflineCreateInfo),#0);
 sType:=VK_STRUCTURE_TYPE_PIPELINE_OFFLINE_CREATE_INFO;
 pNext:=nil;
 ArrayItemCount:=length(aPipelineIdentifier);
 if ArrayItemCount>length(pipelineIdentifier) then begin
  ArrayItemCount:=length(pipelineIdentifier);
 end;
 if ArrayItemCount>0 then begin
  Move(aPipelineIdentifier[0],pipelineIdentifier[0],ArrayItemCount*SizeOf(TVkUInt8));
 end;
 matchControl:=aMatchControl;
 poolEntrySize:=aPoolEntrySize;
end;
{$endif}

constructor TVkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures.Create(const aShaderZeroInitializeWorkgroupMemory:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES;
 pNext:=nil;
 shaderZeroInitializeWorkgroupMemory:=aShaderZeroInitializeWorkgroupMemory;
end;

constructor TVkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR.Create(const aShaderSubgroupUniformControlFlow:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR;
 pNext:=nil;
 shaderSubgroupUniformControlFlow:=aShaderSubgroupUniformControlFlow;
end;

constructor TVkPhysicalDeviceRobustness2FeaturesEXT.Create(const aRobustBufferAccess2:TVkBool32;
                                                           const aRobustImageAccess2:TVkBool32;
                                                           const aNullDescriptor:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT;
 pNext:=nil;
 robustBufferAccess2:=aRobustBufferAccess2;
 robustImageAccess2:=aRobustImageAccess2;
 nullDescriptor:=aNullDescriptor;
end;

constructor TVkPhysicalDeviceRobustness2PropertiesEXT.Create(const aRobustStorageBufferAccessSizeAlignment:TVkDeviceSize;
                                                             const aRobustUniformBufferAccessSizeAlignment:TVkDeviceSize);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT;
 pNext:=nil;
 robustStorageBufferAccessSizeAlignment:=aRobustStorageBufferAccessSizeAlignment;
 robustUniformBufferAccessSizeAlignment:=aRobustUniformBufferAccessSizeAlignment;
end;

constructor TVkPhysicalDeviceImageRobustnessFeatures.Create(const aRobustImageAccess:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES;
 pNext:=nil;
 robustImageAccess:=aRobustImageAccess;
end;

constructor TVkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.Create(const aWorkgroupMemoryExplicitLayout:TVkBool32;
                                                                             const aWorkgroupMemoryExplicitLayoutScalarBlockLayout:TVkBool32;
                                                                             const aWorkgroupMemoryExplicitLayout8BitAccess:TVkBool32;
                                                                             const aWorkgroupMemoryExplicitLayout16BitAccess:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR;
 pNext:=nil;
 workgroupMemoryExplicitLayout:=aWorkgroupMemoryExplicitLayout;
 workgroupMemoryExplicitLayoutScalarBlockLayout:=aWorkgroupMemoryExplicitLayoutScalarBlockLayout;
 workgroupMemoryExplicitLayout8BitAccess:=aWorkgroupMemoryExplicitLayout8BitAccess;
 workgroupMemoryExplicitLayout16BitAccess:=aWorkgroupMemoryExplicitLayout16BitAccess;
end;

constructor TVkPhysicalDevicePortabilitySubsetFeaturesKHR.Create(const aConstantAlphaColorBlendFactors:TVkBool32;
                                                                 const aEvents:TVkBool32;
                                                                 const aImageViewFormatReinterpretation:TVkBool32;
                                                                 const aImageViewFormatSwizzle:TVkBool32;
                                                                 const aImageView2DOn3DImage:TVkBool32;
                                                                 const aMultisampleArrayImage:TVkBool32;
                                                                 const aMutableComparisonSamplers:TVkBool32;
                                                                 const aPointPolygons:TVkBool32;
                                                                 const aSamplerMipLodBias:TVkBool32;
                                                                 const aSeparateStencilMaskRef:TVkBool32;
                                                                 const aShaderSampleRateInterpolationFunctions:TVkBool32;
                                                                 const aTessellationIsolines:TVkBool32;
                                                                 const aTessellationPointMode:TVkBool32;
                                                                 const aTriangleFans:TVkBool32;
                                                                 const aVertexAttributeAccessBeyondStride:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR;
 pNext:=nil;
 constantAlphaColorBlendFactors:=aConstantAlphaColorBlendFactors;
 events:=aEvents;
 imageViewFormatReinterpretation:=aImageViewFormatReinterpretation;
 imageViewFormatSwizzle:=aImageViewFormatSwizzle;
 imageView2DOn3DImage:=aImageView2DOn3DImage;
 multisampleArrayImage:=aMultisampleArrayImage;
 mutableComparisonSamplers:=aMutableComparisonSamplers;
 pointPolygons:=aPointPolygons;
 samplerMipLodBias:=aSamplerMipLodBias;
 separateStencilMaskRef:=aSeparateStencilMaskRef;
 shaderSampleRateInterpolationFunctions:=aShaderSampleRateInterpolationFunctions;
 tessellationIsolines:=aTessellationIsolines;
 tessellationPointMode:=aTessellationPointMode;
 triangleFans:=aTriangleFans;
 vertexAttributeAccessBeyondStride:=aVertexAttributeAccessBeyondStride;
end;

constructor TVkPhysicalDevicePortabilitySubsetPropertiesKHR.Create(const aMinVertexInputBindingStrideAlignment:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR;
 pNext:=nil;
 minVertexInputBindingStrideAlignment:=aMinVertexInputBindingStrideAlignment;
end;

constructor TVkPhysicalDevice4444FormatsFeaturesEXT.Create(const aFormatA4R4G4B4:TVkBool32;
                                                           const aFormatA4B4G4R4:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT;
 pNext:=nil;
 formatA4R4G4B4:=aFormatA4R4G4B4;
 formatA4B4G4R4:=aFormatA4B4G4R4;
end;

constructor TVkPhysicalDeviceSubpassShadingFeaturesHUAWEI.Create(const aSubpassShading:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI;
 pNext:=nil;
 subpassShading:=aSubpassShading;
end;

constructor TVkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.Create(const aClustercullingShader:TVkBool32;
                                                                       const aMultiviewClusterCullingShader:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI;
 pNext:=nil;
 clustercullingShader:=aClustercullingShader;
 multiviewClusterCullingShader:=aMultiviewClusterCullingShader;
end;

constructor TVkBufferCopy2.Create(const aSrcOffset:TVkDeviceSize;
                                  const aDstOffset:TVkDeviceSize;
                                  const aSize:TVkDeviceSize);
begin
 sType:=VK_STRUCTURE_TYPE_BUFFER_COPY_2;
 pNext:=nil;
 srcOffset:=aSrcOffset;
 dstOffset:=aDstOffset;
 size:=aSize;
end;

constructor TVkImageCopy2.Create(const aSrcSubresource:TVkImageSubresourceLayers;
                                 const aSrcOffset:TVkOffset3D;
                                 const aDstSubresource:TVkImageSubresourceLayers;
                                 const aDstOffset:TVkOffset3D;
                                 const aExtent:TVkExtent3D);
begin
 sType:=VK_STRUCTURE_TYPE_IMAGE_COPY_2;
 pNext:=nil;
 srcSubresource:=aSrcSubresource;
 srcOffset:=aSrcOffset;
 dstSubresource:=aDstSubresource;
 dstOffset:=aDstOffset;
 extent:=aExtent;
end;

constructor TVkImageBlit2.Create(const aSrcSubresource:TVkImageSubresourceLayers;
                                 const aSrcOffsets:array of TVkOffset3D;
                                 const aDstSubresource:TVkImageSubresourceLayers;
                                 const aDstOffsets:array of TVkOffset3D);
var ArrayItemCount:TVkInt32;
begin
 FillChar(self,SizeOf(TVkImageBlit2),#0);
 sType:=VK_STRUCTURE_TYPE_IMAGE_BLIT_2;
 pNext:=nil;
 srcSubresource:=aSrcSubresource;
 ArrayItemCount:=length(aSrcOffsets);
 if ArrayItemCount>length(srcOffsets) then begin
  ArrayItemCount:=length(srcOffsets);
 end;
 if ArrayItemCount>0 then begin
  Move(aSrcOffsets[0],srcOffsets[0],ArrayItemCount*SizeOf(TVkOffset3D));
 end;
 dstSubresource:=aDstSubresource;
 ArrayItemCount:=length(aDstOffsets);
 if ArrayItemCount>length(dstOffsets) then begin
  ArrayItemCount:=length(dstOffsets);
 end;
 if ArrayItemCount>0 then begin
  Move(aDstOffsets[0],dstOffsets[0],ArrayItemCount*SizeOf(TVkOffset3D));
 end;
end;

constructor TVkBufferImageCopy2.Create(const aBufferOffset:TVkDeviceSize;
                                       const aBufferRowLength:TVkUInt32;
                                       const aBufferImageHeight:TVkUInt32;
                                       const aImageSubresource:TVkImageSubresourceLayers;
                                       const aImageOffset:TVkOffset3D;
                                       const aImageExtent:TVkExtent3D);
begin
 sType:=VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2;
 pNext:=nil;
 bufferOffset:=aBufferOffset;
 bufferRowLength:=aBufferRowLength;
 bufferImageHeight:=aBufferImageHeight;
 imageSubresource:=aImageSubresource;
 imageOffset:=aImageOffset;
 imageExtent:=aImageExtent;
end;

constructor TVkImageResolve2.Create(const aSrcSubresource:TVkImageSubresourceLayers;
                                    const aSrcOffset:TVkOffset3D;
                                    const aDstSubresource:TVkImageSubresourceLayers;
                                    const aDstOffset:TVkOffset3D;
                                    const aExtent:TVkExtent3D);
begin
 sType:=VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2;
 pNext:=nil;
 srcSubresource:=aSrcSubresource;
 srcOffset:=aSrcOffset;
 dstSubresource:=aDstSubresource;
 dstOffset:=aDstOffset;
 extent:=aExtent;
end;

constructor TVkCopyBufferInfo2.Create(const aSrcBuffer:TVkBuffer;
                                      const aDstBuffer:TVkBuffer;
                                      const aRegionCount:TVkUInt32;
                                      const aPRegions:PVkBufferCopy2);
begin
 sType:=VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2;
 pNext:=nil;
 srcBuffer:=aSrcBuffer;
 dstBuffer:=aDstBuffer;
 regionCount:=aRegionCount;
 pRegions:=aPRegions;
end;

constructor TVkCopyImageInfo2.Create(const aSrcImage:TVkImage;
                                     const aSrcImageLayout:TVkImageLayout;
                                     const aDstImage:TVkImage;
                                     const aDstImageLayout:TVkImageLayout;
                                     const aRegionCount:TVkUInt32;
                                     const aPRegions:PVkImageCopy2);
begin
 sType:=VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2;
 pNext:=nil;
 srcImage:=aSrcImage;
 srcImageLayout:=aSrcImageLayout;
 dstImage:=aDstImage;
 dstImageLayout:=aDstImageLayout;
 regionCount:=aRegionCount;
 pRegions:=aPRegions;
end;

constructor TVkBlitImageInfo2.Create(const aSrcImage:TVkImage;
                                     const aSrcImageLayout:TVkImageLayout;
                                     const aDstImage:TVkImage;
                                     const aDstImageLayout:TVkImageLayout;
                                     const aRegionCount:TVkUInt32;
                                     const aPRegions:PVkImageBlit2;
                                     const aFilter:TVkFilter);
begin
 sType:=VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2;
 pNext:=nil;
 srcImage:=aSrcImage;
 srcImageLayout:=aSrcImageLayout;
 dstImage:=aDstImage;
 dstImageLayout:=aDstImageLayout;
 regionCount:=aRegionCount;
 pRegions:=aPRegions;
 filter:=aFilter;
end;

constructor TVkCopyBufferToImageInfo2.Create(const aSrcBuffer:TVkBuffer;
                                             const aDstImage:TVkImage;
                                             const aDstImageLayout:TVkImageLayout;
                                             const aRegionCount:TVkUInt32;
                                             const aPRegions:PVkBufferImageCopy2);
begin
 sType:=VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2;
 pNext:=nil;
 srcBuffer:=aSrcBuffer;
 dstImage:=aDstImage;
 dstImageLayout:=aDstImageLayout;
 regionCount:=aRegionCount;
 pRegions:=aPRegions;
end;

constructor TVkCopyImageToBufferInfo2.Create(const aSrcImage:TVkImage;
                                             const aSrcImageLayout:TVkImageLayout;
                                             const aDstBuffer:TVkBuffer;
                                             const aRegionCount:TVkUInt32;
                                             const aPRegions:PVkBufferImageCopy2);
begin
 sType:=VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2;
 pNext:=nil;
 srcImage:=aSrcImage;
 srcImageLayout:=aSrcImageLayout;
 dstBuffer:=aDstBuffer;
 regionCount:=aRegionCount;
 pRegions:=aPRegions;
end;

constructor TVkResolveImageInfo2.Create(const aSrcImage:TVkImage;
                                        const aSrcImageLayout:TVkImageLayout;
                                        const aDstImage:TVkImage;
                                        const aDstImageLayout:TVkImageLayout;
                                        const aRegionCount:TVkUInt32;
                                        const aPRegions:PVkImageResolve2);
begin
 sType:=VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2;
 pNext:=nil;
 srcImage:=aSrcImage;
 srcImageLayout:=aSrcImageLayout;
 dstImage:=aDstImage;
 dstImageLayout:=aDstImageLayout;
 regionCount:=aRegionCount;
 pRegions:=aPRegions;
end;

constructor TVkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT.Create(const aShaderImageInt64Atomics:TVkBool32;
                                                                      const aSparseImageInt64Atomics:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT;
 pNext:=nil;
 shaderImageInt64Atomics:=aShaderImageInt64Atomics;
 sparseImageInt64Atomics:=aSparseImageInt64Atomics;
end;

constructor TVkFragmentShadingRateAttachmentInfoKHR.Create(const aPFragmentShadingRateAttachment:PVkAttachmentReference2;
                                                           const aShadingRateAttachmentTexelSize:TVkExtent2D);
begin
 sType:=VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR;
 pNext:=nil;
 pFragmentShadingRateAttachment:=aPFragmentShadingRateAttachment;
 shadingRateAttachmentTexelSize:=aShadingRateAttachmentTexelSize;
end;

constructor TVkPipelineFragmentShadingRateStateCreateInfoKHR.Create(const aFragmentSize:TVkExtent2D;
                                                                    const aCombinerOps:array of TVkFragmentShadingRateCombinerOpKHR);
var ArrayItemCount:TVkInt32;
begin
 FillChar(self,SizeOf(TVkPipelineFragmentShadingRateStateCreateInfoKHR),#0);
 sType:=VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR;
 pNext:=nil;
 fragmentSize:=aFragmentSize;
 ArrayItemCount:=length(aCombinerOps);
 if ArrayItemCount>length(combinerOps) then begin
  ArrayItemCount:=length(combinerOps);
 end;
 if ArrayItemCount>0 then begin
  Move(aCombinerOps[0],combinerOps[0],ArrayItemCount*SizeOf(TVkFragmentShadingRateCombinerOpKHR));
 end;
end;

constructor TVkPhysicalDeviceFragmentShadingRateFeaturesKHR.Create(const aPipelineFragmentShadingRate:TVkBool32;
                                                                   const aPrimitiveFragmentShadingRate:TVkBool32;
                                                                   const aAttachmentFragmentShadingRate:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR;
 pNext:=nil;
 pipelineFragmentShadingRate:=aPipelineFragmentShadingRate;
 primitiveFragmentShadingRate:=aPrimitiveFragmentShadingRate;
 attachmentFragmentShadingRate:=aAttachmentFragmentShadingRate;
end;

constructor TVkPhysicalDeviceFragmentShadingRatePropertiesKHR.Create(const aMinFragmentShadingRateAttachmentTexelSize:TVkExtent2D;
                                                                     const aMaxFragmentShadingRateAttachmentTexelSize:TVkExtent2D;
                                                                     const aMaxFragmentShadingRateAttachmentTexelSizeAspectRatio:TVkUInt32;
                                                                     const aPrimitiveFragmentShadingRateWithMultipleViewports:TVkBool32;
                                                                     const aLayeredShadingRateAttachments:TVkBool32;
                                                                     const aFragmentShadingRateNonTrivialCombinerOps:TVkBool32;
                                                                     const aMaxFragmentSize:TVkExtent2D;
                                                                     const aMaxFragmentSizeAspectRatio:TVkUInt32;
                                                                     const aMaxFragmentShadingRateCoverageSamples:TVkUInt32;
                                                                     const aMaxFragmentShadingRateRasterizationSamples:TVkSampleCountFlagBits;
                                                                     const aFragmentShadingRateWithShaderDepthStencilWrites:TVkBool32;
                                                                     const aFragmentShadingRateWithSampleMask:TVkBool32;
                                                                     const aFragmentShadingRateWithShaderSampleMask:TVkBool32;
                                                                     const aFragmentShadingRateWithConservativeRasterization:TVkBool32;
                                                                     const aFragmentShadingRateWithFragmentShaderInterlock:TVkBool32;
                                                                     const aFragmentShadingRateWithCustomSampleLocations:TVkBool32;
                                                                     const aFragmentShadingRateStrictMultiplyCombiner:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR;
 pNext:=nil;
 minFragmentShadingRateAttachmentTexelSize:=aMinFragmentShadingRateAttachmentTexelSize;
 maxFragmentShadingRateAttachmentTexelSize:=aMaxFragmentShadingRateAttachmentTexelSize;
 maxFragmentShadingRateAttachmentTexelSizeAspectRatio:=aMaxFragmentShadingRateAttachmentTexelSizeAspectRatio;
 primitiveFragmentShadingRateWithMultipleViewports:=aPrimitiveFragmentShadingRateWithMultipleViewports;
 layeredShadingRateAttachments:=aLayeredShadingRateAttachments;
 fragmentShadingRateNonTrivialCombinerOps:=aFragmentShadingRateNonTrivialCombinerOps;
 maxFragmentSize:=aMaxFragmentSize;
 maxFragmentSizeAspectRatio:=aMaxFragmentSizeAspectRatio;
 maxFragmentShadingRateCoverageSamples:=aMaxFragmentShadingRateCoverageSamples;
 maxFragmentShadingRateRasterizationSamples:=aMaxFragmentShadingRateRasterizationSamples;
 fragmentShadingRateWithShaderDepthStencilWrites:=aFragmentShadingRateWithShaderDepthStencilWrites;
 fragmentShadingRateWithSampleMask:=aFragmentShadingRateWithSampleMask;
 fragmentShadingRateWithShaderSampleMask:=aFragmentShadingRateWithShaderSampleMask;
 fragmentShadingRateWithConservativeRasterization:=aFragmentShadingRateWithConservativeRasterization;
 fragmentShadingRateWithFragmentShaderInterlock:=aFragmentShadingRateWithFragmentShaderInterlock;
 fragmentShadingRateWithCustomSampleLocations:=aFragmentShadingRateWithCustomSampleLocations;
 fragmentShadingRateStrictMultiplyCombiner:=aFragmentShadingRateStrictMultiplyCombiner;
end;

constructor TVkPhysicalDeviceFragmentShadingRateKHR.Create(const aSampleCounts:TVkSampleCountFlags;
                                                           const aFragmentSize:TVkExtent2D);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR;
 pNext:=nil;
 sampleCounts:=aSampleCounts;
 fragmentSize:=aFragmentSize;
end;

constructor TVkPhysicalDeviceShaderTerminateInvocationFeatures.Create(const aShaderTerminateInvocation:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES;
 pNext:=nil;
 shaderTerminateInvocation:=aShaderTerminateInvocation;
end;

constructor TVkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV.Create(const aFragmentShadingRateEnums:TVkBool32;
                                                                       const aSupersampleFragmentShadingRates:TVkBool32;
                                                                       const aNoInvocationFragmentShadingRates:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV;
 pNext:=nil;
 fragmentShadingRateEnums:=aFragmentShadingRateEnums;
 supersampleFragmentShadingRates:=aSupersampleFragmentShadingRates;
 noInvocationFragmentShadingRates:=aNoInvocationFragmentShadingRates;
end;

constructor TVkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV.Create(const aMaxFragmentShadingRateInvocationCount:TVkSampleCountFlagBits);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV;
 pNext:=nil;
 maxFragmentShadingRateInvocationCount:=aMaxFragmentShadingRateInvocationCount;
end;

constructor TVkPipelineFragmentShadingRateEnumStateCreateInfoNV.Create(const aShadingRateType:TVkFragmentShadingRateTypeNV;
                                                                       const aShadingRate:TVkFragmentShadingRateNV;
                                                                       const aCombinerOps:array of TVkFragmentShadingRateCombinerOpKHR);
var ArrayItemCount:TVkInt32;
begin
 FillChar(self,SizeOf(TVkPipelineFragmentShadingRateEnumStateCreateInfoNV),#0);
 sType:=VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV;
 pNext:=nil;
 shadingRateType:=aShadingRateType;
 shadingRate:=aShadingRate;
 ArrayItemCount:=length(aCombinerOps);
 if ArrayItemCount>length(combinerOps) then begin
  ArrayItemCount:=length(combinerOps);
 end;
 if ArrayItemCount>0 then begin
  Move(aCombinerOps[0],combinerOps[0],ArrayItemCount*SizeOf(TVkFragmentShadingRateCombinerOpKHR));
 end;
end;

constructor TVkAccelerationStructureBuildSizesInfoKHR.Create(const aAccelerationStructureSize:TVkDeviceSize;
                                                             const aUpdateScratchSize:TVkDeviceSize;
                                                             const aBuildScratchSize:TVkDeviceSize);
begin
 sType:=VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR;
 pNext:=nil;
 accelerationStructureSize:=aAccelerationStructureSize;
 updateScratchSize:=aUpdateScratchSize;
 buildScratchSize:=aBuildScratchSize;
end;

constructor TVkPhysicalDeviceImage2DViewOf3DFeaturesEXT.Create(const aImage2DViewOf3D:TVkBool32;
                                                               const aSampler2DViewOf3D:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT;
 pNext:=nil;
 image2DViewOf3D:=aImage2DViewOf3D;
 sampler2DViewOf3D:=aSampler2DViewOf3D;
end;

constructor TVkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT.Create(const aImageSlicedViewOf3D:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT;
 pNext:=nil;
 imageSlicedViewOf3D:=aImageSlicedViewOf3D;
end;

constructor TVkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT.Create(const aAttachmentFeedbackLoopDynamicState:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT;
 pNext:=nil;
 attachmentFeedbackLoopDynamicState:=aAttachmentFeedbackLoopDynamicState;
end;

constructor TVkPhysicalDeviceMutableDescriptorTypeFeaturesEXT.Create(const aMutableDescriptorType:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT;
 pNext:=nil;
 mutableDescriptorType:=aMutableDescriptorType;
end;

constructor TVkMutableDescriptorTypeListEXT.Create(const aDescriptorTypeCount:TVkUInt32;
                                                   const aPDescriptorTypes:PVkDescriptorType);
begin
 descriptorTypeCount:=aDescriptorTypeCount;
 pDescriptorTypes:=aPDescriptorTypes;
end;

constructor TVkMutableDescriptorTypeCreateInfoEXT.Create(const aMutableDescriptorTypeListCount:TVkUInt32;
                                                         const aPMutableDescriptorTypeLists:PVkMutableDescriptorTypeListEXT);
begin
 sType:=VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT;
 pNext:=nil;
 mutableDescriptorTypeListCount:=aMutableDescriptorTypeListCount;
 pMutableDescriptorTypeLists:=aPMutableDescriptorTypeLists;
end;

constructor TVkPhysicalDeviceDepthClipControlFeaturesEXT.Create(const aDepthClipControl:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT;
 pNext:=nil;
 depthClipControl:=aDepthClipControl;
end;

constructor TVkPipelineViewportDepthClipControlCreateInfoEXT.Create(const aNegativeOneToOne:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT;
 pNext:=nil;
 negativeOneToOne:=aNegativeOneToOne;
end;

constructor TVkPhysicalDeviceVertexInputDynamicStateFeaturesEXT.Create(const aVertexInputDynamicState:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT;
 pNext:=nil;
 vertexInputDynamicState:=aVertexInputDynamicState;
end;

constructor TVkPhysicalDeviceExternalMemoryRDMAFeaturesNV.Create(const aExternalMemoryRDMA:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV;
 pNext:=nil;
 externalMemoryRDMA:=aExternalMemoryRDMA;
end;

constructor TVkVertexInputBindingDescription2EXT.Create(const aBinding:TVkUInt32;
                                                        const aStride:TVkUInt32;
                                                        const aInputRate:TVkVertexInputRate;
                                                        const aDivisor:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT;
 pNext:=nil;
 binding:=aBinding;
 stride:=aStride;
 inputRate:=aInputRate;
 divisor:=aDivisor;
end;

constructor TVkVertexInputAttributeDescription2EXT.Create(const aLocation:TVkUInt32;
                                                          const aBinding:TVkUInt32;
                                                          const aFormat:TVkFormat;
                                                          const aOffset:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT;
 pNext:=nil;
 location:=aLocation;
 binding:=aBinding;
 format:=aFormat;
 offset:=aOffset;
end;

constructor TVkPhysicalDeviceColorWriteEnableFeaturesEXT.Create(const aColorWriteEnable:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT;
 pNext:=nil;
 colorWriteEnable:=aColorWriteEnable;
end;

constructor TVkPipelineColorWriteCreateInfoEXT.Create(const aAttachmentCount:TVkUInt32;
                                                      const aPColorWriteEnables:PVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT;
 pNext:=nil;
 attachmentCount:=aAttachmentCount;
 pColorWriteEnables:=aPColorWriteEnables;
end;

constructor TVkMemoryBarrier2.Create(const aSrcStageMask:TVkPipelineStageFlags2;
                                     const aSrcAccessMask:TVkAccessFlags2;
                                     const aDstStageMask:TVkPipelineStageFlags2;
                                     const aDstAccessMask:TVkAccessFlags2);
begin
 sType:=VK_STRUCTURE_TYPE_MEMORY_BARRIER_2;
 pNext:=nil;
 srcStageMask:=aSrcStageMask;
 srcAccessMask:=aSrcAccessMask;
 dstStageMask:=aDstStageMask;
 dstAccessMask:=aDstAccessMask;
end;

constructor TVkImageMemoryBarrier2.Create(const aSrcStageMask:TVkPipelineStageFlags2;
                                          const aSrcAccessMask:TVkAccessFlags2;
                                          const aDstStageMask:TVkPipelineStageFlags2;
                                          const aDstAccessMask:TVkAccessFlags2;
                                          const aOldLayout:TVkImageLayout;
                                          const aNewLayout:TVkImageLayout;
                                          const aSrcQueueFamilyIndex:TVkUInt32;
                                          const aDstQueueFamilyIndex:TVkUInt32;
                                          const aImage:TVkImage;
                                          const aSubresourceRange:TVkImageSubresourceRange);
begin
 sType:=VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2;
 pNext:=nil;
 srcStageMask:=aSrcStageMask;
 srcAccessMask:=aSrcAccessMask;
 dstStageMask:=aDstStageMask;
 dstAccessMask:=aDstAccessMask;
 oldLayout:=aOldLayout;
 newLayout:=aNewLayout;
 srcQueueFamilyIndex:=aSrcQueueFamilyIndex;
 dstQueueFamilyIndex:=aDstQueueFamilyIndex;
 image:=aImage;
 subresourceRange:=aSubresourceRange;
end;

constructor TVkBufferMemoryBarrier2.Create(const aSrcStageMask:TVkPipelineStageFlags2;
                                           const aSrcAccessMask:TVkAccessFlags2;
                                           const aDstStageMask:TVkPipelineStageFlags2;
                                           const aDstAccessMask:TVkAccessFlags2;
                                           const aSrcQueueFamilyIndex:TVkUInt32;
                                           const aDstQueueFamilyIndex:TVkUInt32;
                                           const aBuffer:TVkBuffer;
                                           const aOffset:TVkDeviceSize;
                                           const aSize:TVkDeviceSize);
begin
 sType:=VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2;
 pNext:=nil;
 srcStageMask:=aSrcStageMask;
 srcAccessMask:=aSrcAccessMask;
 dstStageMask:=aDstStageMask;
 dstAccessMask:=aDstAccessMask;
 srcQueueFamilyIndex:=aSrcQueueFamilyIndex;
 dstQueueFamilyIndex:=aDstQueueFamilyIndex;
 buffer:=aBuffer;
 offset:=aOffset;
 size:=aSize;
end;

constructor TVkDependencyInfo.Create(const aDependencyFlags:TVkDependencyFlags;
                                     const aMemoryBarrierCount:TVkUInt32;
                                     const aPMemoryBarriers:PVkMemoryBarrier2;
                                     const aBufferMemoryBarrierCount:TVkUInt32;
                                     const aPBufferMemoryBarriers:PVkBufferMemoryBarrier2;
                                     const aImageMemoryBarrierCount:TVkUInt32;
                                     const aPImageMemoryBarriers:PVkImageMemoryBarrier2);
begin
 sType:=VK_STRUCTURE_TYPE_DEPENDENCY_INFO;
 pNext:=nil;
 dependencyFlags:=aDependencyFlags;
 memoryBarrierCount:=aMemoryBarrierCount;
 pMemoryBarriers:=aPMemoryBarriers;
 bufferMemoryBarrierCount:=aBufferMemoryBarrierCount;
 pBufferMemoryBarriers:=aPBufferMemoryBarriers;
 imageMemoryBarrierCount:=aImageMemoryBarrierCount;
 pImageMemoryBarriers:=aPImageMemoryBarriers;
end;

constructor TVkSemaphoreSubmitInfo.Create(const aSemaphore:TVkSemaphore;
                                          const aValue:TVkUInt64;
                                          const aStageMask:TVkPipelineStageFlags2;
                                          const aDeviceIndex:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO;
 pNext:=nil;
 semaphore:=aSemaphore;
 value:=aValue;
 stageMask:=aStageMask;
 deviceIndex:=aDeviceIndex;
end;

constructor TVkCommandBufferSubmitInfo.Create(const aCommandBuffer:TVkCommandBuffer;
                                              const aDeviceMask:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO;
 pNext:=nil;
 commandBuffer:=aCommandBuffer;
 deviceMask:=aDeviceMask;
end;

constructor TVkSubmitInfo2.Create(const aFlags:TVkSubmitFlags;
                                  const aWaitSemaphoreInfoCount:TVkUInt32;
                                  const aPWaitSemaphoreInfos:PVkSemaphoreSubmitInfo;
                                  const aCommandBufferInfoCount:TVkUInt32;
                                  const aPCommandBufferInfos:PVkCommandBufferSubmitInfo;
                                  const aSignalSemaphoreInfoCount:TVkUInt32;
                                  const aPSignalSemaphoreInfos:PVkSemaphoreSubmitInfo);
begin
 sType:=VK_STRUCTURE_TYPE_SUBMIT_INFO_2;
 pNext:=nil;
 flags:=aFlags;
 waitSemaphoreInfoCount:=aWaitSemaphoreInfoCount;
 pWaitSemaphoreInfos:=aPWaitSemaphoreInfos;
 commandBufferInfoCount:=aCommandBufferInfoCount;
 pCommandBufferInfos:=aPCommandBufferInfos;
 signalSemaphoreInfoCount:=aSignalSemaphoreInfoCount;
 pSignalSemaphoreInfos:=aPSignalSemaphoreInfos;
end;

constructor TVkQueueFamilyCheckpointProperties2NV.Create(const aCheckpointExecutionStageMask:TVkPipelineStageFlags2);
begin
 sType:=VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV;
 pNext:=nil;
 checkpointExecutionStageMask:=aCheckpointExecutionStageMask;
end;

constructor TVkCheckpointData2NV.Create(const aStage:TVkPipelineStageFlags2;
                                        const aPCheckpointMarker:PVkVoid);
begin
 sType:=VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV;
 pNext:=nil;
 stage:=aStage;
 pCheckpointMarker:=aPCheckpointMarker;
end;

constructor TVkPhysicalDeviceSynchronization2Features.Create(const aSynchronization2:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES;
 pNext:=nil;
 synchronization2:=aSynchronization2;
end;

constructor TVkPhysicalDeviceHostImageCopyFeaturesEXT.Create(const aHostImageCopy:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT;
 pNext:=nil;
 hostImageCopy:=aHostImageCopy;
end;

constructor TVkPhysicalDeviceHostImageCopyPropertiesEXT.Create(const aCopySrcLayoutCount:TVkUInt32;
                                                               const aPCopySrcLayouts:PVkImageLayout;
                                                               const aCopyDstLayoutCount:TVkUInt32;
                                                               const aPCopyDstLayouts:PVkImageLayout;
                                                               const aOptimalTilingLayoutUUID:array of TVkUInt8;
                                                               const aIdenticalMemoryTypeRequirements:TVkBool32);
var ArrayItemCount:TVkInt32;
begin
 FillChar(self,SizeOf(TVkPhysicalDeviceHostImageCopyPropertiesEXT),#0);
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT;
 pNext:=nil;
 copySrcLayoutCount:=aCopySrcLayoutCount;
 pCopySrcLayouts:=aPCopySrcLayouts;
 copyDstLayoutCount:=aCopyDstLayoutCount;
 pCopyDstLayouts:=aPCopyDstLayouts;
 ArrayItemCount:=length(aOptimalTilingLayoutUUID);
 if ArrayItemCount>length(optimalTilingLayoutUUID) then begin
  ArrayItemCount:=length(optimalTilingLayoutUUID);
 end;
 if ArrayItemCount>0 then begin
  Move(aOptimalTilingLayoutUUID[0],optimalTilingLayoutUUID[0],ArrayItemCount*SizeOf(TVkUInt8));
 end;
 identicalMemoryTypeRequirements:=aIdenticalMemoryTypeRequirements;
end;

constructor TVkMemoryToImageCopyEXT.Create(const aPHostPointer:PVkVoid;
                                           const aMemoryRowLength:TVkUInt32;
                                           const aMemoryImageHeight:TVkUInt32;
                                           const aImageSubresource:TVkImageSubresourceLayers;
                                           const aImageOffset:TVkOffset3D;
                                           const aImageExtent:TVkExtent3D);
begin
 sType:=VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXT;
 pNext:=nil;
 pHostPointer:=aPHostPointer;
 memoryRowLength:=aMemoryRowLength;
 memoryImageHeight:=aMemoryImageHeight;
 imageSubresource:=aImageSubresource;
 imageOffset:=aImageOffset;
 imageExtent:=aImageExtent;
end;

constructor TVkImageToMemoryCopyEXT.Create(const aPHostPointer:PVkVoid;
                                           const aMemoryRowLength:TVkUInt32;
                                           const aMemoryImageHeight:TVkUInt32;
                                           const aImageSubresource:TVkImageSubresourceLayers;
                                           const aImageOffset:TVkOffset3D;
                                           const aImageExtent:TVkExtent3D);
begin
 sType:=VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXT;
 pNext:=nil;
 pHostPointer:=aPHostPointer;
 memoryRowLength:=aMemoryRowLength;
 memoryImageHeight:=aMemoryImageHeight;
 imageSubresource:=aImageSubresource;
 imageOffset:=aImageOffset;
 imageExtent:=aImageExtent;
end;

constructor TVkCopyMemoryToImageInfoEXT.Create(const aFlags:TVkHostImageCopyFlagsEXT;
                                               const aDstImage:TVkImage;
                                               const aDstImageLayout:TVkImageLayout;
                                               const aRegionCount:TVkUInt32;
                                               const aPRegions:PVkMemoryToImageCopyEXT);
begin
 sType:=VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXT;
 pNext:=nil;
 flags:=aFlags;
 dstImage:=aDstImage;
 dstImageLayout:=aDstImageLayout;
 regionCount:=aRegionCount;
 pRegions:=aPRegions;
end;

constructor TVkCopyImageToMemoryInfoEXT.Create(const aFlags:TVkHostImageCopyFlagsEXT;
                                               const aSrcImage:TVkImage;
                                               const aSrcImageLayout:TVkImageLayout;
                                               const aRegionCount:TVkUInt32;
                                               const aPRegions:PVkImageToMemoryCopyEXT);
begin
 sType:=VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXT;
 pNext:=nil;
 flags:=aFlags;
 srcImage:=aSrcImage;
 srcImageLayout:=aSrcImageLayout;
 regionCount:=aRegionCount;
 pRegions:=aPRegions;
end;

constructor TVkCopyImageToImageInfoEXT.Create(const aFlags:TVkHostImageCopyFlagsEXT;
                                              const aSrcImage:TVkImage;
                                              const aSrcImageLayout:TVkImageLayout;
                                              const aDstImage:TVkImage;
                                              const aDstImageLayout:TVkImageLayout;
                                              const aRegionCount:TVkUInt32;
                                              const aPRegions:PVkImageCopy2);
begin
 sType:=VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXT;
 pNext:=nil;
 flags:=aFlags;
 srcImage:=aSrcImage;
 srcImageLayout:=aSrcImageLayout;
 dstImage:=aDstImage;
 dstImageLayout:=aDstImageLayout;
 regionCount:=aRegionCount;
 pRegions:=aPRegions;
end;

constructor TVkHostImageLayoutTransitionInfoEXT.Create(const aImage:TVkImage;
                                                       const aOldLayout:TVkImageLayout;
                                                       const aNewLayout:TVkImageLayout;
                                                       const aSubresourceRange:TVkImageSubresourceRange);
begin
 sType:=VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXT;
 pNext:=nil;
 image:=aImage;
 oldLayout:=aOldLayout;
 newLayout:=aNewLayout;
 subresourceRange:=aSubresourceRange;
end;

constructor TVkSubresourceHostMemcpySizeEXT.Create(const aSize:TVkDeviceSize);
begin
 sType:=VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXT;
 pNext:=nil;
 size:=aSize;
end;

constructor TVkHostImageCopyDevicePerformanceQueryEXT.Create(const aOptimalDeviceAccess:TVkBool32;
                                                             const aIdenticalMemoryLayout:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT;
 pNext:=nil;
 optimalDeviceAccess:=aOptimalDeviceAccess;
 identicalMemoryLayout:=aIdenticalMemoryLayout;
end;

{$ifdef VulkanSC}
constructor TVkPhysicalDeviceVulkanSC10Properties.Create(const aDeviceNoDynamicHostAllocations:TVkBool32;
                                                         const aDeviceDestroyFreesMemory:TVkBool32;
                                                         const aCommandPoolMultipleCommandBuffersRecording:TVkBool32;
                                                         const aCommandPoolResetCommandBuffer:TVkBool32;
                                                         const aCommandBufferSimultaneousUse:TVkBool32;
                                                         const aSecondaryCommandBufferNullOrImagelessFramebuffer:TVkBool32;
                                                         const aRecycleDescriptorSetMemory:TVkBool32;
                                                         const aRecyclePipelineMemory:TVkBool32;
                                                         const aMaxRenderPassSubpasses:TVkUInt32;
                                                         const aMaxRenderPassDependencies:TVkUInt32;
                                                         const aMaxSubpassInputAttachments:TVkUInt32;
                                                         const aMaxSubpassPreserveAttachments:TVkUInt32;
                                                         const aMaxFramebufferAttachments:TVkUInt32;
                                                         const aMaxDescriptorSetLayoutBindings:TVkUInt32;
                                                         const aMaxQueryFaultCount:TVkUInt32;
                                                         const aMaxCallbackFaultCount:TVkUInt32;
                                                         const aMaxCommandPoolCommandBuffers:TVkUInt32;
                                                         const aMaxCommandBufferSize:TVkDeviceSize);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_PROPERTIES;
 pNext:=nil;
 deviceNoDynamicHostAllocations:=aDeviceNoDynamicHostAllocations;
 deviceDestroyFreesMemory:=aDeviceDestroyFreesMemory;
 commandPoolMultipleCommandBuffersRecording:=aCommandPoolMultipleCommandBuffersRecording;
 commandPoolResetCommandBuffer:=aCommandPoolResetCommandBuffer;
 commandBufferSimultaneousUse:=aCommandBufferSimultaneousUse;
 secondaryCommandBufferNullOrImagelessFramebuffer:=aSecondaryCommandBufferNullOrImagelessFramebuffer;
 recycleDescriptorSetMemory:=aRecycleDescriptorSetMemory;
 recyclePipelineMemory:=aRecyclePipelineMemory;
 maxRenderPassSubpasses:=aMaxRenderPassSubpasses;
 maxRenderPassDependencies:=aMaxRenderPassDependencies;
 maxSubpassInputAttachments:=aMaxSubpassInputAttachments;
 maxSubpassPreserveAttachments:=aMaxSubpassPreserveAttachments;
 maxFramebufferAttachments:=aMaxFramebufferAttachments;
 maxDescriptorSetLayoutBindings:=aMaxDescriptorSetLayoutBindings;
 maxQueryFaultCount:=aMaxQueryFaultCount;
 maxCallbackFaultCount:=aMaxCallbackFaultCount;
 maxCommandPoolCommandBuffers:=aMaxCommandPoolCommandBuffers;
 maxCommandBufferSize:=aMaxCommandBufferSize;
end;
{$endif}

{$ifdef VulkanSC}
constructor TVkPipelinePoolSize.Create(const aPoolEntrySize:TVkDeviceSize;
                                       const aPoolEntryCount:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_PIPELINE_POOL_SIZE;
 pNext:=nil;
 poolEntrySize:=aPoolEntrySize;
 poolEntryCount:=aPoolEntryCount;
end;
{$endif}

{$ifdef VulkanSC}
constructor TVkDeviceObjectReservationCreateInfo.Create(const aPipelineCacheCreateInfoCount:TVkUInt32;
                                                        const aPPipelineCacheCreateInfos:PVkPipelineCacheCreateInfo;
                                                        const aPipelinePoolSizeCount:TVkUInt32;
                                                        const aPPipelinePoolSizes:PVkPipelinePoolSize;
                                                        const aSemaphoreRequestCount:TVkUInt32;
                                                        const aCommandBufferRequestCount:TVkUInt32;
                                                        const aFenceRequestCount:TVkUInt32;
                                                        const aDeviceMemoryRequestCount:TVkUInt32;
                                                        const aBufferRequestCount:TVkUInt32;
                                                        const aImageRequestCount:TVkUInt32;
                                                        const aEventRequestCount:TVkUInt32;
                                                        const aQueryPoolRequestCount:TVkUInt32;
                                                        const aBufferViewRequestCount:TVkUInt32;
                                                        const aImageViewRequestCount:TVkUInt32;
                                                        const aLayeredImageViewRequestCount:TVkUInt32;
                                                        const aPipelineCacheRequestCount:TVkUInt32;
                                                        const aPipelineLayoutRequestCount:TVkUInt32;
                                                        const aRenderPassRequestCount:TVkUInt32;
                                                        const aGraphicsPipelineRequestCount:TVkUInt32;
                                                        const aComputePipelineRequestCount:TVkUInt32;
                                                        const aDescriptorSetLayoutRequestCount:TVkUInt32;
                                                        const aSamplerRequestCount:TVkUInt32;
                                                        const aDescriptorPoolRequestCount:TVkUInt32;
                                                        const aDescriptorSetRequestCount:TVkUInt32;
                                                        const aFramebufferRequestCount:TVkUInt32;
                                                        const aCommandPoolRequestCount:TVkUInt32;
                                                        const aSamplerYcbcrConversionRequestCount:TVkUInt32;
                                                        const aSurfaceRequestCount:TVkUInt32;
                                                        const aSwapchainRequestCount:TVkUInt32;
                                                        const aDisplayModeRequestCount:TVkUInt32;
                                                        const aSubpassDescriptionRequestCount:TVkUInt32;
                                                        const aAttachmentDescriptionRequestCount:TVkUInt32;
                                                        const aDescriptorSetLayoutBindingRequestCount:TVkUInt32;
                                                        const aDescriptorSetLayoutBindingLimit:TVkUInt32;
                                                        const aMaxImageViewMipLevels:TVkUInt32;
                                                        const aMaxImageViewArrayLayers:TVkUInt32;
                                                        const aMaxLayeredImageViewMipLevels:TVkUInt32;
                                                        const aMaxOcclusionQueriesPerPool:TVkUInt32;
                                                        const aMaxPipelineStatisticsQueriesPerPool:TVkUInt32;
                                                        const aMaxTimestampQueriesPerPool:TVkUInt32;
                                                        const aMaxImmutableSamplersPerDescriptorSetLayout:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_DEVICE_OBJECT_RESERVATION_CREATE_INFO;
 pNext:=nil;
 pipelineCacheCreateInfoCount:=aPipelineCacheCreateInfoCount;
 pPipelineCacheCreateInfos:=aPPipelineCacheCreateInfos;
 pipelinePoolSizeCount:=aPipelinePoolSizeCount;
 pPipelinePoolSizes:=aPPipelinePoolSizes;
 semaphoreRequestCount:=aSemaphoreRequestCount;
 commandBufferRequestCount:=aCommandBufferRequestCount;
 fenceRequestCount:=aFenceRequestCount;
 deviceMemoryRequestCount:=aDeviceMemoryRequestCount;
 bufferRequestCount:=aBufferRequestCount;
 imageRequestCount:=aImageRequestCount;
 eventRequestCount:=aEventRequestCount;
 queryPoolRequestCount:=aQueryPoolRequestCount;
 bufferViewRequestCount:=aBufferViewRequestCount;
 imageViewRequestCount:=aImageViewRequestCount;
 layeredImageViewRequestCount:=aLayeredImageViewRequestCount;
 pipelineCacheRequestCount:=aPipelineCacheRequestCount;
 pipelineLayoutRequestCount:=aPipelineLayoutRequestCount;
 renderPassRequestCount:=aRenderPassRequestCount;
 graphicsPipelineRequestCount:=aGraphicsPipelineRequestCount;
 computePipelineRequestCount:=aComputePipelineRequestCount;
 descriptorSetLayoutRequestCount:=aDescriptorSetLayoutRequestCount;
 samplerRequestCount:=aSamplerRequestCount;
 descriptorPoolRequestCount:=aDescriptorPoolRequestCount;
 descriptorSetRequestCount:=aDescriptorSetRequestCount;
 framebufferRequestCount:=aFramebufferRequestCount;
 commandPoolRequestCount:=aCommandPoolRequestCount;
 samplerYcbcrConversionRequestCount:=aSamplerYcbcrConversionRequestCount;
 surfaceRequestCount:=aSurfaceRequestCount;
 swapchainRequestCount:=aSwapchainRequestCount;
 displayModeRequestCount:=aDisplayModeRequestCount;
 subpassDescriptionRequestCount:=aSubpassDescriptionRequestCount;
 attachmentDescriptionRequestCount:=aAttachmentDescriptionRequestCount;
 descriptorSetLayoutBindingRequestCount:=aDescriptorSetLayoutBindingRequestCount;
 descriptorSetLayoutBindingLimit:=aDescriptorSetLayoutBindingLimit;
 maxImageViewMipLevels:=aMaxImageViewMipLevels;
 maxImageViewArrayLayers:=aMaxImageViewArrayLayers;
 maxLayeredImageViewMipLevels:=aMaxLayeredImageViewMipLevels;
 maxOcclusionQueriesPerPool:=aMaxOcclusionQueriesPerPool;
 maxPipelineStatisticsQueriesPerPool:=aMaxPipelineStatisticsQueriesPerPool;
 maxTimestampQueriesPerPool:=aMaxTimestampQueriesPerPool;
 maxImmutableSamplersPerDescriptorSetLayout:=aMaxImmutableSamplersPerDescriptorSetLayout;
end;
{$endif}

{$ifdef VulkanSC}
constructor TVkCommandPoolMemoryReservationCreateInfo.Create(const aCommandPoolReservedSize:TVkDeviceSize;
                                                             const aCommandPoolMaxCommandBuffers:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_COMMAND_POOL_MEMORY_RESERVATION_CREATE_INFO;
 pNext:=nil;
 commandPoolReservedSize:=aCommandPoolReservedSize;
 commandPoolMaxCommandBuffers:=aCommandPoolMaxCommandBuffers;
end;
{$endif}

{$ifdef VulkanSC}
constructor TVkCommandPoolMemoryConsumption.Create(const aCommandPoolAllocated:TVkDeviceSize;
                                                   const aCommandPoolReservedSize:TVkDeviceSize;
                                                   const aCommandBufferAllocated:TVkDeviceSize);
begin
 sType:=VK_STRUCTURE_TYPE_COMMAND_POOL_MEMORY_CONSUMPTION;
 pNext:=nil;
 commandPoolAllocated:=aCommandPoolAllocated;
 commandPoolReservedSize:=aCommandPoolReservedSize;
 commandBufferAllocated:=aCommandBufferAllocated;
end;
{$endif}

{$ifdef VulkanSC}
constructor TVkPhysicalDeviceVulkanSC10Features.Create(const aShaderAtomicInstructions:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_FEATURES;
 pNext:=nil;
 shaderAtomicInstructions:=aShaderAtomicInstructions;
end;
{$endif}

constructor TVkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT.Create(const aPrimitivesGeneratedQuery:TVkBool32;
                                                                        const aPrimitivesGeneratedQueryWithRasterizerDiscard:TVkBool32;
                                                                        const aPrimitivesGeneratedQueryWithNonZeroStreams:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT;
 pNext:=nil;
 primitivesGeneratedQuery:=aPrimitivesGeneratedQuery;
 primitivesGeneratedQueryWithRasterizerDiscard:=aPrimitivesGeneratedQueryWithRasterizerDiscard;
 primitivesGeneratedQueryWithNonZeroStreams:=aPrimitivesGeneratedQueryWithNonZeroStreams;
end;

constructor TVkPhysicalDeviceLegacyDitheringFeaturesEXT.Create(const aLegacyDithering:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT;
 pNext:=nil;
 legacyDithering:=aLegacyDithering;
end;

constructor TVkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT.Create(const aMultisampledRenderToSingleSampled:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT;
 pNext:=nil;
 multisampledRenderToSingleSampled:=aMultisampledRenderToSingleSampled;
end;

constructor TVkSubpassResolvePerformanceQueryEXT.Create(const aOptimal:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT;
 pNext:=nil;
 optimal:=aOptimal;
end;

constructor TVkMultisampledRenderToSingleSampledInfoEXT.Create(const aMultisampledRenderToSingleSampledEnable:TVkBool32;
                                                               const aRasterizationSamples:TVkSampleCountFlagBits);
begin
 sType:=VK_STRUCTURE_TYPE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT;
 pNext:=nil;
 multisampledRenderToSingleSampledEnable:=aMultisampledRenderToSingleSampledEnable;
 rasterizationSamples:=aRasterizationSamples;
end;

constructor TVkPhysicalDevicePipelineProtectedAccessFeaturesEXT.Create(const aPipelineProtectedAccess:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT;
 pNext:=nil;
 pipelineProtectedAccess:=aPipelineProtectedAccess;
end;

{$ifdef VkVideo}
constructor TVkQueueFamilyVideoPropertiesKHR.Create(const aVideoCodecOperations:TVkVideoCodecOperationFlagsKHR);
begin
 sType:=VK_STRUCTURE_TYPE_QUEUE_FAMILY_VIDEO_PROPERTIES_KHR;
 pNext:=nil;
 videoCodecOperations:=aVideoCodecOperations;
end;
{$endif}

constructor TVkQueueFamilyQueryResultStatusPropertiesKHR.Create(const aQueryResultStatusSupport:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_QUEUE_FAMILY_QUERY_RESULT_STATUS_PROPERTIES_KHR;
 pNext:=nil;
 queryResultStatusSupport:=aQueryResultStatusSupport;
end;

{$ifdef VkVideo}
constructor TVkVideoProfileInfoKHR.Create(const aVideoCodecOperation:TVkVideoCodecOperationFlagBitsKHR;
                                          const aChromaSubsampling:TVkVideoChromaSubsamplingFlagsKHR;
                                          const aLumaBitDepth:TVkVideoComponentBitDepthFlagsKHR;
                                          const aChromaBitDepth:TVkVideoComponentBitDepthFlagsKHR);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_PROFILE_INFO_KHR;
 pNext:=nil;
 videoCodecOperation:=aVideoCodecOperation;
 chromaSubsampling:=aChromaSubsampling;
 lumaBitDepth:=aLumaBitDepth;
 chromaBitDepth:=aChromaBitDepth;
end;
{$endif}

constructor TVkPhysicalDeviceVideoFormatInfoKHR.Create(const aImageUsage:TVkImageUsageFlags);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR;
 pNext:=nil;
 imageUsage:=aImageUsage;
end;

{$ifdef VkVideo}
constructor TVkVideoFormatPropertiesKHR.Create(const aFormat:TVkFormat;
                                               const aComponentMapping:TVkComponentMapping;
                                               const aImageCreateFlags:TVkImageCreateFlags;
                                               const aImageType:TVkImageType;
                                               const aImageTiling:TVkImageTiling;
                                               const aImageUsageFlags:TVkImageUsageFlags);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_FORMAT_PROPERTIES_KHR;
 pNext:=nil;
 format:=aFormat;
 componentMapping:=aComponentMapping;
 imageCreateFlags:=aImageCreateFlags;
 imageType:=aImageType;
 imageTiling:=aImageTiling;
 imageUsageFlags:=aImageUsageFlags;
end;
{$endif}

{$ifdef VkVideo}
constructor TVkVideoProfileListInfoKHR.Create(const aProfileCount:TVkUInt32;
                                              const aPProfiles:PVkVideoProfileInfoKHR);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_PROFILE_LIST_INFO_KHR;
 pNext:=nil;
 profileCount:=aProfileCount;
 pProfiles:=aPProfiles;
end;
{$endif}

{$ifdef VkVideo}
constructor TVkVideoCapabilitiesKHR.Create(const aFlags:TVkVideoCapabilityFlagsKHR;
                                           const aMinBitstreamBufferOffsetAlignment:TVkDeviceSize;
                                           const aMinBitstreamBufferSizeAlignment:TVkDeviceSize;
                                           const aPictureAccessGranularity:TVkExtent2D;
                                           const aMinCodedExtent:TVkExtent2D;
                                           const aMaxCodedExtent:TVkExtent2D;
                                           const aMaxDpbSlots:TVkUInt32;
                                           const aMaxActiveReferencePictures:TVkUInt32;
                                           const aStdHeaderVersion:TVkExtensionProperties);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_CAPABILITIES_KHR;
 pNext:=nil;
 flags:=aFlags;
 minBitstreamBufferOffsetAlignment:=aMinBitstreamBufferOffsetAlignment;
 minBitstreamBufferSizeAlignment:=aMinBitstreamBufferSizeAlignment;
 pictureAccessGranularity:=aPictureAccessGranularity;
 minCodedExtent:=aMinCodedExtent;
 maxCodedExtent:=aMaxCodedExtent;
 maxDpbSlots:=aMaxDpbSlots;
 maxActiveReferencePictures:=aMaxActiveReferencePictures;
 stdHeaderVersion:=aStdHeaderVersion;
end;
{$endif}

{$ifdef VkVideo}
constructor TVkVideoSessionMemoryRequirementsKHR.Create(const aMemoryBindIndex:TVkUInt32;
                                                        const aMemoryRequirements:TVkMemoryRequirements);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_SESSION_MEMORY_REQUIREMENTS_KHR;
 pNext:=nil;
 memoryBindIndex:=aMemoryBindIndex;
 memoryRequirements:=aMemoryRequirements;
end;
{$endif}

constructor TVkBindVideoSessionMemoryInfoKHR.Create(const aMemoryBindIndex:TVkUInt32;
                                                    const aMemory:TVkDeviceMemory;
                                                    const aMemoryOffset:TVkDeviceSize;
                                                    const aMemorySize:TVkDeviceSize);
begin
 sType:=VK_STRUCTURE_TYPE_BIND_VIDEO_SESSION_MEMORY_INFO_KHR;
 pNext:=nil;
 memoryBindIndex:=aMemoryBindIndex;
 memory:=aMemory;
 memoryOffset:=aMemoryOffset;
 memorySize:=aMemorySize;
end;

{$ifdef VkVideo}
constructor TVkVideoPictureResourceInfoKHR.Create(const aCodedOffset:TVkOffset2D;
                                                  const aCodedExtent:TVkExtent2D;
                                                  const aBaseArrayLayer:TVkUInt32;
                                                  const aImageViewBinding:TVkImageView);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_PICTURE_RESOURCE_INFO_KHR;
 pNext:=nil;
 codedOffset:=aCodedOffset;
 codedExtent:=aCodedExtent;
 baseArrayLayer:=aBaseArrayLayer;
 imageViewBinding:=aImageViewBinding;
end;
{$endif}

{$ifdef VkVideo}
constructor TVkVideoReferenceSlotInfoKHR.Create(const aSlotIndex:TVkInt32;
                                                const aPPictureResource:PVkVideoPictureResourceInfoKHR);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_REFERENCE_SLOT_INFO_KHR;
 pNext:=nil;
 slotIndex:=aSlotIndex;
 pPictureResource:=aPPictureResource;
end;
{$endif}

{$ifdef VkVideo}
constructor TVkVideoDecodeCapabilitiesKHR.Create(const aFlags:TVkVideoDecodeCapabilityFlagsKHR);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_DECODE_CAPABILITIES_KHR;
 pNext:=nil;
 flags:=aFlags;
end;
{$endif}

{$ifdef VkVideo}
constructor TVkVideoDecodeUsageInfoKHR.Create(const aVideoUsageHints:TVkVideoDecodeUsageFlagsKHR);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_DECODE_USAGE_INFO_KHR;
 pNext:=nil;
 videoUsageHints:=aVideoUsageHints;
end;
{$endif}

{$ifdef VkVideo}
constructor TVkVideoDecodeInfoKHR.Create(const aFlags:TVkVideoDecodeFlagsKHR;
                                         const aSrcBuffer:TVkBuffer;
                                         const aSrcBufferOffset:TVkDeviceSize;
                                         const aSrcBufferRange:TVkDeviceSize;
                                         const aDstPictureResource:TVkVideoPictureResourceInfoKHR;
                                         const aPSetupReferenceSlot:PVkVideoReferenceSlotInfoKHR;
                                         const aReferenceSlotCount:TVkUInt32;
                                         const aPReferenceSlots:PVkVideoReferenceSlotInfoKHR);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_DECODE_INFO_KHR;
 pNext:=nil;
 flags:=aFlags;
 srcBuffer:=aSrcBuffer;
 srcBufferOffset:=aSrcBufferOffset;
 srcBufferRange:=aSrcBufferRange;
 dstPictureResource:=aDstPictureResource;
 pSetupReferenceSlot:=aPSetupReferenceSlot;
 referenceSlotCount:=aReferenceSlotCount;
 pReferenceSlots:=aPReferenceSlots;
end;
{$endif}

{$ifdef VkVideo}
constructor TVkVideoDecodeH264ProfileInfoKHR.Create(const aStdProfileIdc:TStdVideoH264ProfileIdc;
                                                    const aPictureLayout:TVkVideoDecodeH264PictureLayoutFlagBitsKHR);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_KHR;
 pNext:=nil;
 stdProfileIdc:=aStdProfileIdc;
 pictureLayout:=aPictureLayout;
end;
{$endif}

{$ifdef VkStdVideo}
constructor TVkVideoDecodeH264CapabilitiesKHR.Create(const aMaxLevelIdc:TStdVideoH264LevelIdc;
                                                     const aFieldOffsetGranularity:TVkOffset2D);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_KHR;
 pNext:=nil;
 maxLevelIdc:=aMaxLevelIdc;
 fieldOffsetGranularity:=aFieldOffsetGranularity;
end;
{$endif}

{$ifdef VkStdVideo}
constructor TVkVideoDecodeH264SessionParametersAddInfoKHR.Create(const aStdSPSCount:TVkUInt32;
                                                                 const aPStdSPSs:PStdVideoH264SequenceParameterSet;
                                                                 const aStdPPSCount:TVkUInt32;
                                                                 const aPStdPPSs:PStdVideoH264PictureParameterSet);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR;
 pNext:=nil;
 stdSPSCount:=aStdSPSCount;
 pStdSPSs:=aPStdSPSs;
 stdPPSCount:=aStdPPSCount;
 pStdPPSs:=aPStdPPSs;
end;
{$endif}

{$ifdef VkVideo}
constructor TVkVideoDecodeH264SessionParametersCreateInfoKHR.Create(const aMaxStdSPSCount:TVkUInt32;
                                                                    const aMaxStdPPSCount:TVkUInt32;
                                                                    const aPParametersAddInfo:PVkVideoDecodeH264SessionParametersAddInfoKHR);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR;
 pNext:=nil;
 maxStdSPSCount:=aMaxStdSPSCount;
 maxStdPPSCount:=aMaxStdPPSCount;
 pParametersAddInfo:=aPParametersAddInfo;
end;
{$endif}

{$ifdef VkStdVideo}
constructor TVkVideoDecodeH264PictureInfoKHR.Create(const aPStdPictureInfo:PStdVideoDecodeH264PictureInfo;
                                                    const aSliceCount:TVkUInt32;
                                                    const aPSliceOffsets:PVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_KHR;
 pNext:=nil;
 pStdPictureInfo:=aPStdPictureInfo;
 sliceCount:=aSliceCount;
 pSliceOffsets:=aPSliceOffsets;
end;
{$endif}

{$ifdef VkStdVideo}
constructor TVkVideoDecodeH264DpbSlotInfoKHR.Create(const aPStdReferenceInfo:PStdVideoDecodeH264ReferenceInfo);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR;
 pNext:=nil;
 pStdReferenceInfo:=aPStdReferenceInfo;
end;
{$endif}

{$ifdef VkStdVideo}
constructor TVkVideoDecodeH265ProfileInfoKHR.Create(const aStdProfileIdc:TStdVideoH265ProfileIdc);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_KHR;
 pNext:=nil;
 stdProfileIdc:=aStdProfileIdc;
end;
{$endif}

{$ifdef VkStdVideo}
constructor TVkVideoDecodeH265CapabilitiesKHR.Create(const aMaxLevelIdc:TStdVideoH265LevelIdc);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_KHR;
 pNext:=nil;
 maxLevelIdc:=aMaxLevelIdc;
end;
{$endif}

{$ifdef VkStdVideo}
constructor TVkVideoDecodeH265SessionParametersAddInfoKHR.Create(const aStdVPSCount:TVkUInt32;
                                                                 const aPStdVPSs:PStdVideoH265VideoParameterSet;
                                                                 const aStdSPSCount:TVkUInt32;
                                                                 const aPStdSPSs:PStdVideoH265SequenceParameterSet;
                                                                 const aStdPPSCount:TVkUInt32;
                                                                 const aPStdPPSs:PStdVideoH265PictureParameterSet);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR;
 pNext:=nil;
 stdVPSCount:=aStdVPSCount;
 pStdVPSs:=aPStdVPSs;
 stdSPSCount:=aStdSPSCount;
 pStdSPSs:=aPStdSPSs;
 stdPPSCount:=aStdPPSCount;
 pStdPPSs:=aPStdPPSs;
end;
{$endif}

{$ifdef VkVideo}
constructor TVkVideoDecodeH265SessionParametersCreateInfoKHR.Create(const aMaxStdVPSCount:TVkUInt32;
                                                                    const aMaxStdSPSCount:TVkUInt32;
                                                                    const aMaxStdPPSCount:TVkUInt32;
                                                                    const aPParametersAddInfo:PVkVideoDecodeH265SessionParametersAddInfoKHR);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR;
 pNext:=nil;
 maxStdVPSCount:=aMaxStdVPSCount;
 maxStdSPSCount:=aMaxStdSPSCount;
 maxStdPPSCount:=aMaxStdPPSCount;
 pParametersAddInfo:=aPParametersAddInfo;
end;
{$endif}

{$ifdef VkStdVideo}
constructor TVkVideoDecodeH265PictureInfoKHR.Create(const aPStdPictureInfo:PStdVideoDecodeH265PictureInfo;
                                                    const aSliceSegmentCount:TVkUInt32;
                                                    const aPSliceSegmentOffsets:PVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_KHR;
 pNext:=nil;
 pStdPictureInfo:=aPStdPictureInfo;
 sliceSegmentCount:=aSliceSegmentCount;
 pSliceSegmentOffsets:=aPSliceSegmentOffsets;
end;
{$endif}

{$ifdef VkStdVideo}
constructor TVkVideoDecodeH265DpbSlotInfoKHR.Create(const aPStdReferenceInfo:PStdVideoDecodeH265ReferenceInfo);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR;
 pNext:=nil;
 pStdReferenceInfo:=aPStdReferenceInfo;
end;
{$endif}

{$ifdef VkVideo}
constructor TVkVideoSessionCreateInfoKHR.Create(const aQueueFamilyIndex:TVkUInt32;
                                                const aFlags:TVkVideoSessionCreateFlagsKHR;
                                                const aPVideoProfile:PVkVideoProfileInfoKHR;
                                                const aPictureFormat:TVkFormat;
                                                const aMaxCodedExtent:TVkExtent2D;
                                                const aReferencePictureFormat:TVkFormat;
                                                const aMaxDpbSlots:TVkUInt32;
                                                const aMaxActiveReferencePictures:TVkUInt32;
                                                const aPStdHeaderVersion:PVkExtensionProperties);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_SESSION_CREATE_INFO_KHR;
 pNext:=nil;
 queueFamilyIndex:=aQueueFamilyIndex;
 flags:=aFlags;
 pVideoProfile:=aPVideoProfile;
 pictureFormat:=aPictureFormat;
 maxCodedExtent:=aMaxCodedExtent;
 referencePictureFormat:=aReferencePictureFormat;
 maxDpbSlots:=aMaxDpbSlots;
 maxActiveReferencePictures:=aMaxActiveReferencePictures;
 pStdHeaderVersion:=aPStdHeaderVersion;
end;
{$endif}

{$ifdef VkVideo}
constructor TVkVideoSessionParametersCreateInfoKHR.Create(const aFlags:TVkVideoSessionParametersCreateFlagsKHR;
                                                          const aVideoSessionParametersTemplate:TVkVideoSessionParametersKHR;
                                                          const aVideoSession:TVkVideoSessionKHR);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR;
 pNext:=nil;
 flags:=aFlags;
 videoSessionParametersTemplate:=aVideoSessionParametersTemplate;
 videoSession:=aVideoSession;
end;
{$endif}

{$ifdef VkVideo}
constructor TVkVideoSessionParametersUpdateInfoKHR.Create(const aUpdateSequenceCount:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR;
 pNext:=nil;
 updateSequenceCount:=aUpdateSequenceCount;
end;
{$endif}

{$ifdef VkVideo}
constructor TVkVideoEncodeSessionParametersGetInfoKHR.Create(const aVideoSessionParameters:TVkVideoSessionParametersKHR);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_GET_INFO_KHR;
 pNext:=nil;
 videoSessionParameters:=aVideoSessionParameters;
end;
{$endif}

{$ifdef VkVideo}
constructor TVkVideoEncodeSessionParametersFeedbackInfoKHR.Create(const aHasOverrides:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_FEEDBACK_INFO_KHR;
 pNext:=nil;
 hasOverrides:=aHasOverrides;
end;
{$endif}

{$ifdef VkVideo}
constructor TVkVideoBeginCodingInfoKHR.Create(const aFlags:TVkVideoBeginCodingFlagsKHR;
                                              const aVideoSession:TVkVideoSessionKHR;
                                              const aVideoSessionParameters:TVkVideoSessionParametersKHR;
                                              const aReferenceSlotCount:TVkUInt32;
                                              const aPReferenceSlots:PVkVideoReferenceSlotInfoKHR);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_BEGIN_CODING_INFO_KHR;
 pNext:=nil;
 flags:=aFlags;
 videoSession:=aVideoSession;
 videoSessionParameters:=aVideoSessionParameters;
 referenceSlotCount:=aReferenceSlotCount;
 pReferenceSlots:=aPReferenceSlots;
end;
{$endif}

{$ifdef VkVideo}
constructor TVkVideoEndCodingInfoKHR.Create(const aFlags:TVkVideoEndCodingFlagsKHR);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_END_CODING_INFO_KHR;
 pNext:=nil;
 flags:=aFlags;
end;
{$endif}

{$ifdef VkVideo}
constructor TVkVideoCodingControlInfoKHR.Create(const aFlags:TVkVideoCodingControlFlagsKHR);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_CODING_CONTROL_INFO_KHR;
 pNext:=nil;
 flags:=aFlags;
end;
{$endif}

{$ifdef VkVideo}
constructor TVkVideoEncodeUsageInfoKHR.Create(const aVideoUsageHints:TVkVideoEncodeUsageFlagsKHR;
                                              const aVideoContentHints:TVkVideoEncodeContentFlagsKHR;
                                              const aTuningMode:TVkVideoEncodeTuningModeKHR);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_ENCODE_USAGE_INFO_KHR;
 pNext:=nil;
 videoUsageHints:=aVideoUsageHints;
 videoContentHints:=aVideoContentHints;
 tuningMode:=aTuningMode;
end;
{$endif}

{$ifdef VkVideo}
constructor TVkVideoEncodeInfoKHR.Create(const aFlags:TVkVideoEncodeFlagsKHR;
                                         const aDstBuffer:TVkBuffer;
                                         const aDstBufferOffset:TVkDeviceSize;
                                         const aDstBufferRange:TVkDeviceSize;
                                         const aSrcPictureResource:TVkVideoPictureResourceInfoKHR;
                                         const aPSetupReferenceSlot:PVkVideoReferenceSlotInfoKHR;
                                         const aReferenceSlotCount:TVkUInt32;
                                         const aPReferenceSlots:PVkVideoReferenceSlotInfoKHR;
                                         const aPrecedingExternallyEncodedBytes:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_ENCODE_INFO_KHR;
 pNext:=nil;
 flags:=aFlags;
 dstBuffer:=aDstBuffer;
 dstBufferOffset:=aDstBufferOffset;
 dstBufferRange:=aDstBufferRange;
 srcPictureResource:=aSrcPictureResource;
 pSetupReferenceSlot:=aPSetupReferenceSlot;
 referenceSlotCount:=aReferenceSlotCount;
 pReferenceSlots:=aPReferenceSlots;
 precedingExternallyEncodedBytes:=aPrecedingExternallyEncodedBytes;
end;
{$endif}

{$ifdef VkVideo}
constructor TVkQueryPoolVideoEncodeFeedbackCreateInfoKHR.Create(const aEncodeFeedbackFlags:TVkVideoEncodeFeedbackFlagsKHR);
begin
 sType:=VK_STRUCTURE_TYPE_QUERY_POOL_VIDEO_ENCODE_FEEDBACK_CREATE_INFO_KHR;
 pNext:=nil;
 encodeFeedbackFlags:=aEncodeFeedbackFlags;
end;
{$endif}

{$ifdef VkVideo}
constructor TVkVideoEncodeQualityLevelInfoKHR.Create(const aQualityLevel:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR;
 pNext:=nil;
 qualityLevel:=aQualityLevel;
end;
{$endif}

{$ifdef VkVideo}
constructor TVkPhysicalDeviceVideoEncodeQualityLevelInfoKHR.Create(const aPVideoProfile:PVkVideoProfileInfoKHR;
                                                                   const aQualityLevel:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR;
 pNext:=nil;
 pVideoProfile:=aPVideoProfile;
 qualityLevel:=aQualityLevel;
end;
{$endif}

{$ifdef VkVideo}
constructor TVkVideoEncodeQualityLevelPropertiesKHR.Create(const aPreferredRateControlMode:TVkVideoEncodeRateControlModeFlagBitsKHR;
                                                           const aPreferredRateControlLayerCount:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_PROPERTIES_KHR;
 pNext:=nil;
 preferredRateControlMode:=aPreferredRateControlMode;
 preferredRateControlLayerCount:=aPreferredRateControlLayerCount;
end;
{$endif}

{$ifdef VkVideo}
constructor TVkVideoEncodeRateControlLayerInfoKHR.Create(const aAverageBitrate:TVkUInt64;
                                                         const aMaxBitrate:TVkUInt64;
                                                         const aFrameRateNumerator:TVkUInt32;
                                                         const aFrameRateDenominator:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR;
 pNext:=nil;
 averageBitrate:=aAverageBitrate;
 maxBitrate:=aMaxBitrate;
 frameRateNumerator:=aFrameRateNumerator;
 frameRateDenominator:=aFrameRateDenominator;
end;
{$endif}

{$ifdef VkVideo}
constructor TVkVideoEncodeRateControlInfoKHR.Create(const aFlags:TVkVideoEncodeRateControlFlagsKHR;
                                                    const aRateControlMode:TVkVideoEncodeRateControlModeFlagBitsKHR;
                                                    const aLayerCount:TVkUInt32;
                                                    const aPLayers:PVkVideoEncodeRateControlLayerInfoKHR;
                                                    const aVirtualBufferSizeInMs:TVkUInt32;
                                                    const aInitialVirtualBufferSizeInMs:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR;
 pNext:=nil;
 flags:=aFlags;
 rateControlMode:=aRateControlMode;
 layerCount:=aLayerCount;
 pLayers:=aPLayers;
 virtualBufferSizeInMs:=aVirtualBufferSizeInMs;
 initialVirtualBufferSizeInMs:=aInitialVirtualBufferSizeInMs;
end;
{$endif}

{$ifdef VkVideo}
constructor TVkVideoEncodeCapabilitiesKHR.Create(const aFlags:TVkVideoEncodeCapabilityFlagsKHR;
                                                 const aRateControlModes:TVkVideoEncodeRateControlModeFlagsKHR;
                                                 const aMaxRateControlLayers:TVkUInt32;
                                                 const aMaxBitrate:TVkUInt64;
                                                 const aMaxQualityLevels:TVkUInt32;
                                                 const aEncodeInputPictureGranularity:TVkExtent2D;
                                                 const aSupportedEncodeFeedbackFlags:TVkVideoEncodeFeedbackFlagsKHR);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_ENCODE_CAPABILITIES_KHR;
 pNext:=nil;
 flags:=aFlags;
 rateControlModes:=aRateControlModes;
 maxRateControlLayers:=aMaxRateControlLayers;
 maxBitrate:=aMaxBitrate;
 maxQualityLevels:=aMaxQualityLevels;
 encodeInputPictureGranularity:=aEncodeInputPictureGranularity;
 supportedEncodeFeedbackFlags:=aSupportedEncodeFeedbackFlags;
end;
{$endif}

{$ifdef VkVideo}
constructor TVkVideoEncodeH264CapabilitiesEXT.Create(const aFlags:TVkVideoEncodeH264CapabilityFlagsEXT;
                                                     const aMaxLevelIdc:TStdVideoH264LevelIdc;
                                                     const aMaxSliceCount:TVkUInt32;
                                                     const aMaxPPictureL0ReferenceCount:TVkUInt32;
                                                     const aMaxBPictureL0ReferenceCount:TVkUInt32;
                                                     const aMaxL1ReferenceCount:TVkUInt32;
                                                     const aMaxTemporalLayerCount:TVkUInt32;
                                                     const aExpectDyadicTemporalLayerPattern:TVkBool32;
                                                     const aMinQp:TVkInt32;
                                                     const aMaxQp:TVkInt32;
                                                     const aPrefersGopRemainingFrames:TVkBool32;
                                                     const aRequiresGopRemainingFrames:TVkBool32;
                                                     const aStdSyntaxFlags:TVkVideoEncodeH264StdFlagsEXT);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_CAPABILITIES_EXT;
 pNext:=nil;
 flags:=aFlags;
 maxLevelIdc:=aMaxLevelIdc;
 maxSliceCount:=aMaxSliceCount;
 maxPPictureL0ReferenceCount:=aMaxPPictureL0ReferenceCount;
 maxBPictureL0ReferenceCount:=aMaxBPictureL0ReferenceCount;
 maxL1ReferenceCount:=aMaxL1ReferenceCount;
 maxTemporalLayerCount:=aMaxTemporalLayerCount;
 expectDyadicTemporalLayerPattern:=aExpectDyadicTemporalLayerPattern;
 minQp:=aMinQp;
 maxQp:=aMaxQp;
 prefersGopRemainingFrames:=aPrefersGopRemainingFrames;
 requiresGopRemainingFrames:=aRequiresGopRemainingFrames;
 stdSyntaxFlags:=aStdSyntaxFlags;
end;
{$endif}

{$ifdef VkVideo}
constructor TVkVideoEncodeH264QpEXT.Create(const aQpI:TVkInt32;
                                           const aQpP:TVkInt32;
                                           const aQpB:TVkInt32);
begin
 qpI:=aQpI;
 qpP:=aQpP;
 qpB:=aQpB;
end;
{$endif}

{$ifdef VkStdVideo}
constructor TVkVideoEncodeH264SessionCreateInfoEXT.Create(const aUseMaxLevelIdc:TVkBool32;
                                                          const aMaxLevelIdc:TStdVideoH264LevelIdc);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_CREATE_INFO_EXT;
 pNext:=nil;
 useMaxLevelIdc:=aUseMaxLevelIdc;
 maxLevelIdc:=aMaxLevelIdc;
end;
{$endif}

{$ifdef VkStdVideo}
constructor TVkVideoEncodeH264SessionParametersAddInfoEXT.Create(const aStdSPSCount:TVkUInt32;
                                                                 const aPStdSPSs:PStdVideoH264SequenceParameterSet;
                                                                 const aStdPPSCount:TVkUInt32;
                                                                 const aPStdPPSs:PStdVideoH264PictureParameterSet);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT;
 pNext:=nil;
 stdSPSCount:=aStdSPSCount;
 pStdSPSs:=aPStdSPSs;
 stdPPSCount:=aStdPPSCount;
 pStdPPSs:=aPStdPPSs;
end;
{$endif}

{$ifdef VkVideo}
constructor TVkVideoEncodeH264SessionParametersCreateInfoEXT.Create(const aMaxStdSPSCount:TVkUInt32;
                                                                    const aMaxStdPPSCount:TVkUInt32;
                                                                    const aPParametersAddInfo:PVkVideoEncodeH264SessionParametersAddInfoEXT);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT;
 pNext:=nil;
 maxStdSPSCount:=aMaxStdSPSCount;
 maxStdPPSCount:=aMaxStdPPSCount;
 pParametersAddInfo:=aPParametersAddInfo;
end;
{$endif}

{$ifdef VkVideo}
constructor TVkVideoEncodeH264SessionParametersGetInfoEXT.Create(const aWriteStdSPS:TVkBool32;
                                                                 const aWriteStdPPS:TVkBool32;
                                                                 const aStdSPSId:TVkUInt32;
                                                                 const aStdPPSId:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_GET_INFO_EXT;
 pNext:=nil;
 writeStdSPS:=aWriteStdSPS;
 writeStdPPS:=aWriteStdPPS;
 stdSPSId:=aStdSPSId;
 stdPPSId:=aStdPPSId;
end;
{$endif}

{$ifdef VkVideo}
constructor TVkVideoEncodeH264SessionParametersFeedbackInfoEXT.Create(const aHasStdSPSOverrides:TVkBool32;
                                                                      const aHasStdPPSOverrides:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_FEEDBACK_INFO_EXT;
 pNext:=nil;
 hasStdSPSOverrides:=aHasStdSPSOverrides;
 hasStdPPSOverrides:=aHasStdPPSOverrides;
end;
{$endif}

{$ifdef VkStdVideo}
constructor TVkVideoEncodeH264DpbSlotInfoEXT.Create(const aPStdReferenceInfo:PStdVideoEncodeH264ReferenceInfo);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_EXT;
 pNext:=nil;
 pStdReferenceInfo:=aPStdReferenceInfo;
end;
{$endif}

{$ifdef VkStdVideo}
constructor TVkVideoEncodeH264NaluSliceInfoEXT.Create(const aConstantQp:TVkInt32;
                                                      const aPStdSliceHeader:PStdVideoEncodeH264SliceHeader);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_INFO_EXT;
 pNext:=nil;
 constantQp:=aConstantQp;
 pStdSliceHeader:=aPStdSliceHeader;
end;
{$endif}

{$ifdef VkStdVideo}
constructor TVkVideoEncodeH264ProfileInfoEXT.Create(const aStdProfileIdc:TStdVideoH264ProfileIdc);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_INFO_EXT;
 pNext:=nil;
 stdProfileIdc:=aStdProfileIdc;
end;
{$endif}

{$ifdef VkStdVideo}
constructor TVkVideoEncodeH264PictureInfoEXT.Create(const aNaluSliceEntryCount:TVkUInt32;
                                                    const aPNaluSliceEntries:PVkVideoEncodeH264NaluSliceInfoEXT;
                                                    const aPStdPictureInfo:PStdVideoEncodeH264PictureInfo;
                                                    const aGeneratePrefixNalu:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PICTURE_INFO_EXT;
 pNext:=nil;
 naluSliceEntryCount:=aNaluSliceEntryCount;
 pNaluSliceEntries:=aPNaluSliceEntries;
 pStdPictureInfo:=aPStdPictureInfo;
 generatePrefixNalu:=aGeneratePrefixNalu;
end;
{$endif}

{$ifdef VkVideo}
constructor TVkVideoEncodeH264RateControlInfoEXT.Create(const aFlags:TVkVideoEncodeH264RateControlFlagsEXT;
                                                        const aGopFrameCount:TVkUInt32;
                                                        const aIdrPeriod:TVkUInt32;
                                                        const aConsecutiveBFrameCount:TVkUInt32;
                                                        const aTemporalLayerCount:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_INFO_EXT;
 pNext:=nil;
 flags:=aFlags;
 gopFrameCount:=aGopFrameCount;
 idrPeriod:=aIdrPeriod;
 consecutiveBFrameCount:=aConsecutiveBFrameCount;
 temporalLayerCount:=aTemporalLayerCount;
end;
{$endif}

{$ifdef VkVideo}
constructor TVkVideoEncodeH264QualityLevelPropertiesEXT.Create(const aPreferredRateControlFlags:TVkVideoEncodeH264RateControlFlagsEXT;
                                                               const aPreferredGopFrameCount:TVkUInt32;
                                                               const aPreferredIdrPeriod:TVkUInt32;
                                                               const aPreferredConsecutiveBFrameCount:TVkUInt32;
                                                               const aPreferredTemporalLayerCount:TVkUInt32;
                                                               const aPreferredConstantQp:TVkVideoEncodeH264QpEXT;
                                                               const aPreferredMaxL0ReferenceCount:TVkUInt32;
                                                               const aPreferredMaxL1ReferenceCount:TVkUInt32;
                                                               const aPreferredStdEntropyCodingModeFlag:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_QUALITY_LEVEL_PROPERTIES_EXT;
 pNext:=nil;
 preferredRateControlFlags:=aPreferredRateControlFlags;
 preferredGopFrameCount:=aPreferredGopFrameCount;
 preferredIdrPeriod:=aPreferredIdrPeriod;
 preferredConsecutiveBFrameCount:=aPreferredConsecutiveBFrameCount;
 preferredTemporalLayerCount:=aPreferredTemporalLayerCount;
 preferredConstantQp:=aPreferredConstantQp;
 preferredMaxL0ReferenceCount:=aPreferredMaxL0ReferenceCount;
 preferredMaxL1ReferenceCount:=aPreferredMaxL1ReferenceCount;
 preferredStdEntropyCodingModeFlag:=aPreferredStdEntropyCodingModeFlag;
end;
{$endif}

{$ifdef VkVideo}
constructor TVkVideoEncodeH264FrameSizeEXT.Create(const aFrameISize:TVkUInt32;
                                                  const aFramePSize:TVkUInt32;
                                                  const aFrameBSize:TVkUInt32);
begin
 frameISize:=aFrameISize;
 framePSize:=aFramePSize;
 frameBSize:=aFrameBSize;
end;
{$endif}

{$ifdef VkVideo}
constructor TVkVideoEncodeH264GopRemainingFrameInfoEXT.Create(const aUseGopRemainingFrames:TVkBool32;
                                                              const aGopRemainingI:TVkUInt32;
                                                              const aGopRemainingP:TVkUInt32;
                                                              const aGopRemainingB:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_GOP_REMAINING_FRAME_INFO_EXT;
 pNext:=nil;
 useGopRemainingFrames:=aUseGopRemainingFrames;
 gopRemainingI:=aGopRemainingI;
 gopRemainingP:=aGopRemainingP;
 gopRemainingB:=aGopRemainingB;
end;
{$endif}

{$ifdef VkVideo}
constructor TVkVideoEncodeH264RateControlLayerInfoEXT.Create(const aUseMinQp:TVkBool32;
                                                             const aMinQp:TVkVideoEncodeH264QpEXT;
                                                             const aUseMaxQp:TVkBool32;
                                                             const aMaxQp:TVkVideoEncodeH264QpEXT;
                                                             const aUseMaxFrameSize:TVkBool32;
                                                             const aMaxFrameSize:TVkVideoEncodeH264FrameSizeEXT);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_EXT;
 pNext:=nil;
 useMinQp:=aUseMinQp;
 minQp:=aMinQp;
 useMaxQp:=aUseMaxQp;
 maxQp:=aMaxQp;
 useMaxFrameSize:=aUseMaxFrameSize;
 maxFrameSize:=aMaxFrameSize;
end;
{$endif}

{$ifdef VkVideo}
constructor TVkVideoEncodeH265CapabilitiesEXT.Create(const aFlags:TVkVideoEncodeH265CapabilityFlagsEXT;
                                                     const aMaxLevelIdc:TStdVideoH265LevelIdc;
                                                     const aMaxSliceSegmentCount:TVkUInt32;
                                                     const aMaxTiles:TVkExtent2D;
                                                     const aCtbSizes:TVkVideoEncodeH265CtbSizeFlagsEXT;
                                                     const aTransformBlockSizes:TVkVideoEncodeH265TransformBlockSizeFlagsEXT;
                                                     const aMaxPPictureL0ReferenceCount:TVkUInt32;
                                                     const aMaxBPictureL0ReferenceCount:TVkUInt32;
                                                     const aMaxL1ReferenceCount:TVkUInt32;
                                                     const aMaxSubLayerCount:TVkUInt32;
                                                     const aExpectDyadicTemporalSubLayerPattern:TVkBool32;
                                                     const aMinQp:TVkInt32;
                                                     const aMaxQp:TVkInt32;
                                                     const aPrefersGopRemainingFrames:TVkBool32;
                                                     const aRequiresGopRemainingFrames:TVkBool32;
                                                     const aStdSyntaxFlags:TVkVideoEncodeH265StdFlagsEXT);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_EXT;
 pNext:=nil;
 flags:=aFlags;
 maxLevelIdc:=aMaxLevelIdc;
 maxSliceSegmentCount:=aMaxSliceSegmentCount;
 maxTiles:=aMaxTiles;
 ctbSizes:=aCtbSizes;
 transformBlockSizes:=aTransformBlockSizes;
 maxPPictureL0ReferenceCount:=aMaxPPictureL0ReferenceCount;
 maxBPictureL0ReferenceCount:=aMaxBPictureL0ReferenceCount;
 maxL1ReferenceCount:=aMaxL1ReferenceCount;
 maxSubLayerCount:=aMaxSubLayerCount;
 expectDyadicTemporalSubLayerPattern:=aExpectDyadicTemporalSubLayerPattern;
 minQp:=aMinQp;
 maxQp:=aMaxQp;
 prefersGopRemainingFrames:=aPrefersGopRemainingFrames;
 requiresGopRemainingFrames:=aRequiresGopRemainingFrames;
 stdSyntaxFlags:=aStdSyntaxFlags;
end;
{$endif}

{$ifdef VkVideo}
constructor TVkVideoEncodeH265QpEXT.Create(const aQpI:TVkInt32;
                                           const aQpP:TVkInt32;
                                           const aQpB:TVkInt32);
begin
 qpI:=aQpI;
 qpP:=aQpP;
 qpB:=aQpB;
end;
{$endif}

{$ifdef VkStdVideo}
constructor TVkVideoEncodeH265SessionCreateInfoEXT.Create(const aUseMaxLevelIdc:TVkBool32;
                                                          const aMaxLevelIdc:TStdVideoH265LevelIdc);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_CREATE_INFO_EXT;
 pNext:=nil;
 useMaxLevelIdc:=aUseMaxLevelIdc;
 maxLevelIdc:=aMaxLevelIdc;
end;
{$endif}

{$ifdef VkStdVideo}
constructor TVkVideoEncodeH265SessionParametersAddInfoEXT.Create(const aStdVPSCount:TVkUInt32;
                                                                 const aPStdVPSs:PStdVideoH265VideoParameterSet;
                                                                 const aStdSPSCount:TVkUInt32;
                                                                 const aPStdSPSs:PStdVideoH265SequenceParameterSet;
                                                                 const aStdPPSCount:TVkUInt32;
                                                                 const aPStdPPSs:PStdVideoH265PictureParameterSet);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT;
 pNext:=nil;
 stdVPSCount:=aStdVPSCount;
 pStdVPSs:=aPStdVPSs;
 stdSPSCount:=aStdSPSCount;
 pStdSPSs:=aPStdSPSs;
 stdPPSCount:=aStdPPSCount;
 pStdPPSs:=aPStdPPSs;
end;
{$endif}

{$ifdef VkVideo}
constructor TVkVideoEncodeH265SessionParametersCreateInfoEXT.Create(const aMaxStdVPSCount:TVkUInt32;
                                                                    const aMaxStdSPSCount:TVkUInt32;
                                                                    const aMaxStdPPSCount:TVkUInt32;
                                                                    const aPParametersAddInfo:PVkVideoEncodeH265SessionParametersAddInfoEXT);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT;
 pNext:=nil;
 maxStdVPSCount:=aMaxStdVPSCount;
 maxStdSPSCount:=aMaxStdSPSCount;
 maxStdPPSCount:=aMaxStdPPSCount;
 pParametersAddInfo:=aPParametersAddInfo;
end;
{$endif}

{$ifdef VkVideo}
constructor TVkVideoEncodeH265SessionParametersGetInfoEXT.Create(const aWriteStdVPS:TVkBool32;
                                                                 const aWriteStdSPS:TVkBool32;
                                                                 const aWriteStdPPS:TVkBool32;
                                                                 const aStdVPSId:TVkUInt32;
                                                                 const aStdSPSId:TVkUInt32;
                                                                 const aStdPPSId:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_GET_INFO_EXT;
 pNext:=nil;
 writeStdVPS:=aWriteStdVPS;
 writeStdSPS:=aWriteStdSPS;
 writeStdPPS:=aWriteStdPPS;
 stdVPSId:=aStdVPSId;
 stdSPSId:=aStdSPSId;
 stdPPSId:=aStdPPSId;
end;
{$endif}

{$ifdef VkVideo}
constructor TVkVideoEncodeH265SessionParametersFeedbackInfoEXT.Create(const aHasStdVPSOverrides:TVkBool32;
                                                                      const aHasStdSPSOverrides:TVkBool32;
                                                                      const aHasStdPPSOverrides:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_FEEDBACK_INFO_EXT;
 pNext:=nil;
 hasStdVPSOverrides:=aHasStdVPSOverrides;
 hasStdSPSOverrides:=aHasStdSPSOverrides;
 hasStdPPSOverrides:=aHasStdPPSOverrides;
end;
{$endif}

{$ifdef VkStdVideo}
constructor TVkVideoEncodeH265NaluSliceSegmentInfoEXT.Create(const aConstantQp:TVkInt32;
                                                             const aPStdSliceSegmentHeader:PStdVideoEncodeH265SliceSegmentHeader);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_NALU_SLICE_SEGMENT_INFO_EXT;
 pNext:=nil;
 constantQp:=aConstantQp;
 pStdSliceSegmentHeader:=aPStdSliceSegmentHeader;
end;
{$endif}

{$ifdef VkStdVideo}
constructor TVkVideoEncodeH265PictureInfoEXT.Create(const aNaluSliceSegmentEntryCount:TVkUInt32;
                                                    const aPNaluSliceSegmentEntries:PVkVideoEncodeH265NaluSliceSegmentInfoEXT;
                                                    const aPStdPictureInfo:PStdVideoEncodeH265PictureInfo);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PICTURE_INFO_EXT;
 pNext:=nil;
 naluSliceSegmentEntryCount:=aNaluSliceSegmentEntryCount;
 pNaluSliceSegmentEntries:=aPNaluSliceSegmentEntries;
 pStdPictureInfo:=aPStdPictureInfo;
end;
{$endif}

{$ifdef VkVideo}
constructor TVkVideoEncodeH265RateControlInfoEXT.Create(const aFlags:TVkVideoEncodeH265RateControlFlagsEXT;
                                                        const aGopFrameCount:TVkUInt32;
                                                        const aIdrPeriod:TVkUInt32;
                                                        const aConsecutiveBFrameCount:TVkUInt32;
                                                        const aSubLayerCount:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_INFO_EXT;
 pNext:=nil;
 flags:=aFlags;
 gopFrameCount:=aGopFrameCount;
 idrPeriod:=aIdrPeriod;
 consecutiveBFrameCount:=aConsecutiveBFrameCount;
 subLayerCount:=aSubLayerCount;
end;
{$endif}

{$ifdef VkVideo}
constructor TVkVideoEncodeH265QualityLevelPropertiesEXT.Create(const aPreferredRateControlFlags:TVkVideoEncodeH265RateControlFlagsEXT;
                                                               const aPreferredGopFrameCount:TVkUInt32;
                                                               const aPreferredIdrPeriod:TVkUInt32;
                                                               const aPreferredConsecutiveBFrameCount:TVkUInt32;
                                                               const aPreferredSubLayerCount:TVkUInt32;
                                                               const aPreferredConstantQp:TVkVideoEncodeH265QpEXT;
                                                               const aPreferredMaxL0ReferenceCount:TVkUInt32;
                                                               const aPreferredMaxL1ReferenceCount:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_QUALITY_LEVEL_PROPERTIES_EXT;
 pNext:=nil;
 preferredRateControlFlags:=aPreferredRateControlFlags;
 preferredGopFrameCount:=aPreferredGopFrameCount;
 preferredIdrPeriod:=aPreferredIdrPeriod;
 preferredConsecutiveBFrameCount:=aPreferredConsecutiveBFrameCount;
 preferredSubLayerCount:=aPreferredSubLayerCount;
 preferredConstantQp:=aPreferredConstantQp;
 preferredMaxL0ReferenceCount:=aPreferredMaxL0ReferenceCount;
 preferredMaxL1ReferenceCount:=aPreferredMaxL1ReferenceCount;
end;
{$endif}

{$ifdef VkVideo}
constructor TVkVideoEncodeH265FrameSizeEXT.Create(const aFrameISize:TVkUInt32;
                                                  const aFramePSize:TVkUInt32;
                                                  const aFrameBSize:TVkUInt32);
begin
 frameISize:=aFrameISize;
 framePSize:=aFramePSize;
 frameBSize:=aFrameBSize;
end;
{$endif}

{$ifdef VkVideo}
constructor TVkVideoEncodeH265GopRemainingFrameInfoEXT.Create(const aUseGopRemainingFrames:TVkBool32;
                                                              const aGopRemainingI:TVkUInt32;
                                                              const aGopRemainingP:TVkUInt32;
                                                              const aGopRemainingB:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_GOP_REMAINING_FRAME_INFO_EXT;
 pNext:=nil;
 useGopRemainingFrames:=aUseGopRemainingFrames;
 gopRemainingI:=aGopRemainingI;
 gopRemainingP:=aGopRemainingP;
 gopRemainingB:=aGopRemainingB;
end;
{$endif}

{$ifdef VkVideo}
constructor TVkVideoEncodeH265RateControlLayerInfoEXT.Create(const aUseMinQp:TVkBool32;
                                                             const aMinQp:TVkVideoEncodeH265QpEXT;
                                                             const aUseMaxQp:TVkBool32;
                                                             const aMaxQp:TVkVideoEncodeH265QpEXT;
                                                             const aUseMaxFrameSize:TVkBool32;
                                                             const aMaxFrameSize:TVkVideoEncodeH265FrameSizeEXT);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_EXT;
 pNext:=nil;
 useMinQp:=aUseMinQp;
 minQp:=aMinQp;
 useMaxQp:=aUseMaxQp;
 maxQp:=aMaxQp;
 useMaxFrameSize:=aUseMaxFrameSize;
 maxFrameSize:=aMaxFrameSize;
end;
{$endif}

{$ifdef VkStdVideo}
constructor TVkVideoEncodeH265ProfileInfoEXT.Create(const aStdProfileIdc:TStdVideoH265ProfileIdc);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_INFO_EXT;
 pNext:=nil;
 stdProfileIdc:=aStdProfileIdc;
end;
{$endif}

{$ifdef VkStdVideo}
constructor TVkVideoEncodeH265DpbSlotInfoEXT.Create(const aPStdReferenceInfo:PStdVideoEncodeH265ReferenceInfo);
begin
 sType:=VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_DPB_SLOT_INFO_EXT;
 pNext:=nil;
 pStdReferenceInfo:=aPStdReferenceInfo;
end;
{$endif}

{$ifdef NvSci}
constructor TVkPhysicalDeviceInheritedViewportScissorFeaturesNV.Create(const aInheritedViewportScissor2D:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV;
 pNext:=nil;
 inheritedViewportScissor2D:=aInheritedViewportScissor2D;
end;
{$endif}

{$ifdef NvSci}
constructor TVkCommandBufferInheritanceViewportScissorInfoNV.Create(const aViewportScissor2D:TVkBool32;
                                                                    const aViewportDepthCount:TVkUInt32;
                                                                    const aPViewportDepths:PVkViewport);
begin
 sType:=VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV;
 pNext:=nil;
 viewportScissor2D:=aViewportScissor2D;
 viewportDepthCount:=aViewportDepthCount;
 pViewportDepths:=aPViewportDepths;
end;
{$endif}

constructor TVkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT.Create(const aYcbcr2plane444Formats:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT;
 pNext:=nil;
 ycbcr2plane444Formats:=aYcbcr2plane444Formats;
end;

constructor TVkPhysicalDeviceProvokingVertexFeaturesEXT.Create(const aProvokingVertexLast:TVkBool32;
                                                               const aTransformFeedbackPreservesProvokingVertex:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT;
 pNext:=nil;
 provokingVertexLast:=aProvokingVertexLast;
 transformFeedbackPreservesProvokingVertex:=aTransformFeedbackPreservesProvokingVertex;
end;

constructor TVkPhysicalDeviceProvokingVertexPropertiesEXT.Create(const aProvokingVertexModePerPipeline:TVkBool32;
                                                                 const aTransformFeedbackPreservesTriangleFanProvokingVertex:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT;
 pNext:=nil;
 provokingVertexModePerPipeline:=aProvokingVertexModePerPipeline;
 transformFeedbackPreservesTriangleFanProvokingVertex:=aTransformFeedbackPreservesTriangleFanProvokingVertex;
end;

constructor TVkPipelineRasterizationProvokingVertexStateCreateInfoEXT.Create(const aProvokingVertexMode:TVkProvokingVertexModeEXT);
begin
 sType:=VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT;
 pNext:=nil;
 provokingVertexMode:=aProvokingVertexMode;
end;

constructor TVkCuModuleCreateInfoNVX.Create(const aDataSize:TVkSize;
                                            const aPData:PVkVoid);
begin
 sType:=VK_STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX;
 pNext:=nil;
 dataSize:=aDataSize;
 pData:=aPData;
end;

constructor TVkCuFunctionCreateInfoNVX.Create(const aModule:TVkCuModuleNVX;
                                              const aPName:PVkChar);
begin
 sType:=VK_STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX;
 pNext:=nil;
 module:=aModule;
 pName:=aPName;
end;

constructor TVkCuLaunchInfoNVX.Create(const aFunction_:TVkCuFunctionNVX;
                                      const aGridDimX:TVkUInt32;
                                      const aGridDimY:TVkUInt32;
                                      const aGridDimZ:TVkUInt32;
                                      const aBlockDimX:TVkUInt32;
                                      const aBlockDimY:TVkUInt32;
                                      const aBlockDimZ:TVkUInt32;
                                      const aSharedMemBytes:TVkUInt32;
                                      const aParamCount:TVkSize;
                                      const aPParams:PPVkVoid;
                                      const aExtraCount:TVkSize;
                                      const aPExtras:PPVkVoid);
begin
 sType:=VK_STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX;
 pNext:=nil;
 function_:=aFunction_;
 gridDimX:=aGridDimX;
 gridDimY:=aGridDimY;
 gridDimZ:=aGridDimZ;
 blockDimX:=aBlockDimX;
 blockDimY:=aBlockDimY;
 blockDimZ:=aBlockDimZ;
 sharedMemBytes:=aSharedMemBytes;
 paramCount:=aParamCount;
 pParams:=aPParams;
 extraCount:=aExtraCount;
 pExtras:=aPExtras;
end;

constructor TVkPhysicalDeviceDescriptorBufferFeaturesEXT.Create(const aDescriptorBuffer:TVkBool32;
                                                                const aDescriptorBufferCaptureReplay:TVkBool32;
                                                                const aDescriptorBufferImageLayoutIgnored:TVkBool32;
                                                                const aDescriptorBufferPushDescriptors:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT;
 pNext:=nil;
 descriptorBuffer:=aDescriptorBuffer;
 descriptorBufferCaptureReplay:=aDescriptorBufferCaptureReplay;
 descriptorBufferImageLayoutIgnored:=aDescriptorBufferImageLayoutIgnored;
 descriptorBufferPushDescriptors:=aDescriptorBufferPushDescriptors;
end;

constructor TVkPhysicalDeviceDescriptorBufferPropertiesEXT.Create(const aCombinedImageSamplerDescriptorSingleArray:TVkBool32;
                                                                  const aBufferlessPushDescriptors:TVkBool32;
                                                                  const aAllowSamplerImageViewPostSubmitCreation:TVkBool32;
                                                                  const aDescriptorBufferOffsetAlignment:TVkDeviceSize;
                                                                  const aMaxDescriptorBufferBindings:TVkUInt32;
                                                                  const aMaxResourceDescriptorBufferBindings:TVkUInt32;
                                                                  const aMaxSamplerDescriptorBufferBindings:TVkUInt32;
                                                                  const aMaxEmbeddedImmutableSamplerBindings:TVkUInt32;
                                                                  const aMaxEmbeddedImmutableSamplers:TVkUInt32;
                                                                  const aBufferCaptureReplayDescriptorDataSize:TVkSize;
                                                                  const aImageCaptureReplayDescriptorDataSize:TVkSize;
                                                                  const aImageViewCaptureReplayDescriptorDataSize:TVkSize;
                                                                  const aSamplerCaptureReplayDescriptorDataSize:TVkSize;
                                                                  const aAccelerationStructureCaptureReplayDescriptorDataSize:TVkSize;
                                                                  const aSamplerDescriptorSize:TVkSize;
                                                                  const aCombinedImageSamplerDescriptorSize:TVkSize;
                                                                  const aSampledImageDescriptorSize:TVkSize;
                                                                  const aStorageImageDescriptorSize:TVkSize;
                                                                  const aUniformTexelBufferDescriptorSize:TVkSize;
                                                                  const aRobustUniformTexelBufferDescriptorSize:TVkSize;
                                                                  const aStorageTexelBufferDescriptorSize:TVkSize;
                                                                  const aRobustStorageTexelBufferDescriptorSize:TVkSize;
                                                                  const aUniformBufferDescriptorSize:TVkSize;
                                                                  const aRobustUniformBufferDescriptorSize:TVkSize;
                                                                  const aStorageBufferDescriptorSize:TVkSize;
                                                                  const aRobustStorageBufferDescriptorSize:TVkSize;
                                                                  const aInputAttachmentDescriptorSize:TVkSize;
                                                                  const aAccelerationStructureDescriptorSize:TVkSize;
                                                                  const aMaxSamplerDescriptorBufferRange:TVkDeviceSize;
                                                                  const aMaxResourceDescriptorBufferRange:TVkDeviceSize;
                                                                  const aSamplerDescriptorBufferAddressSpaceSize:TVkDeviceSize;
                                                                  const aResourceDescriptorBufferAddressSpaceSize:TVkDeviceSize;
                                                                  const aDescriptorBufferAddressSpaceSize:TVkDeviceSize);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT;
 pNext:=nil;
 combinedImageSamplerDescriptorSingleArray:=aCombinedImageSamplerDescriptorSingleArray;
 bufferlessPushDescriptors:=aBufferlessPushDescriptors;
 allowSamplerImageViewPostSubmitCreation:=aAllowSamplerImageViewPostSubmitCreation;
 descriptorBufferOffsetAlignment:=aDescriptorBufferOffsetAlignment;
 maxDescriptorBufferBindings:=aMaxDescriptorBufferBindings;
 maxResourceDescriptorBufferBindings:=aMaxResourceDescriptorBufferBindings;
 maxSamplerDescriptorBufferBindings:=aMaxSamplerDescriptorBufferBindings;
 maxEmbeddedImmutableSamplerBindings:=aMaxEmbeddedImmutableSamplerBindings;
 maxEmbeddedImmutableSamplers:=aMaxEmbeddedImmutableSamplers;
 bufferCaptureReplayDescriptorDataSize:=aBufferCaptureReplayDescriptorDataSize;
 imageCaptureReplayDescriptorDataSize:=aImageCaptureReplayDescriptorDataSize;
 imageViewCaptureReplayDescriptorDataSize:=aImageViewCaptureReplayDescriptorDataSize;
 samplerCaptureReplayDescriptorDataSize:=aSamplerCaptureReplayDescriptorDataSize;
 accelerationStructureCaptureReplayDescriptorDataSize:=aAccelerationStructureCaptureReplayDescriptorDataSize;
 samplerDescriptorSize:=aSamplerDescriptorSize;
 combinedImageSamplerDescriptorSize:=aCombinedImageSamplerDescriptorSize;
 sampledImageDescriptorSize:=aSampledImageDescriptorSize;
 storageImageDescriptorSize:=aStorageImageDescriptorSize;
 uniformTexelBufferDescriptorSize:=aUniformTexelBufferDescriptorSize;
 robustUniformTexelBufferDescriptorSize:=aRobustUniformTexelBufferDescriptorSize;
 storageTexelBufferDescriptorSize:=aStorageTexelBufferDescriptorSize;
 robustStorageTexelBufferDescriptorSize:=aRobustStorageTexelBufferDescriptorSize;
 uniformBufferDescriptorSize:=aUniformBufferDescriptorSize;
 robustUniformBufferDescriptorSize:=aRobustUniformBufferDescriptorSize;
 storageBufferDescriptorSize:=aStorageBufferDescriptorSize;
 robustStorageBufferDescriptorSize:=aRobustStorageBufferDescriptorSize;
 inputAttachmentDescriptorSize:=aInputAttachmentDescriptorSize;
 accelerationStructureDescriptorSize:=aAccelerationStructureDescriptorSize;
 maxSamplerDescriptorBufferRange:=aMaxSamplerDescriptorBufferRange;
 maxResourceDescriptorBufferRange:=aMaxResourceDescriptorBufferRange;
 samplerDescriptorBufferAddressSpaceSize:=aSamplerDescriptorBufferAddressSpaceSize;
 resourceDescriptorBufferAddressSpaceSize:=aResourceDescriptorBufferAddressSpaceSize;
 descriptorBufferAddressSpaceSize:=aDescriptorBufferAddressSpaceSize;
end;

constructor TVkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT.Create(const aCombinedImageSamplerDensityMapDescriptorSize:TVkSize);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT;
 pNext:=nil;
 combinedImageSamplerDensityMapDescriptorSize:=aCombinedImageSamplerDensityMapDescriptorSize;
end;

constructor TVkDescriptorAddressInfoEXT.Create(const aAddress:TVkDeviceAddress;
                                               const aRange:TVkDeviceSize;
                                               const aFormat:TVkFormat);
begin
 sType:=VK_STRUCTURE_TYPE_DESCRIPTOR_ADDRESS_INFO_EXT;
 pNext:=nil;
 address:=aAddress;
 range:=aRange;
 format:=aFormat;
end;

constructor TVkDescriptorBufferBindingInfoEXT.Create(const aAddress:TVkDeviceAddress;
                                                     const aUsage:TVkBufferUsageFlags);
begin
 sType:=VK_STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_INFO_EXT;
 pNext:=nil;
 address:=aAddress;
 usage:=aUsage;
end;

constructor TVkDescriptorBufferBindingPushDescriptorBufferHandleEXT.Create(const aBuffer:TVkBuffer);
begin
 sType:=VK_STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT;
 pNext:=nil;
 buffer:=aBuffer;
end;

constructor TVkDescriptorGetInfoEXT.Create(const aType_:TVkDescriptorType;
                                           const aData:TVkDescriptorDataEXT);
begin
 sType:=VK_STRUCTURE_TYPE_DESCRIPTOR_GET_INFO_EXT;
 pNext:=nil;
 type_:=aType_;
 data:=aData;
end;

constructor TVkBufferCaptureDescriptorDataInfoEXT.Create(const aBuffer:TVkBuffer);
begin
 sType:=VK_STRUCTURE_TYPE_BUFFER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT;
 pNext:=nil;
 buffer:=aBuffer;
end;

constructor TVkImageCaptureDescriptorDataInfoEXT.Create(const aImage:TVkImage);
begin
 sType:=VK_STRUCTURE_TYPE_IMAGE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT;
 pNext:=nil;
 image:=aImage;
end;

constructor TVkImageViewCaptureDescriptorDataInfoEXT.Create(const aImageView:TVkImageView);
begin
 sType:=VK_STRUCTURE_TYPE_IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXT;
 pNext:=nil;
 imageView:=aImageView;
end;

constructor TVkSamplerCaptureDescriptorDataInfoEXT.Create(const aSampler:TVkSampler);
begin
 sType:=VK_STRUCTURE_TYPE_SAMPLER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT;
 pNext:=nil;
 sampler:=aSampler;
end;

constructor TVkAccelerationStructureCaptureDescriptorDataInfoEXT.Create(const aAccelerationStructure:TVkAccelerationStructureKHR;
                                                                        const aAccelerationStructureNV:TVkAccelerationStructureNV);
begin
 sType:=VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT;
 pNext:=nil;
 accelerationStructure:=aAccelerationStructure;
 accelerationStructureNV:=aAccelerationStructureNV;
end;

constructor TVkOpaqueCaptureDescriptorDataCreateInfoEXT.Create(const aOpaqueCaptureDescriptorData:PVkVoid);
begin
 sType:=VK_STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT;
 pNext:=nil;
 opaqueCaptureDescriptorData:=aOpaqueCaptureDescriptorData;
end;

constructor TVkPhysicalDeviceShaderIntegerDotProductFeatures.Create(const aShaderIntegerDotProduct:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES;
 pNext:=nil;
 shaderIntegerDotProduct:=aShaderIntegerDotProduct;
end;

constructor TVkPhysicalDeviceShaderIntegerDotProductProperties.Create(const aIntegerDotProduct8BitUnsignedAccelerated:TVkBool32;
                                                                      const aIntegerDotProduct8BitSignedAccelerated:TVkBool32;
                                                                      const aIntegerDotProduct8BitMixedSignednessAccelerated:TVkBool32;
                                                                      const aIntegerDotProduct4x8BitPackedUnsignedAccelerated:TVkBool32;
                                                                      const aIntegerDotProduct4x8BitPackedSignedAccelerated:TVkBool32;
                                                                      const aIntegerDotProduct4x8BitPackedMixedSignednessAccelerated:TVkBool32;
                                                                      const aIntegerDotProduct16BitUnsignedAccelerated:TVkBool32;
                                                                      const aIntegerDotProduct16BitSignedAccelerated:TVkBool32;
                                                                      const aIntegerDotProduct16BitMixedSignednessAccelerated:TVkBool32;
                                                                      const aIntegerDotProduct32BitUnsignedAccelerated:TVkBool32;
                                                                      const aIntegerDotProduct32BitSignedAccelerated:TVkBool32;
                                                                      const aIntegerDotProduct32BitMixedSignednessAccelerated:TVkBool32;
                                                                      const aIntegerDotProduct64BitUnsignedAccelerated:TVkBool32;
                                                                      const aIntegerDotProduct64BitSignedAccelerated:TVkBool32;
                                                                      const aIntegerDotProduct64BitMixedSignednessAccelerated:TVkBool32;
                                                                      const aIntegerDotProductAccumulatingSaturating8BitUnsignedAccelerated:TVkBool32;
                                                                      const aIntegerDotProductAccumulatingSaturating8BitSignedAccelerated:TVkBool32;
                                                                      const aIntegerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated:TVkBool32;
                                                                      const aIntegerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated:TVkBool32;
                                                                      const aIntegerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated:TVkBool32;
                                                                      const aIntegerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated:TVkBool32;
                                                                      const aIntegerDotProductAccumulatingSaturating16BitUnsignedAccelerated:TVkBool32;
                                                                      const aIntegerDotProductAccumulatingSaturating16BitSignedAccelerated:TVkBool32;
                                                                      const aIntegerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated:TVkBool32;
                                                                      const aIntegerDotProductAccumulatingSaturating32BitUnsignedAccelerated:TVkBool32;
                                                                      const aIntegerDotProductAccumulatingSaturating32BitSignedAccelerated:TVkBool32;
                                                                      const aIntegerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated:TVkBool32;
                                                                      const aIntegerDotProductAccumulatingSaturating64BitUnsignedAccelerated:TVkBool32;
                                                                      const aIntegerDotProductAccumulatingSaturating64BitSignedAccelerated:TVkBool32;
                                                                      const aIntegerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES;
 pNext:=nil;
 integerDotProduct8BitUnsignedAccelerated:=aIntegerDotProduct8BitUnsignedAccelerated;
 integerDotProduct8BitSignedAccelerated:=aIntegerDotProduct8BitSignedAccelerated;
 integerDotProduct8BitMixedSignednessAccelerated:=aIntegerDotProduct8BitMixedSignednessAccelerated;
 integerDotProduct4x8BitPackedUnsignedAccelerated:=aIntegerDotProduct4x8BitPackedUnsignedAccelerated;
 integerDotProduct4x8BitPackedSignedAccelerated:=aIntegerDotProduct4x8BitPackedSignedAccelerated;
 integerDotProduct4x8BitPackedMixedSignednessAccelerated:=aIntegerDotProduct4x8BitPackedMixedSignednessAccelerated;
 integerDotProduct16BitUnsignedAccelerated:=aIntegerDotProduct16BitUnsignedAccelerated;
 integerDotProduct16BitSignedAccelerated:=aIntegerDotProduct16BitSignedAccelerated;
 integerDotProduct16BitMixedSignednessAccelerated:=aIntegerDotProduct16BitMixedSignednessAccelerated;
 integerDotProduct32BitUnsignedAccelerated:=aIntegerDotProduct32BitUnsignedAccelerated;
 integerDotProduct32BitSignedAccelerated:=aIntegerDotProduct32BitSignedAccelerated;
 integerDotProduct32BitMixedSignednessAccelerated:=aIntegerDotProduct32BitMixedSignednessAccelerated;
 integerDotProduct64BitUnsignedAccelerated:=aIntegerDotProduct64BitUnsignedAccelerated;
 integerDotProduct64BitSignedAccelerated:=aIntegerDotProduct64BitSignedAccelerated;
 integerDotProduct64BitMixedSignednessAccelerated:=aIntegerDotProduct64BitMixedSignednessAccelerated;
 integerDotProductAccumulatingSaturating8BitUnsignedAccelerated:=aIntegerDotProductAccumulatingSaturating8BitUnsignedAccelerated;
 integerDotProductAccumulatingSaturating8BitSignedAccelerated:=aIntegerDotProductAccumulatingSaturating8BitSignedAccelerated;
 integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated:=aIntegerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated;
 integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated:=aIntegerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated;
 integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated:=aIntegerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated;
 integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated:=aIntegerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated;
 integerDotProductAccumulatingSaturating16BitUnsignedAccelerated:=aIntegerDotProductAccumulatingSaturating16BitUnsignedAccelerated;
 integerDotProductAccumulatingSaturating16BitSignedAccelerated:=aIntegerDotProductAccumulatingSaturating16BitSignedAccelerated;
 integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated:=aIntegerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated;
 integerDotProductAccumulatingSaturating32BitUnsignedAccelerated:=aIntegerDotProductAccumulatingSaturating32BitUnsignedAccelerated;
 integerDotProductAccumulatingSaturating32BitSignedAccelerated:=aIntegerDotProductAccumulatingSaturating32BitSignedAccelerated;
 integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated:=aIntegerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated;
 integerDotProductAccumulatingSaturating64BitUnsignedAccelerated:=aIntegerDotProductAccumulatingSaturating64BitUnsignedAccelerated;
 integerDotProductAccumulatingSaturating64BitSignedAccelerated:=aIntegerDotProductAccumulatingSaturating64BitSignedAccelerated;
 integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated:=aIntegerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated;
end;

constructor TVkPhysicalDeviceDrmPropertiesEXT.Create(const aHasPrimary:TVkBool32;
                                                     const aHasRender:TVkBool32;
                                                     const aPrimaryMajor:TVkInt64;
                                                     const aPrimaryMinor:TVkInt64;
                                                     const aRenderMajor:TVkInt64;
                                                     const aRenderMinor:TVkInt64);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT;
 pNext:=nil;
 hasPrimary:=aHasPrimary;
 hasRender:=aHasRender;
 primaryMajor:=aPrimaryMajor;
 primaryMinor:=aPrimaryMinor;
 renderMajor:=aRenderMajor;
 renderMinor:=aRenderMinor;
end;

constructor TVkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR.Create(const aTriStripVertexOrderIndependentOfProvokingVertex:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR;
 pNext:=nil;
 triStripVertexOrderIndependentOfProvokingVertex:=aTriStripVertexOrderIndependentOfProvokingVertex;
end;

constructor TVkPhysicalDeviceRayTracingMotionBlurFeaturesNV.Create(const aRayTracingMotionBlur:TVkBool32;
                                                                   const aRayTracingMotionBlurPipelineTraceRaysIndirect:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV;
 pNext:=nil;
 rayTracingMotionBlur:=aRayTracingMotionBlur;
 rayTracingMotionBlurPipelineTraceRaysIndirect:=aRayTracingMotionBlurPipelineTraceRaysIndirect;
end;

constructor TVkAccelerationStructureGeometryMotionTrianglesDataNV.Create(const aVertexData:TVkDeviceOrHostAddressConstKHR);
begin
 sType:=VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV;
 pNext:=nil;
 vertexData:=aVertexData;
end;

constructor TVkAccelerationStructureMotionInfoNV.Create(const aMaxInstances:TVkUInt32;
                                                        const aFlags:TVkAccelerationStructureMotionInfoFlagsNV);
begin
 sType:=VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV;
 pNext:=nil;
 maxInstances:=aMaxInstances;
 flags:=aFlags;
end;

constructor TVkSRTDataNV.Create(const aSx:TVkFloat;
                                const aA:TVkFloat;
                                const aB:TVkFloat;
                                const aPvx:TVkFloat;
                                const aSy:TVkFloat;
                                const aC:TVkFloat;
                                const aPvy:TVkFloat;
                                const aSz:TVkFloat;
                                const aPvz:TVkFloat;
                                const aQx:TVkFloat;
                                const aQy:TVkFloat;
                                const aQz:TVkFloat;
                                const aQw:TVkFloat;
                                const aTx:TVkFloat;
                                const aTy:TVkFloat;
                                const aTz:TVkFloat);
begin
 sx:=aSx;
 a:=aA;
 b:=aB;
 pvx:=aPvx;
 sy:=aSy;
 c:=aC;
 pvy:=aPvy;
 sz:=aSz;
 pvz:=aPvz;
 qx:=aQx;
 qy:=aQy;
 qz:=aQz;
 qw:=aQw;
 tx:=aTx;
 ty:=aTy;
 tz:=aTz;
end;

constructor TVkAccelerationStructureSRTMotionInstanceNV.Create(const aTransformT0:TVkSRTDataNV;
                                                               const aTransformT1:TVkSRTDataNV;
                                                               const aInstanceCustomIndex:TVkUInt32;
                                                               const aMask:TVkUInt32;
                                                               const aInstanceShaderBindingTableRecordOffset:TVkUInt32;
                                                               const aFlags:TVkGeometryInstanceFlagsKHR;
                                                               const aAccelerationStructureReference:TVkUInt64);
begin
 transformT0:=aTransformT0;
 transformT1:=aTransformT1;
 instanceCustomIndexMask:=(aInstanceCustomIndex and TVkUInt32($00ffffff)) or ((aMask and TVkUInt32($000000ff)) shl 24);
 instanceShaderBindingTableRecordOffsetFlags:=(aInstanceShaderBindingTableRecordOffset and TVkUInt32($00ffffff)) or ((TVkUInt32(aFlags) and TVkUInt32($000000ff)) shl 24);
 accelerationStructureReference:=aAccelerationStructureReference;
end;

function TVkAccelerationStructureSRTMotionInstanceNV.GetInstanceCustomIndex:TVkUInt32;
begin
 result:=instanceCustomIndexMask and TVkUInt32($00ffffff);
end;

procedure TVkAccelerationStructureSRTMotionInstanceNV.SetInstanceCustomIndex(const aValue:TVkUInt32);
begin
 instanceCustomIndexMask:=(instanceCustomIndexMask and TVkUInt32($ff000000)) or (aValue and TVkUInt32($00ffffff));
end;

function TVkAccelerationStructureSRTMotionInstanceNV.GetMask:TVkUInt32;
begin
 result:=instanceCustomIndexMask shr 24;
end;

procedure TVkAccelerationStructureSRTMotionInstanceNV.SetMask(const aValue:TVkUInt32);
begin
 instanceCustomIndexMask:=(instanceCustomIndexMask and TVkUInt32($00ffffff)) or ((aValue and TVkUInt32($000000ff)) shl 24);
end;

function TVkAccelerationStructureSRTMotionInstanceNV.GetInstanceShaderBindingTableRecordOffset:TVkUInt32;
begin
 result:=instanceShaderBindingTableRecordOffsetFlags and TVkUInt32($00ffffff);
end;

procedure TVkAccelerationStructureSRTMotionInstanceNV.SetInstanceShaderBindingTableRecordOffset(const aValue:TVkUInt32);
begin
 instanceShaderBindingTableRecordOffsetFlags:=(instanceShaderBindingTableRecordOffsetFlags and TVkUInt32($ff000000)) or (aValue and TVkUInt32($00ffffff));
end;

function TVkAccelerationStructureSRTMotionInstanceNV.GetFlags:TVkGeometryInstanceFlagsKHR;
begin
 result:=TVkGeometryInstanceFlagsKHR(TVkUInt32(instanceShaderBindingTableRecordOffsetFlags shr 24));
end;

procedure TVkAccelerationStructureSRTMotionInstanceNV.SetFlags(const aValue:TVkGeometryInstanceFlagsKHR);
begin
 instanceShaderBindingTableRecordOffsetFlags:=(instanceShaderBindingTableRecordOffsetFlags and TVkUInt32($00ffffff)) or ((TVkUInt32(aValue) and TVkUInt32($000000ff)) shl 24);
end;

constructor TVkAccelerationStructureMatrixMotionInstanceNV.Create(const aTransformT0:TVkTransformMatrixKHR;
                                                                  const aTransformT1:TVkTransformMatrixKHR;
                                                                  const aInstanceCustomIndex:TVkUInt32;
                                                                  const aMask:TVkUInt32;
                                                                  const aInstanceShaderBindingTableRecordOffset:TVkUInt32;
                                                                  const aFlags:TVkGeometryInstanceFlagsKHR;
                                                                  const aAccelerationStructureReference:TVkUInt64);
begin
 transformT0:=aTransformT0;
 transformT1:=aTransformT1;
 instanceCustomIndexMask:=(aInstanceCustomIndex and TVkUInt32($00ffffff)) or ((aMask and TVkUInt32($000000ff)) shl 24);
 instanceShaderBindingTableRecordOffsetFlags:=(aInstanceShaderBindingTableRecordOffset and TVkUInt32($00ffffff)) or ((TVkUInt32(aFlags) and TVkUInt32($000000ff)) shl 24);
 accelerationStructureReference:=aAccelerationStructureReference;
end;

function TVkAccelerationStructureMatrixMotionInstanceNV.GetInstanceCustomIndex:TVkUInt32;
begin
 result:=instanceCustomIndexMask and TVkUInt32($00ffffff);
end;

procedure TVkAccelerationStructureMatrixMotionInstanceNV.SetInstanceCustomIndex(const aValue:TVkUInt32);
begin
 instanceCustomIndexMask:=(instanceCustomIndexMask and TVkUInt32($ff000000)) or (aValue and TVkUInt32($00ffffff));
end;

function TVkAccelerationStructureMatrixMotionInstanceNV.GetMask:TVkUInt32;
begin
 result:=instanceCustomIndexMask shr 24;
end;

procedure TVkAccelerationStructureMatrixMotionInstanceNV.SetMask(const aValue:TVkUInt32);
begin
 instanceCustomIndexMask:=(instanceCustomIndexMask and TVkUInt32($00ffffff)) or ((aValue and TVkUInt32($000000ff)) shl 24);
end;

function TVkAccelerationStructureMatrixMotionInstanceNV.GetInstanceShaderBindingTableRecordOffset:TVkUInt32;
begin
 result:=instanceShaderBindingTableRecordOffsetFlags and TVkUInt32($00ffffff);
end;

procedure TVkAccelerationStructureMatrixMotionInstanceNV.SetInstanceShaderBindingTableRecordOffset(const aValue:TVkUInt32);
begin
 instanceShaderBindingTableRecordOffsetFlags:=(instanceShaderBindingTableRecordOffsetFlags and TVkUInt32($ff000000)) or (aValue and TVkUInt32($00ffffff));
end;

function TVkAccelerationStructureMatrixMotionInstanceNV.GetFlags:TVkGeometryInstanceFlagsKHR;
begin
 result:=TVkGeometryInstanceFlagsKHR(TVkUInt32(instanceShaderBindingTableRecordOffsetFlags shr 24));
end;

procedure TVkAccelerationStructureMatrixMotionInstanceNV.SetFlags(const aValue:TVkGeometryInstanceFlagsKHR);
begin
 instanceShaderBindingTableRecordOffsetFlags:=(instanceShaderBindingTableRecordOffsetFlags and TVkUInt32($00ffffff)) or ((TVkUInt32(aValue) and TVkUInt32($000000ff)) shl 24);
end;

constructor TVkAccelerationStructureMotionInstanceNV.Create(const aType_:TVkAccelerationStructureMotionInstanceTypeNV;
                                                            const aFlags:TVkAccelerationStructureMotionInstanceFlagsNV;
                                                            const aData:TVkAccelerationStructureMotionInstanceDataNV);
begin
 type_:=aType_;
 flags:=aFlags;
 data:=aData;
end;

constructor TVkMemoryGetRemoteAddressInfoNV.Create(const aMemory:TVkDeviceMemory;
                                                   const aHandleType:TVkExternalMemoryHandleTypeFlagBits);
begin
 sType:=VK_STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV;
 pNext:=nil;
 memory:=aMemory;
 handleType:=aHandleType;
end;

{$ifdef Fuchsia}
constructor TVkImportMemoryBufferCollectionFUCHSIA.Create(const aCollection:TVkBufferCollectionFUCHSIA;
                                                          const aIndex:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA;
 pNext:=nil;
 collection:=aCollection;
 index:=aIndex;
end;
{$endif}

{$ifdef Fuchsia}
constructor TVkBufferCollectionImageCreateInfoFUCHSIA.Create(const aCollection:TVkBufferCollectionFUCHSIA;
                                                             const aIndex:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA;
 pNext:=nil;
 collection:=aCollection;
 index:=aIndex;
end;
{$endif}

{$ifdef Fuchsia}
constructor TVkBufferCollectionBufferCreateInfoFUCHSIA.Create(const aCollection:TVkBufferCollectionFUCHSIA;
                                                              const aIndex:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA;
 pNext:=nil;
 collection:=aCollection;
 index:=aIndex;
end;
{$endif}

{$ifdef Fuchsia}
constructor TVkBufferCollectionCreateInfoFUCHSIA.Create(const aCollectionToken:TVkFuchsiaZXHandle);
begin
 sType:=VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CREATE_INFO_FUCHSIA;
 pNext:=nil;
 collectionToken:=aCollectionToken;
end;
{$endif}

constructor TVkSysmemColorSpaceFUCHSIA.Create(const aColorSpace:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_SYSMEM_COLOR_SPACE_FUCHSIA;
 pNext:=nil;
 colorSpace:=aColorSpace;
end;

constructor TVkBufferCollectionConstraintsInfoFUCHSIA.Create(const aMinBufferCount:TVkUInt32;
                                                             const aMaxBufferCount:TVkUInt32;
                                                             const aMinBufferCountForCamping:TVkUInt32;
                                                             const aMinBufferCountForDedicatedSlack:TVkUInt32;
                                                             const aMinBufferCountForSharedSlack:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CONSTRAINTS_INFO_FUCHSIA;
 pNext:=nil;
 minBufferCount:=aMinBufferCount;
 maxBufferCount:=aMaxBufferCount;
 minBufferCountForCamping:=aMinBufferCountForCamping;
 minBufferCountForDedicatedSlack:=aMinBufferCountForDedicatedSlack;
 minBufferCountForSharedSlack:=aMinBufferCountForSharedSlack;
end;

{$ifdef Fuchsia}
constructor TVkBufferCollectionPropertiesFUCHSIA.Create(const aMemoryTypeBits:TVkUInt32;
                                                        const aBufferCount:TVkUInt32;
                                                        const aCreateInfoIndex:TVkUInt32;
                                                        const aSysmemPixelFormat:TVkUInt64;
                                                        const aFormatFeatures:TVkFormatFeatureFlags;
                                                        const aSysmemColorSpaceIndex:TVkSysmemColorSpaceFUCHSIA;
                                                        const aSamplerYcbcrConversionComponents:TVkComponentMapping;
                                                        const aSuggestedYcbcrModel:TVkSamplerYcbcrModelConversion;
                                                        const aSuggestedYcbcrRange:TVkSamplerYcbcrRange;
                                                        const aSuggestedXChromaOffset:TVkChromaLocation;
                                                        const aSuggestedYChromaOffset:TVkChromaLocation);
begin
 sType:=VK_STRUCTURE_TYPE_BUFFER_COLLECTION_PROPERTIES_FUCHSIA;
 pNext:=nil;
 memoryTypeBits:=aMemoryTypeBits;
 bufferCount:=aBufferCount;
 createInfoIndex:=aCreateInfoIndex;
 sysmemPixelFormat:=aSysmemPixelFormat;
 formatFeatures:=aFormatFeatures;
 sysmemColorSpaceIndex:=aSysmemColorSpaceIndex;
 samplerYcbcrConversionComponents:=aSamplerYcbcrConversionComponents;
 suggestedYcbcrModel:=aSuggestedYcbcrModel;
 suggestedYcbcrRange:=aSuggestedYcbcrRange;
 suggestedXChromaOffset:=aSuggestedXChromaOffset;
 suggestedYChromaOffset:=aSuggestedYChromaOffset;
end;
{$endif}

{$ifdef Fuchsia}
constructor TVkImageFormatConstraintsInfoFUCHSIA.Create(const aImageCreateInfo:TVkImageCreateInfo;
                                                        const aRequiredFormatFeatures:TVkFormatFeatureFlags;
                                                        const aFlags:TVkImageFormatConstraintsFlagsFUCHSIA;
                                                        const aSysmemPixelFormat:TVkUInt64;
                                                        const aColorSpaceCount:TVkUInt32;
                                                        const aPColorSpaces:PVkSysmemColorSpaceFUCHSIA);
begin
 sType:=VK_STRUCTURE_TYPE_IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA;
 pNext:=nil;
 imageCreateInfo:=aImageCreateInfo;
 requiredFormatFeatures:=aRequiredFormatFeatures;
 flags:=aFlags;
 sysmemPixelFormat:=aSysmemPixelFormat;
 colorSpaceCount:=aColorSpaceCount;
 pColorSpaces:=aPColorSpaces;
end;
{$endif}

{$ifdef Fuchsia}
constructor TVkImageConstraintsInfoFUCHSIA.Create(const aFormatConstraintsCount:TVkUInt32;
                                                  const aPFormatConstraints:PVkImageFormatConstraintsInfoFUCHSIA;
                                                  const aBufferCollectionConstraints:TVkBufferCollectionConstraintsInfoFUCHSIA;
                                                  const aFlags:TVkImageConstraintsInfoFlagsFUCHSIA);
begin
 sType:=VK_STRUCTURE_TYPE_IMAGE_CONSTRAINTS_INFO_FUCHSIA;
 pNext:=nil;
 formatConstraintsCount:=aFormatConstraintsCount;
 pFormatConstraints:=aPFormatConstraints;
 bufferCollectionConstraints:=aBufferCollectionConstraints;
 flags:=aFlags;
end;
{$endif}

{$ifdef Fuchsia}
constructor TVkBufferConstraintsInfoFUCHSIA.Create(const aCreateInfo:TVkBufferCreateInfo;
                                                   const aRequiredFormatFeatures:TVkFormatFeatureFlags;
                                                   const aBufferCollectionConstraints:TVkBufferCollectionConstraintsInfoFUCHSIA);
begin
 sType:=VK_STRUCTURE_TYPE_BUFFER_CONSTRAINTS_INFO_FUCHSIA;
 pNext:=nil;
 createInfo:=aCreateInfo;
 requiredFormatFeatures:=aRequiredFormatFeatures;
 bufferCollectionConstraints:=aBufferCollectionConstraints;
end;
{$endif}

constructor TVkPhysicalDeviceRGBA10X6FormatsFeaturesEXT.Create(const aFormatRgba10x6WithoutYCbCrSampler:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT;
 pNext:=nil;
 formatRgba10x6WithoutYCbCrSampler:=aFormatRgba10x6WithoutYCbCrSampler;
end;

constructor TVkFormatProperties3.Create(const aLinearTilingFeatures:TVkFormatFeatureFlags2;
                                        const aOptimalTilingFeatures:TVkFormatFeatureFlags2;
                                        const aBufferFeatures:TVkFormatFeatureFlags2);
begin
 sType:=VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3;
 pNext:=nil;
 linearTilingFeatures:=aLinearTilingFeatures;
 optimalTilingFeatures:=aOptimalTilingFeatures;
 bufferFeatures:=aBufferFeatures;
end;

constructor TVkDrmFormatModifierProperties2EXT.Create(const aDrmFormatModifier:TVkUInt64;
                                                      const aDrmFormatModifierPlaneCount:TVkUInt32;
                                                      const aDrmFormatModifierTilingFeatures:TVkFormatFeatureFlags2);
begin
 drmFormatModifier:=aDrmFormatModifier;
 drmFormatModifierPlaneCount:=aDrmFormatModifierPlaneCount;
 drmFormatModifierTilingFeatures:=aDrmFormatModifierTilingFeatures;
end;

constructor TVkDrmFormatModifierPropertiesList2EXT.Create(const aDrmFormatModifierCount:TVkUInt32;
                                                          const aPDrmFormatModifierProperties:PVkDrmFormatModifierProperties2EXT);
begin
 sType:=VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT;
 pNext:=nil;
 drmFormatModifierCount:=aDrmFormatModifierCount;
 pDrmFormatModifierProperties:=aPDrmFormatModifierProperties;
end;

{$ifdef Android}
constructor TVkAndroidHardwareBufferFormatProperties2ANDROID.Create(const aFormat:TVkFormat;
                                                                    const aExternalFormat:TVkUInt64;
                                                                    const aFormatFeatures:TVkFormatFeatureFlags2;
                                                                    const aSamplerYcbcrConversionComponents:TVkComponentMapping;
                                                                    const aSuggestedYcbcrModel:TVkSamplerYcbcrModelConversion;
                                                                    const aSuggestedYcbcrRange:TVkSamplerYcbcrRange;
                                                                    const aSuggestedXChromaOffset:TVkChromaLocation;
                                                                    const aSuggestedYChromaOffset:TVkChromaLocation);
begin
 sType:=VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID;
 pNext:=nil;
 format:=aFormat;
 externalFormat:=aExternalFormat;
 formatFeatures:=aFormatFeatures;
 samplerYcbcrConversionComponents:=aSamplerYcbcrConversionComponents;
 suggestedYcbcrModel:=aSuggestedYcbcrModel;
 suggestedYcbcrRange:=aSuggestedYcbcrRange;
 suggestedXChromaOffset:=aSuggestedXChromaOffset;
 suggestedYChromaOffset:=aSuggestedYChromaOffset;
end;
{$endif}

constructor TVkPipelineRenderingCreateInfo.Create(const aViewMask:TVkUInt32;
                                                  const aColorAttachmentCount:TVkUInt32;
                                                  const aPColorAttachmentFormats:PVkFormat;
                                                  const aDepthAttachmentFormat:TVkFormat;
                                                  const aStencilAttachmentFormat:TVkFormat);
begin
 sType:=VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO;
 pNext:=nil;
 viewMask:=aViewMask;
 colorAttachmentCount:=aColorAttachmentCount;
 pColorAttachmentFormats:=aPColorAttachmentFormats;
 depthAttachmentFormat:=aDepthAttachmentFormat;
 stencilAttachmentFormat:=aStencilAttachmentFormat;
end;

constructor TVkRenderingAttachmentInfo.Create(const aImageView:TVkImageView;
                                              const aImageLayout:TVkImageLayout;
                                              const aResolveMode:TVkResolveModeFlagBits;
                                              const aResolveImageView:TVkImageView;
                                              const aResolveImageLayout:TVkImageLayout;
                                              const aLoadOp:TVkAttachmentLoadOp;
                                              const aStoreOp:TVkAttachmentStoreOp;
                                              const aClearValue:TVkClearValue);
begin
 sType:=VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO;
 pNext:=nil;
 imageView:=aImageView;
 imageLayout:=aImageLayout;
 resolveMode:=aResolveMode;
 resolveImageView:=aResolveImageView;
 resolveImageLayout:=aResolveImageLayout;
 loadOp:=aLoadOp;
 storeOp:=aStoreOp;
 clearValue:=aClearValue;
end;

constructor TVkRenderingInfo.Create(const aFlags:TVkRenderingFlags;
                                    const aRenderArea:TVkRect2D;
                                    const aLayerCount:TVkUInt32;
                                    const aViewMask:TVkUInt32;
                                    const aColorAttachmentCount:TVkUInt32;
                                    const aPColorAttachments:PVkRenderingAttachmentInfo;
                                    const aPDepthAttachment:PVkRenderingAttachmentInfo;
                                    const aPStencilAttachment:PVkRenderingAttachmentInfo);
begin
 sType:=VK_STRUCTURE_TYPE_RENDERING_INFO;
 pNext:=nil;
 flags:=aFlags;
 renderArea:=aRenderArea;
 layerCount:=aLayerCount;
 viewMask:=aViewMask;
 colorAttachmentCount:=aColorAttachmentCount;
 pColorAttachments:=aPColorAttachments;
 pDepthAttachment:=aPDepthAttachment;
 pStencilAttachment:=aPStencilAttachment;
end;

constructor TVkRenderingFragmentShadingRateAttachmentInfoKHR.Create(const aImageView:TVkImageView;
                                                                    const aImageLayout:TVkImageLayout;
                                                                    const aShadingRateAttachmentTexelSize:TVkExtent2D);
begin
 sType:=VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR;
 pNext:=nil;
 imageView:=aImageView;
 imageLayout:=aImageLayout;
 shadingRateAttachmentTexelSize:=aShadingRateAttachmentTexelSize;
end;

constructor TVkRenderingFragmentDensityMapAttachmentInfoEXT.Create(const aImageView:TVkImageView;
                                                                   const aImageLayout:TVkImageLayout);
begin
 sType:=VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT;
 pNext:=nil;
 imageView:=aImageView;
 imageLayout:=aImageLayout;
end;

constructor TVkPhysicalDeviceDynamicRenderingFeatures.Create(const aDynamicRendering:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES;
 pNext:=nil;
 dynamicRendering:=aDynamicRendering;
end;

constructor TVkCommandBufferInheritanceRenderingInfo.Create(const aFlags:TVkRenderingFlags;
                                                            const aViewMask:TVkUInt32;
                                                            const aColorAttachmentCount:TVkUInt32;
                                                            const aPColorAttachmentFormats:PVkFormat;
                                                            const aDepthAttachmentFormat:TVkFormat;
                                                            const aStencilAttachmentFormat:TVkFormat;
                                                            const aRasterizationSamples:TVkSampleCountFlagBits);
begin
 sType:=VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO;
 pNext:=nil;
 flags:=aFlags;
 viewMask:=aViewMask;
 colorAttachmentCount:=aColorAttachmentCount;
 pColorAttachmentFormats:=aPColorAttachmentFormats;
 depthAttachmentFormat:=aDepthAttachmentFormat;
 stencilAttachmentFormat:=aStencilAttachmentFormat;
 rasterizationSamples:=aRasterizationSamples;
end;

constructor TVkAttachmentSampleCountInfoAMD.Create(const aColorAttachmentCount:TVkUInt32;
                                                   const aPColorAttachmentSamples:PVkSampleCountFlagBits;
                                                   const aDepthStencilAttachmentSamples:TVkSampleCountFlagBits);
begin
 sType:=VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD;
 pNext:=nil;
 colorAttachmentCount:=aColorAttachmentCount;
 pColorAttachmentSamples:=aPColorAttachmentSamples;
 depthStencilAttachmentSamples:=aDepthStencilAttachmentSamples;
end;

constructor TVkMultiviewPerViewAttributesInfoNVX.Create(const aPerViewAttributes:TVkBool32;
                                                        const aPerViewAttributesPositionXOnly:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX;
 pNext:=nil;
 perViewAttributes:=aPerViewAttributes;
 perViewAttributesPositionXOnly:=aPerViewAttributesPositionXOnly;
end;

constructor TVkPhysicalDeviceImageViewMinLodFeaturesEXT.Create(const aMinLod:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT;
 pNext:=nil;
 minLod:=aMinLod;
end;

constructor TVkImageViewMinLodCreateInfoEXT.Create(const aMinLod:TVkFloat);
begin
 sType:=VK_STRUCTURE_TYPE_IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT;
 pNext:=nil;
 minLod:=aMinLod;
end;

constructor TVkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT.Create(const aRasterizationOrderColorAttachmentAccess:TVkBool32;
                                                                                  const aRasterizationOrderDepthAttachmentAccess:TVkBool32;
                                                                                  const aRasterizationOrderStencilAttachmentAccess:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT;
 pNext:=nil;
 rasterizationOrderColorAttachmentAccess:=aRasterizationOrderColorAttachmentAccess;
 rasterizationOrderDepthAttachmentAccess:=aRasterizationOrderDepthAttachmentAccess;
 rasterizationOrderStencilAttachmentAccess:=aRasterizationOrderStencilAttachmentAccess;
end;

constructor TVkPhysicalDeviceLinearColorAttachmentFeaturesNV.Create(const aLinearColorAttachment:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV;
 pNext:=nil;
 linearColorAttachment:=aLinearColorAttachment;
end;

constructor TVkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT.Create(const aGraphicsPipelineLibrary:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT;
 pNext:=nil;
 graphicsPipelineLibrary:=aGraphicsPipelineLibrary;
end;

constructor TVkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT.Create(const aGraphicsPipelineLibraryFastLinking:TVkBool32;
                                                                         const aGraphicsPipelineLibraryIndependentInterpolationDecoration:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT;
 pNext:=nil;
 graphicsPipelineLibraryFastLinking:=aGraphicsPipelineLibraryFastLinking;
 graphicsPipelineLibraryIndependentInterpolationDecoration:=aGraphicsPipelineLibraryIndependentInterpolationDecoration;
end;

constructor TVkGraphicsPipelineLibraryCreateInfoEXT.Create(const aFlags:TVkGraphicsPipelineLibraryFlagsEXT);
begin
 sType:=VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT;
 pNext:=nil;
 flags:=aFlags;
end;

constructor TVkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE.Create(const aDescriptorSetHostMapping:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE;
 pNext:=nil;
 descriptorSetHostMapping:=aDescriptorSetHostMapping;
end;

constructor TVkDescriptorSetBindingReferenceVALVE.Create(const aDescriptorSetLayout:TVkDescriptorSetLayout;
                                                         const aBinding:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE;
 pNext:=nil;
 descriptorSetLayout:=aDescriptorSetLayout;
 binding:=aBinding;
end;

constructor TVkDescriptorSetLayoutHostMappingInfoVALVE.Create(const aDescriptorOffset:TVkSize;
                                                              const aDescriptorSize:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE;
 pNext:=nil;
 descriptorOffset:=aDescriptorOffset;
 descriptorSize:=aDescriptorSize;
end;

constructor TVkPhysicalDeviceShaderModuleIdentifierFeaturesEXT.Create(const aShaderModuleIdentifier:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT;
 pNext:=nil;
 shaderModuleIdentifier:=aShaderModuleIdentifier;
end;

constructor TVkPhysicalDeviceShaderModuleIdentifierPropertiesEXT.Create(const aShaderModuleIdentifierAlgorithmUUID:array of TVkUInt8);
var ArrayItemCount:TVkInt32;
begin
 FillChar(self,SizeOf(TVkPhysicalDeviceShaderModuleIdentifierPropertiesEXT),#0);
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT;
 pNext:=nil;
 ArrayItemCount:=length(aShaderModuleIdentifierAlgorithmUUID);
 if ArrayItemCount>length(shaderModuleIdentifierAlgorithmUUID) then begin
  ArrayItemCount:=length(shaderModuleIdentifierAlgorithmUUID);
 end;
 if ArrayItemCount>0 then begin
  Move(aShaderModuleIdentifierAlgorithmUUID[0],shaderModuleIdentifierAlgorithmUUID[0],ArrayItemCount*SizeOf(TVkUInt8));
 end;
end;

constructor TVkPipelineShaderStageModuleIdentifierCreateInfoEXT.Create(const aIdentifierSize:TVkUInt32;
                                                                       const aPIdentifier:PVkUInt8);
begin
 sType:=VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT;
 pNext:=nil;
 identifierSize:=aIdentifierSize;
 pIdentifier:=aPIdentifier;
end;

constructor TVkShaderModuleIdentifierEXT.Create(const aIdentifierSize:TVkUInt32;
                                                const aIdentifier:array of TVkUInt8);
var ArrayItemCount:TVkInt32;
begin
 FillChar(self,SizeOf(TVkShaderModuleIdentifierEXT),#0);
 sType:=VK_STRUCTURE_TYPE_SHADER_MODULE_IDENTIFIER_EXT;
 pNext:=nil;
 identifierSize:=aIdentifierSize;
 ArrayItemCount:=length(aIdentifier);
 if ArrayItemCount>length(identifier) then begin
  ArrayItemCount:=length(identifier);
 end;
 if ArrayItemCount>0 then begin
  Move(aIdentifier[0],identifier[0],ArrayItemCount*SizeOf(TVkUInt8));
 end;
end;

constructor TVkImageCompressionControlEXT.Create(const aFlags:TVkImageCompressionFlagsEXT;
                                                 const aCompressionControlPlaneCount:TVkUInt32;
                                                 const aPFixedRateFlags:PVkImageCompressionFixedRateFlagsEXT);
begin
 sType:=VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT;
 pNext:=nil;
 flags:=aFlags;
 compressionControlPlaneCount:=aCompressionControlPlaneCount;
 pFixedRateFlags:=aPFixedRateFlags;
end;

constructor TVkPhysicalDeviceImageCompressionControlFeaturesEXT.Create(const aImageCompressionControl:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT;
 pNext:=nil;
 imageCompressionControl:=aImageCompressionControl;
end;

constructor TVkImageCompressionPropertiesEXT.Create(const aImageCompressionFlags:TVkImageCompressionFlagsEXT;
                                                    const aImageCompressionFixedRateFlags:TVkImageCompressionFixedRateFlagsEXT);
begin
 sType:=VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT;
 pNext:=nil;
 imageCompressionFlags:=aImageCompressionFlags;
 imageCompressionFixedRateFlags:=aImageCompressionFixedRateFlags;
end;

constructor TVkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT.Create(const aImageCompressionControlSwapchain:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT;
 pNext:=nil;
 imageCompressionControlSwapchain:=aImageCompressionControlSwapchain;
end;

constructor TVkImageSubresource2KHR.Create(const aImageSubresource:TVkImageSubresource);
begin
 sType:=VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR;
 pNext:=nil;
 imageSubresource:=aImageSubresource;
end;

constructor TVkSubresourceLayout2KHR.Create(const aSubresourceLayout:TVkSubresourceLayout);
begin
 sType:=VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR;
 pNext:=nil;
 subresourceLayout:=aSubresourceLayout;
end;

constructor TVkRenderPassCreationControlEXT.Create(const aDisallowMerging:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_CONTROL_EXT;
 pNext:=nil;
 disallowMerging:=aDisallowMerging;
end;

constructor TVkRenderPassCreationFeedbackInfoEXT.Create(const aPostMergeSubpassCount:TVkUInt32);
begin
 postMergeSubpassCount:=aPostMergeSubpassCount;
end;

constructor TVkRenderPassCreationFeedbackCreateInfoEXT.Create(const aPRenderPassFeedback:PVkRenderPassCreationFeedbackInfoEXT);
begin
 sType:=VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_FEEDBACK_CREATE_INFO_EXT;
 pNext:=nil;
 pRenderPassFeedback:=aPRenderPassFeedback;
end;

constructor TVkRenderPassSubpassFeedbackInfoEXT.Create(const aSubpassMergeStatus:TVkSubpassMergeStatusEXT;
                                                       const aDescription:TVkCharString;
                                                       const aPostMergeIndex:TVkUInt32);
var ArrayItemCount:TVkInt32;
begin
 FillChar(self,SizeOf(TVkRenderPassSubpassFeedbackInfoEXT),#0);
 subpassMergeStatus:=aSubpassMergeStatus;
 ArrayItemCount:=length(aDescription);
 if ArrayItemCount>length(description) then begin
  ArrayItemCount:=length(description);
 end;
 if ArrayItemCount>0 then begin
  Move(aDescription[1],description[0],ArrayItemCount*SizeOf(TVkChar));
 end;
 postMergeIndex:=aPostMergeIndex;
end;

constructor TVkRenderPassSubpassFeedbackCreateInfoEXT.Create(const aPSubpassFeedback:PVkRenderPassSubpassFeedbackInfoEXT);
begin
 sType:=VK_STRUCTURE_TYPE_RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT;
 pNext:=nil;
 pSubpassFeedback:=aPSubpassFeedback;
end;

constructor TVkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT.Create(const aSubpassMergeFeedback:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT;
 pNext:=nil;
 subpassMergeFeedback:=aSubpassMergeFeedback;
end;

constructor TVkMicromapUsageEXT.Create(const aCount:TVkUInt32;
                                       const aSubdivisionLevel:TVkUInt32;
                                       const aFormat:TVkUInt32);
begin
 count:=aCount;
 subdivisionLevel:=aSubdivisionLevel;
 format:=aFormat;
end;

constructor TVkMicromapCreateInfoEXT.Create(const aCreateFlags:TVkMicromapCreateFlagsEXT;
                                            const aBuffer:TVkBuffer;
                                            const aOffset:TVkDeviceSize;
                                            const aSize:TVkDeviceSize;
                                            const aType_:TVkMicromapTypeEXT;
                                            const aDeviceAddress:TVkDeviceAddress);
begin
 sType:=VK_STRUCTURE_TYPE_MICROMAP_CREATE_INFO_EXT;
 pNext:=nil;
 createFlags:=aCreateFlags;
 buffer:=aBuffer;
 offset:=aOffset;
 size:=aSize;
 type_:=aType_;
 deviceAddress:=aDeviceAddress;
end;

constructor TVkMicromapVersionInfoEXT.Create(const aPVersionData:PVkUInt8);
begin
 sType:=VK_STRUCTURE_TYPE_MICROMAP_VERSION_INFO_EXT;
 pNext:=nil;
 pVersionData:=aPVersionData;
end;

constructor TVkCopyMicromapInfoEXT.Create(const aSrc:TVkMicromapEXT;
                                          const aDst:TVkMicromapEXT;
                                          const aMode:TVkCopyMicromapModeEXT);
begin
 sType:=VK_STRUCTURE_TYPE_COPY_MICROMAP_INFO_EXT;
 pNext:=nil;
 src:=aSrc;
 dst:=aDst;
 mode:=aMode;
end;

constructor TVkCopyMicromapToMemoryInfoEXT.Create(const aSrc:TVkMicromapEXT;
                                                  const aDst:TVkDeviceOrHostAddressKHR;
                                                  const aMode:TVkCopyMicromapModeEXT);
begin
 sType:=VK_STRUCTURE_TYPE_COPY_MICROMAP_TO_MEMORY_INFO_EXT;
 pNext:=nil;
 src:=aSrc;
 dst:=aDst;
 mode:=aMode;
end;

constructor TVkCopyMemoryToMicromapInfoEXT.Create(const aSrc:TVkDeviceOrHostAddressConstKHR;
                                                  const aDst:TVkMicromapEXT;
                                                  const aMode:TVkCopyMicromapModeEXT);
begin
 sType:=VK_STRUCTURE_TYPE_COPY_MEMORY_TO_MICROMAP_INFO_EXT;
 pNext:=nil;
 src:=aSrc;
 dst:=aDst;
 mode:=aMode;
end;

constructor TVkMicromapBuildSizesInfoEXT.Create(const aMicromapSize:TVkDeviceSize;
                                                const aBuildScratchSize:TVkDeviceSize;
                                                const aDiscardable:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_MICROMAP_BUILD_SIZES_INFO_EXT;
 pNext:=nil;
 micromapSize:=aMicromapSize;
 buildScratchSize:=aBuildScratchSize;
 discardable:=aDiscardable;
end;

constructor TVkMicromapBuildInfoEXT.Create(const aType_:TVkMicromapTypeEXT;
                                           const aFlags:TVkBuildMicromapFlagsEXT;
                                           const aMode:TVkBuildMicromapModeEXT;
                                           const aDstMicromap:TVkMicromapEXT;
                                           const aUsageCountsCount:TVkUInt32;
                                           const aPUsageCounts:PVkMicromapUsageEXT;
                                           const aPpUsageCounts:PPVkMicromapUsageEXT;
                                           const aData:TVkDeviceOrHostAddressConstKHR;
                                           const aScratchData:TVkDeviceOrHostAddressKHR;
                                           const aTriangleArray:TVkDeviceOrHostAddressConstKHR;
                                           const aTriangleArrayStride:TVkDeviceSize);
begin
 sType:=VK_STRUCTURE_TYPE_MICROMAP_BUILD_INFO_EXT;
 pNext:=nil;
 type_:=aType_;
 flags:=aFlags;
 mode:=aMode;
 dstMicromap:=aDstMicromap;
 usageCountsCount:=aUsageCountsCount;
 pUsageCounts:=aPUsageCounts;
 ppUsageCounts:=aPpUsageCounts;
 data:=aData;
 scratchData:=aScratchData;
 triangleArray:=aTriangleArray;
 triangleArrayStride:=aTriangleArrayStride;
end;

constructor TVkMicromapTriangleEXT.Create(const aDataOffset:TVkUInt32;
                                          const aSubdivisionLevel:TVkUInt16;
                                          const aFormat:TVkUInt16);
begin
 dataOffset:=aDataOffset;
 subdivisionLevel:=aSubdivisionLevel;
 format:=aFormat;
end;

constructor TVkPhysicalDeviceOpacityMicromapFeaturesEXT.Create(const aMicromap:TVkBool32;
                                                               const aMicromapCaptureReplay:TVkBool32;
                                                               const aMicromapHostCommands:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT;
 pNext:=nil;
 micromap:=aMicromap;
 micromapCaptureReplay:=aMicromapCaptureReplay;
 micromapHostCommands:=aMicromapHostCommands;
end;

constructor TVkPhysicalDeviceOpacityMicromapPropertiesEXT.Create(const aMaxOpacity2StateSubdivisionLevel:TVkUInt32;
                                                                 const aMaxOpacity4StateSubdivisionLevel:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT;
 pNext:=nil;
 maxOpacity2StateSubdivisionLevel:=aMaxOpacity2StateSubdivisionLevel;
 maxOpacity4StateSubdivisionLevel:=aMaxOpacity4StateSubdivisionLevel;
end;

constructor TVkAccelerationStructureTrianglesOpacityMicromapEXT.Create(const aIndexType:TVkIndexType;
                                                                       const aIndexBuffer:TVkDeviceOrHostAddressConstKHR;
                                                                       const aIndexStride:TVkDeviceSize;
                                                                       const aBaseTriangle:TVkUInt32;
                                                                       const aUsageCountsCount:TVkUInt32;
                                                                       const aPUsageCounts:PVkMicromapUsageEXT;
                                                                       const aPpUsageCounts:PPVkMicromapUsageEXT;
                                                                       const aMicromap:TVkMicromapEXT);
begin
 sType:=VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT;
 pNext:=nil;
 indexType:=aIndexType;
 indexBuffer:=aIndexBuffer;
 indexStride:=aIndexStride;
 baseTriangle:=aBaseTriangle;
 usageCountsCount:=aUsageCountsCount;
 pUsageCounts:=aPUsageCounts;
 ppUsageCounts:=aPpUsageCounts;
 micromap:=aMicromap;
end;

constructor TVkPhysicalDeviceDisplacementMicromapFeaturesNV.Create(const aDisplacementMicromap:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_FEATURES_NV;
 pNext:=nil;
 displacementMicromap:=aDisplacementMicromap;
end;

constructor TVkPhysicalDeviceDisplacementMicromapPropertiesNV.Create(const aMaxDisplacementMicromapSubdivisionLevel:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_PROPERTIES_NV;
 pNext:=nil;
 maxDisplacementMicromapSubdivisionLevel:=aMaxDisplacementMicromapSubdivisionLevel;
end;

constructor TVkAccelerationStructureTrianglesDisplacementMicromapNV.Create(const aDisplacementBiasAndScaleFormat:TVkFormat;
                                                                           const aDisplacementVectorFormat:TVkFormat;
                                                                           const aDisplacementBiasAndScaleBuffer:TVkDeviceOrHostAddressConstKHR;
                                                                           const aDisplacementBiasAndScaleStride:TVkDeviceSize;
                                                                           const aDisplacementVectorBuffer:TVkDeviceOrHostAddressConstKHR;
                                                                           const aDisplacementVectorStride:TVkDeviceSize;
                                                                           const aDisplacedMicromapPrimitiveFlags:TVkDeviceOrHostAddressConstKHR;
                                                                           const aDisplacedMicromapPrimitiveFlagsStride:TVkDeviceSize;
                                                                           const aIndexType:TVkIndexType;
                                                                           const aIndexBuffer:TVkDeviceOrHostAddressConstKHR;
                                                                           const aIndexStride:TVkDeviceSize;
                                                                           const aBaseTriangle:TVkUInt32;
                                                                           const aUsageCountsCount:TVkUInt32;
                                                                           const aPUsageCounts:PVkMicromapUsageEXT;
                                                                           const aPpUsageCounts:PPVkMicromapUsageEXT;
                                                                           const aMicromap:TVkMicromapEXT);
begin
 sType:=VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_DISPLACEMENT_MICROMAP_NV;
 pNext:=nil;
 displacementBiasAndScaleFormat:=aDisplacementBiasAndScaleFormat;
 displacementVectorFormat:=aDisplacementVectorFormat;
 displacementBiasAndScaleBuffer:=aDisplacementBiasAndScaleBuffer;
 displacementBiasAndScaleStride:=aDisplacementBiasAndScaleStride;
 displacementVectorBuffer:=aDisplacementVectorBuffer;
 displacementVectorStride:=aDisplacementVectorStride;
 displacedMicromapPrimitiveFlags:=aDisplacedMicromapPrimitiveFlags;
 displacedMicromapPrimitiveFlagsStride:=aDisplacedMicromapPrimitiveFlagsStride;
 indexType:=aIndexType;
 indexBuffer:=aIndexBuffer;
 indexStride:=aIndexStride;
 baseTriangle:=aBaseTriangle;
 usageCountsCount:=aUsageCountsCount;
 pUsageCounts:=aPUsageCounts;
 ppUsageCounts:=aPpUsageCounts;
 micromap:=aMicromap;
end;

constructor TVkPipelinePropertiesIdentifierEXT.Create(const aPipelineIdentifier:array of TVkUInt8);
var ArrayItemCount:TVkInt32;
begin
 FillChar(self,SizeOf(TVkPipelinePropertiesIdentifierEXT),#0);
 sType:=VK_STRUCTURE_TYPE_PIPELINE_PROPERTIES_IDENTIFIER_EXT;
 pNext:=nil;
 ArrayItemCount:=length(aPipelineIdentifier);
 if ArrayItemCount>length(pipelineIdentifier) then begin
  ArrayItemCount:=length(pipelineIdentifier);
 end;
 if ArrayItemCount>0 then begin
  Move(aPipelineIdentifier[0],pipelineIdentifier[0],ArrayItemCount*SizeOf(TVkUInt8));
 end;
end;

constructor TVkPhysicalDevicePipelinePropertiesFeaturesEXT.Create(const aPipelinePropertiesIdentifier:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT;
 pNext:=nil;
 pipelinePropertiesIdentifier:=aPipelinePropertiesIdentifier;
end;

constructor TVkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD.Create(const aShaderEarlyAndLateFragmentTests:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD;
 pNext:=nil;
 shaderEarlyAndLateFragmentTests:=aShaderEarlyAndLateFragmentTests;
end;

constructor TVkExternalMemoryAcquireUnmodifiedEXT.Create(const aAcquireUnmodifiedMemory:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT;
 pNext:=nil;
 acquireUnmodifiedMemory:=aAcquireUnmodifiedMemory;
end;

constructor TVkExportMetalObjectCreateInfoEXT.Create(const aExportObjectType:TVkExportMetalObjectTypeFlagBitsEXT);
begin
 sType:=VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT;
 pNext:=nil;
 exportObjectType:=aExportObjectType;
end;

{$ifdef Metal}
constructor TVkExportMetalDeviceInfoEXT.Create(const aMtlDevice:TMTLDevice_id);
begin
 sType:=VK_STRUCTURE_TYPE_EXPORT_METAL_DEVICE_INFO_EXT;
 pNext:=nil;
 mtlDevice:=aMtlDevice;
end;
{$endif}

{$ifdef Metal}
constructor TVkExportMetalCommandQueueInfoEXT.Create(const aQueue:TVkQueue;
                                                     const aMtlCommandQueue:TMTLCommandQueue_id);
begin
 sType:=VK_STRUCTURE_TYPE_EXPORT_METAL_COMMAND_QUEUE_INFO_EXT;
 pNext:=nil;
 queue:=aQueue;
 mtlCommandQueue:=aMtlCommandQueue;
end;
{$endif}

{$ifdef Metal}
constructor TVkExportMetalBufferInfoEXT.Create(const aMemory:TVkDeviceMemory;
                                               const aMtlBuffer:TMTLBuffer_id);
begin
 sType:=VK_STRUCTURE_TYPE_EXPORT_METAL_BUFFER_INFO_EXT;
 pNext:=nil;
 memory:=aMemory;
 mtlBuffer:=aMtlBuffer;
end;
{$endif}

{$ifdef Metal}
constructor TVkImportMetalBufferInfoEXT.Create(const aMtlBuffer:TMTLBuffer_id);
begin
 sType:=VK_STRUCTURE_TYPE_IMPORT_METAL_BUFFER_INFO_EXT;
 pNext:=nil;
 mtlBuffer:=aMtlBuffer;
end;
{$endif}

{$ifdef Metal}
constructor TVkExportMetalTextureInfoEXT.Create(const aImage:TVkImage;
                                                const aImageView:TVkImageView;
                                                const aBufferView:TVkBufferView;
                                                const aPlane:TVkImageAspectFlagBits;
                                                const aMtlTexture:TMTLTexture_id);
begin
 sType:=VK_STRUCTURE_TYPE_EXPORT_METAL_TEXTURE_INFO_EXT;
 pNext:=nil;
 image:=aImage;
 imageView:=aImageView;
 bufferView:=aBufferView;
 plane:=aPlane;
 mtlTexture:=aMtlTexture;
end;
{$endif}

{$ifdef Metal}
constructor TVkImportMetalTextureInfoEXT.Create(const aPlane:TVkImageAspectFlagBits;
                                                const aMtlTexture:TMTLTexture_id);
begin
 sType:=VK_STRUCTURE_TYPE_IMPORT_METAL_TEXTURE_INFO_EXT;
 pNext:=nil;
 plane:=aPlane;
 mtlTexture:=aMtlTexture;
end;
{$endif}

constructor TVkExportMetalIOSurfaceInfoEXT.Create(const aImage:TVkImage;
                                                  const aIoSurface:TIOSurfaceRef);
begin
 sType:=VK_STRUCTURE_TYPE_EXPORT_METAL_IO_SURFACE_INFO_EXT;
 pNext:=nil;
 image:=aImage;
 ioSurface:=aIoSurface;
end;

constructor TVkImportMetalIOSurfaceInfoEXT.Create(const aIoSurface:TIOSurfaceRef);
begin
 sType:=VK_STRUCTURE_TYPE_IMPORT_METAL_IO_SURFACE_INFO_EXT;
 pNext:=nil;
 ioSurface:=aIoSurface;
end;

{$ifdef Metal}
constructor TVkExportMetalSharedEventInfoEXT.Create(const aSemaphore:TVkSemaphore;
                                                    const aEvent:TVkEvent;
                                                    const aMtlSharedEvent:TMTLSharedEvent_id);
begin
 sType:=VK_STRUCTURE_TYPE_EXPORT_METAL_SHARED_EVENT_INFO_EXT;
 pNext:=nil;
 semaphore:=aSemaphore;
 event:=aEvent;
 mtlSharedEvent:=aMtlSharedEvent;
end;
{$endif}

{$ifdef Metal}
constructor TVkImportMetalSharedEventInfoEXT.Create(const aMtlSharedEvent:TMTLSharedEvent_id);
begin
 sType:=VK_STRUCTURE_TYPE_IMPORT_METAL_SHARED_EVENT_INFO_EXT;
 pNext:=nil;
 mtlSharedEvent:=aMtlSharedEvent;
end;
{$endif}

constructor TVkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT.Create(const aNonSeamlessCubeMap:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT;
 pNext:=nil;
 nonSeamlessCubeMap:=aNonSeamlessCubeMap;
end;

constructor TVkPhysicalDevicePipelineRobustnessFeaturesEXT.Create(const aPipelineRobustness:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT;
 pNext:=nil;
 pipelineRobustness:=aPipelineRobustness;
end;

constructor TVkPipelineRobustnessCreateInfoEXT.Create(const aStorageBuffers:TVkPipelineRobustnessBufferBehaviorEXT;
                                                      const aUniformBuffers:TVkPipelineRobustnessBufferBehaviorEXT;
                                                      const aVertexInputs:TVkPipelineRobustnessBufferBehaviorEXT;
                                                      const aImages:TVkPipelineRobustnessImageBehaviorEXT);
begin
 sType:=VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT;
 pNext:=nil;
 storageBuffers:=aStorageBuffers;
 uniformBuffers:=aUniformBuffers;
 vertexInputs:=aVertexInputs;
 images:=aImages;
end;

constructor TVkPhysicalDevicePipelineRobustnessPropertiesEXT.Create(const aDefaultRobustnessStorageBuffers:TVkPipelineRobustnessBufferBehaviorEXT;
                                                                    const aDefaultRobustnessUniformBuffers:TVkPipelineRobustnessBufferBehaviorEXT;
                                                                    const aDefaultRobustnessVertexInputs:TVkPipelineRobustnessBufferBehaviorEXT;
                                                                    const aDefaultRobustnessImages:TVkPipelineRobustnessImageBehaviorEXT);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT;
 pNext:=nil;
 defaultRobustnessStorageBuffers:=aDefaultRobustnessStorageBuffers;
 defaultRobustnessUniformBuffers:=aDefaultRobustnessUniformBuffers;
 defaultRobustnessVertexInputs:=aDefaultRobustnessVertexInputs;
 defaultRobustnessImages:=aDefaultRobustnessImages;
end;

constructor TVkImageViewSampleWeightCreateInfoQCOM.Create(const aFilterCenter:TVkOffset2D;
                                                          const aFilterSize:TVkExtent2D;
                                                          const aNumPhases:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM;
 pNext:=nil;
 filterCenter:=aFilterCenter;
 filterSize:=aFilterSize;
 numPhases:=aNumPhases;
end;

constructor TVkPhysicalDeviceImageProcessingFeaturesQCOM.Create(const aTextureSampleWeighted:TVkBool32;
                                                                const aTextureBoxFilter:TVkBool32;
                                                                const aTextureBlockMatch:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM;
 pNext:=nil;
 textureSampleWeighted:=aTextureSampleWeighted;
 textureBoxFilter:=aTextureBoxFilter;
 textureBlockMatch:=aTextureBlockMatch;
end;

constructor TVkPhysicalDeviceImageProcessingPropertiesQCOM.Create(const aMaxWeightFilterPhases:TVkUInt32;
                                                                  const aMaxWeightFilterDimension:TVkExtent2D;
                                                                  const aMaxBlockMatchRegion:TVkExtent2D;
                                                                  const aMaxBoxFilterBlockSize:TVkExtent2D);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM;
 pNext:=nil;
 maxWeightFilterPhases:=aMaxWeightFilterPhases;
 maxWeightFilterDimension:=aMaxWeightFilterDimension;
 maxBlockMatchRegion:=aMaxBlockMatchRegion;
 maxBoxFilterBlockSize:=aMaxBoxFilterBlockSize;
end;

constructor TVkPhysicalDeviceTilePropertiesFeaturesQCOM.Create(const aTileProperties:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM;
 pNext:=nil;
 tileProperties:=aTileProperties;
end;

constructor TVkTilePropertiesQCOM.Create(const aTileSize:TVkExtent3D;
                                         const aApronSize:TVkExtent2D;
                                         const aOrigin:TVkOffset2D);
begin
 sType:=VK_STRUCTURE_TYPE_TILE_PROPERTIES_QCOM;
 pNext:=nil;
 tileSize:=aTileSize;
 apronSize:=aApronSize;
 origin:=aOrigin;
end;

constructor TVkPhysicalDeviceAmigoProfilingFeaturesSEC.Create(const aAmigoProfiling:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC;
 pNext:=nil;
 amigoProfiling:=aAmigoProfiling;
end;

constructor TVkAmigoProfilingSubmitInfoSEC.Create(const aFirstDrawTimestamp:TVkUInt64;
                                                  const aSwapBufferTimestamp:TVkUInt64);
begin
 sType:=VK_STRUCTURE_TYPE_AMIGO_PROFILING_SUBMIT_INFO_SEC;
 pNext:=nil;
 firstDrawTimestamp:=aFirstDrawTimestamp;
 swapBufferTimestamp:=aSwapBufferTimestamp;
end;

constructor TVkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT.Create(const aAttachmentFeedbackLoopLayout:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT;
 pNext:=nil;
 attachmentFeedbackLoopLayout:=aAttachmentFeedbackLoopLayout;
end;

constructor TVkPhysicalDeviceDepthClampZeroOneFeaturesEXT.Create(const aDepthClampZeroOne:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT;
 pNext:=nil;
 depthClampZeroOne:=aDepthClampZeroOne;
end;

constructor TVkPhysicalDeviceAddressBindingReportFeaturesEXT.Create(const aReportAddressBinding:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT;
 pNext:=nil;
 reportAddressBinding:=aReportAddressBinding;
end;

constructor TVkDeviceAddressBindingCallbackDataEXT.Create(const aFlags:TVkDeviceAddressBindingFlagsEXT;
                                                          const aBaseAddress:TVkDeviceAddress;
                                                          const aSize:TVkDeviceSize;
                                                          const aBindingType:TVkDeviceAddressBindingTypeEXT);
begin
 sType:=VK_STRUCTURE_TYPE_DEVICE_ADDRESS_BINDING_CALLBACK_DATA_EXT;
 pNext:=nil;
 flags:=aFlags;
 baseAddress:=aBaseAddress;
 size:=aSize;
 bindingType:=aBindingType;
end;

constructor TVkPhysicalDeviceOpticalFlowFeaturesNV.Create(const aOpticalFlow:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV;
 pNext:=nil;
 opticalFlow:=aOpticalFlow;
end;

constructor TVkPhysicalDeviceOpticalFlowPropertiesNV.Create(const aSupportedOutputGridSizes:TVkOpticalFlowGridSizeFlagsNV;
                                                            const aSupportedHintGridSizes:TVkOpticalFlowGridSizeFlagsNV;
                                                            const aHintSupported:TVkBool32;
                                                            const aCostSupported:TVkBool32;
                                                            const aBidirectionalFlowSupported:TVkBool32;
                                                            const aGlobalFlowSupported:TVkBool32;
                                                            const aMinWidth:TVkUInt32;
                                                            const aMinHeight:TVkUInt32;
                                                            const aMaxWidth:TVkUInt32;
                                                            const aMaxHeight:TVkUInt32;
                                                            const aMaxNumRegionsOfInterest:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_PROPERTIES_NV;
 pNext:=nil;
 supportedOutputGridSizes:=aSupportedOutputGridSizes;
 supportedHintGridSizes:=aSupportedHintGridSizes;
 hintSupported:=aHintSupported;
 costSupported:=aCostSupported;
 bidirectionalFlowSupported:=aBidirectionalFlowSupported;
 globalFlowSupported:=aGlobalFlowSupported;
 minWidth:=aMinWidth;
 minHeight:=aMinHeight;
 maxWidth:=aMaxWidth;
 maxHeight:=aMaxHeight;
 maxNumRegionsOfInterest:=aMaxNumRegionsOfInterest;
end;

constructor TVkOpticalFlowImageFormatInfoNV.Create(const aUsage:TVkOpticalFlowUsageFlagsNV);
begin
 sType:=VK_STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_INFO_NV;
 pNext:=nil;
 usage:=aUsage;
end;

constructor TVkOpticalFlowImageFormatPropertiesNV.Create(const aFormat:TVkFormat);
begin
 sType:=VK_STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_NV;
 pNext:=nil;
 format:=aFormat;
end;

constructor TVkOpticalFlowSessionCreateInfoNV.Create(const aWidth:TVkUInt32;
                                                     const aHeight:TVkUInt32;
                                                     const aImageFormat:TVkFormat;
                                                     const aFlowVectorFormat:TVkFormat;
                                                     const aCostFormat:TVkFormat;
                                                     const aOutputGridSize:TVkOpticalFlowGridSizeFlagsNV;
                                                     const aHintGridSize:TVkOpticalFlowGridSizeFlagsNV;
                                                     const aPerformanceLevel:TVkOpticalFlowPerformanceLevelNV;
                                                     const aFlags:TVkOpticalFlowSessionCreateFlagsNV);
begin
 sType:=VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_INFO_NV;
 pNext:=nil;
 width:=aWidth;
 height:=aHeight;
 imageFormat:=aImageFormat;
 flowVectorFormat:=aFlowVectorFormat;
 costFormat:=aCostFormat;
 outputGridSize:=aOutputGridSize;
 hintGridSize:=aHintGridSize;
 performanceLevel:=aPerformanceLevel;
 flags:=aFlags;
end;

constructor TVkOpticalFlowSessionCreatePrivateDataInfoNV.Create(const aId:TVkUInt32;
                                                                const aSize:TVkUInt32;
                                                                const aPPrivateData:PVkVoid);
begin
 sType:=VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV;
 pNext:=nil;
 id:=aId;
 size:=aSize;
 pPrivateData:=aPPrivateData;
end;

constructor TVkOpticalFlowExecuteInfoNV.Create(const aFlags:TVkOpticalFlowExecuteFlagsNV;
                                               const aRegionCount:TVkUInt32;
                                               const aPRegions:PVkRect2D);
begin
 sType:=VK_STRUCTURE_TYPE_OPTICAL_FLOW_EXECUTE_INFO_NV;
 pNext:=nil;
 flags:=aFlags;
 regionCount:=aRegionCount;
 pRegions:=aPRegions;
end;

constructor TVkPhysicalDeviceFaultFeaturesEXT.Create(const aDeviceFault:TVkBool32;
                                                     const aDeviceFaultVendorBinary:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_EXT;
 pNext:=nil;
 deviceFault:=aDeviceFault;
 deviceFaultVendorBinary:=aDeviceFaultVendorBinary;
end;

constructor TVkDeviceFaultAddressInfoEXT.Create(const aAddressType:TVkDeviceFaultAddressTypeEXT;
                                                const aReportedAddress:TVkDeviceAddress;
                                                const aAddressPrecision:TVkDeviceSize);
begin
 addressType:=aAddressType;
 reportedAddress:=aReportedAddress;
 addressPrecision:=aAddressPrecision;
end;

constructor TVkDeviceFaultVendorInfoEXT.Create(const aDescription:TVkCharString;
                                               const aVendorFaultCode:TVkUInt64;
                                               const aVendorFaultData:TVkUInt64);
var ArrayItemCount:TVkInt32;
begin
 FillChar(self,SizeOf(TVkDeviceFaultVendorInfoEXT),#0);
 ArrayItemCount:=length(aDescription);
 if ArrayItemCount>length(description) then begin
  ArrayItemCount:=length(description);
 end;
 if ArrayItemCount>0 then begin
  Move(aDescription[1],description[0],ArrayItemCount*SizeOf(TVkChar));
 end;
 vendorFaultCode:=aVendorFaultCode;
 vendorFaultData:=aVendorFaultData;
end;

constructor TVkDeviceFaultCountsEXT.Create(const aAddressInfoCount:TVkUInt32;
                                           const aVendorInfoCount:TVkUInt32;
                                           const aVendorBinarySize:TVkDeviceSize);
begin
 sType:=VK_STRUCTURE_TYPE_DEVICE_FAULT_COUNTS_EXT;
 pNext:=nil;
 addressInfoCount:=aAddressInfoCount;
 vendorInfoCount:=aVendorInfoCount;
 vendorBinarySize:=aVendorBinarySize;
end;

constructor TVkDeviceFaultInfoEXT.Create(const aDescription:TVkCharString;
                                         const aPAddressInfos:PVkDeviceFaultAddressInfoEXT;
                                         const aPVendorInfos:PVkDeviceFaultVendorInfoEXT;
                                         const aPVendorBinaryData:PVkVoid);
var ArrayItemCount:TVkInt32;
begin
 FillChar(self,SizeOf(TVkDeviceFaultInfoEXT),#0);
 sType:=VK_STRUCTURE_TYPE_DEVICE_FAULT_INFO_EXT;
 pNext:=nil;
 ArrayItemCount:=length(aDescription);
 if ArrayItemCount>length(description) then begin
  ArrayItemCount:=length(description);
 end;
 if ArrayItemCount>0 then begin
  Move(aDescription[1],description[0],ArrayItemCount*SizeOf(TVkChar));
 end;
 pAddressInfos:=aPAddressInfos;
 pVendorInfos:=aPVendorInfos;
 pVendorBinaryData:=aPVendorBinaryData;
end;

constructor TVkDeviceFaultVendorBinaryHeaderVersionOneEXT.Create(const aHeaderSize:TVkUInt32;
                                                                 const aHeaderVersion:TVkDeviceFaultVendorBinaryHeaderVersionEXT;
                                                                 const aVendorID:TVkUInt32;
                                                                 const aDeviceID:TVkUInt32;
                                                                 const aDriverVersion:TVkUInt32;
                                                                 const aPipelineCacheUUID:array of TVkUInt8;
                                                                 const aApplicationNameOffset:TVkUInt32;
                                                                 const aApplicationVersion:TVkUInt32;
                                                                 const aEngineNameOffset:TVkUInt32;
                                                                 const aEngineVersion:TVkUInt32;
                                                                 const aApiVersion:TVkUInt32);
var ArrayItemCount:TVkInt32;
begin
 FillChar(self,SizeOf(TVkDeviceFaultVendorBinaryHeaderVersionOneEXT),#0);
 headerSize:=aHeaderSize;
 headerVersion:=aHeaderVersion;
 vendorID:=aVendorID;
 deviceID:=aDeviceID;
 driverVersion:=aDriverVersion;
 ArrayItemCount:=length(aPipelineCacheUUID);
 if ArrayItemCount>length(pipelineCacheUUID) then begin
  ArrayItemCount:=length(pipelineCacheUUID);
 end;
 if ArrayItemCount>0 then begin
  Move(aPipelineCacheUUID[0],pipelineCacheUUID[0],ArrayItemCount*SizeOf(TVkUInt8));
 end;
 applicationNameOffset:=aApplicationNameOffset;
 applicationVersion:=aApplicationVersion;
 engineNameOffset:=aEngineNameOffset;
 engineVersion:=aEngineVersion;
 apiVersion:=aApiVersion;
end;

constructor TVkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.Create(const aPipelineLibraryGroupHandles:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT;
 pNext:=nil;
 pipelineLibraryGroupHandles:=aPipelineLibraryGroupHandles;
end;

constructor TVkDepthBiasInfoEXT.Create(const aDepthBiasConstantFactor:TVkFloat;
                                       const aDepthBiasClamp:TVkFloat;
                                       const aDepthBiasSlopeFactor:TVkFloat);
begin
 sType:=VK_STRUCTURE_TYPE_DEPTH_BIAS_INFO_EXT;
 pNext:=nil;
 depthBiasConstantFactor:=aDepthBiasConstantFactor;
 depthBiasClamp:=aDepthBiasClamp;
 depthBiasSlopeFactor:=aDepthBiasSlopeFactor;
end;

constructor TVkDepthBiasRepresentationInfoEXT.Create(const aDepthBiasRepresentation:TVkDepthBiasRepresentationEXT;
                                                     const aDepthBiasExact:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_DEPTH_BIAS_REPRESENTATION_INFO_EXT;
 pNext:=nil;
 depthBiasRepresentation:=aDepthBiasRepresentation;
 depthBiasExact:=aDepthBiasExact;
end;

constructor TVkDecompressMemoryRegionNV.Create(const aSrcAddress:TVkDeviceAddress;
                                               const aDstAddress:TVkDeviceAddress;
                                               const aCompressedSize:TVkDeviceSize;
                                               const aDecompressedSize:TVkDeviceSize;
                                               const aDecompressionMethod:TVkMemoryDecompressionMethodFlagsNV);
begin
 srcAddress:=aSrcAddress;
 dstAddress:=aDstAddress;
 compressedSize:=aCompressedSize;
 decompressedSize:=aDecompressedSize;
 decompressionMethod:=aDecompressionMethod;
end;

constructor TVkPhysicalDeviceShaderCoreBuiltinsPropertiesARM.Create(const aShaderCoreMask:TVkUInt64;
                                                                    const aShaderCoreCount:TVkUInt32;
                                                                    const aShaderWarpsPerCore:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM;
 pNext:=nil;
 shaderCoreMask:=aShaderCoreMask;
 shaderCoreCount:=aShaderCoreCount;
 shaderWarpsPerCore:=aShaderWarpsPerCore;
end;

constructor TVkPhysicalDeviceShaderCoreBuiltinsFeaturesARM.Create(const aShaderCoreBuiltins:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM;
 pNext:=nil;
 shaderCoreBuiltins:=aShaderCoreBuiltins;
end;

constructor TVkFrameBoundaryEXT.Create(const aFlags:TVkFrameBoundaryFlagsEXT;
                                       const aFrameID:TVkUInt64;
                                       const aImageCount:TVkUInt32;
                                       const aPImages:PVkImage;
                                       const aBufferCount:TVkUInt32;
                                       const aPBuffers:PVkBuffer;
                                       const aTagName:TVkUInt64;
                                       const aTagSize:TVkSize;
                                       const aPTag:PVkVoid);
begin
 sType:=VK_STRUCTURE_TYPE_FRAME_BOUNDARY_EXT;
 pNext:=nil;
 flags:=aFlags;
 frameID:=aFrameID;
 imageCount:=aImageCount;
 pImages:=aPImages;
 bufferCount:=aBufferCount;
 pBuffers:=aPBuffers;
 tagName:=aTagName;
 tagSize:=aTagSize;
 pTag:=aPTag;
end;

constructor TVkPhysicalDeviceFrameBoundaryFeaturesEXT.Create(const aFrameBoundary:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT;
 pNext:=nil;
 frameBoundary:=aFrameBoundary;
end;

constructor TVkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT.Create(const aDynamicRenderingUnusedAttachments:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT;
 pNext:=nil;
 dynamicRenderingUnusedAttachments:=aDynamicRenderingUnusedAttachments;
end;

constructor TVkSurfacePresentModeEXT.Create(const aPresentMode:TVkPresentModeKHR);
begin
 sType:=VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT;
 pNext:=nil;
 presentMode:=aPresentMode;
end;

constructor TVkSurfacePresentScalingCapabilitiesEXT.Create(const aSupportedPresentScaling:TVkPresentScalingFlagsEXT;
                                                           const aSupportedPresentGravityX:TVkPresentGravityFlagsEXT;
                                                           const aSupportedPresentGravityY:TVkPresentGravityFlagsEXT;
                                                           const aMinScaledImageExtent:TVkExtent2D;
                                                           const aMaxScaledImageExtent:TVkExtent2D);
begin
 sType:=VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT;
 pNext:=nil;
 supportedPresentScaling:=aSupportedPresentScaling;
 supportedPresentGravityX:=aSupportedPresentGravityX;
 supportedPresentGravityY:=aSupportedPresentGravityY;
 minScaledImageExtent:=aMinScaledImageExtent;
 maxScaledImageExtent:=aMaxScaledImageExtent;
end;

constructor TVkSurfacePresentModeCompatibilityEXT.Create(const aPresentModeCount:TVkUInt32;
                                                         const aPPresentModes:PVkPresentModeKHR);
begin
 sType:=VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT;
 pNext:=nil;
 presentModeCount:=aPresentModeCount;
 pPresentModes:=aPPresentModes;
end;

constructor TVkPhysicalDeviceSwapchainMaintenance1FeaturesEXT.Create(const aSwapchainMaintenance1:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT;
 pNext:=nil;
 swapchainMaintenance1:=aSwapchainMaintenance1;
end;

constructor TVkSwapchainPresentFenceInfoEXT.Create(const aSwapchainCount:TVkUInt32;
                                                   const aPFences:PVkFence);
begin
 sType:=VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT;
 pNext:=nil;
 swapchainCount:=aSwapchainCount;
 pFences:=aPFences;
end;

constructor TVkSwapchainPresentModesCreateInfoEXT.Create(const aPresentModeCount:TVkUInt32;
                                                         const aPPresentModes:PVkPresentModeKHR);
begin
 sType:=VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT;
 pNext:=nil;
 presentModeCount:=aPresentModeCount;
 pPresentModes:=aPPresentModes;
end;

constructor TVkSwapchainPresentModeInfoEXT.Create(const aSwapchainCount:TVkUInt32;
                                                  const aPPresentModes:PVkPresentModeKHR);
begin
 sType:=VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT;
 pNext:=nil;
 swapchainCount:=aSwapchainCount;
 pPresentModes:=aPPresentModes;
end;

constructor TVkSwapchainPresentScalingCreateInfoEXT.Create(const aScalingBehavior:TVkPresentScalingFlagsEXT;
                                                           const aPresentGravityX:TVkPresentGravityFlagsEXT;
                                                           const aPresentGravityY:TVkPresentGravityFlagsEXT);
begin
 sType:=VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT;
 pNext:=nil;
 scalingBehavior:=aScalingBehavior;
 presentGravityX:=aPresentGravityX;
 presentGravityY:=aPresentGravityY;
end;

constructor TVkReleaseSwapchainImagesInfoEXT.Create(const aSwapchain:TVkSwapchainKHR;
                                                    const aImageIndexCount:TVkUInt32;
                                                    const aPImageIndices:PVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT;
 pNext:=nil;
 swapchain:=aSwapchain;
 imageIndexCount:=aImageIndexCount;
 pImageIndices:=aPImageIndices;
end;

constructor TVkPhysicalDeviceDepthBiasControlFeaturesEXT.Create(const aDepthBiasControl:TVkBool32;
                                                                const aLeastRepresentableValueForceUnormRepresentation:TVkBool32;
                                                                const aFloatRepresentation:TVkBool32;
                                                                const aDepthBiasExact:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_FEATURES_EXT;
 pNext:=nil;
 depthBiasControl:=aDepthBiasControl;
 leastRepresentableValueForceUnormRepresentation:=aLeastRepresentableValueForceUnormRepresentation;
 floatRepresentation:=aFloatRepresentation;
 depthBiasExact:=aDepthBiasExact;
end;

constructor TVkPhysicalDeviceRayTracingInvocationReorderFeaturesNV.Create(const aRayTracingInvocationReorder:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV;
 pNext:=nil;
 rayTracingInvocationReorder:=aRayTracingInvocationReorder;
end;

constructor TVkPhysicalDeviceRayTracingInvocationReorderPropertiesNV.Create(const aRayTracingInvocationReorderReorderingHint:TVkRayTracingInvocationReorderModeNV);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV;
 pNext:=nil;
 rayTracingInvocationReorderReorderingHint:=aRayTracingInvocationReorderReorderingHint;
end;

constructor TVkDirectDriverLoadingInfoLUNARG.Create(const aFlags:TVkDirectDriverLoadingFlagsLUNARG;
                                                    const aPfnGetInstanceProcAddr:TPFN_vkGetInstanceProcAddrLUNARG);
begin
 sType:=VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_INFO_LUNARG;
 pNext:=nil;
 flags:=aFlags;
 pfnGetInstanceProcAddr:=aPfnGetInstanceProcAddr;
end;

constructor TVkDirectDriverLoadingListLUNARG.Create(const aMode:TVkDirectDriverLoadingModeLUNARG;
                                                    const aDriverCount:TVkUInt32;
                                                    const aPDrivers:PVkDirectDriverLoadingInfoLUNARG);
begin
 sType:=VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_LIST_LUNARG;
 pNext:=nil;
 mode:=aMode;
 driverCount:=aDriverCount;
 pDrivers:=aPDrivers;
end;

constructor TVkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM.Create(const aMultiviewPerViewViewports:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM;
 pNext:=nil;
 multiviewPerViewViewports:=aMultiviewPerViewViewports;
end;

constructor TVkPhysicalDeviceRayTracingPositionFetchFeaturesKHR.Create(const aRayTracingPositionFetch:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR;
 pNext:=nil;
 rayTracingPositionFetch:=aRayTracingPositionFetch;
end;

constructor TVkDeviceImageSubresourceInfoKHR.Create(const aPCreateInfo:PVkImageCreateInfo;
                                                    const aPSubresource:PVkImageSubresource2KHR);
begin
 sType:=VK_STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO_KHR;
 pNext:=nil;
 pCreateInfo:=aPCreateInfo;
 pSubresource:=aPSubresource;
end;

constructor TVkPhysicalDeviceShaderCorePropertiesARM.Create(const aPixelRate:TVkUInt32;
                                                            const aTexelRate:TVkUInt32;
                                                            const aFmaRate:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM;
 pNext:=nil;
 pixelRate:=aPixelRate;
 texelRate:=aTexelRate;
 fmaRate:=aFmaRate;
end;

constructor TVkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM.Create(const aMultiviewPerViewRenderAreas:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM;
 pNext:=nil;
 multiviewPerViewRenderAreas:=aMultiviewPerViewRenderAreas;
end;

constructor TVkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM.Create(const aPerViewRenderAreaCount:TVkUInt32;
                                                                         const aPPerViewRenderAreas:PVkRect2D);
begin
 sType:=VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM;
 pNext:=nil;
 perViewRenderAreaCount:=aPerViewRenderAreaCount;
 pPerViewRenderAreas:=aPPerViewRenderAreas;
end;

constructor TVkQueryLowLatencySupportNV.Create(const aPQueriedLowLatencyData:PVkVoid);
begin
 sType:=VK_STRUCTURE_TYPE_QUERY_LOW_LATENCY_SUPPORT_NV;
 pNext:=nil;
 pQueriedLowLatencyData:=aPQueriedLowLatencyData;
end;

constructor TVkMemoryMapInfoKHR.Create(const aFlags:TVkMemoryMapFlags;
                                       const aMemory:TVkDeviceMemory;
                                       const aOffset:TVkDeviceSize;
                                       const aSize:TVkDeviceSize);
begin
 sType:=VK_STRUCTURE_TYPE_MEMORY_MAP_INFO_KHR;
 pNext:=nil;
 flags:=aFlags;
 memory:=aMemory;
 offset:=aOffset;
 size:=aSize;
end;

constructor TVkMemoryUnmapInfoKHR.Create(const aFlags:TVkMemoryUnmapFlagsKHR;
                                         const aMemory:TVkDeviceMemory);
begin
 sType:=VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO_KHR;
 pNext:=nil;
 flags:=aFlags;
 memory:=aMemory;
end;

constructor TVkPhysicalDeviceShaderObjectFeaturesEXT.Create(const aShaderObject:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT;
 pNext:=nil;
 shaderObject:=aShaderObject;
end;

constructor TVkPhysicalDeviceShaderObjectPropertiesEXT.Create(const aShaderBinaryUUID:array of TVkUInt8;
                                                              const aShaderBinaryVersion:TVkUInt32);
var ArrayItemCount:TVkInt32;
begin
 FillChar(self,SizeOf(TVkPhysicalDeviceShaderObjectPropertiesEXT),#0);
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT;
 pNext:=nil;
 ArrayItemCount:=length(aShaderBinaryUUID);
 if ArrayItemCount>length(shaderBinaryUUID) then begin
  ArrayItemCount:=length(shaderBinaryUUID);
 end;
 if ArrayItemCount>0 then begin
  Move(aShaderBinaryUUID[0],shaderBinaryUUID[0],ArrayItemCount*SizeOf(TVkUInt8));
 end;
 shaderBinaryVersion:=aShaderBinaryVersion;
end;

constructor TVkShaderCreateInfoEXT.Create(const aFlags:TVkShaderCreateFlagsEXT;
                                          const aStage:TVkShaderStageFlagBits;
                                          const aNextStage:TVkShaderStageFlags;
                                          const aCodeType:TVkShaderCodeTypeEXT;
                                          const aCodeSize:TVkSize;
                                          const aPCode:PVkVoid;
                                          const aPName:PVkChar;
                                          const aSetLayoutCount:TVkUInt32;
                                          const aPSetLayouts:PVkDescriptorSetLayout;
                                          const aPushConstantRangeCount:TVkUInt32;
                                          const aPPushConstantRanges:PVkPushConstantRange;
                                          const aPSpecializationInfo:PVkSpecializationInfo);
begin
 sType:=VK_STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT;
 pNext:=nil;
 flags:=aFlags;
 stage:=aStage;
 nextStage:=aNextStage;
 codeType:=aCodeType;
 codeSize:=aCodeSize;
 pCode:=aPCode;
 pName:=aPName;
 setLayoutCount:=aSetLayoutCount;
 pSetLayouts:=aPSetLayouts;
 pushConstantRangeCount:=aPushConstantRangeCount;
 pPushConstantRanges:=aPPushConstantRanges;
 pSpecializationInfo:=aPSpecializationInfo;
end;

constructor TVkPhysicalDeviceShaderTileImageFeaturesEXT.Create(const aShaderTileImageColorReadAccess:TVkBool32;
                                                               const aShaderTileImageDepthReadAccess:TVkBool32;
                                                               const aShaderTileImageStencilReadAccess:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT;
 pNext:=nil;
 shaderTileImageColorReadAccess:=aShaderTileImageColorReadAccess;
 shaderTileImageDepthReadAccess:=aShaderTileImageDepthReadAccess;
 shaderTileImageStencilReadAccess:=aShaderTileImageStencilReadAccess;
end;

constructor TVkPhysicalDeviceShaderTileImagePropertiesEXT.Create(const aShaderTileImageCoherentReadAccelerated:TVkBool32;
                                                                 const aShaderTileImageReadSampleFromPixelRateInvocation:TVkBool32;
                                                                 const aShaderTileImageReadFromHelperInvocation:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT;
 pNext:=nil;
 shaderTileImageCoherentReadAccelerated:=aShaderTileImageCoherentReadAccelerated;
 shaderTileImageReadSampleFromPixelRateInvocation:=aShaderTileImageReadSampleFromPixelRateInvocation;
 shaderTileImageReadFromHelperInvocation:=aShaderTileImageReadFromHelperInvocation;
end;

{$ifdef QNX}
constructor TVkImportScreenBufferInfoQNX.Create(const aBuffer:P_screen_buffer);
begin
 sType:=VK_STRUCTURE_TYPE_IMPORT_SCREEN_BUFFER_INFO_QNX;
 pNext:=nil;
 buffer:=aBuffer;
end;
{$endif}

{$ifdef QNX}
constructor TVkScreenBufferPropertiesQNX.Create(const aAllocationSize:TVkDeviceSize;
                                                const aMemoryTypeBits:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_SCREEN_BUFFER_PROPERTIES_QNX;
 pNext:=nil;
 allocationSize:=aAllocationSize;
 memoryTypeBits:=aMemoryTypeBits;
end;
{$endif}

{$ifdef QNX}
constructor TVkScreenBufferFormatPropertiesQNX.Create(const aFormat:TVkFormat;
                                                      const aExternalFormat:TVkUInt64;
                                                      const aScreenUsage:TVkUInt64;
                                                      const aFormatFeatures:TVkFormatFeatureFlags;
                                                      const aSamplerYcbcrConversionComponents:TVkComponentMapping;
                                                      const aSuggestedYcbcrModel:TVkSamplerYcbcrModelConversion;
                                                      const aSuggestedYcbcrRange:TVkSamplerYcbcrRange;
                                                      const aSuggestedXChromaOffset:TVkChromaLocation;
                                                      const aSuggestedYChromaOffset:TVkChromaLocation);
begin
 sType:=VK_STRUCTURE_TYPE_SCREEN_BUFFER_FORMAT_PROPERTIES_QNX;
 pNext:=nil;
 format:=aFormat;
 externalFormat:=aExternalFormat;
 screenUsage:=aScreenUsage;
 formatFeatures:=aFormatFeatures;
 samplerYcbcrConversionComponents:=aSamplerYcbcrConversionComponents;
 suggestedYcbcrModel:=aSuggestedYcbcrModel;
 suggestedYcbcrRange:=aSuggestedYcbcrRange;
 suggestedXChromaOffset:=aSuggestedXChromaOffset;
 suggestedYChromaOffset:=aSuggestedYChromaOffset;
end;
{$endif}

{$ifdef QNX}
constructor TVkExternalFormatQNX.Create(const aExternalFormat:TVkUInt64);
begin
 sType:=VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_QNX;
 pNext:=nil;
 externalFormat:=aExternalFormat;
end;
{$endif}

{$ifdef QNX}
constructor TVkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX.Create(const aScreenBufferImport:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX;
 pNext:=nil;
 screenBufferImport:=aScreenBufferImport;
end;
{$endif}

constructor TVkPhysicalDeviceCooperativeMatrixFeaturesKHR.Create(const aCooperativeMatrix:TVkBool32;
                                                                 const aCooperativeMatrixRobustBufferAccess:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR;
 pNext:=nil;
 cooperativeMatrix:=aCooperativeMatrix;
 cooperativeMatrixRobustBufferAccess:=aCooperativeMatrixRobustBufferAccess;
end;

constructor TVkCooperativeMatrixPropertiesKHR.Create(const aMSize:TVkUInt32;
                                                     const aNSize:TVkUInt32;
                                                     const aKSize:TVkUInt32;
                                                     const aAType:TVkComponentTypeKHR;
                                                     const aBType:TVkComponentTypeKHR;
                                                     const aCType:TVkComponentTypeKHR;
                                                     const aResultType:TVkComponentTypeKHR;
                                                     const aSaturatingAccumulation:TVkBool32;
                                                     const aScope:TVkScopeKHR);
begin
 sType:=VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_KHR;
 pNext:=nil;
 MSize:=aMSize;
 NSize:=aNSize;
 KSize:=aKSize;
 AType:=aAType;
 BType:=aBType;
 CType:=aCType;
 ResultType:=aResultType;
 saturatingAccumulation:=aSaturatingAccumulation;
 scope:=aScope;
end;

constructor TVkPhysicalDeviceCooperativeMatrixPropertiesKHR.Create(const aCooperativeMatrixSupportedStages:TVkShaderStageFlags);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR;
 pNext:=nil;
 cooperativeMatrixSupportedStages:=aCooperativeMatrixSupportedStages;
end;

constructor TVkPhysicalDeviceShaderEnqueuePropertiesAMDX.Create(const aMaxExecutionGraphDepth:TVkUInt32;
                                                                const aMaxExecutionGraphShaderOutputNodes:TVkUInt32;
                                                                const aMaxExecutionGraphShaderPayloadSize:TVkUInt32;
                                                                const aMaxExecutionGraphShaderPayloadCount:TVkUInt32;
                                                                const aExecutionGraphDispatchAddressAlignment:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_PROPERTIES_AMDX;
 pNext:=nil;
 maxExecutionGraphDepth:=aMaxExecutionGraphDepth;
 maxExecutionGraphShaderOutputNodes:=aMaxExecutionGraphShaderOutputNodes;
 maxExecutionGraphShaderPayloadSize:=aMaxExecutionGraphShaderPayloadSize;
 maxExecutionGraphShaderPayloadCount:=aMaxExecutionGraphShaderPayloadCount;
 executionGraphDispatchAddressAlignment:=aExecutionGraphDispatchAddressAlignment;
end;

constructor TVkPhysicalDeviceShaderEnqueueFeaturesAMDX.Create(const aShaderEnqueue:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_FEATURES_AMDX;
 pNext:=nil;
 shaderEnqueue:=aShaderEnqueue;
end;

constructor TVkExecutionGraphPipelineCreateInfoAMDX.Create(const aFlags:TVkPipelineCreateFlags;
                                                           const aStageCount:TVkUInt32;
                                                           const aPStages:PVkPipelineShaderStageCreateInfo;
                                                           const aPLibraryInfo:PVkPipelineLibraryCreateInfoKHR;
                                                           const aLayout:TVkPipelineLayout;
                                                           const aBasePipelineHandle:TVkPipeline;
                                                           const aBasePipelineIndex:TVkInt32);
begin
 sType:=VK_STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_CREATE_INFO_AMDX;
 pNext:=nil;
 flags:=aFlags;
 stageCount:=aStageCount;
 pStages:=aPStages;
 pLibraryInfo:=aPLibraryInfo;
 layout:=aLayout;
 basePipelineHandle:=aBasePipelineHandle;
 basePipelineIndex:=aBasePipelineIndex;
end;

constructor TVkPipelineShaderStageNodeCreateInfoAMDX.Create(const aPName:PVkChar;
                                                            const aIndex:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_NODE_CREATE_INFO_AMDX;
 pNext:=nil;
 pName:=aPName;
 index:=aIndex;
end;

constructor TVkExecutionGraphPipelineScratchSizeAMDX.Create(const aSize:TVkDeviceSize);
begin
 sType:=VK_STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_SCRATCH_SIZE_AMDX;
 pNext:=nil;
 size:=aSize;
end;

constructor TVkDispatchGraphInfoAMDX.Create(const aNodeIndex:TVkUInt32;
                                            const aPayloadCount:TVkUInt32;
                                            const aPayloads:TVkDeviceOrHostAddressConstAMDX;
                                            const aPayloadStride:TVkUInt64);
begin
 nodeIndex:=aNodeIndex;
 payloadCount:=aPayloadCount;
 payloads:=aPayloads;
 payloadStride:=aPayloadStride;
end;

constructor TVkDispatchGraphCountInfoAMDX.Create(const aCount:TVkUInt32;
                                                 const aInfos:TVkDeviceOrHostAddressConstAMDX;
                                                 const aStride:TVkUInt64);
begin
 count:=aCount;
 infos:=aInfos;
 stride:=aStride;
end;

constructor TVkPhysicalDeviceCubicClampFeaturesQCOM.Create(const aCubicRangeClamp:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM;
 pNext:=nil;
 cubicRangeClamp:=aCubicRangeClamp;
end;

constructor TVkPhysicalDeviceYcbcrDegammaFeaturesQCOM.Create(const aYcbcrDegamma:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_DEGAMMA_FEATURES_QCOM;
 pNext:=nil;
 ycbcrDegamma:=aYcbcrDegamma;
end;

constructor TVkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM.Create(const aEnableYDegamma:TVkBool32;
                                                                       const aEnableCbCrDegamma:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_YCBCR_DEGAMMA_CREATE_INFO_QCOM;
 pNext:=nil;
 enableYDegamma:=aEnableYDegamma;
 enableCbCrDegamma:=aEnableCbCrDegamma;
end;

constructor TVkPhysicalDeviceCubicWeightsFeaturesQCOM.Create(const aSelectableCubicWeights:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_WEIGHTS_FEATURES_QCOM;
 pNext:=nil;
 selectableCubicWeights:=aSelectableCubicWeights;
end;

constructor TVkSamplerCubicWeightsCreateInfoQCOM.Create(const aCubicWeights:TVkCubicFilterWeightsQCOM);
begin
 sType:=VK_STRUCTURE_TYPE_SAMPLER_CUBIC_WEIGHTS_CREATE_INFO_QCOM;
 pNext:=nil;
 cubicWeights:=aCubicWeights;
end;

constructor TVkBlitImageCubicWeightsInfoQCOM.Create(const aCubicWeights:TVkCubicFilterWeightsQCOM);
begin
 sType:=VK_STRUCTURE_TYPE_BLIT_IMAGE_CUBIC_WEIGHTS_INFO_QCOM;
 pNext:=nil;
 cubicWeights:=aCubicWeights;
end;

constructor TVkPhysicalDeviceImageProcessing2FeaturesQCOM.Create(const aTextureBlockMatch2:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_FEATURES_QCOM;
 pNext:=nil;
 textureBlockMatch2:=aTextureBlockMatch2;
end;

constructor TVkPhysicalDeviceImageProcessing2PropertiesQCOM.Create(const aMaxBlockMatchWindow:TVkExtent2D);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_PROPERTIES_QCOM;
 pNext:=nil;
 maxBlockMatchWindow:=aMaxBlockMatchWindow;
end;

constructor TVkSamplerBlockMatchWindowCreateInfoQCOM.Create(const aWindowExtent:TVkExtent2D;
                                                            const aWindowCompareMode:TVkBlockMatchWindowCompareModeQCOM);
begin
 sType:=VK_STRUCTURE_TYPE_SAMPLER_BLOCK_MATCH_WINDOW_CREATE_INFO_QCOM;
 pNext:=nil;
 windowExtent:=aWindowExtent;
 windowCompareMode:=aWindowCompareMode;
end;

constructor TVkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV.Create(const aDescriptorPoolOverallocation:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV;
 pNext:=nil;
 descriptorPoolOverallocation:=aDescriptorPoolOverallocation;
end;

constructor TVkPhysicalDeviceLayeredDriverPropertiesMSFT.Create(const aUnderlyingAPI:TVkLayeredDriverUnderlyingApiMSFT);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_DRIVER_PROPERTIES_MSFT;
 pNext:=nil;
 underlyingAPI:=aUnderlyingAPI;
end;

{$ifdef Android}
constructor TVkPhysicalDeviceExternalFormatResolveFeaturesANDROID.Create(const aExternalFormatResolve:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID;
 pNext:=nil;
 externalFormatResolve:=aExternalFormatResolve;
end;
{$endif}

{$ifdef Android}
constructor TVkPhysicalDeviceExternalFormatResolvePropertiesANDROID.Create(const aNullColorAttachmentWithExternalFormatResolve:TVkBool32;
                                                                           const aExternalFormatResolveChromaOffsetX:TVkChromaLocation;
                                                                           const aExternalFormatResolveChromaOffsetY:TVkChromaLocation);
begin
 sType:=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID;
 pNext:=nil;
 nullColorAttachmentWithExternalFormatResolve:=aNullColorAttachmentWithExternalFormatResolve;
 externalFormatResolveChromaOffsetX:=aExternalFormatResolveChromaOffsetX;
 externalFormatResolveChromaOffsetY:=aExternalFormatResolveChromaOffsetY;
end;
{$endif}

{$ifdef Android}
constructor TVkAndroidHardwareBufferFormatResolvePropertiesANDROID.Create(const aColorAttachmentFormat:TVkFormat);
begin
 sType:=VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID;
 pNext:=nil;
 colorAttachmentFormat:=aColorAttachmentFormat;
end;
{$endif}

constructor TVkLatencySleepModeInfoNV.Create(const aLowLatencyMode:TVkBool32;
                                             const aLowLatencyBoost:TVkBool32;
                                             const aMinimumIntervalUs:TVkUInt32);
begin
 sType:=VK_STRUCTURE_TYPE_LATENCY_SLEEP_MODE_INFO_NV;
 pNext:=nil;
 lowLatencyMode:=aLowLatencyMode;
 lowLatencyBoost:=aLowLatencyBoost;
 minimumIntervalUs:=aMinimumIntervalUs;
end;

constructor TVkLatencySleepInfoNV.Create(const aSignalSemaphore:TVkSemaphore;
                                         const aValue:TVkUInt64);
begin
 sType:=VK_STRUCTURE_TYPE_LATENCY_SLEEP_INFO_NV;
 pNext:=nil;
 signalSemaphore:=aSignalSemaphore;
 value:=aValue;
end;

constructor TVkSetLatencyMarkerInfoNV.Create(const aPresentID:TVkUInt64;
                                             const aMarker:TVkLatencyMarkerNV);
begin
 sType:=VK_STRUCTURE_TYPE_SET_LATENCY_MARKER_INFO_NV;
 pNext:=nil;
 presentID:=aPresentID;
 marker:=aMarker;
end;

constructor TVkLatencyTimingsFrameReportNV.Create(const aPresentID:TVkUInt64;
                                                  const aInputSampleTimeUs:TVkUInt64;
                                                  const aSimStartTimeUs:TVkUInt64;
                                                  const aSimEndTimeUs:TVkUInt64;
                                                  const aRenderSubmitStartTimeUs:TVkUInt64;
                                                  const aRenderSubmitEndTimeUs:TVkUInt64;
                                                  const aPresentStartTimeUs:TVkUInt64;
                                                  const aPresentEndTimeUs:TVkUInt64;
                                                  const aDriverStartTimeUs:TVkUInt64;
                                                  const aDriverEndTimeUs:TVkUInt64;
                                                  const aOsRenderQueueStartTimeUs:TVkUInt64;
                                                  const aOsRenderQueueEndTimeUs:TVkUInt64;
                                                  const aGpuRenderStartTimeUs:TVkUInt64;
                                                  const aGpuRenderEndTimeUs:TVkUInt64);
begin
 sType:=VK_STRUCTURE_TYPE_LATENCY_TIMINGS_FRAME_REPORT_NV;
 pNext:=nil;
 presentID:=aPresentID;
 inputSampleTimeUs:=aInputSampleTimeUs;
 simStartTimeUs:=aSimStartTimeUs;
 simEndTimeUs:=aSimEndTimeUs;
 renderSubmitStartTimeUs:=aRenderSubmitStartTimeUs;
 renderSubmitEndTimeUs:=aRenderSubmitEndTimeUs;
 presentStartTimeUs:=aPresentStartTimeUs;
 presentEndTimeUs:=aPresentEndTimeUs;
 driverStartTimeUs:=aDriverStartTimeUs;
 driverEndTimeUs:=aDriverEndTimeUs;
 osRenderQueueStartTimeUs:=aOsRenderQueueStartTimeUs;
 osRenderQueueEndTimeUs:=aOsRenderQueueEndTimeUs;
 gpuRenderStartTimeUs:=aGpuRenderStartTimeUs;
 gpuRenderEndTimeUs:=aGpuRenderEndTimeUs;
end;

constructor TVkGetLatencyMarkerInfoNV.Create(const aPTimings:PVkLatencyTimingsFrameReportNV);
begin
 sType:=VK_STRUCTURE_TYPE_GET_LATENCY_MARKER_INFO_NV;
 pNext:=nil;
 pTimings:=aPTimings;
end;

constructor TVkOutOfBandQueueTypeInfoNV.Create(const aQueueType:TVkOutOfBandQueueTypeNV);
begin
 sType:=VK_STRUCTURE_TYPE_OUT_OF_BAND_QUEUE_TYPE_INFO_NV;
 pNext:=nil;
 queueType:=aQueueType;
end;

constructor TVkLatencySubmissionPresentIdNV.Create(const aPresentID:TVkUInt64);
begin
 sType:=VK_STRUCTURE_TYPE_LATENCY_SUBMISSION_PRESENT_ID_NV;
 pNext:=nil;
 presentID:=aPresentID;
end;

constructor TVkSwapchainLatencyCreateInfoNV.Create(const aLatencyModeEnable:TVkBool32);
begin
 sType:=VK_STRUCTURE_TYPE_SWAPCHAIN_LATENCY_CREATE_INFO_NV;
 pNext:=nil;
 latencyModeEnable:=aLatencyModeEnable;
end;

constructor TVkLatencySurfaceCapabilitiesNV.Create(const aPresentModeCount:TVkUInt32;
                                                   const aPPresentModes:PVkPresentModeKHR);
begin
 sType:=VK_STRUCTURE_TYPE_LATENCY_SURFACE_CAPABILITIES_NV;
 pNext:=nil;
 presentModeCount:=aPresentModeCount;
 pPresentModes:=aPPresentModes;
end;
{$endif}

constructor TVulkan.Create;
begin
 inherited Create;
 FillChar(fCommands,SizeOf(TVulkanCommands),#0);
end;

constructor TVulkan.Create(const AVulkanCommands:TVulkanCommands);
begin
 inherited Create;
 fCommands:=AVulkanCommands;
end;

destructor TVulkan.Destroy;
begin
 inherited Destroy;
end;

function TVulkan.CreateInstance(const pCreateInfo:PVkInstanceCreateInfo;const pAllocator:PVkAllocationCallbacks;pInstance:PVkInstance):TVkResult;
begin
 result:=fCommands.CreateInstance(pCreateInfo,pAllocator,pInstance);
end;

procedure TVulkan.DestroyInstance(instance:TVkInstance;const pAllocator:PVkAllocationCallbacks);
begin
 fCommands.DestroyInstance(instance,pAllocator);
end;

function TVulkan.EnumeratePhysicalDevices(instance:TVkInstance;pPhysicalDeviceCount:PVkUInt32;pPhysicalDevices:PVkPhysicalDevice):TVkResult;
begin
 result:=fCommands.EnumeratePhysicalDevices(instance,pPhysicalDeviceCount,pPhysicalDevices);
end;

function TVulkan.GetDeviceProcAddr(device:TVkDevice;const pName:PVkChar):TPFN_vkVoidFunction;
begin
 result:=fCommands.GetDeviceProcAddr(device,pName);
end;

function TVulkan.GetInstanceProcAddr(instance:TVkInstance;const pName:PVkChar):TPFN_vkVoidFunction;
begin
 result:=fCommands.GetInstanceProcAddr(instance,pName);
end;

procedure TVulkan.GetPhysicalDeviceProperties(physicalDevice:TVkPhysicalDevice;pProperties:PVkPhysicalDeviceProperties);
begin
 fCommands.GetPhysicalDeviceProperties(physicalDevice,pProperties);
end;

procedure TVulkan.GetPhysicalDeviceQueueFamilyProperties(physicalDevice:TVkPhysicalDevice;pQueueFamilyPropertyCount:PVkUInt32;pQueueFamilyProperties:PVkQueueFamilyProperties);
begin
 fCommands.GetPhysicalDeviceQueueFamilyProperties(physicalDevice,pQueueFamilyPropertyCount,pQueueFamilyProperties);
end;

procedure TVulkan.GetPhysicalDeviceMemoryProperties(physicalDevice:TVkPhysicalDevice;pMemoryProperties:PVkPhysicalDeviceMemoryProperties);
begin
 fCommands.GetPhysicalDeviceMemoryProperties(physicalDevice,pMemoryProperties);
end;

procedure TVulkan.GetPhysicalDeviceFeatures(physicalDevice:TVkPhysicalDevice;pFeatures:PVkPhysicalDeviceFeatures);
begin
 fCommands.GetPhysicalDeviceFeatures(physicalDevice,pFeatures);
end;

procedure TVulkan.GetPhysicalDeviceFormatProperties(physicalDevice:TVkPhysicalDevice;format:TVkFormat;pFormatProperties:PVkFormatProperties);
begin
 fCommands.GetPhysicalDeviceFormatProperties(physicalDevice,format,pFormatProperties);
end;

function TVulkan.GetPhysicalDeviceImageFormatProperties(physicalDevice:TVkPhysicalDevice;format:TVkFormat;type_:TVkImageType;tiling:TVkImageTiling;usage:TVkImageUsageFlags;flags:TVkImageCreateFlags;pImageFormatProperties:PVkImageFormatProperties):TVkResult;
begin
 result:=fCommands.GetPhysicalDeviceImageFormatProperties(physicalDevice,format,type_,tiling,usage,flags,pImageFormatProperties);
end;

function TVulkan.CreateDevice(physicalDevice:TVkPhysicalDevice;const pCreateInfo:PVkDeviceCreateInfo;const pAllocator:PVkAllocationCallbacks;pDevice:PVkDevice):TVkResult;
begin
 result:=fCommands.CreateDevice(physicalDevice,pCreateInfo,pAllocator,pDevice);
end;

procedure TVulkan.DestroyDevice(device:TVkDevice;const pAllocator:PVkAllocationCallbacks);
begin
 fCommands.DestroyDevice(device,pAllocator);
end;

function TVulkan.EnumerateInstanceVersion(pApiVersion:PVkUInt32):TVkResult;
begin
 result:=fCommands.EnumerateInstanceVersion(pApiVersion);
end;

function TVulkan.EnumerateInstanceLayerProperties(pPropertyCount:PVkUInt32;pProperties:PVkLayerProperties):TVkResult;
begin
 result:=fCommands.EnumerateInstanceLayerProperties(pPropertyCount,pProperties);
end;

function TVulkan.EnumerateInstanceExtensionProperties(const pLayerName:PVkChar;pPropertyCount:PVkUInt32;pProperties:PVkExtensionProperties):TVkResult;
begin
 result:=fCommands.EnumerateInstanceExtensionProperties(pLayerName,pPropertyCount,pProperties);
end;

function TVulkan.EnumerateDeviceLayerProperties(physicalDevice:TVkPhysicalDevice;pPropertyCount:PVkUInt32;pProperties:PVkLayerProperties):TVkResult;
begin
 result:=fCommands.EnumerateDeviceLayerProperties(physicalDevice,pPropertyCount,pProperties);
end;

function TVulkan.EnumerateDeviceExtensionProperties(physicalDevice:TVkPhysicalDevice;const pLayerName:PVkChar;pPropertyCount:PVkUInt32;pProperties:PVkExtensionProperties):TVkResult;
begin
 result:=fCommands.EnumerateDeviceExtensionProperties(physicalDevice,pLayerName,pPropertyCount,pProperties);
end;

procedure TVulkan.GetDeviceQueue(device:TVkDevice;queueFamilyIndex:TVkUInt32;queueIndex:TVkUInt32;pQueue:PVkQueue);
begin
 fCommands.GetDeviceQueue(device,queueFamilyIndex,queueIndex,pQueue);
end;

function TVulkan.QueueSubmit(queue:TVkQueue;submitCount:TVkUInt32;const pSubmits:PVkSubmitInfo;fence:TVkFence):TVkResult;
begin
 result:=fCommands.QueueSubmit(queue,submitCount,pSubmits,fence);
end;

function TVulkan.QueueWaitIdle(queue:TVkQueue):TVkResult;
begin
 result:=fCommands.QueueWaitIdle(queue);
end;

function TVulkan.DeviceWaitIdle(device:TVkDevice):TVkResult;
begin
 result:=fCommands.DeviceWaitIdle(device);
end;

function TVulkan.AllocateMemory(device:TVkDevice;const pAllocateInfo:PVkMemoryAllocateInfo;const pAllocator:PVkAllocationCallbacks;pMemory:PVkDeviceMemory):TVkResult;
begin
 result:=fCommands.AllocateMemory(device,pAllocateInfo,pAllocator,pMemory);
end;

procedure TVulkan.FreeMemory(device:TVkDevice;memory:TVkDeviceMemory;const pAllocator:PVkAllocationCallbacks);
begin
 fCommands.FreeMemory(device,memory,pAllocator);
end;

function TVulkan.MapMemory(device:TVkDevice;memory:TVkDeviceMemory;offset:TVkDeviceSize;size:TVkDeviceSize;flags:TVkMemoryMapFlags;ppData:PPVkVoid):TVkResult;
begin
 result:=fCommands.MapMemory(device,memory,offset,size,flags,ppData);
end;

procedure TVulkan.UnmapMemory(device:TVkDevice;memory:TVkDeviceMemory);
begin
 fCommands.UnmapMemory(device,memory);
end;

function TVulkan.FlushMappedMemoryRanges(device:TVkDevice;memoryRangeCount:TVkUInt32;const pMemoryRanges:PVkMappedMemoryRange):TVkResult;
begin
 result:=fCommands.FlushMappedMemoryRanges(device,memoryRangeCount,pMemoryRanges);
end;

function TVulkan.InvalidateMappedMemoryRanges(device:TVkDevice;memoryRangeCount:TVkUInt32;const pMemoryRanges:PVkMappedMemoryRange):TVkResult;
begin
 result:=fCommands.InvalidateMappedMemoryRanges(device,memoryRangeCount,pMemoryRanges);
end;

procedure TVulkan.GetDeviceMemoryCommitment(device:TVkDevice;memory:TVkDeviceMemory;pCommittedMemoryInBytes:PVkDeviceSize);
begin
 fCommands.GetDeviceMemoryCommitment(device,memory,pCommittedMemoryInBytes);
end;

procedure TVulkan.GetBufferMemoryRequirements(device:TVkDevice;buffer:TVkBuffer;pMemoryRequirements:PVkMemoryRequirements);
begin
 fCommands.GetBufferMemoryRequirements(device,buffer,pMemoryRequirements);
end;

function TVulkan.BindBufferMemory(device:TVkDevice;buffer:TVkBuffer;memory:TVkDeviceMemory;memoryOffset:TVkDeviceSize):TVkResult;
begin
 result:=fCommands.BindBufferMemory(device,buffer,memory,memoryOffset);
end;

procedure TVulkan.GetImageMemoryRequirements(device:TVkDevice;image:TVkImage;pMemoryRequirements:PVkMemoryRequirements);
begin
 fCommands.GetImageMemoryRequirements(device,image,pMemoryRequirements);
end;

function TVulkan.BindImageMemory(device:TVkDevice;image:TVkImage;memory:TVkDeviceMemory;memoryOffset:TVkDeviceSize):TVkResult;
begin
 result:=fCommands.BindImageMemory(device,image,memory,memoryOffset);
end;

procedure TVulkan.GetImageSparseMemoryRequirements(device:TVkDevice;image:TVkImage;pSparseMemoryRequirementCount:PVkUInt32;pSparseMemoryRequirements:PVkSparseImageMemoryRequirements);
begin
 fCommands.GetImageSparseMemoryRequirements(device,image,pSparseMemoryRequirementCount,pSparseMemoryRequirements);
end;

procedure TVulkan.GetPhysicalDeviceSparseImageFormatProperties(physicalDevice:TVkPhysicalDevice;format:TVkFormat;type_:TVkImageType;samples:TVkSampleCountFlagBits;usage:TVkImageUsageFlags;tiling:TVkImageTiling;pPropertyCount:PVkUInt32;pProperties:PVkSparseImageFormatProperties);
begin
 fCommands.GetPhysicalDeviceSparseImageFormatProperties(physicalDevice,format,type_,samples,usage,tiling,pPropertyCount,pProperties);
end;

function TVulkan.QueueBindSparse(queue:TVkQueue;bindInfoCount:TVkUInt32;const pBindInfo:PVkBindSparseInfo;fence:TVkFence):TVkResult;
begin
 result:=fCommands.QueueBindSparse(queue,bindInfoCount,pBindInfo,fence);
end;

function TVulkan.CreateFence(device:TVkDevice;const pCreateInfo:PVkFenceCreateInfo;const pAllocator:PVkAllocationCallbacks;pFence:PVkFence):TVkResult;
begin
 result:=fCommands.CreateFence(device,pCreateInfo,pAllocator,pFence);
end;

procedure TVulkan.DestroyFence(device:TVkDevice;fence:TVkFence;const pAllocator:PVkAllocationCallbacks);
begin
 fCommands.DestroyFence(device,fence,pAllocator);
end;

function TVulkan.ResetFences(device:TVkDevice;fenceCount:TVkUInt32;const pFences:PVkFence):TVkResult;
begin
 result:=fCommands.ResetFences(device,fenceCount,pFences);
end;

function TVulkan.GetFenceStatus(device:TVkDevice;fence:TVkFence):TVkResult;
begin
 result:=fCommands.GetFenceStatus(device,fence);
end;

function TVulkan.WaitForFences(device:TVkDevice;fenceCount:TVkUInt32;const pFences:PVkFence;waitAll:TVkBool32;timeout:TVkUInt64):TVkResult;
begin
 result:=fCommands.WaitForFences(device,fenceCount,pFences,waitAll,timeout);
end;

function TVulkan.CreateSemaphore(device:TVkDevice;const pCreateInfo:PVkSemaphoreCreateInfo;const pAllocator:PVkAllocationCallbacks;pSemaphore:PVkSemaphore):TVkResult;
begin
 result:=fCommands.CreateSemaphore(device,pCreateInfo,pAllocator,pSemaphore);
end;

procedure TVulkan.DestroySemaphore(device:TVkDevice;semaphore:TVkSemaphore;const pAllocator:PVkAllocationCallbacks);
begin
 fCommands.DestroySemaphore(device,semaphore,pAllocator);
end;

function TVulkan.CreateEvent(device:TVkDevice;const pCreateInfo:PVkEventCreateInfo;const pAllocator:PVkAllocationCallbacks;pEvent:PVkEvent):TVkResult;
begin
 result:=fCommands.CreateEvent(device,pCreateInfo,pAllocator,pEvent);
end;

procedure TVulkan.DestroyEvent(device:TVkDevice;event:TVkEvent;const pAllocator:PVkAllocationCallbacks);
begin
 fCommands.DestroyEvent(device,event,pAllocator);
end;

function TVulkan.GetEventStatus(device:TVkDevice;event:TVkEvent):TVkResult;
begin
 result:=fCommands.GetEventStatus(device,event);
end;

function TVulkan.SetEvent(device:TVkDevice;event:TVkEvent):TVkResult;
begin
 result:=fCommands.SetEvent(device,event);
end;

function TVulkan.ResetEvent(device:TVkDevice;event:TVkEvent):TVkResult;
begin
 result:=fCommands.ResetEvent(device,event);
end;

function TVulkan.CreateQueryPool(device:TVkDevice;const pCreateInfo:PVkQueryPoolCreateInfo;const pAllocator:PVkAllocationCallbacks;pQueryPool:PVkQueryPool):TVkResult;
begin
 result:=fCommands.CreateQueryPool(device,pCreateInfo,pAllocator,pQueryPool);
end;

procedure TVulkan.DestroyQueryPool(device:TVkDevice;queryPool:TVkQueryPool;const pAllocator:PVkAllocationCallbacks);
begin
 fCommands.DestroyQueryPool(device,queryPool,pAllocator);
end;

function TVulkan.GetQueryPoolResults(device:TVkDevice;queryPool:TVkQueryPool;firstQuery:TVkUInt32;queryCount:TVkUInt32;dataSize:TVkSize;pData:PVkVoid;stride:TVkDeviceSize;flags:TVkQueryResultFlags):TVkResult;
begin
 result:=fCommands.GetQueryPoolResults(device,queryPool,firstQuery,queryCount,dataSize,pData,stride,flags);
end;

procedure TVulkan.ResetQueryPool(device:TVkDevice;queryPool:TVkQueryPool;firstQuery:TVkUInt32;queryCount:TVkUInt32);
begin
 fCommands.ResetQueryPool(device,queryPool,firstQuery,queryCount);
end;

procedure TVulkan.ResetQueryPoolEXT(device:TVkDevice;queryPool:TVkQueryPool;firstQuery:TVkUInt32;queryCount:TVkUInt32);
begin
 fCommands.ResetQueryPoolEXT(device,queryPool,firstQuery,queryCount);
end;

function TVulkan.CreateBuffer(device:TVkDevice;const pCreateInfo:PVkBufferCreateInfo;const pAllocator:PVkAllocationCallbacks;pBuffer:PVkBuffer):TVkResult;
begin
 result:=fCommands.CreateBuffer(device,pCreateInfo,pAllocator,pBuffer);
end;

procedure TVulkan.DestroyBuffer(device:TVkDevice;buffer:TVkBuffer;const pAllocator:PVkAllocationCallbacks);
begin
 fCommands.DestroyBuffer(device,buffer,pAllocator);
end;

function TVulkan.CreateBufferView(device:TVkDevice;const pCreateInfo:PVkBufferViewCreateInfo;const pAllocator:PVkAllocationCallbacks;pView:PVkBufferView):TVkResult;
begin
 result:=fCommands.CreateBufferView(device,pCreateInfo,pAllocator,pView);
end;

procedure TVulkan.DestroyBufferView(device:TVkDevice;bufferView:TVkBufferView;const pAllocator:PVkAllocationCallbacks);
begin
 fCommands.DestroyBufferView(device,bufferView,pAllocator);
end;

function TVulkan.CreateImage(device:TVkDevice;const pCreateInfo:PVkImageCreateInfo;const pAllocator:PVkAllocationCallbacks;pImage:PVkImage):TVkResult;
begin
 result:=fCommands.CreateImage(device,pCreateInfo,pAllocator,pImage);
end;

procedure TVulkan.DestroyImage(device:TVkDevice;image:TVkImage;const pAllocator:PVkAllocationCallbacks);
begin
 fCommands.DestroyImage(device,image,pAllocator);
end;

procedure TVulkan.GetImageSubresourceLayout(device:TVkDevice;image:TVkImage;const pSubresource:PVkImageSubresource;pLayout:PVkSubresourceLayout);
begin
 fCommands.GetImageSubresourceLayout(device,image,pSubresource,pLayout);
end;

function TVulkan.CreateImageView(device:TVkDevice;const pCreateInfo:PVkImageViewCreateInfo;const pAllocator:PVkAllocationCallbacks;pView:PVkImageView):TVkResult;
begin
 result:=fCommands.CreateImageView(device,pCreateInfo,pAllocator,pView);
end;

procedure TVulkan.DestroyImageView(device:TVkDevice;imageView:TVkImageView;const pAllocator:PVkAllocationCallbacks);
begin
 fCommands.DestroyImageView(device,imageView,pAllocator);
end;

function TVulkan.CreateShaderModule(device:TVkDevice;const pCreateInfo:PVkShaderModuleCreateInfo;const pAllocator:PVkAllocationCallbacks;pShaderModule:PVkShaderModule):TVkResult;
begin
 result:=fCommands.CreateShaderModule(device,pCreateInfo,pAllocator,pShaderModule);
end;

procedure TVulkan.DestroyShaderModule(device:TVkDevice;shaderModule:TVkShaderModule;const pAllocator:PVkAllocationCallbacks);
begin
 fCommands.DestroyShaderModule(device,shaderModule,pAllocator);
end;

function TVulkan.CreatePipelineCache(device:TVkDevice;const pCreateInfo:PVkPipelineCacheCreateInfo;const pAllocator:PVkAllocationCallbacks;pPipelineCache:PVkPipelineCache):TVkResult;
begin
 result:=fCommands.CreatePipelineCache(device,pCreateInfo,pAllocator,pPipelineCache);
end;

procedure TVulkan.DestroyPipelineCache(device:TVkDevice;pipelineCache:TVkPipelineCache;const pAllocator:PVkAllocationCallbacks);
begin
 fCommands.DestroyPipelineCache(device,pipelineCache,pAllocator);
end;

function TVulkan.GetPipelineCacheData(device:TVkDevice;pipelineCache:TVkPipelineCache;pDataSize:PVkSize;pData:PVkVoid):TVkResult;
begin
 result:=fCommands.GetPipelineCacheData(device,pipelineCache,pDataSize,pData);
end;

function TVulkan.MergePipelineCaches(device:TVkDevice;dstCache:TVkPipelineCache;srcCacheCount:TVkUInt32;const pSrcCaches:PVkPipelineCache):TVkResult;
begin
 result:=fCommands.MergePipelineCaches(device,dstCache,srcCacheCount,pSrcCaches);
end;

function TVulkan.CreateGraphicsPipelines(device:TVkDevice;pipelineCache:TVkPipelineCache;createInfoCount:TVkUInt32;const pCreateInfos:PVkGraphicsPipelineCreateInfo;const pAllocator:PVkAllocationCallbacks;pPipelines:PVkPipeline):TVkResult;
begin
 result:=fCommands.CreateGraphicsPipelines(device,pipelineCache,createInfoCount,pCreateInfos,pAllocator,pPipelines);
end;

function TVulkan.CreateComputePipelines(device:TVkDevice;pipelineCache:TVkPipelineCache;createInfoCount:TVkUInt32;const pCreateInfos:PVkComputePipelineCreateInfo;const pAllocator:PVkAllocationCallbacks;pPipelines:PVkPipeline):TVkResult;
begin
 result:=fCommands.CreateComputePipelines(device,pipelineCache,createInfoCount,pCreateInfos,pAllocator,pPipelines);
end;

function TVulkan.GetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device:TVkDevice;renderpass:TVkRenderPass;pMaxWorkgroupSize:PVkExtent2D):TVkResult;
begin
 result:=fCommands.GetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device,renderpass,pMaxWorkgroupSize);
end;

procedure TVulkan.DestroyPipeline(device:TVkDevice;pipeline:TVkPipeline;const pAllocator:PVkAllocationCallbacks);
begin
 fCommands.DestroyPipeline(device,pipeline,pAllocator);
end;

function TVulkan.CreatePipelineLayout(device:TVkDevice;const pCreateInfo:PVkPipelineLayoutCreateInfo;const pAllocator:PVkAllocationCallbacks;pPipelineLayout:PVkPipelineLayout):TVkResult;
begin
 result:=fCommands.CreatePipelineLayout(device,pCreateInfo,pAllocator,pPipelineLayout);
end;

procedure TVulkan.DestroyPipelineLayout(device:TVkDevice;pipelineLayout:TVkPipelineLayout;const pAllocator:PVkAllocationCallbacks);
begin
 fCommands.DestroyPipelineLayout(device,pipelineLayout,pAllocator);
end;

function TVulkan.CreateSampler(device:TVkDevice;const pCreateInfo:PVkSamplerCreateInfo;const pAllocator:PVkAllocationCallbacks;pSampler:PVkSampler):TVkResult;
begin
 result:=fCommands.CreateSampler(device,pCreateInfo,pAllocator,pSampler);
end;

procedure TVulkan.DestroySampler(device:TVkDevice;sampler:TVkSampler;const pAllocator:PVkAllocationCallbacks);
begin
 fCommands.DestroySampler(device,sampler,pAllocator);
end;

function TVulkan.CreateDescriptorSetLayout(device:TVkDevice;const pCreateInfo:PVkDescriptorSetLayoutCreateInfo;const pAllocator:PVkAllocationCallbacks;pSetLayout:PVkDescriptorSetLayout):TVkResult;
begin
 result:=fCommands.CreateDescriptorSetLayout(device,pCreateInfo,pAllocator,pSetLayout);
end;

procedure TVulkan.DestroyDescriptorSetLayout(device:TVkDevice;descriptorSetLayout:TVkDescriptorSetLayout;const pAllocator:PVkAllocationCallbacks);
begin
 fCommands.DestroyDescriptorSetLayout(device,descriptorSetLayout,pAllocator);
end;

function TVulkan.CreateDescriptorPool(device:TVkDevice;const pCreateInfo:PVkDescriptorPoolCreateInfo;const pAllocator:PVkAllocationCallbacks;pDescriptorPool:PVkDescriptorPool):TVkResult;
begin
 result:=fCommands.CreateDescriptorPool(device,pCreateInfo,pAllocator,pDescriptorPool);
end;

procedure TVulkan.DestroyDescriptorPool(device:TVkDevice;descriptorPool:TVkDescriptorPool;const pAllocator:PVkAllocationCallbacks);
begin
 fCommands.DestroyDescriptorPool(device,descriptorPool,pAllocator);
end;

function TVulkan.ResetDescriptorPool(device:TVkDevice;descriptorPool:TVkDescriptorPool;flags:TVkDescriptorPoolResetFlags):TVkResult;
begin
 result:=fCommands.ResetDescriptorPool(device,descriptorPool,flags);
end;

function TVulkan.AllocateDescriptorSets(device:TVkDevice;const pAllocateInfo:PVkDescriptorSetAllocateInfo;pDescriptorSets:PVkDescriptorSet):TVkResult;
begin
 result:=fCommands.AllocateDescriptorSets(device,pAllocateInfo,pDescriptorSets);
end;

function TVulkan.FreeDescriptorSets(device:TVkDevice;descriptorPool:TVkDescriptorPool;descriptorSetCount:TVkUInt32;const pDescriptorSets:PVkDescriptorSet):TVkResult;
begin
 result:=fCommands.FreeDescriptorSets(device,descriptorPool,descriptorSetCount,pDescriptorSets);
end;

procedure TVulkan.UpdateDescriptorSets(device:TVkDevice;descriptorWriteCount:TVkUInt32;const pDescriptorWrites:PVkWriteDescriptorSet;descriptorCopyCount:TVkUInt32;const pDescriptorCopies:PVkCopyDescriptorSet);
begin
 fCommands.UpdateDescriptorSets(device,descriptorWriteCount,pDescriptorWrites,descriptorCopyCount,pDescriptorCopies);
end;

function TVulkan.CreateFramebuffer(device:TVkDevice;const pCreateInfo:PVkFramebufferCreateInfo;const pAllocator:PVkAllocationCallbacks;pFramebuffer:PVkFramebuffer):TVkResult;
begin
 result:=fCommands.CreateFramebuffer(device,pCreateInfo,pAllocator,pFramebuffer);
end;

procedure TVulkan.DestroyFramebuffer(device:TVkDevice;framebuffer:TVkFramebuffer;const pAllocator:PVkAllocationCallbacks);
begin
 fCommands.DestroyFramebuffer(device,framebuffer,pAllocator);
end;

function TVulkan.CreateRenderPass(device:TVkDevice;const pCreateInfo:PVkRenderPassCreateInfo;const pAllocator:PVkAllocationCallbacks;pRenderPass:PVkRenderPass):TVkResult;
begin
 result:=fCommands.CreateRenderPass(device,pCreateInfo,pAllocator,pRenderPass);
end;

procedure TVulkan.DestroyRenderPass(device:TVkDevice;renderPass:TVkRenderPass;const pAllocator:PVkAllocationCallbacks);
begin
 fCommands.DestroyRenderPass(device,renderPass,pAllocator);
end;

procedure TVulkan.GetRenderAreaGranularity(device:TVkDevice;renderPass:TVkRenderPass;pGranularity:PVkExtent2D);
begin
 fCommands.GetRenderAreaGranularity(device,renderPass,pGranularity);
end;

procedure TVulkan.GetRenderingAreaGranularityKHR(device:TVkDevice;const pRenderingAreaInfo:PVkRenderingAreaInfoKHR;pGranularity:PVkExtent2D);
begin
 fCommands.GetRenderingAreaGranularityKHR(device,pRenderingAreaInfo,pGranularity);
end;

function TVulkan.CreateCommandPool(device:TVkDevice;const pCreateInfo:PVkCommandPoolCreateInfo;const pAllocator:PVkAllocationCallbacks;pCommandPool:PVkCommandPool):TVkResult;
begin
 result:=fCommands.CreateCommandPool(device,pCreateInfo,pAllocator,pCommandPool);
end;

procedure TVulkan.DestroyCommandPool(device:TVkDevice;commandPool:TVkCommandPool;const pAllocator:PVkAllocationCallbacks);
begin
 fCommands.DestroyCommandPool(device,commandPool,pAllocator);
end;

function TVulkan.ResetCommandPool(device:TVkDevice;commandPool:TVkCommandPool;flags:TVkCommandPoolResetFlags):TVkResult;
begin
 result:=fCommands.ResetCommandPool(device,commandPool,flags);
end;

function TVulkan.AllocateCommandBuffers(device:TVkDevice;const pAllocateInfo:PVkCommandBufferAllocateInfo;pCommandBuffers:PVkCommandBuffer):TVkResult;
begin
 result:=fCommands.AllocateCommandBuffers(device,pAllocateInfo,pCommandBuffers);
end;

procedure TVulkan.FreeCommandBuffers(device:TVkDevice;commandPool:TVkCommandPool;commandBufferCount:TVkUInt32;const pCommandBuffers:PVkCommandBuffer);
begin
 fCommands.FreeCommandBuffers(device,commandPool,commandBufferCount,pCommandBuffers);
end;

function TVulkan.BeginCommandBuffer(commandBuffer:TVkCommandBuffer;const pBeginInfo:PVkCommandBufferBeginInfo):TVkResult;
begin
 result:=fCommands.BeginCommandBuffer(commandBuffer,pBeginInfo);
end;

function TVulkan.EndCommandBuffer(commandBuffer:TVkCommandBuffer):TVkResult;
begin
 result:=fCommands.EndCommandBuffer(commandBuffer);
end;

function TVulkan.ResetCommandBuffer(commandBuffer:TVkCommandBuffer;flags:TVkCommandBufferResetFlags):TVkResult;
begin
 result:=fCommands.ResetCommandBuffer(commandBuffer,flags);
end;

procedure TVulkan.CmdBindPipeline(commandBuffer:TVkCommandBuffer;pipelineBindPoint:TVkPipelineBindPoint;pipeline:TVkPipeline);
begin
 fCommands.CmdBindPipeline(commandBuffer,pipelineBindPoint,pipeline);
end;

procedure TVulkan.CmdSetAttachmentFeedbackLoopEnableEXT(commandBuffer:TVkCommandBuffer;aspectMask:TVkImageAspectFlags);
begin
 fCommands.CmdSetAttachmentFeedbackLoopEnableEXT(commandBuffer,aspectMask);
end;

procedure TVulkan.CmdSetViewport(commandBuffer:TVkCommandBuffer;firstViewport:TVkUInt32;viewportCount:TVkUInt32;const pViewports:PVkViewport);
begin
 fCommands.CmdSetViewport(commandBuffer,firstViewport,viewportCount,pViewports);
end;

procedure TVulkan.CmdSetScissor(commandBuffer:TVkCommandBuffer;firstScissor:TVkUInt32;scissorCount:TVkUInt32;const pScissors:PVkRect2D);
begin
 fCommands.CmdSetScissor(commandBuffer,firstScissor,scissorCount,pScissors);
end;

procedure TVulkan.CmdSetLineWidth(commandBuffer:TVkCommandBuffer;lineWidth:TVkFloat);
begin
 fCommands.CmdSetLineWidth(commandBuffer,lineWidth);
end;

procedure TVulkan.CmdSetDepthBias(commandBuffer:TVkCommandBuffer;depthBiasConstantFactor:TVkFloat;depthBiasClamp:TVkFloat;depthBiasSlopeFactor:TVkFloat);
begin
 fCommands.CmdSetDepthBias(commandBuffer,depthBiasConstantFactor,depthBiasClamp,depthBiasSlopeFactor);
end;

procedure TVulkan.CmdSetBlendConstants(commandBuffer:TVkCommandBuffer;const blendConstants:TVkFloat);
begin
 fCommands.CmdSetBlendConstants(commandBuffer,blendConstants);
end;

procedure TVulkan.CmdSetDepthBounds(commandBuffer:TVkCommandBuffer;minDepthBounds:TVkFloat;maxDepthBounds:TVkFloat);
begin
 fCommands.CmdSetDepthBounds(commandBuffer,minDepthBounds,maxDepthBounds);
end;

procedure TVulkan.CmdSetStencilCompareMask(commandBuffer:TVkCommandBuffer;faceMask:TVkStencilFaceFlags;compareMask:TVkUInt32);
begin
 fCommands.CmdSetStencilCompareMask(commandBuffer,faceMask,compareMask);
end;

procedure TVulkan.CmdSetStencilWriteMask(commandBuffer:TVkCommandBuffer;faceMask:TVkStencilFaceFlags;writeMask:TVkUInt32);
begin
 fCommands.CmdSetStencilWriteMask(commandBuffer,faceMask,writeMask);
end;

procedure TVulkan.CmdSetStencilReference(commandBuffer:TVkCommandBuffer;faceMask:TVkStencilFaceFlags;reference:TVkUInt32);
begin
 fCommands.CmdSetStencilReference(commandBuffer,faceMask,reference);
end;

procedure TVulkan.CmdBindDescriptorSets(commandBuffer:TVkCommandBuffer;pipelineBindPoint:TVkPipelineBindPoint;layout:TVkPipelineLayout;firstSet:TVkUInt32;descriptorSetCount:TVkUInt32;const pDescriptorSets:PVkDescriptorSet;dynamicOffsetCount:TVkUInt32;const pDynamicOffsets:PVkUInt32);
begin
 fCommands.CmdBindDescriptorSets(commandBuffer,pipelineBindPoint,layout,firstSet,descriptorSetCount,pDescriptorSets,dynamicOffsetCount,pDynamicOffsets);
end;

procedure TVulkan.CmdBindIndexBuffer(commandBuffer:TVkCommandBuffer;buffer:TVkBuffer;offset:TVkDeviceSize;indexType:TVkIndexType);
begin
 fCommands.CmdBindIndexBuffer(commandBuffer,buffer,offset,indexType);
end;

procedure TVulkan.CmdBindVertexBuffers(commandBuffer:TVkCommandBuffer;firstBinding:TVkUInt32;bindingCount:TVkUInt32;const pBuffers:PVkBuffer;const pOffsets:PVkDeviceSize);
begin
 fCommands.CmdBindVertexBuffers(commandBuffer,firstBinding,bindingCount,pBuffers,pOffsets);
end;

procedure TVulkan.CmdDraw(commandBuffer:TVkCommandBuffer;vertexCount:TVkUInt32;instanceCount:TVkUInt32;firstVertex:TVkUInt32;firstInstance:TVkUInt32);
begin
 fCommands.CmdDraw(commandBuffer,vertexCount,instanceCount,firstVertex,firstInstance);
end;

procedure TVulkan.CmdDrawIndexed(commandBuffer:TVkCommandBuffer;indexCount:TVkUInt32;instanceCount:TVkUInt32;firstIndex:TVkUInt32;vertexOffset:TVkInt32;firstInstance:TVkUInt32);
begin
 fCommands.CmdDrawIndexed(commandBuffer,indexCount,instanceCount,firstIndex,vertexOffset,firstInstance);
end;

procedure TVulkan.CmdDrawMultiEXT(commandBuffer:TVkCommandBuffer;drawCount:TVkUInt32;const pVertexInfo:PVkMultiDrawInfoEXT;instanceCount:TVkUInt32;firstInstance:TVkUInt32;stride:TVkUInt32);
begin
 fCommands.CmdDrawMultiEXT(commandBuffer,drawCount,pVertexInfo,instanceCount,firstInstance,stride);
end;

procedure TVulkan.CmdDrawMultiIndexedEXT(commandBuffer:TVkCommandBuffer;drawCount:TVkUInt32;const pIndexInfo:PVkMultiDrawIndexedInfoEXT;instanceCount:TVkUInt32;firstInstance:TVkUInt32;stride:TVkUInt32;const pVertexOffset:PVkInt32);
begin
 fCommands.CmdDrawMultiIndexedEXT(commandBuffer,drawCount,pIndexInfo,instanceCount,firstInstance,stride,pVertexOffset);
end;

procedure TVulkan.CmdDrawIndirect(commandBuffer:TVkCommandBuffer;buffer:TVkBuffer;offset:TVkDeviceSize;drawCount:TVkUInt32;stride:TVkUInt32);
begin
 fCommands.CmdDrawIndirect(commandBuffer,buffer,offset,drawCount,stride);
end;

procedure TVulkan.CmdDrawIndexedIndirect(commandBuffer:TVkCommandBuffer;buffer:TVkBuffer;offset:TVkDeviceSize;drawCount:TVkUInt32;stride:TVkUInt32);
begin
 fCommands.CmdDrawIndexedIndirect(commandBuffer,buffer,offset,drawCount,stride);
end;

procedure TVulkan.CmdDispatch(commandBuffer:TVkCommandBuffer;groupCountX:TVkUInt32;groupCountY:TVkUInt32;groupCountZ:TVkUInt32);
begin
 fCommands.CmdDispatch(commandBuffer,groupCountX,groupCountY,groupCountZ);
end;

procedure TVulkan.CmdDispatchIndirect(commandBuffer:TVkCommandBuffer;buffer:TVkBuffer;offset:TVkDeviceSize);
begin
 fCommands.CmdDispatchIndirect(commandBuffer,buffer,offset);
end;

procedure TVulkan.CmdSubpassShadingHUAWEI(commandBuffer:TVkCommandBuffer);
begin
 fCommands.CmdSubpassShadingHUAWEI(commandBuffer);
end;

procedure TVulkan.CmdDrawClusterHUAWEI(commandBuffer:TVkCommandBuffer;groupCountX:TVkUInt32;groupCountY:TVkUInt32;groupCountZ:TVkUInt32);
begin
 fCommands.CmdDrawClusterHUAWEI(commandBuffer,groupCountX,groupCountY,groupCountZ);
end;

procedure TVulkan.CmdDrawClusterIndirectHUAWEI(commandBuffer:TVkCommandBuffer;buffer:TVkBuffer;offset:TVkDeviceSize);
begin
 fCommands.CmdDrawClusterIndirectHUAWEI(commandBuffer,buffer,offset);
end;

procedure TVulkan.CmdUpdatePipelineIndirectBufferNV(commandBuffer:TVkCommandBuffer;pipelineBindPoint:TVkPipelineBindPoint;pipeline:TVkPipeline);
begin
 fCommands.CmdUpdatePipelineIndirectBufferNV(commandBuffer,pipelineBindPoint,pipeline);
end;

procedure TVulkan.CmdCopyBuffer(commandBuffer:TVkCommandBuffer;srcBuffer:TVkBuffer;dstBuffer:TVkBuffer;regionCount:TVkUInt32;const pRegions:PVkBufferCopy);
begin
 fCommands.CmdCopyBuffer(commandBuffer,srcBuffer,dstBuffer,regionCount,pRegions);
end;

procedure TVulkan.CmdCopyImage(commandBuffer:TVkCommandBuffer;srcImage:TVkImage;srcImageLayout:TVkImageLayout;dstImage:TVkImage;dstImageLayout:TVkImageLayout;regionCount:TVkUInt32;const pRegions:PVkImageCopy);
begin
 fCommands.CmdCopyImage(commandBuffer,srcImage,srcImageLayout,dstImage,dstImageLayout,regionCount,pRegions);
end;

procedure TVulkan.CmdBlitImage(commandBuffer:TVkCommandBuffer;srcImage:TVkImage;srcImageLayout:TVkImageLayout;dstImage:TVkImage;dstImageLayout:TVkImageLayout;regionCount:TVkUInt32;const pRegions:PVkImageBlit;filter:TVkFilter);
begin
 fCommands.CmdBlitImage(commandBuffer,srcImage,srcImageLayout,dstImage,dstImageLayout,regionCount,pRegions,filter);
end;

procedure TVulkan.CmdCopyBufferToImage(commandBuffer:TVkCommandBuffer;srcBuffer:TVkBuffer;dstImage:TVkImage;dstImageLayout:TVkImageLayout;regionCount:TVkUInt32;const pRegions:PVkBufferImageCopy);
begin
 fCommands.CmdCopyBufferToImage(commandBuffer,srcBuffer,dstImage,dstImageLayout,regionCount,pRegions);
end;

procedure TVulkan.CmdCopyImageToBuffer(commandBuffer:TVkCommandBuffer;srcImage:TVkImage;srcImageLayout:TVkImageLayout;dstBuffer:TVkBuffer;regionCount:TVkUInt32;const pRegions:PVkBufferImageCopy);
begin
 fCommands.CmdCopyImageToBuffer(commandBuffer,srcImage,srcImageLayout,dstBuffer,regionCount,pRegions);
end;

procedure TVulkan.CmdCopyMemoryIndirectNV(commandBuffer:TVkCommandBuffer;copyBufferAddress:TVkDeviceAddress;copyCount:TVkUInt32;stride:TVkUInt32);
begin
 fCommands.CmdCopyMemoryIndirectNV(commandBuffer,copyBufferAddress,copyCount,stride);
end;

procedure TVulkan.CmdCopyMemoryToImageIndirectNV(commandBuffer:TVkCommandBuffer;copyBufferAddress:TVkDeviceAddress;copyCount:TVkUInt32;stride:TVkUInt32;dstImage:TVkImage;dstImageLayout:TVkImageLayout;const pImageSubresources:PVkImageSubresourceLayers);
begin
 fCommands.CmdCopyMemoryToImageIndirectNV(commandBuffer,copyBufferAddress,copyCount,stride,dstImage,dstImageLayout,pImageSubresources);
end;

procedure TVulkan.CmdUpdateBuffer(commandBuffer:TVkCommandBuffer;dstBuffer:TVkBuffer;dstOffset:TVkDeviceSize;dataSize:TVkDeviceSize;const pData:PVkVoid);
begin
 fCommands.CmdUpdateBuffer(commandBuffer,dstBuffer,dstOffset,dataSize,pData);
end;

procedure TVulkan.CmdFillBuffer(commandBuffer:TVkCommandBuffer;dstBuffer:TVkBuffer;dstOffset:TVkDeviceSize;size:TVkDeviceSize;data:TVkUInt32);
begin
 fCommands.CmdFillBuffer(commandBuffer,dstBuffer,dstOffset,size,data);
end;

procedure TVulkan.CmdClearColorImage(commandBuffer:TVkCommandBuffer;image:TVkImage;imageLayout:TVkImageLayout;const pColor:PVkClearColorValue;rangeCount:TVkUInt32;const pRanges:PVkImageSubresourceRange);
begin
 fCommands.CmdClearColorImage(commandBuffer,image,imageLayout,pColor,rangeCount,pRanges);
end;

procedure TVulkan.CmdClearDepthStencilImage(commandBuffer:TVkCommandBuffer;image:TVkImage;imageLayout:TVkImageLayout;const pDepthStencil:PVkClearDepthStencilValue;rangeCount:TVkUInt32;const pRanges:PVkImageSubresourceRange);
begin
 fCommands.CmdClearDepthStencilImage(commandBuffer,image,imageLayout,pDepthStencil,rangeCount,pRanges);
end;

procedure TVulkan.CmdClearAttachments(commandBuffer:TVkCommandBuffer;attachmentCount:TVkUInt32;const pAttachments:PVkClearAttachment;rectCount:TVkUInt32;const pRects:PVkClearRect);
begin
 fCommands.CmdClearAttachments(commandBuffer,attachmentCount,pAttachments,rectCount,pRects);
end;

procedure TVulkan.CmdResolveImage(commandBuffer:TVkCommandBuffer;srcImage:TVkImage;srcImageLayout:TVkImageLayout;dstImage:TVkImage;dstImageLayout:TVkImageLayout;regionCount:TVkUInt32;const pRegions:PVkImageResolve);
begin
 fCommands.CmdResolveImage(commandBuffer,srcImage,srcImageLayout,dstImage,dstImageLayout,regionCount,pRegions);
end;

procedure TVulkan.CmdSetEvent(commandBuffer:TVkCommandBuffer;event:TVkEvent;stageMask:TVkPipelineStageFlags);
begin
 fCommands.CmdSetEvent(commandBuffer,event,stageMask);
end;

procedure TVulkan.CmdResetEvent(commandBuffer:TVkCommandBuffer;event:TVkEvent;stageMask:TVkPipelineStageFlags);
begin
 fCommands.CmdResetEvent(commandBuffer,event,stageMask);
end;

procedure TVulkan.CmdWaitEvents(commandBuffer:TVkCommandBuffer;eventCount:TVkUInt32;const pEvents:PVkEvent;srcStageMask:TVkPipelineStageFlags;dstStageMask:TVkPipelineStageFlags;memoryBarrierCount:TVkUInt32;const pMemoryBarriers:PVkMemoryBarrier;bufferMemoryBarrierCount:TVkUInt32;const pBufferMemoryBarriers:PVkBufferMemoryBarrier;imageMemoryBarrierCount:TVkUInt32;const pImageMemoryBarriers:PVkImageMemoryBarrier);
begin
 fCommands.CmdWaitEvents(commandBuffer,eventCount,pEvents,srcStageMask,dstStageMask,memoryBarrierCount,pMemoryBarriers,bufferMemoryBarrierCount,pBufferMemoryBarriers,imageMemoryBarrierCount,pImageMemoryBarriers);
end;

procedure TVulkan.CmdPipelineBarrier(commandBuffer:TVkCommandBuffer;srcStageMask:TVkPipelineStageFlags;dstStageMask:TVkPipelineStageFlags;dependencyFlags:TVkDependencyFlags;memoryBarrierCount:TVkUInt32;const pMemoryBarriers:PVkMemoryBarrier;bufferMemoryBarrierCount:TVkUInt32;const pBufferMemoryBarriers:PVkBufferMemoryBarrier;imageMemoryBarrierCount:TVkUInt32;const pImageMemoryBarriers:PVkImageMemoryBarrier);
begin
 fCommands.CmdPipelineBarrier(commandBuffer,srcStageMask,dstStageMask,dependencyFlags,memoryBarrierCount,pMemoryBarriers,bufferMemoryBarrierCount,pBufferMemoryBarriers,imageMemoryBarrierCount,pImageMemoryBarriers);
end;

procedure TVulkan.CmdBeginQuery(commandBuffer:TVkCommandBuffer;queryPool:TVkQueryPool;query:TVkUInt32;flags:TVkQueryControlFlags);
begin
 fCommands.CmdBeginQuery(commandBuffer,queryPool,query,flags);
end;

procedure TVulkan.CmdEndQuery(commandBuffer:TVkCommandBuffer;queryPool:TVkQueryPool;query:TVkUInt32);
begin
 fCommands.CmdEndQuery(commandBuffer,queryPool,query);
end;

procedure TVulkan.CmdBeginConditionalRenderingEXT(commandBuffer:TVkCommandBuffer;const pConditionalRenderingBegin:PVkConditionalRenderingBeginInfoEXT);
begin
 fCommands.CmdBeginConditionalRenderingEXT(commandBuffer,pConditionalRenderingBegin);
end;

procedure TVulkan.CmdEndConditionalRenderingEXT(commandBuffer:TVkCommandBuffer);
begin
 fCommands.CmdEndConditionalRenderingEXT(commandBuffer);
end;

procedure TVulkan.CmdResetQueryPool(commandBuffer:TVkCommandBuffer;queryPool:TVkQueryPool;firstQuery:TVkUInt32;queryCount:TVkUInt32);
begin
 fCommands.CmdResetQueryPool(commandBuffer,queryPool,firstQuery,queryCount);
end;

procedure TVulkan.CmdWriteTimestamp(commandBuffer:TVkCommandBuffer;pipelineStage:TVkPipelineStageFlagBits;queryPool:TVkQueryPool;query:TVkUInt32);
begin
 fCommands.CmdWriteTimestamp(commandBuffer,pipelineStage,queryPool,query);
end;

procedure TVulkan.CmdCopyQueryPoolResults(commandBuffer:TVkCommandBuffer;queryPool:TVkQueryPool;firstQuery:TVkUInt32;queryCount:TVkUInt32;dstBuffer:TVkBuffer;dstOffset:TVkDeviceSize;stride:TVkDeviceSize;flags:TVkQueryResultFlags);
begin
 fCommands.CmdCopyQueryPoolResults(commandBuffer,queryPool,firstQuery,queryCount,dstBuffer,dstOffset,stride,flags);
end;

procedure TVulkan.CmdPushConstants(commandBuffer:TVkCommandBuffer;layout:TVkPipelineLayout;stageFlags:TVkShaderStageFlags;offset:TVkUInt32;size:TVkUInt32;const pValues:PVkVoid);
begin
 fCommands.CmdPushConstants(commandBuffer,layout,stageFlags,offset,size,pValues);
end;

procedure TVulkan.CmdBeginRenderPass(commandBuffer:TVkCommandBuffer;const pRenderPassBegin:PVkRenderPassBeginInfo;contents:TVkSubpassContents);
begin
 fCommands.CmdBeginRenderPass(commandBuffer,pRenderPassBegin,contents);
end;

procedure TVulkan.CmdNextSubpass(commandBuffer:TVkCommandBuffer;contents:TVkSubpassContents);
begin
 fCommands.CmdNextSubpass(commandBuffer,contents);
end;

procedure TVulkan.CmdEndRenderPass(commandBuffer:TVkCommandBuffer);
begin
 fCommands.CmdEndRenderPass(commandBuffer);
end;

procedure TVulkan.CmdExecuteCommands(commandBuffer:TVkCommandBuffer;commandBufferCount:TVkUInt32;const pCommandBuffers:PVkCommandBuffer);
begin
 fCommands.CmdExecuteCommands(commandBuffer,commandBufferCount,pCommandBuffers);
end;

{$ifdef Android}
function TVulkan.CreateAndroidSurfaceKHR(instance:TVkInstance;const pCreateInfo:PVkAndroidSurfaceCreateInfoKHR;const pAllocator:PVkAllocationCallbacks;pSurface:PVkSurfaceKHR):TVkResult;
begin
 result:=fCommands.CreateAndroidSurfaceKHR(instance,pCreateInfo,pAllocator,pSurface);
end;
{$endif}

function TVulkan.GetPhysicalDeviceDisplayPropertiesKHR(physicalDevice:TVkPhysicalDevice;pPropertyCount:PVkUInt32;pProperties:PVkDisplayPropertiesKHR):TVkResult;
begin
 result:=fCommands.GetPhysicalDeviceDisplayPropertiesKHR(physicalDevice,pPropertyCount,pProperties);
end;

function TVulkan.GetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice:TVkPhysicalDevice;pPropertyCount:PVkUInt32;pProperties:PVkDisplayPlanePropertiesKHR):TVkResult;
begin
 result:=fCommands.GetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice,pPropertyCount,pProperties);
end;

function TVulkan.GetDisplayPlaneSupportedDisplaysKHR(physicalDevice:TVkPhysicalDevice;planeIndex:TVkUInt32;pDisplayCount:PVkUInt32;pDisplays:PVkDisplayKHR):TVkResult;
begin
 result:=fCommands.GetDisplayPlaneSupportedDisplaysKHR(physicalDevice,planeIndex,pDisplayCount,pDisplays);
end;

function TVulkan.GetDisplayModePropertiesKHR(physicalDevice:TVkPhysicalDevice;display:TVkDisplayKHR;pPropertyCount:PVkUInt32;pProperties:PVkDisplayModePropertiesKHR):TVkResult;
begin
 result:=fCommands.GetDisplayModePropertiesKHR(physicalDevice,display,pPropertyCount,pProperties);
end;

function TVulkan.CreateDisplayModeKHR(physicalDevice:TVkPhysicalDevice;display:TVkDisplayKHR;const pCreateInfo:PVkDisplayModeCreateInfoKHR;const pAllocator:PVkAllocationCallbacks;pMode:PVkDisplayModeKHR):TVkResult;
begin
 result:=fCommands.CreateDisplayModeKHR(physicalDevice,display,pCreateInfo,pAllocator,pMode);
end;

function TVulkan.GetDisplayPlaneCapabilitiesKHR(physicalDevice:TVkPhysicalDevice;mode:TVkDisplayModeKHR;planeIndex:TVkUInt32;pCapabilities:PVkDisplayPlaneCapabilitiesKHR):TVkResult;
begin
 result:=fCommands.GetDisplayPlaneCapabilitiesKHR(physicalDevice,mode,planeIndex,pCapabilities);
end;

function TVulkan.CreateDisplayPlaneSurfaceKHR(instance:TVkInstance;const pCreateInfo:PVkDisplaySurfaceCreateInfoKHR;const pAllocator:PVkAllocationCallbacks;pSurface:PVkSurfaceKHR):TVkResult;
begin
 result:=fCommands.CreateDisplayPlaneSurfaceKHR(instance,pCreateInfo,pAllocator,pSurface);
end;

function TVulkan.CreateSharedSwapchainsKHR(device:TVkDevice;swapchainCount:TVkUInt32;const pCreateInfos:PVkSwapchainCreateInfoKHR;const pAllocator:PVkAllocationCallbacks;pSwapchains:PVkSwapchainKHR):TVkResult;
begin
 result:=fCommands.CreateSharedSwapchainsKHR(device,swapchainCount,pCreateInfos,pAllocator,pSwapchains);
end;

procedure TVulkan.DestroySurfaceKHR(instance:TVkInstance;surface:TVkSurfaceKHR;const pAllocator:PVkAllocationCallbacks);
begin
 fCommands.DestroySurfaceKHR(instance,surface,pAllocator);
end;

function TVulkan.GetPhysicalDeviceSurfaceSupportKHR(physicalDevice:TVkPhysicalDevice;queueFamilyIndex:TVkUInt32;surface:TVkSurfaceKHR;pSupported:PVkBool32):TVkResult;
begin
 result:=fCommands.GetPhysicalDeviceSurfaceSupportKHR(physicalDevice,queueFamilyIndex,surface,pSupported);
end;

function TVulkan.GetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice:TVkPhysicalDevice;surface:TVkSurfaceKHR;pSurfaceCapabilities:PVkSurfaceCapabilitiesKHR):TVkResult;
begin
 result:=fCommands.GetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice,surface,pSurfaceCapabilities);
end;

function TVulkan.GetPhysicalDeviceSurfaceFormatsKHR(physicalDevice:TVkPhysicalDevice;surface:TVkSurfaceKHR;pSurfaceFormatCount:PVkUInt32;pSurfaceFormats:PVkSurfaceFormatKHR):TVkResult;
begin
 result:=fCommands.GetPhysicalDeviceSurfaceFormatsKHR(physicalDevice,surface,pSurfaceFormatCount,pSurfaceFormats);
end;

function TVulkan.GetPhysicalDeviceSurfacePresentModesKHR(physicalDevice:TVkPhysicalDevice;surface:TVkSurfaceKHR;pPresentModeCount:PVkUInt32;pPresentModes:PVkPresentModeKHR):TVkResult;
begin
 result:=fCommands.GetPhysicalDeviceSurfacePresentModesKHR(physicalDevice,surface,pPresentModeCount,pPresentModes);
end;

function TVulkan.CreateSwapchainKHR(device:TVkDevice;const pCreateInfo:PVkSwapchainCreateInfoKHR;const pAllocator:PVkAllocationCallbacks;pSwapchain:PVkSwapchainKHR):TVkResult;
begin
 result:=fCommands.CreateSwapchainKHR(device,pCreateInfo,pAllocator,pSwapchain);
end;

procedure TVulkan.DestroySwapchainKHR(device:TVkDevice;swapchain:TVkSwapchainKHR;const pAllocator:PVkAllocationCallbacks);
begin
 fCommands.DestroySwapchainKHR(device,swapchain,pAllocator);
end;

function TVulkan.GetSwapchainImagesKHR(device:TVkDevice;swapchain:TVkSwapchainKHR;pSwapchainImageCount:PVkUInt32;pSwapchainImages:PVkImage):TVkResult;
begin
 result:=fCommands.GetSwapchainImagesKHR(device,swapchain,pSwapchainImageCount,pSwapchainImages);
end;

function TVulkan.AcquireNextImageKHR(device:TVkDevice;swapchain:TVkSwapchainKHR;timeout:TVkUInt64;semaphore:TVkSemaphore;fence:TVkFence;pImageIndex:PVkUInt32):TVkResult;
begin
 result:=fCommands.AcquireNextImageKHR(device,swapchain,timeout,semaphore,fence,pImageIndex);
end;

function TVulkan.QueuePresentKHR(queue:TVkQueue;const pPresentInfo:PVkPresentInfoKHR):TVkResult;
begin
 result:=fCommands.QueuePresentKHR(queue,pPresentInfo);
end;

function TVulkan.CreateViSurfaceNN(instance:TVkInstance;const pCreateInfo:PVkViSurfaceCreateInfoNN;const pAllocator:PVkAllocationCallbacks;pSurface:PVkSurfaceKHR):TVkResult;
begin
 result:=fCommands.CreateViSurfaceNN(instance,pCreateInfo,pAllocator,pSurface);
end;

{$ifdef Wayland}
function TVulkan.CreateWaylandSurfaceKHR(instance:TVkInstance;const pCreateInfo:PVkWaylandSurfaceCreateInfoKHR;const pAllocator:PVkAllocationCallbacks;pSurface:PVkSurfaceKHR):TVkResult;
begin
 result:=fCommands.CreateWaylandSurfaceKHR(instance,pCreateInfo,pAllocator,pSurface);
end;
{$endif}

{$ifdef Wayland}
function TVulkan.GetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice:TVkPhysicalDevice;queueFamilyIndex:TVkUInt32;display:PVkWaylandDisplay):TVkBool32;
begin
 result:=fCommands.GetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice,queueFamilyIndex,display);
end;
{$endif}

{$ifdef Windows}
function TVulkan.CreateWin32SurfaceKHR(instance:TVkInstance;const pCreateInfo:PVkWin32SurfaceCreateInfoKHR;const pAllocator:PVkAllocationCallbacks;pSurface:PVkSurfaceKHR):TVkResult;
begin
 result:=fCommands.CreateWin32SurfaceKHR(instance,pCreateInfo,pAllocator,pSurface);
end;
{$endif}

{$ifdef Windows}
function TVulkan.GetPhysicalDeviceWin32PresentationSupportKHR(physicalDevice:TVkPhysicalDevice;queueFamilyIndex:TVkUInt32):TVkBool32;
begin
 result:=fCommands.GetPhysicalDeviceWin32PresentationSupportKHR(physicalDevice,queueFamilyIndex);
end;
{$endif}

{$ifdef XLIB}
function TVulkan.CreateXlibSurfaceKHR(instance:TVkInstance;const pCreateInfo:PVkXlibSurfaceCreateInfoKHR;const pAllocator:PVkAllocationCallbacks;pSurface:PVkSurfaceKHR):TVkResult;
begin
 result:=fCommands.CreateXlibSurfaceKHR(instance,pCreateInfo,pAllocator,pSurface);
end;
{$endif}

{$ifdef XLIB}
function TVulkan.GetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice:TVkPhysicalDevice;queueFamilyIndex:TVkUInt32;dpy:PVkXLIBDisplay;visualID:TVkXLIBVisualID):TVkBool32;
begin
 result:=fCommands.GetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice,queueFamilyIndex,dpy,visualID);
end;
{$endif}

{$ifdef XCB}
function TVulkan.CreateXcbSurfaceKHR(instance:TVkInstance;const pCreateInfo:PVkXcbSurfaceCreateInfoKHR;const pAllocator:PVkAllocationCallbacks;pSurface:PVkSurfaceKHR):TVkResult;
begin
 result:=fCommands.CreateXcbSurfaceKHR(instance,pCreateInfo,pAllocator,pSurface);
end;
{$endif}

{$ifdef XCB}
function TVulkan.GetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice:TVkPhysicalDevice;queueFamilyIndex:TVkUInt32;connection:PVkXCBConnection;visual_id:TVkXCBVisualID):TVkBool32;
begin
 result:=fCommands.GetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice,queueFamilyIndex,connection,visual_id);
end;
{$endif}

{$ifdef DirectFB}
function TVulkan.CreateDirectFBSurfaceEXT(instance:TVkInstance;const pCreateInfo:PVkDirectFBSurfaceCreateInfoEXT;const pAllocator:PVkAllocationCallbacks;pSurface:PVkSurfaceKHR):TVkResult;
begin
 result:=fCommands.CreateDirectFBSurfaceEXT(instance,pCreateInfo,pAllocator,pSurface);
end;
{$endif}

{$ifdef DirectFB}
function TVulkan.GetPhysicalDeviceDirectFBPresentationSupportEXT(physicalDevice:TVkPhysicalDevice;queueFamilyIndex:TVkUInt32;dfb:PVkDirectFBIDirectFB):TVkBool32;
begin
 result:=fCommands.GetPhysicalDeviceDirectFBPresentationSupportEXT(physicalDevice,queueFamilyIndex,dfb);
end;
{$endif}

{$ifdef Fuchsia}
function TVulkan.CreateImagePipeSurfaceFUCHSIA(instance:TVkInstance;const pCreateInfo:PVkImagePipeSurfaceCreateInfoFUCHSIA;const pAllocator:PVkAllocationCallbacks;pSurface:PVkSurfaceKHR):TVkResult;
begin
 result:=fCommands.CreateImagePipeSurfaceFUCHSIA(instance,pCreateInfo,pAllocator,pSurface);
end;
{$endif}

function TVulkan.CreateStreamDescriptorSurfaceGGP(instance:TVkInstance;const pCreateInfo:PVkStreamDescriptorSurfaceCreateInfoGGP;const pAllocator:PVkAllocationCallbacks;pSurface:PVkSurfaceKHR):TVkResult;
begin
 result:=fCommands.CreateStreamDescriptorSurfaceGGP(instance,pCreateInfo,pAllocator,pSurface);
end;

{$ifdef QNX}
function TVulkan.CreateScreenSurfaceQNX(instance:TVkInstance;const pCreateInfo:PVkScreenSurfaceCreateInfoQNX;const pAllocator:PVkAllocationCallbacks;pSurface:PVkSurfaceKHR):TVkResult;
begin
 result:=fCommands.CreateScreenSurfaceQNX(instance,pCreateInfo,pAllocator,pSurface);
end;
{$endif}

{$ifdef QNX}
function TVulkan.GetPhysicalDeviceScreenPresentationSupportQNX(physicalDevice:TVkPhysicalDevice;queueFamilyIndex:TVkUInt32;window:PVkQNXScreenWindow):TVkBool32;
begin
 result:=fCommands.GetPhysicalDeviceScreenPresentationSupportQNX(physicalDevice,queueFamilyIndex,window);
end;
{$endif}

function TVulkan.CreateDebugReportCallbackEXT(instance:TVkInstance;const pCreateInfo:PVkDebugReportCallbackCreateInfoEXT;const pAllocator:PVkAllocationCallbacks;pCallback:PVkDebugReportCallbackEXT):TVkResult;
begin
 result:=fCommands.CreateDebugReportCallbackEXT(instance,pCreateInfo,pAllocator,pCallback);
end;

procedure TVulkan.DestroyDebugReportCallbackEXT(instance:TVkInstance;callback:TVkDebugReportCallbackEXT;const pAllocator:PVkAllocationCallbacks);
begin
 fCommands.DestroyDebugReportCallbackEXT(instance,callback,pAllocator);
end;

procedure TVulkan.DebugReportMessageEXT(instance:TVkInstance;flags:TVkDebugReportFlagsEXT;objectType:TVkDebugReportObjectTypeEXT;object_:TVkUInt64;location:TVkSize;messageCode:TVkInt32;const pLayerPrefix:PVkChar;const pMessage:PVkChar);
begin
 fCommands.DebugReportMessageEXT(instance,flags,objectType,object_,location,messageCode,pLayerPrefix,pMessage);
end;

function TVulkan.DebugMarkerSetObjectNameEXT(device:TVkDevice;const pNameInfo:PVkDebugMarkerObjectNameInfoEXT):TVkResult;
begin
 result:=fCommands.DebugMarkerSetObjectNameEXT(device,pNameInfo);
end;

function TVulkan.DebugMarkerSetObjectTagEXT(device:TVkDevice;const pTagInfo:PVkDebugMarkerObjectTagInfoEXT):TVkResult;
begin
 result:=fCommands.DebugMarkerSetObjectTagEXT(device,pTagInfo);
end;

procedure TVulkan.CmdDebugMarkerBeginEXT(commandBuffer:TVkCommandBuffer;const pMarkerInfo:PVkDebugMarkerMarkerInfoEXT);
begin
 fCommands.CmdDebugMarkerBeginEXT(commandBuffer,pMarkerInfo);
end;

procedure TVulkan.CmdDebugMarkerEndEXT(commandBuffer:TVkCommandBuffer);
begin
 fCommands.CmdDebugMarkerEndEXT(commandBuffer);
end;

procedure TVulkan.CmdDebugMarkerInsertEXT(commandBuffer:TVkCommandBuffer;const pMarkerInfo:PVkDebugMarkerMarkerInfoEXT);
begin
 fCommands.CmdDebugMarkerInsertEXT(commandBuffer,pMarkerInfo);
end;

function TVulkan.GetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice:TVkPhysicalDevice;format:TVkFormat;type_:TVkImageType;tiling:TVkImageTiling;usage:TVkImageUsageFlags;flags:TVkImageCreateFlags;externalHandleType:TVkExternalMemoryHandleTypeFlagsNV;pExternalImageFormatProperties:PVkExternalImageFormatPropertiesNV):TVkResult;
begin
 result:=fCommands.GetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice,format,type_,tiling,usage,flags,externalHandleType,pExternalImageFormatProperties);
end;

{$ifdef Windows}
function TVulkan.GetMemoryWin32HandleNV(device:TVkDevice;memory:TVkDeviceMemory;handleType:TVkExternalMemoryHandleTypeFlagsNV;pHandle:PHANDLE):TVkResult;
begin
 result:=fCommands.GetMemoryWin32HandleNV(device,memory,handleType,pHandle);
end;
{$endif}

procedure TVulkan.CmdExecuteGeneratedCommandsNV(commandBuffer:TVkCommandBuffer;isPreprocessed:TVkBool32;const pGeneratedCommandsInfo:PVkGeneratedCommandsInfoNV);
begin
 fCommands.CmdExecuteGeneratedCommandsNV(commandBuffer,isPreprocessed,pGeneratedCommandsInfo);
end;

procedure TVulkan.CmdPreprocessGeneratedCommandsNV(commandBuffer:TVkCommandBuffer;const pGeneratedCommandsInfo:PVkGeneratedCommandsInfoNV);
begin
 fCommands.CmdPreprocessGeneratedCommandsNV(commandBuffer,pGeneratedCommandsInfo);
end;

procedure TVulkan.CmdBindPipelineShaderGroupNV(commandBuffer:TVkCommandBuffer;pipelineBindPoint:TVkPipelineBindPoint;pipeline:TVkPipeline;groupIndex:TVkUInt32);
begin
 fCommands.CmdBindPipelineShaderGroupNV(commandBuffer,pipelineBindPoint,pipeline,groupIndex);
end;

procedure TVulkan.GetGeneratedCommandsMemoryRequirementsNV(device:TVkDevice;const pInfo:PVkGeneratedCommandsMemoryRequirementsInfoNV;pMemoryRequirements:PVkMemoryRequirements2);
begin
 fCommands.GetGeneratedCommandsMemoryRequirementsNV(device,pInfo,pMemoryRequirements);
end;

function TVulkan.CreateIndirectCommandsLayoutNV(device:TVkDevice;const pCreateInfo:PVkIndirectCommandsLayoutCreateInfoNV;const pAllocator:PVkAllocationCallbacks;pIndirectCommandsLayout:PVkIndirectCommandsLayoutNV):TVkResult;
begin
 result:=fCommands.CreateIndirectCommandsLayoutNV(device,pCreateInfo,pAllocator,pIndirectCommandsLayout);
end;

procedure TVulkan.DestroyIndirectCommandsLayoutNV(device:TVkDevice;indirectCommandsLayout:TVkIndirectCommandsLayoutNV;const pAllocator:PVkAllocationCallbacks);
begin
 fCommands.DestroyIndirectCommandsLayoutNV(device,indirectCommandsLayout,pAllocator);
end;

procedure TVulkan.GetPhysicalDeviceFeatures2(physicalDevice:TVkPhysicalDevice;pFeatures:PVkPhysicalDeviceFeatures2);
begin
 fCommands.GetPhysicalDeviceFeatures2(physicalDevice,pFeatures);
end;

procedure TVulkan.GetPhysicalDeviceFeatures2KHR(physicalDevice:TVkPhysicalDevice;pFeatures:PVkPhysicalDeviceFeatures2);
begin
 fCommands.GetPhysicalDeviceFeatures2KHR(physicalDevice,pFeatures);
end;

procedure TVulkan.GetPhysicalDeviceProperties2(physicalDevice:TVkPhysicalDevice;pProperties:PVkPhysicalDeviceProperties2);
begin
 fCommands.GetPhysicalDeviceProperties2(physicalDevice,pProperties);
end;

procedure TVulkan.GetPhysicalDeviceProperties2KHR(physicalDevice:TVkPhysicalDevice;pProperties:PVkPhysicalDeviceProperties2);
begin
 fCommands.GetPhysicalDeviceProperties2KHR(physicalDevice,pProperties);
end;

procedure TVulkan.GetPhysicalDeviceFormatProperties2(physicalDevice:TVkPhysicalDevice;format:TVkFormat;pFormatProperties:PVkFormatProperties2);
begin
 fCommands.GetPhysicalDeviceFormatProperties2(physicalDevice,format,pFormatProperties);
end;

procedure TVulkan.GetPhysicalDeviceFormatProperties2KHR(physicalDevice:TVkPhysicalDevice;format:TVkFormat;pFormatProperties:PVkFormatProperties2);
begin
 fCommands.GetPhysicalDeviceFormatProperties2KHR(physicalDevice,format,pFormatProperties);
end;

function TVulkan.GetPhysicalDeviceImageFormatProperties2(physicalDevice:TVkPhysicalDevice;const pImageFormatInfo:PVkPhysicalDeviceImageFormatInfo2;pImageFormatProperties:PVkImageFormatProperties2):TVkResult;
begin
 result:=fCommands.GetPhysicalDeviceImageFormatProperties2(physicalDevice,pImageFormatInfo,pImageFormatProperties);
end;

function TVulkan.GetPhysicalDeviceImageFormatProperties2KHR(physicalDevice:TVkPhysicalDevice;const pImageFormatInfo:PVkPhysicalDeviceImageFormatInfo2;pImageFormatProperties:PVkImageFormatProperties2):TVkResult;
begin
 result:=fCommands.GetPhysicalDeviceImageFormatProperties2KHR(physicalDevice,pImageFormatInfo,pImageFormatProperties);
end;

procedure TVulkan.GetPhysicalDeviceQueueFamilyProperties2(physicalDevice:TVkPhysicalDevice;pQueueFamilyPropertyCount:PVkUInt32;pQueueFamilyProperties:PVkQueueFamilyProperties2);
begin
 fCommands.GetPhysicalDeviceQueueFamilyProperties2(physicalDevice,pQueueFamilyPropertyCount,pQueueFamilyProperties);
end;

procedure TVulkan.GetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice:TVkPhysicalDevice;pQueueFamilyPropertyCount:PVkUInt32;pQueueFamilyProperties:PVkQueueFamilyProperties2);
begin
 fCommands.GetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice,pQueueFamilyPropertyCount,pQueueFamilyProperties);
end;

procedure TVulkan.GetPhysicalDeviceMemoryProperties2(physicalDevice:TVkPhysicalDevice;pMemoryProperties:PVkPhysicalDeviceMemoryProperties2);
begin
 fCommands.GetPhysicalDeviceMemoryProperties2(physicalDevice,pMemoryProperties);
end;

procedure TVulkan.GetPhysicalDeviceMemoryProperties2KHR(physicalDevice:TVkPhysicalDevice;pMemoryProperties:PVkPhysicalDeviceMemoryProperties2);
begin
 fCommands.GetPhysicalDeviceMemoryProperties2KHR(physicalDevice,pMemoryProperties);
end;

procedure TVulkan.GetPhysicalDeviceSparseImageFormatProperties2(physicalDevice:TVkPhysicalDevice;const pFormatInfo:PVkPhysicalDeviceSparseImageFormatInfo2;pPropertyCount:PVkUInt32;pProperties:PVkSparseImageFormatProperties2);
begin
 fCommands.GetPhysicalDeviceSparseImageFormatProperties2(physicalDevice,pFormatInfo,pPropertyCount,pProperties);
end;

procedure TVulkan.GetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice:TVkPhysicalDevice;const pFormatInfo:PVkPhysicalDeviceSparseImageFormatInfo2;pPropertyCount:PVkUInt32;pProperties:PVkSparseImageFormatProperties2);
begin
 fCommands.GetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice,pFormatInfo,pPropertyCount,pProperties);
end;

procedure TVulkan.CmdPushDescriptorSetKHR(commandBuffer:TVkCommandBuffer;pipelineBindPoint:TVkPipelineBindPoint;layout:TVkPipelineLayout;set_:TVkUInt32;descriptorWriteCount:TVkUInt32;const pDescriptorWrites:PVkWriteDescriptorSet);
begin
 fCommands.CmdPushDescriptorSetKHR(commandBuffer,pipelineBindPoint,layout,set_,descriptorWriteCount,pDescriptorWrites);
end;

procedure TVulkan.TrimCommandPool(device:TVkDevice;commandPool:TVkCommandPool;flags:TVkCommandPoolTrimFlags);
begin
 fCommands.TrimCommandPool(device,commandPool,flags);
end;

procedure TVulkan.TrimCommandPoolKHR(device:TVkDevice;commandPool:TVkCommandPool;flags:TVkCommandPoolTrimFlags);
begin
 fCommands.TrimCommandPoolKHR(device,commandPool,flags);
end;

procedure TVulkan.GetPhysicalDeviceExternalBufferProperties(physicalDevice:TVkPhysicalDevice;const pExternalBufferInfo:PVkPhysicalDeviceExternalBufferInfo;pExternalBufferProperties:PVkExternalBufferProperties);
begin
 fCommands.GetPhysicalDeviceExternalBufferProperties(physicalDevice,pExternalBufferInfo,pExternalBufferProperties);
end;

procedure TVulkan.GetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice:TVkPhysicalDevice;const pExternalBufferInfo:PVkPhysicalDeviceExternalBufferInfo;pExternalBufferProperties:PVkExternalBufferProperties);
begin
 fCommands.GetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice,pExternalBufferInfo,pExternalBufferProperties);
end;

{$ifdef Windows}
function TVulkan.GetMemoryWin32HandleKHR(device:TVkDevice;const pGetWin32HandleInfo:PVkMemoryGetWin32HandleInfoKHR;pHandle:PHANDLE):TVkResult;
begin
 result:=fCommands.GetMemoryWin32HandleKHR(device,pGetWin32HandleInfo,pHandle);
end;
{$endif}

{$ifdef Windows}
function TVulkan.GetMemoryWin32HandlePropertiesKHR(device:TVkDevice;handleType:TVkExternalMemoryHandleTypeFlagBits;handle:THANDLE;pMemoryWin32HandleProperties:PVkMemoryWin32HandlePropertiesKHR):TVkResult;
begin
 result:=fCommands.GetMemoryWin32HandlePropertiesKHR(device,handleType,handle,pMemoryWin32HandleProperties);
end;
{$endif}

function TVulkan.GetMemoryFdKHR(device:TVkDevice;const pGetFdInfo:PVkMemoryGetFdInfoKHR;pFd:PVkInt32):TVkResult;
begin
 result:=fCommands.GetMemoryFdKHR(device,pGetFdInfo,pFd);
end;

function TVulkan.GetMemoryFdPropertiesKHR(device:TVkDevice;handleType:TVkExternalMemoryHandleTypeFlagBits;fd:TVkInt32;pMemoryFdProperties:PVkMemoryFdPropertiesKHR):TVkResult;
begin
 result:=fCommands.GetMemoryFdPropertiesKHR(device,handleType,fd,pMemoryFdProperties);
end;

{$ifdef Fuchsia}
function TVulkan.GetMemoryZirconHandleFUCHSIA(device:TVkDevice;const pGetZirconHandleInfo:PVkMemoryGetZirconHandleInfoFUCHSIA;pZirconHandle:PVkFuchsiaZXHandle):TVkResult;
begin
 result:=fCommands.GetMemoryZirconHandleFUCHSIA(device,pGetZirconHandleInfo,pZirconHandle);
end;
{$endif}

{$ifdef Fuchsia}
function TVulkan.GetMemoryZirconHandlePropertiesFUCHSIA(device:TVkDevice;handleType:TVkExternalMemoryHandleTypeFlagBits;zirconHandle:TVkFuchsiaZXHandle;pMemoryZirconHandleProperties:PVkMemoryZirconHandlePropertiesFUCHSIA):TVkResult;
begin
 result:=fCommands.GetMemoryZirconHandlePropertiesFUCHSIA(device,handleType,zirconHandle,pMemoryZirconHandleProperties);
end;
{$endif}

function TVulkan.GetMemoryRemoteAddressNV(device:TVkDevice;const pMemoryGetRemoteAddressInfo:PVkMemoryGetRemoteAddressInfoNV;pAddress:PVkRemoteAddressNV):TVkResult;
begin
 result:=fCommands.GetMemoryRemoteAddressNV(device,pMemoryGetRemoteAddressInfo,pAddress);
end;

{$ifdef NvSci}
function TVulkan.GetMemorySciBufNV(device:TVkDevice;const pGetSciBufInfo:PVkMemoryGetSciBufInfoNV;pHandle:PNvSciBufObj):TVkResult;
begin
 result:=fCommands.GetMemorySciBufNV(device,pGetSciBufInfo,pHandle);
end;
{$endif}

{$ifdef NvSci}
function TVulkan.GetPhysicalDeviceExternalMemorySciBufPropertiesNV(physicalDevice:TVkPhysicalDevice;handleType:TVkExternalMemoryHandleTypeFlagBits;handle:TNvSciBufObj;pMemorySciBufProperties:PVkMemorySciBufPropertiesNV):TVkResult;
begin
 result:=fCommands.GetPhysicalDeviceExternalMemorySciBufPropertiesNV(physicalDevice,handleType,handle,pMemorySciBufProperties);
end;
{$endif}

{$ifdef NvSci}
function TVulkan.GetPhysicalDeviceSciBufAttributesNV(physicalDevice:TVkPhysicalDevice;pAttributes:TNvSciBufAttrList):TVkResult;
begin
 result:=fCommands.GetPhysicalDeviceSciBufAttributesNV(physicalDevice,pAttributes);
end;
{$endif}

procedure TVulkan.GetPhysicalDeviceExternalSemaphoreProperties(physicalDevice:TVkPhysicalDevice;const pExternalSemaphoreInfo:PVkPhysicalDeviceExternalSemaphoreInfo;pExternalSemaphoreProperties:PVkExternalSemaphoreProperties);
begin
 fCommands.GetPhysicalDeviceExternalSemaphoreProperties(physicalDevice,pExternalSemaphoreInfo,pExternalSemaphoreProperties);
end;

procedure TVulkan.GetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice:TVkPhysicalDevice;const pExternalSemaphoreInfo:PVkPhysicalDeviceExternalSemaphoreInfo;pExternalSemaphoreProperties:PVkExternalSemaphoreProperties);
begin
 fCommands.GetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice,pExternalSemaphoreInfo,pExternalSemaphoreProperties);
end;

{$ifdef Windows}
function TVulkan.GetSemaphoreWin32HandleKHR(device:TVkDevice;const pGetWin32HandleInfo:PVkSemaphoreGetWin32HandleInfoKHR;pHandle:PHANDLE):TVkResult;
begin
 result:=fCommands.GetSemaphoreWin32HandleKHR(device,pGetWin32HandleInfo,pHandle);
end;
{$endif}

{$ifdef Windows}
function TVulkan.ImportSemaphoreWin32HandleKHR(device:TVkDevice;const pImportSemaphoreWin32HandleInfo:PVkImportSemaphoreWin32HandleInfoKHR):TVkResult;
begin
 result:=fCommands.ImportSemaphoreWin32HandleKHR(device,pImportSemaphoreWin32HandleInfo);
end;
{$endif}

function TVulkan.GetSemaphoreFdKHR(device:TVkDevice;const pGetFdInfo:PVkSemaphoreGetFdInfoKHR;pFd:PVkInt32):TVkResult;
begin
 result:=fCommands.GetSemaphoreFdKHR(device,pGetFdInfo,pFd);
end;

function TVulkan.ImportSemaphoreFdKHR(device:TVkDevice;const pImportSemaphoreFdInfo:PVkImportSemaphoreFdInfoKHR):TVkResult;
begin
 result:=fCommands.ImportSemaphoreFdKHR(device,pImportSemaphoreFdInfo);
end;

{$ifdef Fuchsia}
function TVulkan.GetSemaphoreZirconHandleFUCHSIA(device:TVkDevice;const pGetZirconHandleInfo:PVkSemaphoreGetZirconHandleInfoFUCHSIA;pZirconHandle:PVkFuchsiaZXHandle):TVkResult;
begin
 result:=fCommands.GetSemaphoreZirconHandleFUCHSIA(device,pGetZirconHandleInfo,pZirconHandle);
end;
{$endif}

{$ifdef Fuchsia}
function TVulkan.ImportSemaphoreZirconHandleFUCHSIA(device:TVkDevice;const pImportSemaphoreZirconHandleInfo:PVkImportSemaphoreZirconHandleInfoFUCHSIA):TVkResult;
begin
 result:=fCommands.ImportSemaphoreZirconHandleFUCHSIA(device,pImportSemaphoreZirconHandleInfo);
end;
{$endif}

procedure TVulkan.GetPhysicalDeviceExternalFenceProperties(physicalDevice:TVkPhysicalDevice;const pExternalFenceInfo:PVkPhysicalDeviceExternalFenceInfo;pExternalFenceProperties:PVkExternalFenceProperties);
begin
 fCommands.GetPhysicalDeviceExternalFenceProperties(physicalDevice,pExternalFenceInfo,pExternalFenceProperties);
end;

procedure TVulkan.GetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice:TVkPhysicalDevice;const pExternalFenceInfo:PVkPhysicalDeviceExternalFenceInfo;pExternalFenceProperties:PVkExternalFenceProperties);
begin
 fCommands.GetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice,pExternalFenceInfo,pExternalFenceProperties);
end;

{$ifdef Windows}
function TVulkan.GetFenceWin32HandleKHR(device:TVkDevice;const pGetWin32HandleInfo:PVkFenceGetWin32HandleInfoKHR;pHandle:PHANDLE):TVkResult;
begin
 result:=fCommands.GetFenceWin32HandleKHR(device,pGetWin32HandleInfo,pHandle);
end;
{$endif}

{$ifdef Windows}
function TVulkan.ImportFenceWin32HandleKHR(device:TVkDevice;const pImportFenceWin32HandleInfo:PVkImportFenceWin32HandleInfoKHR):TVkResult;
begin
 result:=fCommands.ImportFenceWin32HandleKHR(device,pImportFenceWin32HandleInfo);
end;
{$endif}

function TVulkan.GetFenceFdKHR(device:TVkDevice;const pGetFdInfo:PVkFenceGetFdInfoKHR;pFd:PVkInt32):TVkResult;
begin
 result:=fCommands.GetFenceFdKHR(device,pGetFdInfo,pFd);
end;

function TVulkan.ImportFenceFdKHR(device:TVkDevice;const pImportFenceFdInfo:PVkImportFenceFdInfoKHR):TVkResult;
begin
 result:=fCommands.ImportFenceFdKHR(device,pImportFenceFdInfo);
end;

{$ifdef NvSci}
function TVulkan.GetFenceSciSyncFenceNV(device:TVkDevice;const pGetSciSyncHandleInfo:PVkFenceGetSciSyncInfoNV;pHandle:PVkVoid):TVkResult;
begin
 result:=fCommands.GetFenceSciSyncFenceNV(device,pGetSciSyncHandleInfo,pHandle);
end;
{$endif}

{$ifdef NvSci}
function TVulkan.GetFenceSciSyncObjNV(device:TVkDevice;const pGetSciSyncHandleInfo:PVkFenceGetSciSyncInfoNV;pHandle:PVkVoid):TVkResult;
begin
 result:=fCommands.GetFenceSciSyncObjNV(device,pGetSciSyncHandleInfo,pHandle);
end;
{$endif}

{$ifdef NvSci}
function TVulkan.ImportFenceSciSyncFenceNV(device:TVkDevice;const pImportFenceSciSyncInfo:PVkImportFenceSciSyncInfoNV):TVkResult;
begin
 result:=fCommands.ImportFenceSciSyncFenceNV(device,pImportFenceSciSyncInfo);
end;
{$endif}

{$ifdef NvSci}
function TVulkan.ImportFenceSciSyncObjNV(device:TVkDevice;const pImportFenceSciSyncInfo:PVkImportFenceSciSyncInfoNV):TVkResult;
begin
 result:=fCommands.ImportFenceSciSyncObjNV(device,pImportFenceSciSyncInfo);
end;
{$endif}

{$ifdef NvSci}
function TVulkan.GetSemaphoreSciSyncObjNV(device:TVkDevice;const pGetSciSyncInfo:PVkSemaphoreGetSciSyncInfoNV;pHandle:PVkVoid):TVkResult;
begin
 result:=fCommands.GetSemaphoreSciSyncObjNV(device,pGetSciSyncInfo,pHandle);
end;
{$endif}

{$ifdef NvSci}
function TVulkan.ImportSemaphoreSciSyncObjNV(device:TVkDevice;const pImportSemaphoreSciSyncInfo:PVkImportSemaphoreSciSyncInfoNV):TVkResult;
begin
 result:=fCommands.ImportSemaphoreSciSyncObjNV(device,pImportSemaphoreSciSyncInfo);
end;
{$endif}

{$ifdef NvSci}
function TVulkan.GetPhysicalDeviceSciSyncAttributesNV(physicalDevice:TVkPhysicalDevice;const pSciSyncAttributesInfo:PVkSciSyncAttributesInfoNV;pAttributes:TNvSciSyncAttrList):TVkResult;
begin
 result:=fCommands.GetPhysicalDeviceSciSyncAttributesNV(physicalDevice,pSciSyncAttributesInfo,pAttributes);
end;
{$endif}

{$ifdef NvSci}
function TVulkan.CreateSemaphoreSciSyncPoolNV(device:TVkDevice;const pCreateInfo:PVkSemaphoreSciSyncPoolCreateInfoNV;const pAllocator:PVkAllocationCallbacks;pSemaphorePool:PVkSemaphoreSciSyncPoolNV):TVkResult;
begin
 result:=fCommands.CreateSemaphoreSciSyncPoolNV(device,pCreateInfo,pAllocator,pSemaphorePool);
end;
{$endif}

{$ifdef NvSci}
procedure TVulkan.DestroySemaphoreSciSyncPoolNV(device:TVkDevice;semaphorePool:TVkSemaphoreSciSyncPoolNV;const pAllocator:PVkAllocationCallbacks);
begin
 fCommands.DestroySemaphoreSciSyncPoolNV(device,semaphorePool,pAllocator);
end;
{$endif}

function TVulkan.ReleaseDisplayEXT(physicalDevice:TVkPhysicalDevice;display:TVkDisplayKHR):TVkResult;
begin
 result:=fCommands.ReleaseDisplayEXT(physicalDevice,display);
end;

{$ifdef XLIB}
function TVulkan.AcquireXlibDisplayEXT(physicalDevice:TVkPhysicalDevice;dpy:PVkXLIBDisplay;display:TVkDisplayKHR):TVkResult;
begin
 result:=fCommands.AcquireXlibDisplayEXT(physicalDevice,dpy,display);
end;
{$endif}

{$ifdef RandR}
function TVulkan.GetRandROutputDisplayEXT(physicalDevice:TVkPhysicalDevice;dpy:PVkXLIBDisplay;rrOutput:TRROutput;pDisplay:PVkDisplayKHR):TVkResult;
begin
 result:=fCommands.GetRandROutputDisplayEXT(physicalDevice,dpy,rrOutput,pDisplay);
end;
{$endif}

function TVulkan.AcquireWinrtDisplayNV(physicalDevice:TVkPhysicalDevice;display:TVkDisplayKHR):TVkResult;
begin
 result:=fCommands.AcquireWinrtDisplayNV(physicalDevice,display);
end;

function TVulkan.GetWinrtDisplayNV(physicalDevice:TVkPhysicalDevice;deviceRelativeId:TVkUInt32;pDisplay:PVkDisplayKHR):TVkResult;
begin
 result:=fCommands.GetWinrtDisplayNV(physicalDevice,deviceRelativeId,pDisplay);
end;

function TVulkan.DisplayPowerControlEXT(device:TVkDevice;display:TVkDisplayKHR;const pDisplayPowerInfo:PVkDisplayPowerInfoEXT):TVkResult;
begin
 result:=fCommands.DisplayPowerControlEXT(device,display,pDisplayPowerInfo);
end;

function TVulkan.RegisterDeviceEventEXT(device:TVkDevice;const pDeviceEventInfo:PVkDeviceEventInfoEXT;const pAllocator:PVkAllocationCallbacks;pFence:PVkFence):TVkResult;
begin
 result:=fCommands.RegisterDeviceEventEXT(device,pDeviceEventInfo,pAllocator,pFence);
end;

function TVulkan.RegisterDisplayEventEXT(device:TVkDevice;display:TVkDisplayKHR;const pDisplayEventInfo:PVkDisplayEventInfoEXT;const pAllocator:PVkAllocationCallbacks;pFence:PVkFence):TVkResult;
begin
 result:=fCommands.RegisterDisplayEventEXT(device,display,pDisplayEventInfo,pAllocator,pFence);
end;

function TVulkan.GetSwapchainCounterEXT(device:TVkDevice;swapchain:TVkSwapchainKHR;counter:TVkSurfaceCounterFlagBitsEXT;pCounterValue:PVkUInt64):TVkResult;
begin
 result:=fCommands.GetSwapchainCounterEXT(device,swapchain,counter,pCounterValue);
end;

function TVulkan.GetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice:TVkPhysicalDevice;surface:TVkSurfaceKHR;pSurfaceCapabilities:PVkSurfaceCapabilities2EXT):TVkResult;
begin
 result:=fCommands.GetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice,surface,pSurfaceCapabilities);
end;

function TVulkan.EnumeratePhysicalDeviceGroups(instance:TVkInstance;pPhysicalDeviceGroupCount:PVkUInt32;pPhysicalDeviceGroupProperties:PVkPhysicalDeviceGroupProperties):TVkResult;
begin
 result:=fCommands.EnumeratePhysicalDeviceGroups(instance,pPhysicalDeviceGroupCount,pPhysicalDeviceGroupProperties);
end;

function TVulkan.EnumeratePhysicalDeviceGroupsKHR(instance:TVkInstance;pPhysicalDeviceGroupCount:PVkUInt32;pPhysicalDeviceGroupProperties:PVkPhysicalDeviceGroupProperties):TVkResult;
begin
 result:=fCommands.EnumeratePhysicalDeviceGroupsKHR(instance,pPhysicalDeviceGroupCount,pPhysicalDeviceGroupProperties);
end;

procedure TVulkan.GetDeviceGroupPeerMemoryFeatures(device:TVkDevice;heapIndex:TVkUInt32;localDeviceIndex:TVkUInt32;remoteDeviceIndex:TVkUInt32;pPeerMemoryFeatures:PVkPeerMemoryFeatureFlags);
begin
 fCommands.GetDeviceGroupPeerMemoryFeatures(device,heapIndex,localDeviceIndex,remoteDeviceIndex,pPeerMemoryFeatures);
end;

procedure TVulkan.GetDeviceGroupPeerMemoryFeaturesKHR(device:TVkDevice;heapIndex:TVkUInt32;localDeviceIndex:TVkUInt32;remoteDeviceIndex:TVkUInt32;pPeerMemoryFeatures:PVkPeerMemoryFeatureFlags);
begin
 fCommands.GetDeviceGroupPeerMemoryFeaturesKHR(device,heapIndex,localDeviceIndex,remoteDeviceIndex,pPeerMemoryFeatures);
end;

function TVulkan.BindBufferMemory2(device:TVkDevice;bindInfoCount:TVkUInt32;const pBindInfos:PVkBindBufferMemoryInfo):TVkResult;
begin
 result:=fCommands.BindBufferMemory2(device,bindInfoCount,pBindInfos);
end;

function TVulkan.BindBufferMemory2KHR(device:TVkDevice;bindInfoCount:TVkUInt32;const pBindInfos:PVkBindBufferMemoryInfo):TVkResult;
begin
 result:=fCommands.BindBufferMemory2KHR(device,bindInfoCount,pBindInfos);
end;

function TVulkan.BindImageMemory2(device:TVkDevice;bindInfoCount:TVkUInt32;const pBindInfos:PVkBindImageMemoryInfo):TVkResult;
begin
 result:=fCommands.BindImageMemory2(device,bindInfoCount,pBindInfos);
end;

function TVulkan.BindImageMemory2KHR(device:TVkDevice;bindInfoCount:TVkUInt32;const pBindInfos:PVkBindImageMemoryInfo):TVkResult;
begin
 result:=fCommands.BindImageMemory2KHR(device,bindInfoCount,pBindInfos);
end;

procedure TVulkan.CmdSetDeviceMask(commandBuffer:TVkCommandBuffer;deviceMask:TVkUInt32);
begin
 fCommands.CmdSetDeviceMask(commandBuffer,deviceMask);
end;

procedure TVulkan.CmdSetDeviceMaskKHR(commandBuffer:TVkCommandBuffer;deviceMask:TVkUInt32);
begin
 fCommands.CmdSetDeviceMaskKHR(commandBuffer,deviceMask);
end;

function TVulkan.GetDeviceGroupPresentCapabilitiesKHR(device:TVkDevice;pDeviceGroupPresentCapabilities:PVkDeviceGroupPresentCapabilitiesKHR):TVkResult;
begin
 result:=fCommands.GetDeviceGroupPresentCapabilitiesKHR(device,pDeviceGroupPresentCapabilities);
end;

function TVulkan.GetDeviceGroupSurfacePresentModesKHR(device:TVkDevice;surface:TVkSurfaceKHR;pModes:PVkDeviceGroupPresentModeFlagsKHR):TVkResult;
begin
 result:=fCommands.GetDeviceGroupSurfacePresentModesKHR(device,surface,pModes);
end;

function TVulkan.AcquireNextImage2KHR(device:TVkDevice;const pAcquireInfo:PVkAcquireNextImageInfoKHR;pImageIndex:PVkUInt32):TVkResult;
begin
 result:=fCommands.AcquireNextImage2KHR(device,pAcquireInfo,pImageIndex);
end;

procedure TVulkan.CmdDispatchBase(commandBuffer:TVkCommandBuffer;baseGroupX:TVkUInt32;baseGroupY:TVkUInt32;baseGroupZ:TVkUInt32;groupCountX:TVkUInt32;groupCountY:TVkUInt32;groupCountZ:TVkUInt32);
begin
 fCommands.CmdDispatchBase(commandBuffer,baseGroupX,baseGroupY,baseGroupZ,groupCountX,groupCountY,groupCountZ);
end;

procedure TVulkan.CmdDispatchBaseKHR(commandBuffer:TVkCommandBuffer;baseGroupX:TVkUInt32;baseGroupY:TVkUInt32;baseGroupZ:TVkUInt32;groupCountX:TVkUInt32;groupCountY:TVkUInt32;groupCountZ:TVkUInt32);
begin
 fCommands.CmdDispatchBaseKHR(commandBuffer,baseGroupX,baseGroupY,baseGroupZ,groupCountX,groupCountY,groupCountZ);
end;

function TVulkan.GetPhysicalDevicePresentRectanglesKHR(physicalDevice:TVkPhysicalDevice;surface:TVkSurfaceKHR;pRectCount:PVkUInt32;pRects:PVkRect2D):TVkResult;
begin
 result:=fCommands.GetPhysicalDevicePresentRectanglesKHR(physicalDevice,surface,pRectCount,pRects);
end;

function TVulkan.CreateDescriptorUpdateTemplate(device:TVkDevice;const pCreateInfo:PVkDescriptorUpdateTemplateCreateInfo;const pAllocator:PVkAllocationCallbacks;pDescriptorUpdateTemplate:PVkDescriptorUpdateTemplate):TVkResult;
begin
 result:=fCommands.CreateDescriptorUpdateTemplate(device,pCreateInfo,pAllocator,pDescriptorUpdateTemplate);
end;

function TVulkan.CreateDescriptorUpdateTemplateKHR(device:TVkDevice;const pCreateInfo:PVkDescriptorUpdateTemplateCreateInfo;const pAllocator:PVkAllocationCallbacks;pDescriptorUpdateTemplate:PVkDescriptorUpdateTemplate):TVkResult;
begin
 result:=fCommands.CreateDescriptorUpdateTemplateKHR(device,pCreateInfo,pAllocator,pDescriptorUpdateTemplate);
end;

procedure TVulkan.DestroyDescriptorUpdateTemplate(device:TVkDevice;descriptorUpdateTemplate:TVkDescriptorUpdateTemplate;const pAllocator:PVkAllocationCallbacks);
begin
 fCommands.DestroyDescriptorUpdateTemplate(device,descriptorUpdateTemplate,pAllocator);
end;

procedure TVulkan.DestroyDescriptorUpdateTemplateKHR(device:TVkDevice;descriptorUpdateTemplate:TVkDescriptorUpdateTemplate;const pAllocator:PVkAllocationCallbacks);
begin
 fCommands.DestroyDescriptorUpdateTemplateKHR(device,descriptorUpdateTemplate,pAllocator);
end;

procedure TVulkan.UpdateDescriptorSetWithTemplate(device:TVkDevice;descriptorSet:TVkDescriptorSet;descriptorUpdateTemplate:TVkDescriptorUpdateTemplate;const pData:PVkVoid);
begin
 fCommands.UpdateDescriptorSetWithTemplate(device,descriptorSet,descriptorUpdateTemplate,pData);
end;

procedure TVulkan.UpdateDescriptorSetWithTemplateKHR(device:TVkDevice;descriptorSet:TVkDescriptorSet;descriptorUpdateTemplate:TVkDescriptorUpdateTemplate;const pData:PVkVoid);
begin
 fCommands.UpdateDescriptorSetWithTemplateKHR(device,descriptorSet,descriptorUpdateTemplate,pData);
end;

procedure TVulkan.CmdPushDescriptorSetWithTemplateKHR(commandBuffer:TVkCommandBuffer;descriptorUpdateTemplate:TVkDescriptorUpdateTemplate;layout:TVkPipelineLayout;set_:TVkUInt32;const pData:PVkVoid);
begin
 fCommands.CmdPushDescriptorSetWithTemplateKHR(commandBuffer,descriptorUpdateTemplate,layout,set_,pData);
end;

procedure TVulkan.SetHdrMetadataEXT(device:TVkDevice;swapchainCount:TVkUInt32;const pSwapchains:PVkSwapchainKHR;const pMetadata:PVkHdrMetadataEXT);
begin
 fCommands.SetHdrMetadataEXT(device,swapchainCount,pSwapchains,pMetadata);
end;

function TVulkan.GetSwapchainStatusKHR(device:TVkDevice;swapchain:TVkSwapchainKHR):TVkResult;
begin
 result:=fCommands.GetSwapchainStatusKHR(device,swapchain);
end;

function TVulkan.GetRefreshCycleDurationGOOGLE(device:TVkDevice;swapchain:TVkSwapchainKHR;pDisplayTimingProperties:PVkRefreshCycleDurationGOOGLE):TVkResult;
begin
 result:=fCommands.GetRefreshCycleDurationGOOGLE(device,swapchain,pDisplayTimingProperties);
end;

function TVulkan.GetPastPresentationTimingGOOGLE(device:TVkDevice;swapchain:TVkSwapchainKHR;pPresentationTimingCount:PVkUInt32;pPresentationTimings:PVkPastPresentationTimingGOOGLE):TVkResult;
begin
 result:=fCommands.GetPastPresentationTimingGOOGLE(device,swapchain,pPresentationTimingCount,pPresentationTimings);
end;

{$ifdef MoltenVK_IOS}
function TVulkan.CreateIOSSurfaceMVK(instance:TVkInstance;const pCreateInfo:PVkIOSSurfaceCreateInfoMVK;const pAllocator:PVkAllocationCallbacks;pSurface:PVkSurfaceKHR):TVkResult;
begin
 result:=fCommands.CreateIOSSurfaceMVK(instance,pCreateInfo,pAllocator,pSurface);
end;
{$endif}

{$ifdef MoltenVK_MacOS}
function TVulkan.CreateMacOSSurfaceMVK(instance:TVkInstance;const pCreateInfo:PVkMacOSSurfaceCreateInfoMVK;const pAllocator:PVkAllocationCallbacks;pSurface:PVkSurfaceKHR):TVkResult;
begin
 result:=fCommands.CreateMacOSSurfaceMVK(instance,pCreateInfo,pAllocator,pSurface);
end;
{$endif}

function TVulkan.CreateMetalSurfaceEXT(instance:TVkInstance;const pCreateInfo:PVkMetalSurfaceCreateInfoEXT;const pAllocator:PVkAllocationCallbacks;pSurface:PVkSurfaceKHR):TVkResult;
begin
 result:=fCommands.CreateMetalSurfaceEXT(instance,pCreateInfo,pAllocator,pSurface);
end;

procedure TVulkan.CmdSetViewportWScalingNV(commandBuffer:TVkCommandBuffer;firstViewport:TVkUInt32;viewportCount:TVkUInt32;const pViewportWScalings:PVkViewportWScalingNV);
begin
 fCommands.CmdSetViewportWScalingNV(commandBuffer,firstViewport,viewportCount,pViewportWScalings);
end;

procedure TVulkan.CmdSetDiscardRectangleEXT(commandBuffer:TVkCommandBuffer;firstDiscardRectangle:TVkUInt32;discardRectangleCount:TVkUInt32;const pDiscardRectangles:PVkRect2D);
begin
 fCommands.CmdSetDiscardRectangleEXT(commandBuffer,firstDiscardRectangle,discardRectangleCount,pDiscardRectangles);
end;

procedure TVulkan.CmdSetDiscardRectangleEnableEXT(commandBuffer:TVkCommandBuffer;discardRectangleEnable:TVkBool32);
begin
 fCommands.CmdSetDiscardRectangleEnableEXT(commandBuffer,discardRectangleEnable);
end;

procedure TVulkan.CmdSetDiscardRectangleModeEXT(commandBuffer:TVkCommandBuffer;discardRectangleMode:TVkDiscardRectangleModeEXT);
begin
 fCommands.CmdSetDiscardRectangleModeEXT(commandBuffer,discardRectangleMode);
end;

procedure TVulkan.CmdSetSampleLocationsEXT(commandBuffer:TVkCommandBuffer;const pSampleLocationsInfo:PVkSampleLocationsInfoEXT);
begin
 fCommands.CmdSetSampleLocationsEXT(commandBuffer,pSampleLocationsInfo);
end;

procedure TVulkan.GetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice:TVkPhysicalDevice;samples:TVkSampleCountFlagBits;pMultisampleProperties:PVkMultisamplePropertiesEXT);
begin
 fCommands.GetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice,samples,pMultisampleProperties);
end;

function TVulkan.GetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice:TVkPhysicalDevice;const pSurfaceInfo:PVkPhysicalDeviceSurfaceInfo2KHR;pSurfaceCapabilities:PVkSurfaceCapabilities2KHR):TVkResult;
begin
 result:=fCommands.GetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice,pSurfaceInfo,pSurfaceCapabilities);
end;

function TVulkan.GetPhysicalDeviceSurfaceFormats2KHR(physicalDevice:TVkPhysicalDevice;const pSurfaceInfo:PVkPhysicalDeviceSurfaceInfo2KHR;pSurfaceFormatCount:PVkUInt32;pSurfaceFormats:PVkSurfaceFormat2KHR):TVkResult;
begin
 result:=fCommands.GetPhysicalDeviceSurfaceFormats2KHR(physicalDevice,pSurfaceInfo,pSurfaceFormatCount,pSurfaceFormats);
end;

function TVulkan.GetPhysicalDeviceDisplayProperties2KHR(physicalDevice:TVkPhysicalDevice;pPropertyCount:PVkUInt32;pProperties:PVkDisplayProperties2KHR):TVkResult;
begin
 result:=fCommands.GetPhysicalDeviceDisplayProperties2KHR(physicalDevice,pPropertyCount,pProperties);
end;

function TVulkan.GetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice:TVkPhysicalDevice;pPropertyCount:PVkUInt32;pProperties:PVkDisplayPlaneProperties2KHR):TVkResult;
begin
 result:=fCommands.GetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice,pPropertyCount,pProperties);
end;

function TVulkan.GetDisplayModeProperties2KHR(physicalDevice:TVkPhysicalDevice;display:TVkDisplayKHR;pPropertyCount:PVkUInt32;pProperties:PVkDisplayModeProperties2KHR):TVkResult;
begin
 result:=fCommands.GetDisplayModeProperties2KHR(physicalDevice,display,pPropertyCount,pProperties);
end;

function TVulkan.GetDisplayPlaneCapabilities2KHR(physicalDevice:TVkPhysicalDevice;const pDisplayPlaneInfo:PVkDisplayPlaneInfo2KHR;pCapabilities:PVkDisplayPlaneCapabilities2KHR):TVkResult;
begin
 result:=fCommands.GetDisplayPlaneCapabilities2KHR(physicalDevice,pDisplayPlaneInfo,pCapabilities);
end;

procedure TVulkan.GetBufferMemoryRequirements2(device:TVkDevice;const pInfo:PVkBufferMemoryRequirementsInfo2;pMemoryRequirements:PVkMemoryRequirements2);
begin
 fCommands.GetBufferMemoryRequirements2(device,pInfo,pMemoryRequirements);
end;

procedure TVulkan.GetBufferMemoryRequirements2KHR(device:TVkDevice;const pInfo:PVkBufferMemoryRequirementsInfo2;pMemoryRequirements:PVkMemoryRequirements2);
begin
 fCommands.GetBufferMemoryRequirements2KHR(device,pInfo,pMemoryRequirements);
end;

procedure TVulkan.GetImageMemoryRequirements2(device:TVkDevice;const pInfo:PVkImageMemoryRequirementsInfo2;pMemoryRequirements:PVkMemoryRequirements2);
begin
 fCommands.GetImageMemoryRequirements2(device,pInfo,pMemoryRequirements);
end;

procedure TVulkan.GetImageMemoryRequirements2KHR(device:TVkDevice;const pInfo:PVkImageMemoryRequirementsInfo2;pMemoryRequirements:PVkMemoryRequirements2);
begin
 fCommands.GetImageMemoryRequirements2KHR(device,pInfo,pMemoryRequirements);
end;

procedure TVulkan.GetImageSparseMemoryRequirements2(device:TVkDevice;const pInfo:PVkImageSparseMemoryRequirementsInfo2;pSparseMemoryRequirementCount:PVkUInt32;pSparseMemoryRequirements:PVkSparseImageMemoryRequirements2);
begin
 fCommands.GetImageSparseMemoryRequirements2(device,pInfo,pSparseMemoryRequirementCount,pSparseMemoryRequirements);
end;

procedure TVulkan.GetImageSparseMemoryRequirements2KHR(device:TVkDevice;const pInfo:PVkImageSparseMemoryRequirementsInfo2;pSparseMemoryRequirementCount:PVkUInt32;pSparseMemoryRequirements:PVkSparseImageMemoryRequirements2);
begin
 fCommands.GetImageSparseMemoryRequirements2KHR(device,pInfo,pSparseMemoryRequirementCount,pSparseMemoryRequirements);
end;

procedure TVulkan.GetDeviceBufferMemoryRequirements(device:TVkDevice;const pInfo:PVkDeviceBufferMemoryRequirements;pMemoryRequirements:PVkMemoryRequirements2);
begin
 fCommands.GetDeviceBufferMemoryRequirements(device,pInfo,pMemoryRequirements);
end;

procedure TVulkan.GetDeviceBufferMemoryRequirementsKHR(device:TVkDevice;const pInfo:PVkDeviceBufferMemoryRequirements;pMemoryRequirements:PVkMemoryRequirements2);
begin
 fCommands.GetDeviceBufferMemoryRequirementsKHR(device,pInfo,pMemoryRequirements);
end;

procedure TVulkan.GetDeviceImageMemoryRequirements(device:TVkDevice;const pInfo:PVkDeviceImageMemoryRequirements;pMemoryRequirements:PVkMemoryRequirements2);
begin
 fCommands.GetDeviceImageMemoryRequirements(device,pInfo,pMemoryRequirements);
end;

procedure TVulkan.GetDeviceImageMemoryRequirementsKHR(device:TVkDevice;const pInfo:PVkDeviceImageMemoryRequirements;pMemoryRequirements:PVkMemoryRequirements2);
begin
 fCommands.GetDeviceImageMemoryRequirementsKHR(device,pInfo,pMemoryRequirements);
end;

procedure TVulkan.GetDeviceImageSparseMemoryRequirements(device:TVkDevice;const pInfo:PVkDeviceImageMemoryRequirements;pSparseMemoryRequirementCount:PVkUInt32;pSparseMemoryRequirements:PVkSparseImageMemoryRequirements2);
begin
 fCommands.GetDeviceImageSparseMemoryRequirements(device,pInfo,pSparseMemoryRequirementCount,pSparseMemoryRequirements);
end;

procedure TVulkan.GetDeviceImageSparseMemoryRequirementsKHR(device:TVkDevice;const pInfo:PVkDeviceImageMemoryRequirements;pSparseMemoryRequirementCount:PVkUInt32;pSparseMemoryRequirements:PVkSparseImageMemoryRequirements2);
begin
 fCommands.GetDeviceImageSparseMemoryRequirementsKHR(device,pInfo,pSparseMemoryRequirementCount,pSparseMemoryRequirements);
end;

function TVulkan.CreateSamplerYcbcrConversion(device:TVkDevice;const pCreateInfo:PVkSamplerYcbcrConversionCreateInfo;const pAllocator:PVkAllocationCallbacks;pYcbcrConversion:PVkSamplerYcbcrConversion):TVkResult;
begin
 result:=fCommands.CreateSamplerYcbcrConversion(device,pCreateInfo,pAllocator,pYcbcrConversion);
end;

function TVulkan.CreateSamplerYcbcrConversionKHR(device:TVkDevice;const pCreateInfo:PVkSamplerYcbcrConversionCreateInfo;const pAllocator:PVkAllocationCallbacks;pYcbcrConversion:PVkSamplerYcbcrConversion):TVkResult;
begin
 result:=fCommands.CreateSamplerYcbcrConversionKHR(device,pCreateInfo,pAllocator,pYcbcrConversion);
end;

procedure TVulkan.DestroySamplerYcbcrConversion(device:TVkDevice;ycbcrConversion:TVkSamplerYcbcrConversion;const pAllocator:PVkAllocationCallbacks);
begin
 fCommands.DestroySamplerYcbcrConversion(device,ycbcrConversion,pAllocator);
end;

procedure TVulkan.DestroySamplerYcbcrConversionKHR(device:TVkDevice;ycbcrConversion:TVkSamplerYcbcrConversion;const pAllocator:PVkAllocationCallbacks);
begin
 fCommands.DestroySamplerYcbcrConversionKHR(device,ycbcrConversion,pAllocator);
end;

procedure TVulkan.GetDeviceQueue2(device:TVkDevice;const pQueueInfo:PVkDeviceQueueInfo2;pQueue:PVkQueue);
begin
 fCommands.GetDeviceQueue2(device,pQueueInfo,pQueue);
end;

function TVulkan.CreateValidationCacheEXT(device:TVkDevice;const pCreateInfo:PVkValidationCacheCreateInfoEXT;const pAllocator:PVkAllocationCallbacks;pValidationCache:PVkValidationCacheEXT):TVkResult;
begin
 result:=fCommands.CreateValidationCacheEXT(device,pCreateInfo,pAllocator,pValidationCache);
end;

procedure TVulkan.DestroyValidationCacheEXT(device:TVkDevice;validationCache:TVkValidationCacheEXT;const pAllocator:PVkAllocationCallbacks);
begin
 fCommands.DestroyValidationCacheEXT(device,validationCache,pAllocator);
end;

function TVulkan.GetValidationCacheDataEXT(device:TVkDevice;validationCache:TVkValidationCacheEXT;pDataSize:PVkSize;pData:PVkVoid):TVkResult;
begin
 result:=fCommands.GetValidationCacheDataEXT(device,validationCache,pDataSize,pData);
end;

function TVulkan.MergeValidationCachesEXT(device:TVkDevice;dstCache:TVkValidationCacheEXT;srcCacheCount:TVkUInt32;const pSrcCaches:PVkValidationCacheEXT):TVkResult;
begin
 result:=fCommands.MergeValidationCachesEXT(device,dstCache,srcCacheCount,pSrcCaches);
end;

procedure TVulkan.GetDescriptorSetLayoutSupport(device:TVkDevice;const pCreateInfo:PVkDescriptorSetLayoutCreateInfo;pSupport:PVkDescriptorSetLayoutSupport);
begin
 fCommands.GetDescriptorSetLayoutSupport(device,pCreateInfo,pSupport);
end;

procedure TVulkan.GetDescriptorSetLayoutSupportKHR(device:TVkDevice;const pCreateInfo:PVkDescriptorSetLayoutCreateInfo;pSupport:PVkDescriptorSetLayoutSupport);
begin
 fCommands.GetDescriptorSetLayoutSupportKHR(device,pCreateInfo,pSupport);
end;

function TVulkan.GetSwapchainGrallocUsageANDROID(device:TVkDevice;format:TVkFormat;imageUsage:TVkImageUsageFlags;grallocUsage:PVkInt32):TVkResult;
begin
 result:=fCommands.GetSwapchainGrallocUsageANDROID(device,format,imageUsage,grallocUsage);
end;

{$ifdef Android}
function TVulkan.GetSwapchainGrallocUsage2ANDROID(device:TVkDevice;format:TVkFormat;imageUsage:TVkImageUsageFlags;swapchainImageUsage:TVkSwapchainImageUsageFlagsANDROID;grallocConsumerUsage:PVkUInt64;grallocProducerUsage:PVkUInt64):TVkResult;
begin
 result:=fCommands.GetSwapchainGrallocUsage2ANDROID(device,format,imageUsage,swapchainImageUsage,grallocConsumerUsage,grallocProducerUsage);
end;
{$endif}

function TVulkan.AcquireImageANDROID(device:TVkDevice;image:TVkImage;nativeFenceFd:TVkInt32;semaphore:TVkSemaphore;fence:TVkFence):TVkResult;
begin
 result:=fCommands.AcquireImageANDROID(device,image,nativeFenceFd,semaphore,fence);
end;

function TVulkan.QueueSignalReleaseImageANDROID(queue:TVkQueue;waitSemaphoreCount:TVkUInt32;const pWaitSemaphores:PVkSemaphore;image:TVkImage;pNativeFenceFd:PVkInt32):TVkResult;
begin
 result:=fCommands.QueueSignalReleaseImageANDROID(queue,waitSemaphoreCount,pWaitSemaphores,image,pNativeFenceFd);
end;

function TVulkan.GetShaderInfoAMD(device:TVkDevice;pipeline:TVkPipeline;shaderStage:TVkShaderStageFlagBits;infoType:TVkShaderInfoTypeAMD;pInfoSize:PVkSize;pInfo:PVkVoid):TVkResult;
begin
 result:=fCommands.GetShaderInfoAMD(device,pipeline,shaderStage,infoType,pInfoSize,pInfo);
end;

procedure TVulkan.SetLocalDimmingAMD(device:TVkDevice;swapChain:TVkSwapchainKHR;localDimmingEnable:TVkBool32);
begin
 fCommands.SetLocalDimmingAMD(device,swapChain,localDimmingEnable);
end;

function TVulkan.GetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice:TVkPhysicalDevice;pTimeDomainCount:PVkUInt32;pTimeDomains:PVkTimeDomainEXT):TVkResult;
begin
 result:=fCommands.GetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice,pTimeDomainCount,pTimeDomains);
end;

function TVulkan.GetCalibratedTimestampsEXT(device:TVkDevice;timestampCount:TVkUInt32;const pTimestampInfos:PVkCalibratedTimestampInfoEXT;pTimestamps:PVkUInt64;pMaxDeviation:PVkUInt64):TVkResult;
begin
 result:=fCommands.GetCalibratedTimestampsEXT(device,timestampCount,pTimestampInfos,pTimestamps,pMaxDeviation);
end;

function TVulkan.SetDebugUtilsObjectNameEXT(device:TVkDevice;const pNameInfo:PVkDebugUtilsObjectNameInfoEXT):TVkResult;
begin
 result:=fCommands.SetDebugUtilsObjectNameEXT(device,pNameInfo);
end;

function TVulkan.SetDebugUtilsObjectTagEXT(device:TVkDevice;const pTagInfo:PVkDebugUtilsObjectTagInfoEXT):TVkResult;
begin
 result:=fCommands.SetDebugUtilsObjectTagEXT(device,pTagInfo);
end;

procedure TVulkan.QueueBeginDebugUtilsLabelEXT(queue:TVkQueue;const pLabelInfo:PVkDebugUtilsLabelEXT);
begin
 fCommands.QueueBeginDebugUtilsLabelEXT(queue,pLabelInfo);
end;

procedure TVulkan.QueueEndDebugUtilsLabelEXT(queue:TVkQueue);
begin
 fCommands.QueueEndDebugUtilsLabelEXT(queue);
end;

procedure TVulkan.QueueInsertDebugUtilsLabelEXT(queue:TVkQueue;const pLabelInfo:PVkDebugUtilsLabelEXT);
begin
 fCommands.QueueInsertDebugUtilsLabelEXT(queue,pLabelInfo);
end;

procedure TVulkan.CmdBeginDebugUtilsLabelEXT(commandBuffer:TVkCommandBuffer;const pLabelInfo:PVkDebugUtilsLabelEXT);
begin
 fCommands.CmdBeginDebugUtilsLabelEXT(commandBuffer,pLabelInfo);
end;

procedure TVulkan.CmdEndDebugUtilsLabelEXT(commandBuffer:TVkCommandBuffer);
begin
 fCommands.CmdEndDebugUtilsLabelEXT(commandBuffer);
end;

procedure TVulkan.CmdInsertDebugUtilsLabelEXT(commandBuffer:TVkCommandBuffer;const pLabelInfo:PVkDebugUtilsLabelEXT);
begin
 fCommands.CmdInsertDebugUtilsLabelEXT(commandBuffer,pLabelInfo);
end;

function TVulkan.CreateDebugUtilsMessengerEXT(instance:TVkInstance;const pCreateInfo:PVkDebugUtilsMessengerCreateInfoEXT;const pAllocator:PVkAllocationCallbacks;pMessenger:PVkDebugUtilsMessengerEXT):TVkResult;
begin
 result:=fCommands.CreateDebugUtilsMessengerEXT(instance,pCreateInfo,pAllocator,pMessenger);
end;

procedure TVulkan.DestroyDebugUtilsMessengerEXT(instance:TVkInstance;messenger:TVkDebugUtilsMessengerEXT;const pAllocator:PVkAllocationCallbacks);
begin
 fCommands.DestroyDebugUtilsMessengerEXT(instance,messenger,pAllocator);
end;

procedure TVulkan.SubmitDebugUtilsMessageEXT(instance:TVkInstance;messageSeverity:TVkDebugUtilsMessageSeverityFlagBitsEXT;messageTypes:TVkDebugUtilsMessageTypeFlagsEXT;const pCallbackData:PVkDebugUtilsMessengerCallbackDataEXT);
begin
 fCommands.SubmitDebugUtilsMessageEXT(instance,messageSeverity,messageTypes,pCallbackData);
end;

function TVulkan.GetMemoryHostPointerPropertiesEXT(device:TVkDevice;handleType:TVkExternalMemoryHandleTypeFlagBits;const pHostPointer:PVkVoid;pMemoryHostPointerProperties:PVkMemoryHostPointerPropertiesEXT):TVkResult;
begin
 result:=fCommands.GetMemoryHostPointerPropertiesEXT(device,handleType,pHostPointer,pMemoryHostPointerProperties);
end;

procedure TVulkan.CmdWriteBufferMarkerAMD(commandBuffer:TVkCommandBuffer;pipelineStage:TVkPipelineStageFlagBits;dstBuffer:TVkBuffer;dstOffset:TVkDeviceSize;marker:TVkUInt32);
begin
 fCommands.CmdWriteBufferMarkerAMD(commandBuffer,pipelineStage,dstBuffer,dstOffset,marker);
end;

function TVulkan.CreateRenderPass2(device:TVkDevice;const pCreateInfo:PVkRenderPassCreateInfo2;const pAllocator:PVkAllocationCallbacks;pRenderPass:PVkRenderPass):TVkResult;
begin
 result:=fCommands.CreateRenderPass2(device,pCreateInfo,pAllocator,pRenderPass);
end;

function TVulkan.CreateRenderPass2KHR(device:TVkDevice;const pCreateInfo:PVkRenderPassCreateInfo2;const pAllocator:PVkAllocationCallbacks;pRenderPass:PVkRenderPass):TVkResult;
begin
 result:=fCommands.CreateRenderPass2KHR(device,pCreateInfo,pAllocator,pRenderPass);
end;

procedure TVulkan.CmdBeginRenderPass2(commandBuffer:TVkCommandBuffer;const pRenderPassBegin:PVkRenderPassBeginInfo;const pSubpassBeginInfo:PVkSubpassBeginInfo);
begin
 fCommands.CmdBeginRenderPass2(commandBuffer,pRenderPassBegin,pSubpassBeginInfo);
end;

procedure TVulkan.CmdBeginRenderPass2KHR(commandBuffer:TVkCommandBuffer;const pRenderPassBegin:PVkRenderPassBeginInfo;const pSubpassBeginInfo:PVkSubpassBeginInfo);
begin
 fCommands.CmdBeginRenderPass2KHR(commandBuffer,pRenderPassBegin,pSubpassBeginInfo);
end;

procedure TVulkan.CmdNextSubpass2(commandBuffer:TVkCommandBuffer;const pSubpassBeginInfo:PVkSubpassBeginInfo;const pSubpassEndInfo:PVkSubpassEndInfo);
begin
 fCommands.CmdNextSubpass2(commandBuffer,pSubpassBeginInfo,pSubpassEndInfo);
end;

procedure TVulkan.CmdNextSubpass2KHR(commandBuffer:TVkCommandBuffer;const pSubpassBeginInfo:PVkSubpassBeginInfo;const pSubpassEndInfo:PVkSubpassEndInfo);
begin
 fCommands.CmdNextSubpass2KHR(commandBuffer,pSubpassBeginInfo,pSubpassEndInfo);
end;

procedure TVulkan.CmdEndRenderPass2(commandBuffer:TVkCommandBuffer;const pSubpassEndInfo:PVkSubpassEndInfo);
begin
 fCommands.CmdEndRenderPass2(commandBuffer,pSubpassEndInfo);
end;

procedure TVulkan.CmdEndRenderPass2KHR(commandBuffer:TVkCommandBuffer;const pSubpassEndInfo:PVkSubpassEndInfo);
begin
 fCommands.CmdEndRenderPass2KHR(commandBuffer,pSubpassEndInfo);
end;

function TVulkan.GetSemaphoreCounterValue(device:TVkDevice;semaphore:TVkSemaphore;pValue:PVkUInt64):TVkResult;
begin
 result:=fCommands.GetSemaphoreCounterValue(device,semaphore,pValue);
end;

function TVulkan.GetSemaphoreCounterValueKHR(device:TVkDevice;semaphore:TVkSemaphore;pValue:PVkUInt64):TVkResult;
begin
 result:=fCommands.GetSemaphoreCounterValueKHR(device,semaphore,pValue);
end;

function TVulkan.WaitSemaphores(device:TVkDevice;const pWaitInfo:PVkSemaphoreWaitInfo;timeout:TVkUInt64):TVkResult;
begin
 result:=fCommands.WaitSemaphores(device,pWaitInfo,timeout);
end;

function TVulkan.WaitSemaphoresKHR(device:TVkDevice;const pWaitInfo:PVkSemaphoreWaitInfo;timeout:TVkUInt64):TVkResult;
begin
 result:=fCommands.WaitSemaphoresKHR(device,pWaitInfo,timeout);
end;

function TVulkan.SignalSemaphore(device:TVkDevice;const pSignalInfo:PVkSemaphoreSignalInfo):TVkResult;
begin
 result:=fCommands.SignalSemaphore(device,pSignalInfo);
end;

function TVulkan.SignalSemaphoreKHR(device:TVkDevice;const pSignalInfo:PVkSemaphoreSignalInfo):TVkResult;
begin
 result:=fCommands.SignalSemaphoreKHR(device,pSignalInfo);
end;

{$ifdef Android}
function TVulkan.GetAndroidHardwareBufferPropertiesANDROID(device:TVkDevice;const buffer:PVkAndroidAHardwareBuffer;pProperties:PVkAndroidHardwareBufferPropertiesANDROID):TVkResult;
begin
 result:=fCommands.GetAndroidHardwareBufferPropertiesANDROID(device,buffer,pProperties);
end;
{$endif}

{$ifdef Android}
function TVulkan.GetMemoryAndroidHardwareBufferANDROID(device:TVkDevice;const pInfo:PVkMemoryGetAndroidHardwareBufferInfoANDROID;pBuffer:PPVkAndroidAHardwareBuffer):TVkResult;
begin
 result:=fCommands.GetMemoryAndroidHardwareBufferANDROID(device,pInfo,pBuffer);
end;
{$endif}

procedure TVulkan.CmdDrawIndirectCount(commandBuffer:TVkCommandBuffer;buffer:TVkBuffer;offset:TVkDeviceSize;countBuffer:TVkBuffer;countBufferOffset:TVkDeviceSize;maxDrawCount:TVkUInt32;stride:TVkUInt32);
begin
 fCommands.CmdDrawIndirectCount(commandBuffer,buffer,offset,countBuffer,countBufferOffset,maxDrawCount,stride);
end;

procedure TVulkan.CmdDrawIndirectCountKHR(commandBuffer:TVkCommandBuffer;buffer:TVkBuffer;offset:TVkDeviceSize;countBuffer:TVkBuffer;countBufferOffset:TVkDeviceSize;maxDrawCount:TVkUInt32;stride:TVkUInt32);
begin
 fCommands.CmdDrawIndirectCountKHR(commandBuffer,buffer,offset,countBuffer,countBufferOffset,maxDrawCount,stride);
end;

procedure TVulkan.CmdDrawIndirectCountAMD(commandBuffer:TVkCommandBuffer;buffer:TVkBuffer;offset:TVkDeviceSize;countBuffer:TVkBuffer;countBufferOffset:TVkDeviceSize;maxDrawCount:TVkUInt32;stride:TVkUInt32);
begin
 fCommands.CmdDrawIndirectCountAMD(commandBuffer,buffer,offset,countBuffer,countBufferOffset,maxDrawCount,stride);
end;

procedure TVulkan.CmdDrawIndexedIndirectCount(commandBuffer:TVkCommandBuffer;buffer:TVkBuffer;offset:TVkDeviceSize;countBuffer:TVkBuffer;countBufferOffset:TVkDeviceSize;maxDrawCount:TVkUInt32;stride:TVkUInt32);
begin
 fCommands.CmdDrawIndexedIndirectCount(commandBuffer,buffer,offset,countBuffer,countBufferOffset,maxDrawCount,stride);
end;

procedure TVulkan.CmdDrawIndexedIndirectCountKHR(commandBuffer:TVkCommandBuffer;buffer:TVkBuffer;offset:TVkDeviceSize;countBuffer:TVkBuffer;countBufferOffset:TVkDeviceSize;maxDrawCount:TVkUInt32;stride:TVkUInt32);
begin
 fCommands.CmdDrawIndexedIndirectCountKHR(commandBuffer,buffer,offset,countBuffer,countBufferOffset,maxDrawCount,stride);
end;

procedure TVulkan.CmdDrawIndexedIndirectCountAMD(commandBuffer:TVkCommandBuffer;buffer:TVkBuffer;offset:TVkDeviceSize;countBuffer:TVkBuffer;countBufferOffset:TVkDeviceSize;maxDrawCount:TVkUInt32;stride:TVkUInt32);
begin
 fCommands.CmdDrawIndexedIndirectCountAMD(commandBuffer,buffer,offset,countBuffer,countBufferOffset,maxDrawCount,stride);
end;

procedure TVulkan.CmdSetCheckpointNV(commandBuffer:TVkCommandBuffer;const pCheckpointMarker:PVkVoid);
begin
 fCommands.CmdSetCheckpointNV(commandBuffer,pCheckpointMarker);
end;

procedure TVulkan.GetQueueCheckpointDataNV(queue:TVkQueue;pCheckpointDataCount:PVkUInt32;pCheckpointData:PVkCheckpointDataNV);
begin
 fCommands.GetQueueCheckpointDataNV(queue,pCheckpointDataCount,pCheckpointData);
end;

procedure TVulkan.CmdBindTransformFeedbackBuffersEXT(commandBuffer:TVkCommandBuffer;firstBinding:TVkUInt32;bindingCount:TVkUInt32;const pBuffers:PVkBuffer;const pOffsets:PVkDeviceSize;const pSizes:PVkDeviceSize);
begin
 fCommands.CmdBindTransformFeedbackBuffersEXT(commandBuffer,firstBinding,bindingCount,pBuffers,pOffsets,pSizes);
end;

procedure TVulkan.CmdBeginTransformFeedbackEXT(commandBuffer:TVkCommandBuffer;firstCounterBuffer:TVkUInt32;counterBufferCount:TVkUInt32;const pCounterBuffers:PVkBuffer;const pCounterBufferOffsets:PVkDeviceSize);
begin
 fCommands.CmdBeginTransformFeedbackEXT(commandBuffer,firstCounterBuffer,counterBufferCount,pCounterBuffers,pCounterBufferOffsets);
end;

procedure TVulkan.CmdEndTransformFeedbackEXT(commandBuffer:TVkCommandBuffer;firstCounterBuffer:TVkUInt32;counterBufferCount:TVkUInt32;const pCounterBuffers:PVkBuffer;const pCounterBufferOffsets:PVkDeviceSize);
begin
 fCommands.CmdEndTransformFeedbackEXT(commandBuffer,firstCounterBuffer,counterBufferCount,pCounterBuffers,pCounterBufferOffsets);
end;

procedure TVulkan.CmdBeginQueryIndexedEXT(commandBuffer:TVkCommandBuffer;queryPool:TVkQueryPool;query:TVkUInt32;flags:TVkQueryControlFlags;index:TVkUInt32);
begin
 fCommands.CmdBeginQueryIndexedEXT(commandBuffer,queryPool,query,flags,index);
end;

procedure TVulkan.CmdEndQueryIndexedEXT(commandBuffer:TVkCommandBuffer;queryPool:TVkQueryPool;query:TVkUInt32;index:TVkUInt32);
begin
 fCommands.CmdEndQueryIndexedEXT(commandBuffer,queryPool,query,index);
end;

procedure TVulkan.CmdDrawIndirectByteCountEXT(commandBuffer:TVkCommandBuffer;instanceCount:TVkUInt32;firstInstance:TVkUInt32;counterBuffer:TVkBuffer;counterBufferOffset:TVkDeviceSize;counterOffset:TVkUInt32;vertexStride:TVkUInt32);
begin
 fCommands.CmdDrawIndirectByteCountEXT(commandBuffer,instanceCount,firstInstance,counterBuffer,counterBufferOffset,counterOffset,vertexStride);
end;

procedure TVulkan.CmdSetExclusiveScissorNV(commandBuffer:TVkCommandBuffer;firstExclusiveScissor:TVkUInt32;exclusiveScissorCount:TVkUInt32;const pExclusiveScissors:PVkRect2D);
begin
 fCommands.CmdSetExclusiveScissorNV(commandBuffer,firstExclusiveScissor,exclusiveScissorCount,pExclusiveScissors);
end;

procedure TVulkan.CmdSetExclusiveScissorEnableNV(commandBuffer:TVkCommandBuffer;firstExclusiveScissor:TVkUInt32;exclusiveScissorCount:TVkUInt32;const pExclusiveScissorEnables:PVkBool32);
begin
 fCommands.CmdSetExclusiveScissorEnableNV(commandBuffer,firstExclusiveScissor,exclusiveScissorCount,pExclusiveScissorEnables);
end;

procedure TVulkan.CmdBindShadingRateImageNV(commandBuffer:TVkCommandBuffer;imageView:TVkImageView;imageLayout:TVkImageLayout);
begin
 fCommands.CmdBindShadingRateImageNV(commandBuffer,imageView,imageLayout);
end;

procedure TVulkan.CmdSetViewportShadingRatePaletteNV(commandBuffer:TVkCommandBuffer;firstViewport:TVkUInt32;viewportCount:TVkUInt32;const pShadingRatePalettes:PVkShadingRatePaletteNV);
begin
 fCommands.CmdSetViewportShadingRatePaletteNV(commandBuffer,firstViewport,viewportCount,pShadingRatePalettes);
end;

procedure TVulkan.CmdSetCoarseSampleOrderNV(commandBuffer:TVkCommandBuffer;sampleOrderType:TVkCoarseSampleOrderTypeNV;customSampleOrderCount:TVkUInt32;const pCustomSampleOrders:PVkCoarseSampleOrderCustomNV);
begin
 fCommands.CmdSetCoarseSampleOrderNV(commandBuffer,sampleOrderType,customSampleOrderCount,pCustomSampleOrders);
end;

procedure TVulkan.CmdDrawMeshTasksNV(commandBuffer:TVkCommandBuffer;taskCount:TVkUInt32;firstTask:TVkUInt32);
begin
 fCommands.CmdDrawMeshTasksNV(commandBuffer,taskCount,firstTask);
end;

procedure TVulkan.CmdDrawMeshTasksIndirectNV(commandBuffer:TVkCommandBuffer;buffer:TVkBuffer;offset:TVkDeviceSize;drawCount:TVkUInt32;stride:TVkUInt32);
begin
 fCommands.CmdDrawMeshTasksIndirectNV(commandBuffer,buffer,offset,drawCount,stride);
end;

procedure TVulkan.CmdDrawMeshTasksIndirectCountNV(commandBuffer:TVkCommandBuffer;buffer:TVkBuffer;offset:TVkDeviceSize;countBuffer:TVkBuffer;countBufferOffset:TVkDeviceSize;maxDrawCount:TVkUInt32;stride:TVkUInt32);
begin
 fCommands.CmdDrawMeshTasksIndirectCountNV(commandBuffer,buffer,offset,countBuffer,countBufferOffset,maxDrawCount,stride);
end;

procedure TVulkan.CmdDrawMeshTasksEXT(commandBuffer:TVkCommandBuffer;groupCountX:TVkUInt32;groupCountY:TVkUInt32;groupCountZ:TVkUInt32);
begin
 fCommands.CmdDrawMeshTasksEXT(commandBuffer,groupCountX,groupCountY,groupCountZ);
end;

procedure TVulkan.CmdDrawMeshTasksIndirectEXT(commandBuffer:TVkCommandBuffer;buffer:TVkBuffer;offset:TVkDeviceSize;drawCount:TVkUInt32;stride:TVkUInt32);
begin
 fCommands.CmdDrawMeshTasksIndirectEXT(commandBuffer,buffer,offset,drawCount,stride);
end;

procedure TVulkan.CmdDrawMeshTasksIndirectCountEXT(commandBuffer:TVkCommandBuffer;buffer:TVkBuffer;offset:TVkDeviceSize;countBuffer:TVkBuffer;countBufferOffset:TVkDeviceSize;maxDrawCount:TVkUInt32;stride:TVkUInt32);
begin
 fCommands.CmdDrawMeshTasksIndirectCountEXT(commandBuffer,buffer,offset,countBuffer,countBufferOffset,maxDrawCount,stride);
end;

function TVulkan.CompileDeferredNV(device:TVkDevice;pipeline:TVkPipeline;shader:TVkUInt32):TVkResult;
begin
 result:=fCommands.CompileDeferredNV(device,pipeline,shader);
end;

function TVulkan.CreateAccelerationStructureNV(device:TVkDevice;const pCreateInfo:PVkAccelerationStructureCreateInfoNV;const pAllocator:PVkAllocationCallbacks;pAccelerationStructure:PVkAccelerationStructureNV):TVkResult;
begin
 result:=fCommands.CreateAccelerationStructureNV(device,pCreateInfo,pAllocator,pAccelerationStructure);
end;

procedure TVulkan.CmdBindInvocationMaskHUAWEI(commandBuffer:TVkCommandBuffer;imageView:TVkImageView;imageLayout:TVkImageLayout);
begin
 fCommands.CmdBindInvocationMaskHUAWEI(commandBuffer,imageView,imageLayout);
end;

procedure TVulkan.DestroyAccelerationStructureKHR(device:TVkDevice;accelerationStructure:TVkAccelerationStructureKHR;const pAllocator:PVkAllocationCallbacks);
begin
 fCommands.DestroyAccelerationStructureKHR(device,accelerationStructure,pAllocator);
end;

procedure TVulkan.DestroyAccelerationStructureNV(device:TVkDevice;accelerationStructure:TVkAccelerationStructureNV;const pAllocator:PVkAllocationCallbacks);
begin
 fCommands.DestroyAccelerationStructureNV(device,accelerationStructure,pAllocator);
end;

procedure TVulkan.GetAccelerationStructureMemoryRequirementsNV(device:TVkDevice;const pInfo:PVkAccelerationStructureMemoryRequirementsInfoNV;pMemoryRequirements:PVkMemoryRequirements2KHR);
begin
 fCommands.GetAccelerationStructureMemoryRequirementsNV(device,pInfo,pMemoryRequirements);
end;

function TVulkan.BindAccelerationStructureMemoryNV(device:TVkDevice;bindInfoCount:TVkUInt32;const pBindInfos:PVkBindAccelerationStructureMemoryInfoNV):TVkResult;
begin
 result:=fCommands.BindAccelerationStructureMemoryNV(device,bindInfoCount,pBindInfos);
end;

procedure TVulkan.CmdCopyAccelerationStructureNV(commandBuffer:TVkCommandBuffer;dst:TVkAccelerationStructureNV;src:TVkAccelerationStructureNV;mode:TVkCopyAccelerationStructureModeKHR);
begin
 fCommands.CmdCopyAccelerationStructureNV(commandBuffer,dst,src,mode);
end;

procedure TVulkan.CmdCopyAccelerationStructureKHR(commandBuffer:TVkCommandBuffer;const pInfo:PVkCopyAccelerationStructureInfoKHR);
begin
 fCommands.CmdCopyAccelerationStructureKHR(commandBuffer,pInfo);
end;

function TVulkan.CopyAccelerationStructureKHR(device:TVkDevice;deferredOperation:TVkDeferredOperationKHR;const pInfo:PVkCopyAccelerationStructureInfoKHR):TVkResult;
begin
 result:=fCommands.CopyAccelerationStructureKHR(device,deferredOperation,pInfo);
end;

procedure TVulkan.CmdCopyAccelerationStructureToMemoryKHR(commandBuffer:TVkCommandBuffer;const pInfo:PVkCopyAccelerationStructureToMemoryInfoKHR);
begin
 fCommands.CmdCopyAccelerationStructureToMemoryKHR(commandBuffer,pInfo);
end;

function TVulkan.CopyAccelerationStructureToMemoryKHR(device:TVkDevice;deferredOperation:TVkDeferredOperationKHR;const pInfo:PVkCopyAccelerationStructureToMemoryInfoKHR):TVkResult;
begin
 result:=fCommands.CopyAccelerationStructureToMemoryKHR(device,deferredOperation,pInfo);
end;

procedure TVulkan.CmdCopyMemoryToAccelerationStructureKHR(commandBuffer:TVkCommandBuffer;const pInfo:PVkCopyMemoryToAccelerationStructureInfoKHR);
begin
 fCommands.CmdCopyMemoryToAccelerationStructureKHR(commandBuffer,pInfo);
end;

function TVulkan.CopyMemoryToAccelerationStructureKHR(device:TVkDevice;deferredOperation:TVkDeferredOperationKHR;const pInfo:PVkCopyMemoryToAccelerationStructureInfoKHR):TVkResult;
begin
 result:=fCommands.CopyMemoryToAccelerationStructureKHR(device,deferredOperation,pInfo);
end;

procedure TVulkan.CmdWriteAccelerationStructuresPropertiesKHR(commandBuffer:TVkCommandBuffer;accelerationStructureCount:TVkUInt32;const pAccelerationStructures:PVkAccelerationStructureKHR;queryType:TVkQueryType;queryPool:TVkQueryPool;firstQuery:TVkUInt32);
begin
 fCommands.CmdWriteAccelerationStructuresPropertiesKHR(commandBuffer,accelerationStructureCount,pAccelerationStructures,queryType,queryPool,firstQuery);
end;

procedure TVulkan.CmdWriteAccelerationStructuresPropertiesNV(commandBuffer:TVkCommandBuffer;accelerationStructureCount:TVkUInt32;const pAccelerationStructures:PVkAccelerationStructureNV;queryType:TVkQueryType;queryPool:TVkQueryPool;firstQuery:TVkUInt32);
begin
 fCommands.CmdWriteAccelerationStructuresPropertiesNV(commandBuffer,accelerationStructureCount,pAccelerationStructures,queryType,queryPool,firstQuery);
end;

procedure TVulkan.CmdBuildAccelerationStructureNV(commandBuffer:TVkCommandBuffer;const pInfo:PVkAccelerationStructureInfoNV;instanceData:TVkBuffer;instanceOffset:TVkDeviceSize;update:TVkBool32;dst:TVkAccelerationStructureNV;src:TVkAccelerationStructureNV;scratch:TVkBuffer;scratchOffset:TVkDeviceSize);
begin
 fCommands.CmdBuildAccelerationStructureNV(commandBuffer,pInfo,instanceData,instanceOffset,update,dst,src,scratch,scratchOffset);
end;

function TVulkan.WriteAccelerationStructuresPropertiesKHR(device:TVkDevice;accelerationStructureCount:TVkUInt32;const pAccelerationStructures:PVkAccelerationStructureKHR;queryType:TVkQueryType;dataSize:TVkSize;pData:PVkVoid;stride:TVkSize):TVkResult;
begin
 result:=fCommands.WriteAccelerationStructuresPropertiesKHR(device,accelerationStructureCount,pAccelerationStructures,queryType,dataSize,pData,stride);
end;

procedure TVulkan.CmdTraceRaysKHR(commandBuffer:TVkCommandBuffer;const pRaygenShaderBindingTable:PVkStridedDeviceAddressRegionKHR;const pMissShaderBindingTable:PVkStridedDeviceAddressRegionKHR;const pHitShaderBindingTable:PVkStridedDeviceAddressRegionKHR;const pCallableShaderBindingTable:PVkStridedDeviceAddressRegionKHR;width:TVkUInt32;height:TVkUInt32;depth:TVkUInt32);
begin
 fCommands.CmdTraceRaysKHR(commandBuffer,pRaygenShaderBindingTable,pMissShaderBindingTable,pHitShaderBindingTable,pCallableShaderBindingTable,width,height,depth);
end;

procedure TVulkan.CmdTraceRaysNV(commandBuffer:TVkCommandBuffer;raygenShaderBindingTableBuffer:TVkBuffer;raygenShaderBindingOffset:TVkDeviceSize;missShaderBindingTableBuffer:TVkBuffer;missShaderBindingOffset:TVkDeviceSize;missShaderBindingStride:TVkDeviceSize;hitShaderBindingTableBuffer:TVkBuffer;hitShaderBindingOffset:TVkDeviceSize;hitShaderBindingStride:TVkDeviceSize;callableShaderBindingTableBuffer:TVkBuffer;callableShaderBindingOffset:TVkDeviceSize;callableShaderBindingStride:TVkDeviceSize;width:TVkUInt32;height:TVkUInt32;depth:TVkUInt32);
begin
 fCommands.CmdTraceRaysNV(commandBuffer,raygenShaderBindingTableBuffer,raygenShaderBindingOffset,missShaderBindingTableBuffer,missShaderBindingOffset,missShaderBindingStride,hitShaderBindingTableBuffer,hitShaderBindingOffset,hitShaderBindingStride,callableShaderBindingTableBuffer,callableShaderBindingOffset,callableShaderBindingStride,width,height,depth);
end;

function TVulkan.GetRayTracingShaderGroupHandlesKHR(device:TVkDevice;pipeline:TVkPipeline;firstGroup:TVkUInt32;groupCount:TVkUInt32;dataSize:TVkSize;pData:PVkVoid):TVkResult;
begin
 result:=fCommands.GetRayTracingShaderGroupHandlesKHR(device,pipeline,firstGroup,groupCount,dataSize,pData);
end;

function TVulkan.GetRayTracingShaderGroupHandlesNV(device:TVkDevice;pipeline:TVkPipeline;firstGroup:TVkUInt32;groupCount:TVkUInt32;dataSize:TVkSize;pData:PVkVoid):TVkResult;
begin
 result:=fCommands.GetRayTracingShaderGroupHandlesNV(device,pipeline,firstGroup,groupCount,dataSize,pData);
end;

function TVulkan.GetRayTracingCaptureReplayShaderGroupHandlesKHR(device:TVkDevice;pipeline:TVkPipeline;firstGroup:TVkUInt32;groupCount:TVkUInt32;dataSize:TVkSize;pData:PVkVoid):TVkResult;
begin
 result:=fCommands.GetRayTracingCaptureReplayShaderGroupHandlesKHR(device,pipeline,firstGroup,groupCount,dataSize,pData);
end;

function TVulkan.GetAccelerationStructureHandleNV(device:TVkDevice;accelerationStructure:TVkAccelerationStructureNV;dataSize:TVkSize;pData:PVkVoid):TVkResult;
begin
 result:=fCommands.GetAccelerationStructureHandleNV(device,accelerationStructure,dataSize,pData);
end;

function TVulkan.CreateRayTracingPipelinesNV(device:TVkDevice;pipelineCache:TVkPipelineCache;createInfoCount:TVkUInt32;const pCreateInfos:PVkRayTracingPipelineCreateInfoNV;const pAllocator:PVkAllocationCallbacks;pPipelines:PVkPipeline):TVkResult;
begin
 result:=fCommands.CreateRayTracingPipelinesNV(device,pipelineCache,createInfoCount,pCreateInfos,pAllocator,pPipelines);
end;

function TVulkan.CreateRayTracingPipelinesKHR(device:TVkDevice;deferredOperation:TVkDeferredOperationKHR;pipelineCache:TVkPipelineCache;createInfoCount:TVkUInt32;const pCreateInfos:PVkRayTracingPipelineCreateInfoKHR;const pAllocator:PVkAllocationCallbacks;pPipelines:PVkPipeline):TVkResult;
begin
 result:=fCommands.CreateRayTracingPipelinesKHR(device,deferredOperation,pipelineCache,createInfoCount,pCreateInfos,pAllocator,pPipelines);
end;

function TVulkan.GetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice:TVkPhysicalDevice;pPropertyCount:PVkUInt32;pProperties:PVkCooperativeMatrixPropertiesNV):TVkResult;
begin
 result:=fCommands.GetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice,pPropertyCount,pProperties);
end;

procedure TVulkan.CmdTraceRaysIndirectKHR(commandBuffer:TVkCommandBuffer;const pRaygenShaderBindingTable:PVkStridedDeviceAddressRegionKHR;const pMissShaderBindingTable:PVkStridedDeviceAddressRegionKHR;const pHitShaderBindingTable:PVkStridedDeviceAddressRegionKHR;const pCallableShaderBindingTable:PVkStridedDeviceAddressRegionKHR;indirectDeviceAddress:TVkDeviceAddress);
begin
 fCommands.CmdTraceRaysIndirectKHR(commandBuffer,pRaygenShaderBindingTable,pMissShaderBindingTable,pHitShaderBindingTable,pCallableShaderBindingTable,indirectDeviceAddress);
end;

procedure TVulkan.CmdTraceRaysIndirect2KHR(commandBuffer:TVkCommandBuffer;indirectDeviceAddress:TVkDeviceAddress);
begin
 fCommands.CmdTraceRaysIndirect2KHR(commandBuffer,indirectDeviceAddress);
end;

procedure TVulkan.GetDeviceAccelerationStructureCompatibilityKHR(device:TVkDevice;const pVersionInfo:PVkAccelerationStructureVersionInfoKHR;pCompatibility:PVkAccelerationStructureCompatibilityKHR);
begin
 fCommands.GetDeviceAccelerationStructureCompatibilityKHR(device,pVersionInfo,pCompatibility);
end;

function TVulkan.GetRayTracingShaderGroupStackSizeKHR(device:TVkDevice;pipeline:TVkPipeline;group:TVkUInt32;groupShader:TVkShaderGroupShaderKHR):TVkDeviceSize;
begin
 result:=fCommands.GetRayTracingShaderGroupStackSizeKHR(device,pipeline,group,groupShader);
end;

procedure TVulkan.CmdSetRayTracingPipelineStackSizeKHR(commandBuffer:TVkCommandBuffer;pipelineStackSize:TVkUInt32);
begin
 fCommands.CmdSetRayTracingPipelineStackSizeKHR(commandBuffer,pipelineStackSize);
end;

function TVulkan.GetImageViewHandleNVX(device:TVkDevice;const pInfo:PVkImageViewHandleInfoNVX):TVkUInt32;
begin
 result:=fCommands.GetImageViewHandleNVX(device,pInfo);
end;

function TVulkan.GetImageViewAddressNVX(device:TVkDevice;imageView:TVkImageView;pProperties:PVkImageViewAddressPropertiesNVX):TVkResult;
begin
 result:=fCommands.GetImageViewAddressNVX(device,imageView,pProperties);
end;

function TVulkan.GetPhysicalDeviceSurfacePresentModes2EXT(physicalDevice:TVkPhysicalDevice;const pSurfaceInfo:PVkPhysicalDeviceSurfaceInfo2KHR;pPresentModeCount:PVkUInt32;pPresentModes:PVkPresentModeKHR):TVkResult;
begin
 result:=fCommands.GetPhysicalDeviceSurfacePresentModes2EXT(physicalDevice,pSurfaceInfo,pPresentModeCount,pPresentModes);
end;

function TVulkan.GetDeviceGroupSurfacePresentModes2EXT(device:TVkDevice;const pSurfaceInfo:PVkPhysicalDeviceSurfaceInfo2KHR;pModes:PVkDeviceGroupPresentModeFlagsKHR):TVkResult;
begin
 result:=fCommands.GetDeviceGroupSurfacePresentModes2EXT(device,pSurfaceInfo,pModes);
end;

function TVulkan.AcquireFullScreenExclusiveModeEXT(device:TVkDevice;swapchain:TVkSwapchainKHR):TVkResult;
begin
 result:=fCommands.AcquireFullScreenExclusiveModeEXT(device,swapchain);
end;

function TVulkan.ReleaseFullScreenExclusiveModeEXT(device:TVkDevice;swapchain:TVkSwapchainKHR):TVkResult;
begin
 result:=fCommands.ReleaseFullScreenExclusiveModeEXT(device,swapchain);
end;

function TVulkan.EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice:TVkPhysicalDevice;queueFamilyIndex:TVkUInt32;pCounterCount:PVkUInt32;pCounters:PVkPerformanceCounterKHR;pCounterDescriptions:PVkPerformanceCounterDescriptionKHR):TVkResult;
begin
 result:=fCommands.EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice,queueFamilyIndex,pCounterCount,pCounters,pCounterDescriptions);
end;

procedure TVulkan.GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice:TVkPhysicalDevice;const pPerformanceQueryCreateInfo:PVkQueryPoolPerformanceCreateInfoKHR;pNumPasses:PVkUInt32);
begin
 fCommands.GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice,pPerformanceQueryCreateInfo,pNumPasses);
end;

function TVulkan.AcquireProfilingLockKHR(device:TVkDevice;const pInfo:PVkAcquireProfilingLockInfoKHR):TVkResult;
begin
 result:=fCommands.AcquireProfilingLockKHR(device,pInfo);
end;

procedure TVulkan.ReleaseProfilingLockKHR(device:TVkDevice);
begin
 fCommands.ReleaseProfilingLockKHR(device);
end;

function TVulkan.GetImageDrmFormatModifierPropertiesEXT(device:TVkDevice;image:TVkImage;pProperties:PVkImageDrmFormatModifierPropertiesEXT):TVkResult;
begin
 result:=fCommands.GetImageDrmFormatModifierPropertiesEXT(device,image,pProperties);
end;

function TVulkan.GetBufferOpaqueCaptureAddress(device:TVkDevice;const pInfo:PVkBufferDeviceAddressInfo):TVkUInt64;
begin
 result:=fCommands.GetBufferOpaqueCaptureAddress(device,pInfo);
end;

function TVulkan.GetBufferOpaqueCaptureAddressKHR(device:TVkDevice;const pInfo:PVkBufferDeviceAddressInfo):TVkUInt64;
begin
 result:=fCommands.GetBufferOpaqueCaptureAddressKHR(device,pInfo);
end;

function TVulkan.GetBufferDeviceAddress(device:TVkDevice;const pInfo:PVkBufferDeviceAddressInfo):TVkDeviceAddress;
begin
 result:=fCommands.GetBufferDeviceAddress(device,pInfo);
end;

function TVulkan.GetBufferDeviceAddressKHR(device:TVkDevice;const pInfo:PVkBufferDeviceAddressInfo):TVkDeviceAddress;
begin
 result:=fCommands.GetBufferDeviceAddressKHR(device,pInfo);
end;

function TVulkan.GetBufferDeviceAddressEXT(device:TVkDevice;const pInfo:PVkBufferDeviceAddressInfo):TVkDeviceAddress;
begin
 result:=fCommands.GetBufferDeviceAddressEXT(device,pInfo);
end;

function TVulkan.CreateHeadlessSurfaceEXT(instance:TVkInstance;const pCreateInfo:PVkHeadlessSurfaceCreateInfoEXT;const pAllocator:PVkAllocationCallbacks;pSurface:PVkSurfaceKHR):TVkResult;
begin
 result:=fCommands.CreateHeadlessSurfaceEXT(instance,pCreateInfo,pAllocator,pSurface);
end;

function TVulkan.GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice:TVkPhysicalDevice;pCombinationCount:PVkUInt32;pCombinations:PVkFramebufferMixedSamplesCombinationNV):TVkResult;
begin
 result:=fCommands.GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice,pCombinationCount,pCombinations);
end;

function TVulkan.InitializePerformanceApiINTEL(device:TVkDevice;const pInitializeInfo:PVkInitializePerformanceApiInfoINTEL):TVkResult;
begin
 result:=fCommands.InitializePerformanceApiINTEL(device,pInitializeInfo);
end;

procedure TVulkan.UninitializePerformanceApiINTEL(device:TVkDevice);
begin
 fCommands.UninitializePerformanceApiINTEL(device);
end;

function TVulkan.CmdSetPerformanceMarkerINTEL(commandBuffer:TVkCommandBuffer;const pMarkerInfo:PVkPerformanceMarkerInfoINTEL):TVkResult;
begin
 result:=fCommands.CmdSetPerformanceMarkerINTEL(commandBuffer,pMarkerInfo);
end;

function TVulkan.CmdSetPerformanceStreamMarkerINTEL(commandBuffer:TVkCommandBuffer;const pMarkerInfo:PVkPerformanceStreamMarkerInfoINTEL):TVkResult;
begin
 result:=fCommands.CmdSetPerformanceStreamMarkerINTEL(commandBuffer,pMarkerInfo);
end;

function TVulkan.CmdSetPerformanceOverrideINTEL(commandBuffer:TVkCommandBuffer;const pOverrideInfo:PVkPerformanceOverrideInfoINTEL):TVkResult;
begin
 result:=fCommands.CmdSetPerformanceOverrideINTEL(commandBuffer,pOverrideInfo);
end;

function TVulkan.AcquirePerformanceConfigurationINTEL(device:TVkDevice;const pAcquireInfo:PVkPerformanceConfigurationAcquireInfoINTEL;pConfiguration:PVkPerformanceConfigurationINTEL):TVkResult;
begin
 result:=fCommands.AcquirePerformanceConfigurationINTEL(device,pAcquireInfo,pConfiguration);
end;

function TVulkan.ReleasePerformanceConfigurationINTEL(device:TVkDevice;configuration:TVkPerformanceConfigurationINTEL):TVkResult;
begin
 result:=fCommands.ReleasePerformanceConfigurationINTEL(device,configuration);
end;

function TVulkan.QueueSetPerformanceConfigurationINTEL(queue:TVkQueue;configuration:TVkPerformanceConfigurationINTEL):TVkResult;
begin
 result:=fCommands.QueueSetPerformanceConfigurationINTEL(queue,configuration);
end;

function TVulkan.GetPerformanceParameterINTEL(device:TVkDevice;parameter:TVkPerformanceParameterTypeINTEL;pValue:PVkPerformanceValueINTEL):TVkResult;
begin
 result:=fCommands.GetPerformanceParameterINTEL(device,parameter,pValue);
end;

function TVulkan.GetDeviceMemoryOpaqueCaptureAddress(device:TVkDevice;const pInfo:PVkDeviceMemoryOpaqueCaptureAddressInfo):TVkUInt64;
begin
 result:=fCommands.GetDeviceMemoryOpaqueCaptureAddress(device,pInfo);
end;

function TVulkan.GetDeviceMemoryOpaqueCaptureAddressKHR(device:TVkDevice;const pInfo:PVkDeviceMemoryOpaqueCaptureAddressInfo):TVkUInt64;
begin
 result:=fCommands.GetDeviceMemoryOpaqueCaptureAddressKHR(device,pInfo);
end;

function TVulkan.GetPipelineExecutablePropertiesKHR(device:TVkDevice;const pPipelineInfo:PVkPipelineInfoKHR;pExecutableCount:PVkUInt32;pProperties:PVkPipelineExecutablePropertiesKHR):TVkResult;
begin
 result:=fCommands.GetPipelineExecutablePropertiesKHR(device,pPipelineInfo,pExecutableCount,pProperties);
end;

function TVulkan.GetPipelineExecutableStatisticsKHR(device:TVkDevice;const pExecutableInfo:PVkPipelineExecutableInfoKHR;pStatisticCount:PVkUInt32;pStatistics:PVkPipelineExecutableStatisticKHR):TVkResult;
begin
 result:=fCommands.GetPipelineExecutableStatisticsKHR(device,pExecutableInfo,pStatisticCount,pStatistics);
end;

function TVulkan.GetPipelineExecutableInternalRepresentationsKHR(device:TVkDevice;const pExecutableInfo:PVkPipelineExecutableInfoKHR;pInternalRepresentationCount:PVkUInt32;pInternalRepresentations:PVkPipelineExecutableInternalRepresentationKHR):TVkResult;
begin
 result:=fCommands.GetPipelineExecutableInternalRepresentationsKHR(device,pExecutableInfo,pInternalRepresentationCount,pInternalRepresentations);
end;

procedure TVulkan.CmdSetLineStippleEXT(commandBuffer:TVkCommandBuffer;lineStippleFactor:TVkUInt32;lineStipplePattern:TVkUInt16);
begin
 fCommands.CmdSetLineStippleEXT(commandBuffer,lineStippleFactor,lineStipplePattern);
end;

{$ifdef VulkanSC}
function TVulkan.GetFaultData(device:TVkDevice;faultQueryBehavior:TVkFaultQueryBehavior;pUnrecordedFaults:PVkBool32;pFaultCount:PVkUInt32;pFaults:PVkFaultData):TVkResult;
begin
 result:=fCommands.GetFaultData(device,faultQueryBehavior,pUnrecordedFaults,pFaultCount,pFaults);
end;
{$endif}

function TVulkan.GetPhysicalDeviceToolProperties(physicalDevice:TVkPhysicalDevice;pToolCount:PVkUInt32;pToolProperties:PVkPhysicalDeviceToolProperties):TVkResult;
begin
 result:=fCommands.GetPhysicalDeviceToolProperties(physicalDevice,pToolCount,pToolProperties);
end;

function TVulkan.GetPhysicalDeviceToolPropertiesEXT(physicalDevice:TVkPhysicalDevice;pToolCount:PVkUInt32;pToolProperties:PVkPhysicalDeviceToolProperties):TVkResult;
begin
 result:=fCommands.GetPhysicalDeviceToolPropertiesEXT(physicalDevice,pToolCount,pToolProperties);
end;

function TVulkan.CreateAccelerationStructureKHR(device:TVkDevice;const pCreateInfo:PVkAccelerationStructureCreateInfoKHR;const pAllocator:PVkAllocationCallbacks;pAccelerationStructure:PVkAccelerationStructureKHR):TVkResult;
begin
 result:=fCommands.CreateAccelerationStructureKHR(device,pCreateInfo,pAllocator,pAccelerationStructure);
end;

procedure TVulkan.CmdBuildAccelerationStructuresKHR(commandBuffer:TVkCommandBuffer;infoCount:TVkUInt32;const pInfos:PVkAccelerationStructureBuildGeometryInfoKHR;const ppBuildRangeInfos:PPVkAccelerationStructureBuildRangeInfoKHR);
begin
 fCommands.CmdBuildAccelerationStructuresKHR(commandBuffer,infoCount,pInfos,ppBuildRangeInfos);
end;

procedure TVulkan.CmdBuildAccelerationStructuresIndirectKHR(commandBuffer:TVkCommandBuffer;infoCount:TVkUInt32;const pInfos:PVkAccelerationStructureBuildGeometryInfoKHR;const pIndirectDeviceAddresses:PVkDeviceAddress;const pIndirectStrides:PVkUInt32;const ppMaxPrimitiveCounts:PPVkUInt32);
begin
 fCommands.CmdBuildAccelerationStructuresIndirectKHR(commandBuffer,infoCount,pInfos,pIndirectDeviceAddresses,pIndirectStrides,ppMaxPrimitiveCounts);
end;

function TVulkan.BuildAccelerationStructuresKHR(device:TVkDevice;deferredOperation:TVkDeferredOperationKHR;infoCount:TVkUInt32;const pInfos:PVkAccelerationStructureBuildGeometryInfoKHR;const ppBuildRangeInfos:PPVkAccelerationStructureBuildRangeInfoKHR):TVkResult;
begin
 result:=fCommands.BuildAccelerationStructuresKHR(device,deferredOperation,infoCount,pInfos,ppBuildRangeInfos);
end;

function TVulkan.GetAccelerationStructureDeviceAddressKHR(device:TVkDevice;const pInfo:PVkAccelerationStructureDeviceAddressInfoKHR):TVkDeviceAddress;
begin
 result:=fCommands.GetAccelerationStructureDeviceAddressKHR(device,pInfo);
end;

function TVulkan.CreateDeferredOperationKHR(device:TVkDevice;const pAllocator:PVkAllocationCallbacks;pDeferredOperation:PVkDeferredOperationKHR):TVkResult;
begin
 result:=fCommands.CreateDeferredOperationKHR(device,pAllocator,pDeferredOperation);
end;

procedure TVulkan.DestroyDeferredOperationKHR(device:TVkDevice;operation:TVkDeferredOperationKHR;const pAllocator:PVkAllocationCallbacks);
begin
 fCommands.DestroyDeferredOperationKHR(device,operation,pAllocator);
end;

function TVulkan.GetDeferredOperationMaxConcurrencyKHR(device:TVkDevice;operation:TVkDeferredOperationKHR):TVkUInt32;
begin
 result:=fCommands.GetDeferredOperationMaxConcurrencyKHR(device,operation);
end;

function TVulkan.GetDeferredOperationResultKHR(device:TVkDevice;operation:TVkDeferredOperationKHR):TVkResult;
begin
 result:=fCommands.GetDeferredOperationResultKHR(device,operation);
end;

function TVulkan.DeferredOperationJoinKHR(device:TVkDevice;operation:TVkDeferredOperationKHR):TVkResult;
begin
 result:=fCommands.DeferredOperationJoinKHR(device,operation);
end;

procedure TVulkan.GetPipelineIndirectMemoryRequirementsNV(device:TVkDevice;const pCreateInfo:PVkComputePipelineCreateInfo;pMemoryRequirements:PVkMemoryRequirements2);
begin
 fCommands.GetPipelineIndirectMemoryRequirementsNV(device,pCreateInfo,pMemoryRequirements);
end;

function TVulkan.GetPipelineIndirectDeviceAddressNV(device:TVkDevice;const pInfo:PVkPipelineIndirectDeviceAddressInfoNV):TVkDeviceAddress;
begin
 result:=fCommands.GetPipelineIndirectDeviceAddressNV(device,pInfo);
end;

procedure TVulkan.CmdSetCullMode(commandBuffer:TVkCommandBuffer;cullMode:TVkCullModeFlags);
begin
 fCommands.CmdSetCullMode(commandBuffer,cullMode);
end;

procedure TVulkan.CmdSetCullModeEXT(commandBuffer:TVkCommandBuffer;cullMode:TVkCullModeFlags);
begin
 fCommands.CmdSetCullModeEXT(commandBuffer,cullMode);
end;

procedure TVulkan.CmdSetFrontFace(commandBuffer:TVkCommandBuffer;frontFace:TVkFrontFace);
begin
 fCommands.CmdSetFrontFace(commandBuffer,frontFace);
end;

procedure TVulkan.CmdSetFrontFaceEXT(commandBuffer:TVkCommandBuffer;frontFace:TVkFrontFace);
begin
 fCommands.CmdSetFrontFaceEXT(commandBuffer,frontFace);
end;

procedure TVulkan.CmdSetPrimitiveTopology(commandBuffer:TVkCommandBuffer;primitiveTopology:TVkPrimitiveTopology);
begin
 fCommands.CmdSetPrimitiveTopology(commandBuffer,primitiveTopology);
end;

procedure TVulkan.CmdSetPrimitiveTopologyEXT(commandBuffer:TVkCommandBuffer;primitiveTopology:TVkPrimitiveTopology);
begin
 fCommands.CmdSetPrimitiveTopologyEXT(commandBuffer,primitiveTopology);
end;

procedure TVulkan.CmdSetViewportWithCount(commandBuffer:TVkCommandBuffer;viewportCount:TVkUInt32;const pViewports:PVkViewport);
begin
 fCommands.CmdSetViewportWithCount(commandBuffer,viewportCount,pViewports);
end;

procedure TVulkan.CmdSetViewportWithCountEXT(commandBuffer:TVkCommandBuffer;viewportCount:TVkUInt32;const pViewports:PVkViewport);
begin
 fCommands.CmdSetViewportWithCountEXT(commandBuffer,viewportCount,pViewports);
end;

procedure TVulkan.CmdSetScissorWithCount(commandBuffer:TVkCommandBuffer;scissorCount:TVkUInt32;const pScissors:PVkRect2D);
begin
 fCommands.CmdSetScissorWithCount(commandBuffer,scissorCount,pScissors);
end;

procedure TVulkan.CmdSetScissorWithCountEXT(commandBuffer:TVkCommandBuffer;scissorCount:TVkUInt32;const pScissors:PVkRect2D);
begin
 fCommands.CmdSetScissorWithCountEXT(commandBuffer,scissorCount,pScissors);
end;

procedure TVulkan.CmdBindIndexBuffer2KHR(commandBuffer:TVkCommandBuffer;buffer:TVkBuffer;offset:TVkDeviceSize;size:TVkDeviceSize;indexType:TVkIndexType);
begin
 fCommands.CmdBindIndexBuffer2KHR(commandBuffer,buffer,offset,size,indexType);
end;

procedure TVulkan.CmdBindVertexBuffers2(commandBuffer:TVkCommandBuffer;firstBinding:TVkUInt32;bindingCount:TVkUInt32;const pBuffers:PVkBuffer;const pOffsets:PVkDeviceSize;const pSizes:PVkDeviceSize;const pStrides:PVkDeviceSize);
begin
 fCommands.CmdBindVertexBuffers2(commandBuffer,firstBinding,bindingCount,pBuffers,pOffsets,pSizes,pStrides);
end;

procedure TVulkan.CmdBindVertexBuffers2EXT(commandBuffer:TVkCommandBuffer;firstBinding:TVkUInt32;bindingCount:TVkUInt32;const pBuffers:PVkBuffer;const pOffsets:PVkDeviceSize;const pSizes:PVkDeviceSize;const pStrides:PVkDeviceSize);
begin
 fCommands.CmdBindVertexBuffers2EXT(commandBuffer,firstBinding,bindingCount,pBuffers,pOffsets,pSizes,pStrides);
end;

procedure TVulkan.CmdSetDepthTestEnable(commandBuffer:TVkCommandBuffer;depthTestEnable:TVkBool32);
begin
 fCommands.CmdSetDepthTestEnable(commandBuffer,depthTestEnable);
end;

procedure TVulkan.CmdSetDepthTestEnableEXT(commandBuffer:TVkCommandBuffer;depthTestEnable:TVkBool32);
begin
 fCommands.CmdSetDepthTestEnableEXT(commandBuffer,depthTestEnable);
end;

procedure TVulkan.CmdSetDepthWriteEnable(commandBuffer:TVkCommandBuffer;depthWriteEnable:TVkBool32);
begin
 fCommands.CmdSetDepthWriteEnable(commandBuffer,depthWriteEnable);
end;

procedure TVulkan.CmdSetDepthWriteEnableEXT(commandBuffer:TVkCommandBuffer;depthWriteEnable:TVkBool32);
begin
 fCommands.CmdSetDepthWriteEnableEXT(commandBuffer,depthWriteEnable);
end;

procedure TVulkan.CmdSetDepthCompareOp(commandBuffer:TVkCommandBuffer;depthCompareOp:TVkCompareOp);
begin
 fCommands.CmdSetDepthCompareOp(commandBuffer,depthCompareOp);
end;

procedure TVulkan.CmdSetDepthCompareOpEXT(commandBuffer:TVkCommandBuffer;depthCompareOp:TVkCompareOp);
begin
 fCommands.CmdSetDepthCompareOpEXT(commandBuffer,depthCompareOp);
end;

procedure TVulkan.CmdSetDepthBoundsTestEnable(commandBuffer:TVkCommandBuffer;depthBoundsTestEnable:TVkBool32);
begin
 fCommands.CmdSetDepthBoundsTestEnable(commandBuffer,depthBoundsTestEnable);
end;

procedure TVulkan.CmdSetDepthBoundsTestEnableEXT(commandBuffer:TVkCommandBuffer;depthBoundsTestEnable:TVkBool32);
begin
 fCommands.CmdSetDepthBoundsTestEnableEXT(commandBuffer,depthBoundsTestEnable);
end;

procedure TVulkan.CmdSetStencilTestEnable(commandBuffer:TVkCommandBuffer;stencilTestEnable:TVkBool32);
begin
 fCommands.CmdSetStencilTestEnable(commandBuffer,stencilTestEnable);
end;

procedure TVulkan.CmdSetStencilTestEnableEXT(commandBuffer:TVkCommandBuffer;stencilTestEnable:TVkBool32);
begin
 fCommands.CmdSetStencilTestEnableEXT(commandBuffer,stencilTestEnable);
end;

procedure TVulkan.CmdSetStencilOp(commandBuffer:TVkCommandBuffer;faceMask:TVkStencilFaceFlags;failOp:TVkStencilOp;passOp:TVkStencilOp;depthFailOp:TVkStencilOp;compareOp:TVkCompareOp);
begin
 fCommands.CmdSetStencilOp(commandBuffer,faceMask,failOp,passOp,depthFailOp,compareOp);
end;

procedure TVulkan.CmdSetStencilOpEXT(commandBuffer:TVkCommandBuffer;faceMask:TVkStencilFaceFlags;failOp:TVkStencilOp;passOp:TVkStencilOp;depthFailOp:TVkStencilOp;compareOp:TVkCompareOp);
begin
 fCommands.CmdSetStencilOpEXT(commandBuffer,faceMask,failOp,passOp,depthFailOp,compareOp);
end;

procedure TVulkan.CmdSetPatchControlPointsEXT(commandBuffer:TVkCommandBuffer;patchControlPoints:TVkUInt32);
begin
 fCommands.CmdSetPatchControlPointsEXT(commandBuffer,patchControlPoints);
end;

procedure TVulkan.CmdSetRasterizerDiscardEnable(commandBuffer:TVkCommandBuffer;rasterizerDiscardEnable:TVkBool32);
begin
 fCommands.CmdSetRasterizerDiscardEnable(commandBuffer,rasterizerDiscardEnable);
end;

procedure TVulkan.CmdSetRasterizerDiscardEnableEXT(commandBuffer:TVkCommandBuffer;rasterizerDiscardEnable:TVkBool32);
begin
 fCommands.CmdSetRasterizerDiscardEnableEXT(commandBuffer,rasterizerDiscardEnable);
end;

procedure TVulkan.CmdSetDepthBiasEnable(commandBuffer:TVkCommandBuffer;depthBiasEnable:TVkBool32);
begin
 fCommands.CmdSetDepthBiasEnable(commandBuffer,depthBiasEnable);
end;

procedure TVulkan.CmdSetDepthBiasEnableEXT(commandBuffer:TVkCommandBuffer;depthBiasEnable:TVkBool32);
begin
 fCommands.CmdSetDepthBiasEnableEXT(commandBuffer,depthBiasEnable);
end;

procedure TVulkan.CmdSetLogicOpEXT(commandBuffer:TVkCommandBuffer;logicOp:TVkLogicOp);
begin
 fCommands.CmdSetLogicOpEXT(commandBuffer,logicOp);
end;

procedure TVulkan.CmdSetPrimitiveRestartEnable(commandBuffer:TVkCommandBuffer;primitiveRestartEnable:TVkBool32);
begin
 fCommands.CmdSetPrimitiveRestartEnable(commandBuffer,primitiveRestartEnable);
end;

procedure TVulkan.CmdSetPrimitiveRestartEnableEXT(commandBuffer:TVkCommandBuffer;primitiveRestartEnable:TVkBool32);
begin
 fCommands.CmdSetPrimitiveRestartEnableEXT(commandBuffer,primitiveRestartEnable);
end;

procedure TVulkan.CmdSetTessellationDomainOriginEXT(commandBuffer:TVkCommandBuffer;domainOrigin:TVkTessellationDomainOrigin);
begin
 fCommands.CmdSetTessellationDomainOriginEXT(commandBuffer,domainOrigin);
end;

procedure TVulkan.CmdSetDepthClampEnableEXT(commandBuffer:TVkCommandBuffer;depthClampEnable:TVkBool32);
begin
 fCommands.CmdSetDepthClampEnableEXT(commandBuffer,depthClampEnable);
end;

procedure TVulkan.CmdSetPolygonModeEXT(commandBuffer:TVkCommandBuffer;polygonMode:TVkPolygonMode);
begin
 fCommands.CmdSetPolygonModeEXT(commandBuffer,polygonMode);
end;

procedure TVulkan.CmdSetRasterizationSamplesEXT(commandBuffer:TVkCommandBuffer;rasterizationSamples:TVkSampleCountFlagBits);
begin
 fCommands.CmdSetRasterizationSamplesEXT(commandBuffer,rasterizationSamples);
end;

procedure TVulkan.CmdSetSampleMaskEXT(commandBuffer:TVkCommandBuffer;samples:TVkSampleCountFlagBits;const pSampleMask:PVkSampleMask);
begin
 fCommands.CmdSetSampleMaskEXT(commandBuffer,samples,pSampleMask);
end;

procedure TVulkan.CmdSetAlphaToCoverageEnableEXT(commandBuffer:TVkCommandBuffer;alphaToCoverageEnable:TVkBool32);
begin
 fCommands.CmdSetAlphaToCoverageEnableEXT(commandBuffer,alphaToCoverageEnable);
end;

procedure TVulkan.CmdSetAlphaToOneEnableEXT(commandBuffer:TVkCommandBuffer;alphaToOneEnable:TVkBool32);
begin
 fCommands.CmdSetAlphaToOneEnableEXT(commandBuffer,alphaToOneEnable);
end;

procedure TVulkan.CmdSetLogicOpEnableEXT(commandBuffer:TVkCommandBuffer;logicOpEnable:TVkBool32);
begin
 fCommands.CmdSetLogicOpEnableEXT(commandBuffer,logicOpEnable);
end;

procedure TVulkan.CmdSetColorBlendEnableEXT(commandBuffer:TVkCommandBuffer;firstAttachment:TVkUInt32;attachmentCount:TVkUInt32;const pColorBlendEnables:PVkBool32);
begin
 fCommands.CmdSetColorBlendEnableEXT(commandBuffer,firstAttachment,attachmentCount,pColorBlendEnables);
end;

procedure TVulkan.CmdSetColorBlendEquationEXT(commandBuffer:TVkCommandBuffer;firstAttachment:TVkUInt32;attachmentCount:TVkUInt32;const pColorBlendEquations:PVkColorBlendEquationEXT);
begin
 fCommands.CmdSetColorBlendEquationEXT(commandBuffer,firstAttachment,attachmentCount,pColorBlendEquations);
end;

procedure TVulkan.CmdSetColorWriteMaskEXT(commandBuffer:TVkCommandBuffer;firstAttachment:TVkUInt32;attachmentCount:TVkUInt32;const pColorWriteMasks:PVkColorComponentFlags);
begin
 fCommands.CmdSetColorWriteMaskEXT(commandBuffer,firstAttachment,attachmentCount,pColorWriteMasks);
end;

procedure TVulkan.CmdSetRasterizationStreamEXT(commandBuffer:TVkCommandBuffer;rasterizationStream:TVkUInt32);
begin
 fCommands.CmdSetRasterizationStreamEXT(commandBuffer,rasterizationStream);
end;

procedure TVulkan.CmdSetConservativeRasterizationModeEXT(commandBuffer:TVkCommandBuffer;conservativeRasterizationMode:TVkConservativeRasterizationModeEXT);
begin
 fCommands.CmdSetConservativeRasterizationModeEXT(commandBuffer,conservativeRasterizationMode);
end;

procedure TVulkan.CmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer:TVkCommandBuffer;extraPrimitiveOverestimationSize:TVkFloat);
begin
 fCommands.CmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer,extraPrimitiveOverestimationSize);
end;

procedure TVulkan.CmdSetDepthClipEnableEXT(commandBuffer:TVkCommandBuffer;depthClipEnable:TVkBool32);
begin
 fCommands.CmdSetDepthClipEnableEXT(commandBuffer,depthClipEnable);
end;

procedure TVulkan.CmdSetSampleLocationsEnableEXT(commandBuffer:TVkCommandBuffer;sampleLocationsEnable:TVkBool32);
begin
 fCommands.CmdSetSampleLocationsEnableEXT(commandBuffer,sampleLocationsEnable);
end;

procedure TVulkan.CmdSetColorBlendAdvancedEXT(commandBuffer:TVkCommandBuffer;firstAttachment:TVkUInt32;attachmentCount:TVkUInt32;const pColorBlendAdvanced:PVkColorBlendAdvancedEXT);
begin
 fCommands.CmdSetColorBlendAdvancedEXT(commandBuffer,firstAttachment,attachmentCount,pColorBlendAdvanced);
end;

procedure TVulkan.CmdSetProvokingVertexModeEXT(commandBuffer:TVkCommandBuffer;provokingVertexMode:TVkProvokingVertexModeEXT);
begin
 fCommands.CmdSetProvokingVertexModeEXT(commandBuffer,provokingVertexMode);
end;

procedure TVulkan.CmdSetLineRasterizationModeEXT(commandBuffer:TVkCommandBuffer;lineRasterizationMode:TVkLineRasterizationModeEXT);
begin
 fCommands.CmdSetLineRasterizationModeEXT(commandBuffer,lineRasterizationMode);
end;

procedure TVulkan.CmdSetLineStippleEnableEXT(commandBuffer:TVkCommandBuffer;stippledLineEnable:TVkBool32);
begin
 fCommands.CmdSetLineStippleEnableEXT(commandBuffer,stippledLineEnable);
end;

procedure TVulkan.CmdSetDepthClipNegativeOneToOneEXT(commandBuffer:TVkCommandBuffer;negativeOneToOne:TVkBool32);
begin
 fCommands.CmdSetDepthClipNegativeOneToOneEXT(commandBuffer,negativeOneToOne);
end;

procedure TVulkan.CmdSetViewportWScalingEnableNV(commandBuffer:TVkCommandBuffer;viewportWScalingEnable:TVkBool32);
begin
 fCommands.CmdSetViewportWScalingEnableNV(commandBuffer,viewportWScalingEnable);
end;

procedure TVulkan.CmdSetViewportSwizzleNV(commandBuffer:TVkCommandBuffer;firstViewport:TVkUInt32;viewportCount:TVkUInt32;const pViewportSwizzles:PVkViewportSwizzleNV);
begin
 fCommands.CmdSetViewportSwizzleNV(commandBuffer,firstViewport,viewportCount,pViewportSwizzles);
end;

procedure TVulkan.CmdSetCoverageToColorEnableNV(commandBuffer:TVkCommandBuffer;coverageToColorEnable:TVkBool32);
begin
 fCommands.CmdSetCoverageToColorEnableNV(commandBuffer,coverageToColorEnable);
end;

procedure TVulkan.CmdSetCoverageToColorLocationNV(commandBuffer:TVkCommandBuffer;coverageToColorLocation:TVkUInt32);
begin
 fCommands.CmdSetCoverageToColorLocationNV(commandBuffer,coverageToColorLocation);
end;

procedure TVulkan.CmdSetCoverageModulationModeNV(commandBuffer:TVkCommandBuffer;coverageModulationMode:TVkCoverageModulationModeNV);
begin
 fCommands.CmdSetCoverageModulationModeNV(commandBuffer,coverageModulationMode);
end;

procedure TVulkan.CmdSetCoverageModulationTableEnableNV(commandBuffer:TVkCommandBuffer;coverageModulationTableEnable:TVkBool32);
begin
 fCommands.CmdSetCoverageModulationTableEnableNV(commandBuffer,coverageModulationTableEnable);
end;

procedure TVulkan.CmdSetCoverageModulationTableNV(commandBuffer:TVkCommandBuffer;coverageModulationTableCount:TVkUInt32;const pCoverageModulationTable:PVkFloat);
begin
 fCommands.CmdSetCoverageModulationTableNV(commandBuffer,coverageModulationTableCount,pCoverageModulationTable);
end;

procedure TVulkan.CmdSetShadingRateImageEnableNV(commandBuffer:TVkCommandBuffer;shadingRateImageEnable:TVkBool32);
begin
 fCommands.CmdSetShadingRateImageEnableNV(commandBuffer,shadingRateImageEnable);
end;

procedure TVulkan.CmdSetCoverageReductionModeNV(commandBuffer:TVkCommandBuffer;coverageReductionMode:TVkCoverageReductionModeNV);
begin
 fCommands.CmdSetCoverageReductionModeNV(commandBuffer,coverageReductionMode);
end;

procedure TVulkan.CmdSetRepresentativeFragmentTestEnableNV(commandBuffer:TVkCommandBuffer;representativeFragmentTestEnable:TVkBool32);
begin
 fCommands.CmdSetRepresentativeFragmentTestEnableNV(commandBuffer,representativeFragmentTestEnable);
end;

function TVulkan.CreatePrivateDataSlot(device:TVkDevice;const pCreateInfo:PVkPrivateDataSlotCreateInfo;const pAllocator:PVkAllocationCallbacks;pPrivateDataSlot:PVkPrivateDataSlot):TVkResult;
begin
 result:=fCommands.CreatePrivateDataSlot(device,pCreateInfo,pAllocator,pPrivateDataSlot);
end;

function TVulkan.CreatePrivateDataSlotEXT(device:TVkDevice;const pCreateInfo:PVkPrivateDataSlotCreateInfo;const pAllocator:PVkAllocationCallbacks;pPrivateDataSlot:PVkPrivateDataSlot):TVkResult;
begin
 result:=fCommands.CreatePrivateDataSlotEXT(device,pCreateInfo,pAllocator,pPrivateDataSlot);
end;

procedure TVulkan.DestroyPrivateDataSlot(device:TVkDevice;privateDataSlot:TVkPrivateDataSlot;const pAllocator:PVkAllocationCallbacks);
begin
 fCommands.DestroyPrivateDataSlot(device,privateDataSlot,pAllocator);
end;

procedure TVulkan.DestroyPrivateDataSlotEXT(device:TVkDevice;privateDataSlot:TVkPrivateDataSlot;const pAllocator:PVkAllocationCallbacks);
begin
 fCommands.DestroyPrivateDataSlotEXT(device,privateDataSlot,pAllocator);
end;

function TVulkan.SetPrivateData(device:TVkDevice;objectType:TVkObjectType;objectHandle:TVkUInt64;privateDataSlot:TVkPrivateDataSlot;data:TVkUInt64):TVkResult;
begin
 result:=fCommands.SetPrivateData(device,objectType,objectHandle,privateDataSlot,data);
end;

function TVulkan.SetPrivateDataEXT(device:TVkDevice;objectType:TVkObjectType;objectHandle:TVkUInt64;privateDataSlot:TVkPrivateDataSlot;data:TVkUInt64):TVkResult;
begin
 result:=fCommands.SetPrivateDataEXT(device,objectType,objectHandle,privateDataSlot,data);
end;

procedure TVulkan.GetPrivateData(device:TVkDevice;objectType:TVkObjectType;objectHandle:TVkUInt64;privateDataSlot:TVkPrivateDataSlot;pData:PVkUInt64);
begin
 fCommands.GetPrivateData(device,objectType,objectHandle,privateDataSlot,pData);
end;

procedure TVulkan.GetPrivateDataEXT(device:TVkDevice;objectType:TVkObjectType;objectHandle:TVkUInt64;privateDataSlot:TVkPrivateDataSlot;pData:PVkUInt64);
begin
 fCommands.GetPrivateDataEXT(device,objectType,objectHandle,privateDataSlot,pData);
end;

procedure TVulkan.CmdCopyBuffer2(commandBuffer:TVkCommandBuffer;const pCopyBufferInfo:PVkCopyBufferInfo2);
begin
 fCommands.CmdCopyBuffer2(commandBuffer,pCopyBufferInfo);
end;

procedure TVulkan.CmdCopyBuffer2KHR(commandBuffer:TVkCommandBuffer;const pCopyBufferInfo:PVkCopyBufferInfo2);
begin
 fCommands.CmdCopyBuffer2KHR(commandBuffer,pCopyBufferInfo);
end;

procedure TVulkan.CmdCopyImage2(commandBuffer:TVkCommandBuffer;const pCopyImageInfo:PVkCopyImageInfo2);
begin
 fCommands.CmdCopyImage2(commandBuffer,pCopyImageInfo);
end;

procedure TVulkan.CmdCopyImage2KHR(commandBuffer:TVkCommandBuffer;const pCopyImageInfo:PVkCopyImageInfo2);
begin
 fCommands.CmdCopyImage2KHR(commandBuffer,pCopyImageInfo);
end;

procedure TVulkan.CmdBlitImage2(commandBuffer:TVkCommandBuffer;const pBlitImageInfo:PVkBlitImageInfo2);
begin
 fCommands.CmdBlitImage2(commandBuffer,pBlitImageInfo);
end;

procedure TVulkan.CmdBlitImage2KHR(commandBuffer:TVkCommandBuffer;const pBlitImageInfo:PVkBlitImageInfo2);
begin
 fCommands.CmdBlitImage2KHR(commandBuffer,pBlitImageInfo);
end;

procedure TVulkan.CmdCopyBufferToImage2(commandBuffer:TVkCommandBuffer;const pCopyBufferToImageInfo:PVkCopyBufferToImageInfo2);
begin
 fCommands.CmdCopyBufferToImage2(commandBuffer,pCopyBufferToImageInfo);
end;

procedure TVulkan.CmdCopyBufferToImage2KHR(commandBuffer:TVkCommandBuffer;const pCopyBufferToImageInfo:PVkCopyBufferToImageInfo2);
begin
 fCommands.CmdCopyBufferToImage2KHR(commandBuffer,pCopyBufferToImageInfo);
end;

procedure TVulkan.CmdCopyImageToBuffer2(commandBuffer:TVkCommandBuffer;const pCopyImageToBufferInfo:PVkCopyImageToBufferInfo2);
begin
 fCommands.CmdCopyImageToBuffer2(commandBuffer,pCopyImageToBufferInfo);
end;

procedure TVulkan.CmdCopyImageToBuffer2KHR(commandBuffer:TVkCommandBuffer;const pCopyImageToBufferInfo:PVkCopyImageToBufferInfo2);
begin
 fCommands.CmdCopyImageToBuffer2KHR(commandBuffer,pCopyImageToBufferInfo);
end;

procedure TVulkan.CmdResolveImage2(commandBuffer:TVkCommandBuffer;const pResolveImageInfo:PVkResolveImageInfo2);
begin
 fCommands.CmdResolveImage2(commandBuffer,pResolveImageInfo);
end;

procedure TVulkan.CmdResolveImage2KHR(commandBuffer:TVkCommandBuffer;const pResolveImageInfo:PVkResolveImageInfo2);
begin
 fCommands.CmdResolveImage2KHR(commandBuffer,pResolveImageInfo);
end;

procedure TVulkan.CmdRefreshObjectsKHR(commandBuffer:TVkCommandBuffer;const pRefreshObjects:PVkRefreshObjectListKHR);
begin
 fCommands.CmdRefreshObjectsKHR(commandBuffer,pRefreshObjects);
end;

function TVulkan.GetPhysicalDeviceRefreshableObjectTypesKHR(physicalDevice:TVkPhysicalDevice;pRefreshableObjectTypeCount:PVkUInt32;pRefreshableObjectTypes:PVkObjectType):TVkResult;
begin
 result:=fCommands.GetPhysicalDeviceRefreshableObjectTypesKHR(physicalDevice,pRefreshableObjectTypeCount,pRefreshableObjectTypes);
end;

procedure TVulkan.CmdSetFragmentShadingRateKHR(commandBuffer:TVkCommandBuffer;const pFragmentSize:PVkExtent2D;const combinerOps:TVkFragmentShadingRateCombinerOpKHR);
begin
 fCommands.CmdSetFragmentShadingRateKHR(commandBuffer,pFragmentSize,combinerOps);
end;

function TVulkan.GetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice:TVkPhysicalDevice;pFragmentShadingRateCount:PVkUInt32;pFragmentShadingRates:PVkPhysicalDeviceFragmentShadingRateKHR):TVkResult;
begin
 result:=fCommands.GetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice,pFragmentShadingRateCount,pFragmentShadingRates);
end;

procedure TVulkan.CmdSetFragmentShadingRateEnumNV(commandBuffer:TVkCommandBuffer;shadingRate:TVkFragmentShadingRateNV;const combinerOps:TVkFragmentShadingRateCombinerOpKHR);
begin
 fCommands.CmdSetFragmentShadingRateEnumNV(commandBuffer,shadingRate,combinerOps);
end;

procedure TVulkan.GetAccelerationStructureBuildSizesKHR(device:TVkDevice;buildType:TVkAccelerationStructureBuildTypeKHR;const pBuildInfo:PVkAccelerationStructureBuildGeometryInfoKHR;const pMaxPrimitiveCounts:PVkUInt32;pSizeInfo:PVkAccelerationStructureBuildSizesInfoKHR);
begin
 fCommands.GetAccelerationStructureBuildSizesKHR(device,buildType,pBuildInfo,pMaxPrimitiveCounts,pSizeInfo);
end;

procedure TVulkan.CmdSetVertexInputEXT(commandBuffer:TVkCommandBuffer;vertexBindingDescriptionCount:TVkUInt32;const pVertexBindingDescriptions:PVkVertexInputBindingDescription2EXT;vertexAttributeDescriptionCount:TVkUInt32;const pVertexAttributeDescriptions:PVkVertexInputAttributeDescription2EXT);
begin
 fCommands.CmdSetVertexInputEXT(commandBuffer,vertexBindingDescriptionCount,pVertexBindingDescriptions,vertexAttributeDescriptionCount,pVertexAttributeDescriptions);
end;

procedure TVulkan.CmdSetColorWriteEnableEXT(commandBuffer:TVkCommandBuffer;attachmentCount:TVkUInt32;const pColorWriteEnables:PVkBool32);
begin
 fCommands.CmdSetColorWriteEnableEXT(commandBuffer,attachmentCount,pColorWriteEnables);
end;

procedure TVulkan.CmdSetEvent2(commandBuffer:TVkCommandBuffer;event:TVkEvent;const pDependencyInfo:PVkDependencyInfo);
begin
 fCommands.CmdSetEvent2(commandBuffer,event,pDependencyInfo);
end;

procedure TVulkan.CmdSetEvent2KHR(commandBuffer:TVkCommandBuffer;event:TVkEvent;const pDependencyInfo:PVkDependencyInfo);
begin
 fCommands.CmdSetEvent2KHR(commandBuffer,event,pDependencyInfo);
end;

procedure TVulkan.CmdResetEvent2(commandBuffer:TVkCommandBuffer;event:TVkEvent;stageMask:TVkPipelineStageFlags2);
begin
 fCommands.CmdResetEvent2(commandBuffer,event,stageMask);
end;

procedure TVulkan.CmdResetEvent2KHR(commandBuffer:TVkCommandBuffer;event:TVkEvent;stageMask:TVkPipelineStageFlags2);
begin
 fCommands.CmdResetEvent2KHR(commandBuffer,event,stageMask);
end;

procedure TVulkan.CmdWaitEvents2(commandBuffer:TVkCommandBuffer;eventCount:TVkUInt32;const pEvents:PVkEvent;const pDependencyInfos:PVkDependencyInfo);
begin
 fCommands.CmdWaitEvents2(commandBuffer,eventCount,pEvents,pDependencyInfos);
end;

procedure TVulkan.CmdWaitEvents2KHR(commandBuffer:TVkCommandBuffer;eventCount:TVkUInt32;const pEvents:PVkEvent;const pDependencyInfos:PVkDependencyInfo);
begin
 fCommands.CmdWaitEvents2KHR(commandBuffer,eventCount,pEvents,pDependencyInfos);
end;

procedure TVulkan.CmdPipelineBarrier2(commandBuffer:TVkCommandBuffer;const pDependencyInfo:PVkDependencyInfo);
begin
 fCommands.CmdPipelineBarrier2(commandBuffer,pDependencyInfo);
end;

procedure TVulkan.CmdPipelineBarrier2KHR(commandBuffer:TVkCommandBuffer;const pDependencyInfo:PVkDependencyInfo);
begin
 fCommands.CmdPipelineBarrier2KHR(commandBuffer,pDependencyInfo);
end;

function TVulkan.QueueSubmit2(queue:TVkQueue;submitCount:TVkUInt32;const pSubmits:PVkSubmitInfo2;fence:TVkFence):TVkResult;
begin
 result:=fCommands.QueueSubmit2(queue,submitCount,pSubmits,fence);
end;

function TVulkan.QueueSubmit2KHR(queue:TVkQueue;submitCount:TVkUInt32;const pSubmits:PVkSubmitInfo2;fence:TVkFence):TVkResult;
begin
 result:=fCommands.QueueSubmit2KHR(queue,submitCount,pSubmits,fence);
end;

procedure TVulkan.CmdWriteTimestamp2(commandBuffer:TVkCommandBuffer;stage:TVkPipelineStageFlags2;queryPool:TVkQueryPool;query:TVkUInt32);
begin
 fCommands.CmdWriteTimestamp2(commandBuffer,stage,queryPool,query);
end;

procedure TVulkan.CmdWriteTimestamp2KHR(commandBuffer:TVkCommandBuffer;stage:TVkPipelineStageFlags2;queryPool:TVkQueryPool;query:TVkUInt32);
begin
 fCommands.CmdWriteTimestamp2KHR(commandBuffer,stage,queryPool,query);
end;

procedure TVulkan.CmdWriteBufferMarker2AMD(commandBuffer:TVkCommandBuffer;stage:TVkPipelineStageFlags2;dstBuffer:TVkBuffer;dstOffset:TVkDeviceSize;marker:TVkUInt32);
begin
 fCommands.CmdWriteBufferMarker2AMD(commandBuffer,stage,dstBuffer,dstOffset,marker);
end;

procedure TVulkan.GetQueueCheckpointData2NV(queue:TVkQueue;pCheckpointDataCount:PVkUInt32;pCheckpointData:PVkCheckpointData2NV);
begin
 fCommands.GetQueueCheckpointData2NV(queue,pCheckpointDataCount,pCheckpointData);
end;

function TVulkan.CopyMemoryToImageEXT(device:TVkDevice;const pCopyMemoryToImageInfo:PVkCopyMemoryToImageInfoEXT):TVkResult;
begin
 result:=fCommands.CopyMemoryToImageEXT(device,pCopyMemoryToImageInfo);
end;

function TVulkan.CopyImageToMemoryEXT(device:TVkDevice;const pCopyImageToMemoryInfo:PVkCopyImageToMemoryInfoEXT):TVkResult;
begin
 result:=fCommands.CopyImageToMemoryEXT(device,pCopyImageToMemoryInfo);
end;

function TVulkan.CopyImageToImageEXT(device:TVkDevice;const pCopyImageToImageInfo:PVkCopyImageToImageInfoEXT):TVkResult;
begin
 result:=fCommands.CopyImageToImageEXT(device,pCopyImageToImageInfo);
end;

function TVulkan.TransitionImageLayoutEXT(device:TVkDevice;transitionCount:TVkUInt32;const pTransitions:PVkHostImageLayoutTransitionInfoEXT):TVkResult;
begin
 result:=fCommands.TransitionImageLayoutEXT(device,transitionCount,pTransitions);
end;

{$ifdef VulkanSC}
procedure TVulkan.GetCommandPoolMemoryConsumption(device:TVkDevice;commandPool:TVkCommandPool;commandBuffer:TVkCommandBuffer;pConsumption:PVkCommandPoolMemoryConsumption);
begin
 fCommands.GetCommandPoolMemoryConsumption(device,commandPool,commandBuffer,pConsumption);
end;
{$endif}

{$ifdef VkVideo}
function TVulkan.GetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice:TVkPhysicalDevice;const pVideoProfile:PVkVideoProfileInfoKHR;pCapabilities:PVkVideoCapabilitiesKHR):TVkResult;
begin
 result:=fCommands.GetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice,pVideoProfile,pCapabilities);
end;
{$endif}

{$ifdef VkVideo}
function TVulkan.GetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice:TVkPhysicalDevice;const pVideoFormatInfo:PVkPhysicalDeviceVideoFormatInfoKHR;pVideoFormatPropertyCount:PVkUInt32;pVideoFormatProperties:PVkVideoFormatPropertiesKHR):TVkResult;
begin
 result:=fCommands.GetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice,pVideoFormatInfo,pVideoFormatPropertyCount,pVideoFormatProperties);
end;
{$endif}

{$ifdef VkVideo}
function TVulkan.GetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR(physicalDevice:TVkPhysicalDevice;const pQualityLevelInfo:PVkPhysicalDeviceVideoEncodeQualityLevelInfoKHR;pQualityLevelProperties:PVkVideoEncodeQualityLevelPropertiesKHR):TVkResult;
begin
 result:=fCommands.GetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR(physicalDevice,pQualityLevelInfo,pQualityLevelProperties);
end;
{$endif}

{$ifdef VkVideo}
function TVulkan.CreateVideoSessionKHR(device:TVkDevice;const pCreateInfo:PVkVideoSessionCreateInfoKHR;const pAllocator:PVkAllocationCallbacks;pVideoSession:PVkVideoSessionKHR):TVkResult;
begin
 result:=fCommands.CreateVideoSessionKHR(device,pCreateInfo,pAllocator,pVideoSession);
end;
{$endif}

{$ifdef VkVideo}
procedure TVulkan.DestroyVideoSessionKHR(device:TVkDevice;videoSession:TVkVideoSessionKHR;const pAllocator:PVkAllocationCallbacks);
begin
 fCommands.DestroyVideoSessionKHR(device,videoSession,pAllocator);
end;
{$endif}

{$ifdef VkVideo}
function TVulkan.CreateVideoSessionParametersKHR(device:TVkDevice;const pCreateInfo:PVkVideoSessionParametersCreateInfoKHR;const pAllocator:PVkAllocationCallbacks;pVideoSessionParameters:PVkVideoSessionParametersKHR):TVkResult;
begin
 result:=fCommands.CreateVideoSessionParametersKHR(device,pCreateInfo,pAllocator,pVideoSessionParameters);
end;
{$endif}

{$ifdef VkVideo}
function TVulkan.UpdateVideoSessionParametersKHR(device:TVkDevice;videoSessionParameters:TVkVideoSessionParametersKHR;const pUpdateInfo:PVkVideoSessionParametersUpdateInfoKHR):TVkResult;
begin
 result:=fCommands.UpdateVideoSessionParametersKHR(device,videoSessionParameters,pUpdateInfo);
end;
{$endif}

{$ifdef VkVideo}
function TVulkan.GetEncodedVideoSessionParametersKHR(device:TVkDevice;const pVideoSessionParametersInfo:PVkVideoEncodeSessionParametersGetInfoKHR;pFeedbackInfo:PVkVideoEncodeSessionParametersFeedbackInfoKHR;pDataSize:PVkSize;pData:PVkVoid):TVkResult;
begin
 result:=fCommands.GetEncodedVideoSessionParametersKHR(device,pVideoSessionParametersInfo,pFeedbackInfo,pDataSize,pData);
end;
{$endif}

{$ifdef VkVideo}
procedure TVulkan.DestroyVideoSessionParametersKHR(device:TVkDevice;videoSessionParameters:TVkVideoSessionParametersKHR;const pAllocator:PVkAllocationCallbacks);
begin
 fCommands.DestroyVideoSessionParametersKHR(device,videoSessionParameters,pAllocator);
end;
{$endif}

{$ifdef VkVideo}
function TVulkan.GetVideoSessionMemoryRequirementsKHR(device:TVkDevice;videoSession:TVkVideoSessionKHR;pMemoryRequirementsCount:PVkUInt32;pMemoryRequirements:PVkVideoSessionMemoryRequirementsKHR):TVkResult;
begin
 result:=fCommands.GetVideoSessionMemoryRequirementsKHR(device,videoSession,pMemoryRequirementsCount,pMemoryRequirements);
end;
{$endif}

{$ifdef VkVideo}
function TVulkan.BindVideoSessionMemoryKHR(device:TVkDevice;videoSession:TVkVideoSessionKHR;bindSessionMemoryInfoCount:TVkUInt32;const pBindSessionMemoryInfos:PVkBindVideoSessionMemoryInfoKHR):TVkResult;
begin
 result:=fCommands.BindVideoSessionMemoryKHR(device,videoSession,bindSessionMemoryInfoCount,pBindSessionMemoryInfos);
end;
{$endif}

{$ifdef VkVideo}
procedure TVulkan.CmdDecodeVideoKHR(commandBuffer:TVkCommandBuffer;const pDecodeInfo:PVkVideoDecodeInfoKHR);
begin
 fCommands.CmdDecodeVideoKHR(commandBuffer,pDecodeInfo);
end;
{$endif}

{$ifdef VkVideo}
procedure TVulkan.CmdBeginVideoCodingKHR(commandBuffer:TVkCommandBuffer;const pBeginInfo:PVkVideoBeginCodingInfoKHR);
begin
 fCommands.CmdBeginVideoCodingKHR(commandBuffer,pBeginInfo);
end;
{$endif}

{$ifdef VkVideo}
procedure TVulkan.CmdControlVideoCodingKHR(commandBuffer:TVkCommandBuffer;const pCodingControlInfo:PVkVideoCodingControlInfoKHR);
begin
 fCommands.CmdControlVideoCodingKHR(commandBuffer,pCodingControlInfo);
end;
{$endif}

{$ifdef VkVideo}
procedure TVulkan.CmdEndVideoCodingKHR(commandBuffer:TVkCommandBuffer;const pEndCodingInfo:PVkVideoEndCodingInfoKHR);
begin
 fCommands.CmdEndVideoCodingKHR(commandBuffer,pEndCodingInfo);
end;
{$endif}

{$ifdef VkVideo}
procedure TVulkan.CmdEncodeVideoKHR(commandBuffer:TVkCommandBuffer;const pEncodeInfo:PVkVideoEncodeInfoKHR);
begin
 fCommands.CmdEncodeVideoKHR(commandBuffer,pEncodeInfo);
end;
{$endif}

procedure TVulkan.CmdDecompressMemoryNV(commandBuffer:TVkCommandBuffer;decompressRegionCount:TVkUInt32;const pDecompressMemoryRegions:PVkDecompressMemoryRegionNV);
begin
 fCommands.CmdDecompressMemoryNV(commandBuffer,decompressRegionCount,pDecompressMemoryRegions);
end;

procedure TVulkan.CmdDecompressMemoryIndirectCountNV(commandBuffer:TVkCommandBuffer;indirectCommandsAddress:TVkDeviceAddress;indirectCommandsCountAddress:TVkDeviceAddress;stride:TVkUInt32);
begin
 fCommands.CmdDecompressMemoryIndirectCountNV(commandBuffer,indirectCommandsAddress,indirectCommandsCountAddress,stride);
end;

function TVulkan.CreateCuModuleNVX(device:TVkDevice;const pCreateInfo:PVkCuModuleCreateInfoNVX;const pAllocator:PVkAllocationCallbacks;pModule:PVkCuModuleNVX):TVkResult;
begin
 result:=fCommands.CreateCuModuleNVX(device,pCreateInfo,pAllocator,pModule);
end;

function TVulkan.CreateCuFunctionNVX(device:TVkDevice;const pCreateInfo:PVkCuFunctionCreateInfoNVX;const pAllocator:PVkAllocationCallbacks;pFunction:PVkCuFunctionNVX):TVkResult;
begin
 result:=fCommands.CreateCuFunctionNVX(device,pCreateInfo,pAllocator,pFunction);
end;

procedure TVulkan.DestroyCuModuleNVX(device:TVkDevice;module:TVkCuModuleNVX;const pAllocator:PVkAllocationCallbacks);
begin
 fCommands.DestroyCuModuleNVX(device,module,pAllocator);
end;

procedure TVulkan.DestroyCuFunctionNVX(device:TVkDevice;function_:TVkCuFunctionNVX;const pAllocator:PVkAllocationCallbacks);
begin
 fCommands.DestroyCuFunctionNVX(device,function_,pAllocator);
end;

procedure TVulkan.CmdCuLaunchKernelNVX(commandBuffer:TVkCommandBuffer;const pLaunchInfo:PVkCuLaunchInfoNVX);
begin
 fCommands.CmdCuLaunchKernelNVX(commandBuffer,pLaunchInfo);
end;

procedure TVulkan.GetDescriptorSetLayoutSizeEXT(device:TVkDevice;layout:TVkDescriptorSetLayout;pLayoutSizeInBytes:PVkDeviceSize);
begin
 fCommands.GetDescriptorSetLayoutSizeEXT(device,layout,pLayoutSizeInBytes);
end;

procedure TVulkan.GetDescriptorSetLayoutBindingOffsetEXT(device:TVkDevice;layout:TVkDescriptorSetLayout;binding:TVkUInt32;pOffset:PVkDeviceSize);
begin
 fCommands.GetDescriptorSetLayoutBindingOffsetEXT(device,layout,binding,pOffset);
end;

procedure TVulkan.GetDescriptorEXT(device:TVkDevice;const pDescriptorInfo:PVkDescriptorGetInfoEXT;dataSize:TVkSize;pDescriptor:PVkVoid);
begin
 fCommands.GetDescriptorEXT(device,pDescriptorInfo,dataSize,pDescriptor);
end;

procedure TVulkan.CmdBindDescriptorBuffersEXT(commandBuffer:TVkCommandBuffer;bufferCount:TVkUInt32;const pBindingInfos:PVkDescriptorBufferBindingInfoEXT);
begin
 fCommands.CmdBindDescriptorBuffersEXT(commandBuffer,bufferCount,pBindingInfos);
end;

procedure TVulkan.CmdSetDescriptorBufferOffsetsEXT(commandBuffer:TVkCommandBuffer;pipelineBindPoint:TVkPipelineBindPoint;layout:TVkPipelineLayout;firstSet:TVkUInt32;setCount:TVkUInt32;const pBufferIndices:PVkUInt32;const pOffsets:PVkDeviceSize);
begin
 fCommands.CmdSetDescriptorBufferOffsetsEXT(commandBuffer,pipelineBindPoint,layout,firstSet,setCount,pBufferIndices,pOffsets);
end;

procedure TVulkan.CmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer:TVkCommandBuffer;pipelineBindPoint:TVkPipelineBindPoint;layout:TVkPipelineLayout;set_:TVkUInt32);
begin
 fCommands.CmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer,pipelineBindPoint,layout,set_);
end;

function TVulkan.GetBufferOpaqueCaptureDescriptorDataEXT(device:TVkDevice;const pInfo:PVkBufferCaptureDescriptorDataInfoEXT;pData:PVkVoid):TVkResult;
begin
 result:=fCommands.GetBufferOpaqueCaptureDescriptorDataEXT(device,pInfo,pData);
end;

function TVulkan.GetImageOpaqueCaptureDescriptorDataEXT(device:TVkDevice;const pInfo:PVkImageCaptureDescriptorDataInfoEXT;pData:PVkVoid):TVkResult;
begin
 result:=fCommands.GetImageOpaqueCaptureDescriptorDataEXT(device,pInfo,pData);
end;

function TVulkan.GetImageViewOpaqueCaptureDescriptorDataEXT(device:TVkDevice;const pInfo:PVkImageViewCaptureDescriptorDataInfoEXT;pData:PVkVoid):TVkResult;
begin
 result:=fCommands.GetImageViewOpaqueCaptureDescriptorDataEXT(device,pInfo,pData);
end;

function TVulkan.GetSamplerOpaqueCaptureDescriptorDataEXT(device:TVkDevice;const pInfo:PVkSamplerCaptureDescriptorDataInfoEXT;pData:PVkVoid):TVkResult;
begin
 result:=fCommands.GetSamplerOpaqueCaptureDescriptorDataEXT(device,pInfo,pData);
end;

function TVulkan.GetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device:TVkDevice;const pInfo:PVkAccelerationStructureCaptureDescriptorDataInfoEXT;pData:PVkVoid):TVkResult;
begin
 result:=fCommands.GetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device,pInfo,pData);
end;

procedure TVulkan.SetDeviceMemoryPriorityEXT(device:TVkDevice;memory:TVkDeviceMemory;priority:TVkFloat);
begin
 fCommands.SetDeviceMemoryPriorityEXT(device,memory,priority);
end;

function TVulkan.AcquireDrmDisplayEXT(physicalDevice:TVkPhysicalDevice;drmFd:TVkInt32;display:TVkDisplayKHR):TVkResult;
begin
 result:=fCommands.AcquireDrmDisplayEXT(physicalDevice,drmFd,display);
end;

function TVulkan.GetDrmDisplayEXT(physicalDevice:TVkPhysicalDevice;drmFd:TVkInt32;connectorId:TVkUInt32;display:PVkDisplayKHR):TVkResult;
begin
 result:=fCommands.GetDrmDisplayEXT(physicalDevice,drmFd,connectorId,display);
end;

function TVulkan.WaitForPresentKHR(device:TVkDevice;swapchain:TVkSwapchainKHR;presentId:TVkUInt64;timeout:TVkUInt64):TVkResult;
begin
 result:=fCommands.WaitForPresentKHR(device,swapchain,presentId,timeout);
end;

{$ifdef Fuchsia}
function TVulkan.CreateBufferCollectionFUCHSIA(device:TVkDevice;const pCreateInfo:PVkBufferCollectionCreateInfoFUCHSIA;const pAllocator:PVkAllocationCallbacks;pCollection:PVkBufferCollectionFUCHSIA):TVkResult;
begin
 result:=fCommands.CreateBufferCollectionFUCHSIA(device,pCreateInfo,pAllocator,pCollection);
end;
{$endif}

{$ifdef Fuchsia}
function TVulkan.SetBufferCollectionBufferConstraintsFUCHSIA(device:TVkDevice;collection:TVkBufferCollectionFUCHSIA;const pBufferConstraintsInfo:PVkBufferConstraintsInfoFUCHSIA):TVkResult;
begin
 result:=fCommands.SetBufferCollectionBufferConstraintsFUCHSIA(device,collection,pBufferConstraintsInfo);
end;
{$endif}

{$ifdef Fuchsia}
function TVulkan.SetBufferCollectionImageConstraintsFUCHSIA(device:TVkDevice;collection:TVkBufferCollectionFUCHSIA;const pImageConstraintsInfo:PVkImageConstraintsInfoFUCHSIA):TVkResult;
begin
 result:=fCommands.SetBufferCollectionImageConstraintsFUCHSIA(device,collection,pImageConstraintsInfo);
end;
{$endif}

{$ifdef Fuchsia}
procedure TVulkan.DestroyBufferCollectionFUCHSIA(device:TVkDevice;collection:TVkBufferCollectionFUCHSIA;const pAllocator:PVkAllocationCallbacks);
begin
 fCommands.DestroyBufferCollectionFUCHSIA(device,collection,pAllocator);
end;
{$endif}

{$ifdef Fuchsia}
function TVulkan.GetBufferCollectionPropertiesFUCHSIA(device:TVkDevice;collection:TVkBufferCollectionFUCHSIA;pProperties:PVkBufferCollectionPropertiesFUCHSIA):TVkResult;
begin
 result:=fCommands.GetBufferCollectionPropertiesFUCHSIA(device,collection,pProperties);
end;
{$endif}

procedure TVulkan.CmdBeginRendering(commandBuffer:TVkCommandBuffer;const pRenderingInfo:PVkRenderingInfo);
begin
 fCommands.CmdBeginRendering(commandBuffer,pRenderingInfo);
end;

procedure TVulkan.CmdBeginRenderingKHR(commandBuffer:TVkCommandBuffer;const pRenderingInfo:PVkRenderingInfo);
begin
 fCommands.CmdBeginRenderingKHR(commandBuffer,pRenderingInfo);
end;

procedure TVulkan.CmdEndRendering(commandBuffer:TVkCommandBuffer);
begin
 fCommands.CmdEndRendering(commandBuffer);
end;

procedure TVulkan.CmdEndRenderingKHR(commandBuffer:TVkCommandBuffer);
begin
 fCommands.CmdEndRenderingKHR(commandBuffer);
end;

procedure TVulkan.GetDescriptorSetLayoutHostMappingInfoVALVE(device:TVkDevice;const pBindingReference:PVkDescriptorSetBindingReferenceVALVE;pHostMapping:PVkDescriptorSetLayoutHostMappingInfoVALVE);
begin
 fCommands.GetDescriptorSetLayoutHostMappingInfoVALVE(device,pBindingReference,pHostMapping);
end;

procedure TVulkan.GetDescriptorSetHostMappingVALVE(device:TVkDevice;descriptorSet:TVkDescriptorSet;ppData:PPVkVoid);
begin
 fCommands.GetDescriptorSetHostMappingVALVE(device,descriptorSet,ppData);
end;

function TVulkan.CreateMicromapEXT(device:TVkDevice;const pCreateInfo:PVkMicromapCreateInfoEXT;const pAllocator:PVkAllocationCallbacks;pMicromap:PVkMicromapEXT):TVkResult;
begin
 result:=fCommands.CreateMicromapEXT(device,pCreateInfo,pAllocator,pMicromap);
end;

procedure TVulkan.CmdBuildMicromapsEXT(commandBuffer:TVkCommandBuffer;infoCount:TVkUInt32;const pInfos:PVkMicromapBuildInfoEXT);
begin
 fCommands.CmdBuildMicromapsEXT(commandBuffer,infoCount,pInfos);
end;

function TVulkan.BuildMicromapsEXT(device:TVkDevice;deferredOperation:TVkDeferredOperationKHR;infoCount:TVkUInt32;const pInfos:PVkMicromapBuildInfoEXT):TVkResult;
begin
 result:=fCommands.BuildMicromapsEXT(device,deferredOperation,infoCount,pInfos);
end;

procedure TVulkan.DestroyMicromapEXT(device:TVkDevice;micromap:TVkMicromapEXT;const pAllocator:PVkAllocationCallbacks);
begin
 fCommands.DestroyMicromapEXT(device,micromap,pAllocator);
end;

procedure TVulkan.CmdCopyMicromapEXT(commandBuffer:TVkCommandBuffer;const pInfo:PVkCopyMicromapInfoEXT);
begin
 fCommands.CmdCopyMicromapEXT(commandBuffer,pInfo);
end;

function TVulkan.CopyMicromapEXT(device:TVkDevice;deferredOperation:TVkDeferredOperationKHR;const pInfo:PVkCopyMicromapInfoEXT):TVkResult;
begin
 result:=fCommands.CopyMicromapEXT(device,deferredOperation,pInfo);
end;

procedure TVulkan.CmdCopyMicromapToMemoryEXT(commandBuffer:TVkCommandBuffer;const pInfo:PVkCopyMicromapToMemoryInfoEXT);
begin
 fCommands.CmdCopyMicromapToMemoryEXT(commandBuffer,pInfo);
end;

function TVulkan.CopyMicromapToMemoryEXT(device:TVkDevice;deferredOperation:TVkDeferredOperationKHR;const pInfo:PVkCopyMicromapToMemoryInfoEXT):TVkResult;
begin
 result:=fCommands.CopyMicromapToMemoryEXT(device,deferredOperation,pInfo);
end;

procedure TVulkan.CmdCopyMemoryToMicromapEXT(commandBuffer:TVkCommandBuffer;const pInfo:PVkCopyMemoryToMicromapInfoEXT);
begin
 fCommands.CmdCopyMemoryToMicromapEXT(commandBuffer,pInfo);
end;

function TVulkan.CopyMemoryToMicromapEXT(device:TVkDevice;deferredOperation:TVkDeferredOperationKHR;const pInfo:PVkCopyMemoryToMicromapInfoEXT):TVkResult;
begin
 result:=fCommands.CopyMemoryToMicromapEXT(device,deferredOperation,pInfo);
end;

procedure TVulkan.CmdWriteMicromapsPropertiesEXT(commandBuffer:TVkCommandBuffer;micromapCount:TVkUInt32;const pMicromaps:PVkMicromapEXT;queryType:TVkQueryType;queryPool:TVkQueryPool;firstQuery:TVkUInt32);
begin
 fCommands.CmdWriteMicromapsPropertiesEXT(commandBuffer,micromapCount,pMicromaps,queryType,queryPool,firstQuery);
end;

function TVulkan.WriteMicromapsPropertiesEXT(device:TVkDevice;micromapCount:TVkUInt32;const pMicromaps:PVkMicromapEXT;queryType:TVkQueryType;dataSize:TVkSize;pData:PVkVoid;stride:TVkSize):TVkResult;
begin
 result:=fCommands.WriteMicromapsPropertiesEXT(device,micromapCount,pMicromaps,queryType,dataSize,pData,stride);
end;

procedure TVulkan.GetDeviceMicromapCompatibilityEXT(device:TVkDevice;const pVersionInfo:PVkMicromapVersionInfoEXT;pCompatibility:PVkAccelerationStructureCompatibilityKHR);
begin
 fCommands.GetDeviceMicromapCompatibilityEXT(device,pVersionInfo,pCompatibility);
end;

procedure TVulkan.GetMicromapBuildSizesEXT(device:TVkDevice;buildType:TVkAccelerationStructureBuildTypeKHR;const pBuildInfo:PVkMicromapBuildInfoEXT;pSizeInfo:PVkMicromapBuildSizesInfoEXT);
begin
 fCommands.GetMicromapBuildSizesEXT(device,buildType,pBuildInfo,pSizeInfo);
end;

procedure TVulkan.GetShaderModuleIdentifierEXT(device:TVkDevice;shaderModule:TVkShaderModule;pIdentifier:PVkShaderModuleIdentifierEXT);
begin
 fCommands.GetShaderModuleIdentifierEXT(device,shaderModule,pIdentifier);
end;

procedure TVulkan.GetShaderModuleCreateInfoIdentifierEXT(device:TVkDevice;const pCreateInfo:PVkShaderModuleCreateInfo;pIdentifier:PVkShaderModuleIdentifierEXT);
begin
 fCommands.GetShaderModuleCreateInfoIdentifierEXT(device,pCreateInfo,pIdentifier);
end;

procedure TVulkan.GetImageSubresourceLayout2KHR(device:TVkDevice;image:TVkImage;const pSubresource:PVkImageSubresource2KHR;pLayout:PVkSubresourceLayout2KHR);
begin
 fCommands.GetImageSubresourceLayout2KHR(device,image,pSubresource,pLayout);
end;

procedure TVulkan.GetImageSubresourceLayout2EXT(device:TVkDevice;image:TVkImage;const pSubresource:PVkImageSubresource2KHR;pLayout:PVkSubresourceLayout2KHR);
begin
 fCommands.GetImageSubresourceLayout2EXT(device,image,pSubresource,pLayout);
end;

function TVulkan.GetPipelinePropertiesEXT(device:TVkDevice;const pPipelineInfo:PVkPipelineInfoEXT;pPipelineProperties:PVkBaseOutStructure):TVkResult;
begin
 result:=fCommands.GetPipelinePropertiesEXT(device,pPipelineInfo,pPipelineProperties);
end;

procedure TVulkan.ExportMetalObjectsEXT(device:TVkDevice;pMetalObjectsInfo:PVkExportMetalObjectsInfoEXT);
begin
 fCommands.ExportMetalObjectsEXT(device,pMetalObjectsInfo);
end;

function TVulkan.GetFramebufferTilePropertiesQCOM(device:TVkDevice;framebuffer:TVkFramebuffer;pPropertiesCount:PVkUInt32;pProperties:PVkTilePropertiesQCOM):TVkResult;
begin
 result:=fCommands.GetFramebufferTilePropertiesQCOM(device,framebuffer,pPropertiesCount,pProperties);
end;

function TVulkan.GetDynamicRenderingTilePropertiesQCOM(device:TVkDevice;const pRenderingInfo:PVkRenderingInfo;pProperties:PVkTilePropertiesQCOM):TVkResult;
begin
 result:=fCommands.GetDynamicRenderingTilePropertiesQCOM(device,pRenderingInfo,pProperties);
end;

function TVulkan.GetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice:TVkPhysicalDevice;const pOpticalFlowImageFormatInfo:PVkOpticalFlowImageFormatInfoNV;pFormatCount:PVkUInt32;pImageFormatProperties:PVkOpticalFlowImageFormatPropertiesNV):TVkResult;
begin
 result:=fCommands.GetPhysicalDeviceOpticalFlowImageFormatsNV(physicalDevice,pOpticalFlowImageFormatInfo,pFormatCount,pImageFormatProperties);
end;

function TVulkan.CreateOpticalFlowSessionNV(device:TVkDevice;const pCreateInfo:PVkOpticalFlowSessionCreateInfoNV;const pAllocator:PVkAllocationCallbacks;pSession:PVkOpticalFlowSessionNV):TVkResult;
begin
 result:=fCommands.CreateOpticalFlowSessionNV(device,pCreateInfo,pAllocator,pSession);
end;

procedure TVulkan.DestroyOpticalFlowSessionNV(device:TVkDevice;session:TVkOpticalFlowSessionNV;const pAllocator:PVkAllocationCallbacks);
begin
 fCommands.DestroyOpticalFlowSessionNV(device,session,pAllocator);
end;

function TVulkan.BindOpticalFlowSessionImageNV(device:TVkDevice;session:TVkOpticalFlowSessionNV;bindingPoint:TVkOpticalFlowSessionBindingPointNV;view:TVkImageView;layout:TVkImageLayout):TVkResult;
begin
 result:=fCommands.BindOpticalFlowSessionImageNV(device,session,bindingPoint,view,layout);
end;

procedure TVulkan.CmdOpticalFlowExecuteNV(commandBuffer:TVkCommandBuffer;session:TVkOpticalFlowSessionNV;const pExecuteInfo:PVkOpticalFlowExecuteInfoNV);
begin
 fCommands.CmdOpticalFlowExecuteNV(commandBuffer,session,pExecuteInfo);
end;

function TVulkan.GetDeviceFaultInfoEXT(device:TVkDevice;pFaultCounts:PVkDeviceFaultCountsEXT;pFaultInfo:PVkDeviceFaultInfoEXT):TVkResult;
begin
 result:=fCommands.GetDeviceFaultInfoEXT(device,pFaultCounts,pFaultInfo);
end;

procedure TVulkan.CmdSetDepthBias2EXT(commandBuffer:TVkCommandBuffer;const pDepthBiasInfo:PVkDepthBiasInfoEXT);
begin
 fCommands.CmdSetDepthBias2EXT(commandBuffer,pDepthBiasInfo);
end;

function TVulkan.ReleaseSwapchainImagesEXT(device:TVkDevice;const pReleaseInfo:PVkReleaseSwapchainImagesInfoEXT):TVkResult;
begin
 result:=fCommands.ReleaseSwapchainImagesEXT(device,pReleaseInfo);
end;

procedure TVulkan.GetDeviceImageSubresourceLayoutKHR(device:TVkDevice;const pInfo:PVkDeviceImageSubresourceInfoKHR;pLayout:PVkSubresourceLayout2KHR);
begin
 fCommands.GetDeviceImageSubresourceLayoutKHR(device,pInfo,pLayout);
end;

function TVulkan.MapMemory2KHR(device:TVkDevice;const pMemoryMapInfo:PVkMemoryMapInfoKHR;ppData:PPVkVoid):TVkResult;
begin
 result:=fCommands.MapMemory2KHR(device,pMemoryMapInfo,ppData);
end;

function TVulkan.UnmapMemory2KHR(device:TVkDevice;const pMemoryUnmapInfo:PVkMemoryUnmapInfoKHR):TVkResult;
begin
 result:=fCommands.UnmapMemory2KHR(device,pMemoryUnmapInfo);
end;

function TVulkan.CreateShadersEXT(device:TVkDevice;createInfoCount:TVkUInt32;const pCreateInfos:PVkShaderCreateInfoEXT;const pAllocator:PVkAllocationCallbacks;pShaders:PVkShaderEXT):TVkResult;
begin
 result:=fCommands.CreateShadersEXT(device,createInfoCount,pCreateInfos,pAllocator,pShaders);
end;

procedure TVulkan.DestroyShaderEXT(device:TVkDevice;shader:TVkShaderEXT;const pAllocator:PVkAllocationCallbacks);
begin
 fCommands.DestroyShaderEXT(device,shader,pAllocator);
end;

function TVulkan.GetShaderBinaryDataEXT(device:TVkDevice;shader:TVkShaderEXT;pDataSize:PVkSize;pData:PVkVoid):TVkResult;
begin
 result:=fCommands.GetShaderBinaryDataEXT(device,shader,pDataSize,pData);
end;

procedure TVulkan.CmdBindShadersEXT(commandBuffer:TVkCommandBuffer;stageCount:TVkUInt32;const pStages:PVkShaderStageFlagBits;const pShaders:PVkShaderEXT);
begin
 fCommands.CmdBindShadersEXT(commandBuffer,stageCount,pStages,pShaders);
end;

{$ifdef QNX}
function TVulkan.GetScreenBufferPropertiesQNX(device:TVkDevice;const buffer:P_screen_buffer;pProperties:PVkScreenBufferPropertiesQNX):TVkResult;
begin
 result:=fCommands.GetScreenBufferPropertiesQNX(device,buffer,pProperties);
end;
{$endif}

function TVulkan.GetPhysicalDeviceCooperativeMatrixPropertiesKHR(physicalDevice:TVkPhysicalDevice;pPropertyCount:PVkUInt32;pProperties:PVkCooperativeMatrixPropertiesKHR):TVkResult;
begin
 result:=fCommands.GetPhysicalDeviceCooperativeMatrixPropertiesKHR(physicalDevice,pPropertyCount,pProperties);
end;

function TVulkan.GetExecutionGraphPipelineScratchSizeAMDX(device:TVkDevice;executionGraph:TVkPipeline;pSizeInfo:PVkExecutionGraphPipelineScratchSizeAMDX):TVkResult;
begin
 result:=fCommands.GetExecutionGraphPipelineScratchSizeAMDX(device,executionGraph,pSizeInfo);
end;

function TVulkan.GetExecutionGraphPipelineNodeIndexAMDX(device:TVkDevice;executionGraph:TVkPipeline;const pNodeInfo:PVkPipelineShaderStageNodeCreateInfoAMDX;pNodeIndex:PVkUInt32):TVkResult;
begin
 result:=fCommands.GetExecutionGraphPipelineNodeIndexAMDX(device,executionGraph,pNodeInfo,pNodeIndex);
end;

function TVulkan.CreateExecutionGraphPipelinesAMDX(device:TVkDevice;pipelineCache:TVkPipelineCache;createInfoCount:TVkUInt32;const pCreateInfos:PVkExecutionGraphPipelineCreateInfoAMDX;const pAllocator:PVkAllocationCallbacks;pPipelines:PVkPipeline):TVkResult;
begin
 result:=fCommands.CreateExecutionGraphPipelinesAMDX(device,pipelineCache,createInfoCount,pCreateInfos,pAllocator,pPipelines);
end;

procedure TVulkan.CmdInitializeGraphScratchMemoryAMDX(commandBuffer:TVkCommandBuffer;scratch:TVkDeviceAddress);
begin
 fCommands.CmdInitializeGraphScratchMemoryAMDX(commandBuffer,scratch);
end;

procedure TVulkan.CmdDispatchGraphAMDX(commandBuffer:TVkCommandBuffer;scratch:TVkDeviceAddress;const pCountInfo:PVkDispatchGraphCountInfoAMDX);
begin
 fCommands.CmdDispatchGraphAMDX(commandBuffer,scratch,pCountInfo);
end;

procedure TVulkan.CmdDispatchGraphIndirectAMDX(commandBuffer:TVkCommandBuffer;scratch:TVkDeviceAddress;const pCountInfo:PVkDispatchGraphCountInfoAMDX);
begin
 fCommands.CmdDispatchGraphIndirectAMDX(commandBuffer,scratch,pCountInfo);
end;

procedure TVulkan.CmdDispatchGraphIndirectCountAMDX(commandBuffer:TVkCommandBuffer;scratch:TVkDeviceAddress;countInfo:TVkDeviceAddress);
begin
 fCommands.CmdDispatchGraphIndirectCountAMDX(commandBuffer,scratch,countInfo);
end;

function TVulkan.SetLatencySleepModeNV(device:TVkDevice;swapchain:TVkSwapchainKHR;pSleepModeInfo:PVkLatencySleepModeInfoNV):TVkResult;
begin
 result:=fCommands.SetLatencySleepModeNV(device,swapchain,pSleepModeInfo);
end;

function TVulkan.LatencySleepNV(device:TVkDevice;swapchain:TVkSwapchainKHR;pSleepInfo:PVkLatencySleepInfoNV):TVkResult;
begin
 result:=fCommands.LatencySleepNV(device,swapchain,pSleepInfo);
end;

procedure TVulkan.SetLatencyMarkerNV(device:TVkDevice;swapchain:TVkSwapchainKHR;pLatencyMarkerInfo:PVkSetLatencyMarkerInfoNV);
begin
 fCommands.SetLatencyMarkerNV(device,swapchain,pLatencyMarkerInfo);
end;

procedure TVulkan.GetLatencyTimingsNV(device:TVkDevice;swapchain:TVkSwapchainKHR;pTimingCount:PVkUInt32;pLatencyMarkerInfo:PVkGetLatencyMarkerInfoNV);
begin
 fCommands.GetLatencyTimingsNV(device,swapchain,pTimingCount,pLatencyMarkerInfo);
end;

procedure TVulkan.QueueNotifyOutOfBandNV(queue:TVkQueue;pQueueTypeInfo:TVkOutOfBandQueueTypeInfoNV);
begin
 fCommands.QueueNotifyOutOfBandNV(queue,pQueueTypeInfo);
end;

initialization
 vk:=TVulkan.Create;
finalization
 vk.Free;
 if assigned(LibVulkan) then begin
  vkFreeLibrary(LibVulkan);
 end;
end.
