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