My vkxml2pas-generated header has the followed load interface now:
Code:
function LoadVulkanLibrary(const LibraryName:string=VK_DEFAULT_LIB_NAME):boolean;
function LoadVulkanGlobalCommands:boolean;
function LoadVulkanInstanceCommands(const GetInstanceProcAddr:TvkGetInstanceProcAddr;const Instance:TVkInstance;out InstanceCommands:TVulkanCommands):boolean;
function LoadVulkanDeviceCommands(const GetDeviceProcAddr:TvkGetDeviceProcAddr;const Device:TVkDevice;out DeviceCommands:TVulkanCommands):boolean;
where LoadVulkanLibrary loads only vkGetInstanceProcAddr, and LoadVulkanGlobalCommands loads then the remaining functions with help of vkGetInstanceProcAddr(nil,*) (what the Vulkan spec recommend it also), and what LoadVulkanInstanceCommands and LoadVulkanDeviceCommands does, should be clear, when you've read the Vulkan specs.
And now. i must buy a Vulkan-ready Android device zu legen, i.e. at best the NVidia Shield TV (which've already a Vulkan-ready Stock AndroidTV ROM), so that I can make the vkxml2pas-generated Vulkan header also Android/armv7a ready and so that I can test it also.
And a TVulkan class does exist now also, which do also the for-Android/armv7a-target-needed calling-convention-proxying stuff then, because the specs says:
On Android/ARMv7a, Vulkan functions use the armeabi-v7a-hard calling convention, even if the application's native code is compiled with the armeabi-v7a calling convention.
And a default-global TVulkan instance with the name vk does exist now also, so that you can use for example instead vkCreateInstance also vk.CreateInstance (with automatic calling-convention-proxing then).
Bookmarks