Port installer flow to iOS runtime

This commit is contained in:
aperezro 2026-06-05 14:49:05 -06:00
parent a2f00797f1
commit 7996b86141
14 changed files with 1625 additions and 59 deletions

View file

@ -78,6 +78,8 @@ set(UNLEASHED_RECOMP_COMPILE_DEFINITIONS
if (NOT CMAKE_SYSTEM_NAME STREQUAL "iOS")
list(APPEND UNLEASHED_RECOMP_COMPILE_DEFINITIONS SDL_MAIN_HANDLED)
else()
list(APPEND UNLEASHED_RECOMP_COMPILE_DEFINITIONS UNLEASHED_RECOMP_IOS)
endif()
add_compile_definitions(${UNLEASHED_RECOMP_COMPILE_DEFINITIONS})
@ -116,10 +118,18 @@ elseif (CMAKE_SYSTEM_NAME MATCHES "Linux")
"os/linux/user_linux.cpp"
"os/linux/version_linux.cpp"
)
elseif (CMAKE_SYSTEM_NAME STREQUAL "iOS")
set(UNLEASHED_RECOMP_OS_CXX_SOURCES
"os/ios/logger_ios.cpp"
"os/ios/media_ios.cpp"
"os/ios/process_ios.mm"
"os/ios/user_ios.mm"
"os/ios/version_ios.mm"
)
elseif (APPLE)
set(UNLEASHED_RECOMP_OS_CXX_SOURCES
"os/macos/logger_macos.cpp"
"os/macos/media_macos.cpp"
"os/macos/media_macos.cpp"
"os/macos/process_macos.cpp"
"os/macos/user_macos.cpp"
"os/macos/version_macos.cpp"
@ -453,6 +463,12 @@ if (CMAKE_SYSTEM_NAME STREQUAL "iOS" AND TARGET SDL2::SDL2main)
list(PREPEND UNLEASHED_RECOMP_SDL_LIBS SDL2::SDL2main)
endif()
set(UNLEASHED_RECOMP_PLATFORM_LIBS)
if (CMAKE_SYSTEM_NAME STREQUAL "iOS")
list(APPEND UNLEASHED_RECOMP_PLATFORM_LIBS MoltenVK)
target_link_options(UnleashedRecomp PRIVATE "LINKER:-u,_vkGetInstanceProcAddr")
endif()
target_link_libraries(UnleashedRecomp PRIVATE
fmt::fmt
libzstd_static
@ -463,11 +479,12 @@ target_link_libraries(UnleashedRecomp PRIVATE
${UNLEASHED_RECOMP_SDL_LIBS}
SDL2_mixer
tomlplusplus::tomlplusplus
UnleashedRecompLib
xxHash::xxhash
CURL::libcurl
plume
)
UnleashedRecompLib
xxHash::xxhash
CURL::libcurl
plume
${UNLEASHED_RECOMP_PLATFORM_LIBS}
)
target_include_directories(UnleashedRecomp PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}

View file

@ -0,0 +1,19 @@
#include <os/logger.h>
void os::logger::Init()
{
}
void os::logger::Log(const std::string_view str, ELogType type, const char* func)
{
(void)type;
if (func)
{
fmt::println("[{}] {}", func, str);
}
else
{
fmt::println("{}", str);
}
}

View file

@ -0,0 +1,6 @@
#include <os/media.h>
bool os::media::IsExternalMediaPlaying()
{
return false;
}

View file

@ -0,0 +1,62 @@
#include <os/process.h>
#import <Foundation/Foundation.h>
#include <mach-o/dyld.h>
#include <sys/param.h>
#include <unistd.h>
std::filesystem::path os::process::GetExecutablePath()
{
uint32_t exePathSize = PATH_MAX;
char exePath[PATH_MAX] = {};
if (_NSGetExecutablePath(exePath, &exePathSize) == 0)
{
return std::filesystem::path(std::u8string_view(reinterpret_cast<const char8_t*>(exePath)));
}
return {};
}
std::filesystem::path os::process::GetExecutableRoot()
{
@autoreleasepool
{
NSString* resourcePath = [[NSBundle mainBundle] resourcePath];
if (resourcePath.length > 0)
return std::filesystem::path(std::u8string_view(reinterpret_cast<const char8_t*>(resourcePath.UTF8String)));
}
return GetExecutablePath().remove_filename();
}
std::filesystem::path os::process::GetWorkingDirectory()
{
char cwd[PATH_MAX] = {};
if (getcwd(cwd, sizeof(cwd)) != nullptr)
return std::filesystem::path(std::u8string_view(reinterpret_cast<const char8_t*>(cwd)));
return {};
}
bool os::process::SetWorkingDirectory(const std::filesystem::path& path)
{
return chdir(path.c_str()) == 0;
}
bool os::process::StartProcess(const std::filesystem::path& path, const std::vector<std::string>& args, std::filesystem::path work)
{
(void)path;
(void)args;
(void)work;
return false;
}
void os::process::CheckConsole()
{
g_consoleVisible = false;
}
void os::process::ShowConsole()
{
}

View file

@ -0,0 +1,11 @@
#include <os/user.h>
#import <UIKit/UIKit.h>
bool os::user::IsDarkTheme()
{
if (@available(iOS 13.0, *))
return UIScreen.mainScreen.traitCollection.userInterfaceStyle == UIUserInterfaceStyleDark;
return false;
}

View file

@ -0,0 +1,15 @@
#include <os/version.h>
#import <UIKit/UIKit.h>
os::version::OSVersion os::version::GetOSVersion()
{
os::version::OSVersion result;
NSOperatingSystemVersion version = NSProcessInfo.processInfo.operatingSystemVersion;
result.Major = static_cast<uint32_t>(version.majorVersion);
result.Minor = static_cast<uint32_t>(version.minorVersion);
result.Build = static_cast<uint32_t>(version.patchVersion);
return result;
}

View file

@ -57,8 +57,12 @@
<string>${MACOSX_BUNDLE_BUNDLE_VERSION}</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>LSSupportsOpeningDocumentsInPlace</key>
<true/>
<key>MinimumOSVersion</key>
<string>13.0</string>
<key>UIFileSharingEnabled</key>
<true/>
<key>UIApplicationSupportsIndirectInputEvents</key>
<true/>
<key>UILaunchScreen</key>

View file

@ -1109,7 +1109,7 @@ static bool ConvertPathSet(const nfdpathset_t *pathSet, std::list<std::filesyste
static void PickerThreadProcess()
{
const nfdpathset_t *pathSet;
const nfdpathset_t *pathSet = nullptr;
nfdresult_t result = NFD_ERROR;
if (g_currentPickerFolderMode)
{
@ -1146,7 +1146,7 @@ static void PickerStart(bool folderMode) {
g_currentPickerVisible = true;
// Optional single thread mode for testing on systems that do not interact well with the separate thread being used for NFD.
#ifdef __APPLE__
#if defined(__APPLE__) && !defined(UNLEASHED_RECOMP_IOS)
constexpr bool singleThreadMode = true;
#else
constexpr bool singleThreadMode = false;

View file

@ -22,6 +22,12 @@ std::filesystem::path BuildUserPath()
userPath = std::filesystem::path{ knownPath } / USER_DIRECTORY;
CoTaskMemFree(knownPath);
#elif defined(UNLEASHED_RECOMP_IOS)
const char* homeDir = getenv("HOME");
if (homeDir != nullptr)
{
userPath = std::filesystem::path(homeDir) / "Documents" / USER_DIRECTORY;
}
#elif defined(__linux__) || defined(__APPLE__)
const char* homeDir = getenv("HOME");
#if defined(__linux__)

View file

@ -25,9 +25,13 @@ endif()
add_subdirectory("${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/msdf-atlas-gen")
if (CMAKE_SYSTEM_NAME STREQUAL "iOS")
add_library(nfd STATIC "${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/nfd_ios_stub.c")
find_library(UIKIT_LIBRARY UIKit REQUIRED)
find_library(FOUNDATION_LIBRARY Foundation REQUIRED)
add_library(nfd STATIC "${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/nfd_ios.mm")
add_library(nfd::nfd ALIAS nfd)
target_include_directories(nfd PUBLIC "${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/nativefiledialog-extended/src/include")
target_link_libraries(nfd PUBLIC ${UIKIT_LIBRARY} ${FOUNDATION_LIBRARY})
else()
add_subdirectory("${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/nativefiledialog-extended")
endif()
@ -36,6 +40,6 @@ add_subdirectory("${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/SDL")
add_subdirectory("${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/SDL_mixer")
add_subdirectory("${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/plume")
if (APPLE AND NOT CMAKE_SYSTEM_NAME STREQUAL "iOS")
if (APPLE)
add_subdirectory("${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/MoltenVK")
endif()

View file

@ -25,13 +25,34 @@ set(MVK_VERSION "${MVK_VERSION_MAJOR}.${MVK_VERSION_MINOR}.${MVK_VERSION_PATCH}"
message(STATUS "MoltenVK version: ${MVK_VERSION}")
# Find required system libraries
find_library(APPKIT_LIBRARY AppKit REQUIRED)
find_library(FOUNDATION_LIBRARY Foundation REQUIRED)
find_library(IOKIT_LIBRARY IOKit REQUIRED)
find_library(IOSURFACE_LIBRARY IOSurface REQUIRED)
find_library(METAL_LIBRARY Metal REQUIRED)
find_library(QUARTZCORE_LIBRARY QuartzCore REQUIRED)
if(CMAKE_SYSTEM_NAME STREQUAL "iOS")
find_library(UIKIT_LIBRARY UIKit REQUIRED)
set(MVK_PLATFORM_LIBRARIES
${FOUNDATION_LIBRARY}
${IOKIT_LIBRARY}
${IOSURFACE_LIBRARY}
${METAL_LIBRARY}
${QUARTZCORE_LIBRARY}
${UIKIT_LIBRARY})
set(MVK_LIBRARY_TYPE STATIC)
else()
find_library(APPKIT_LIBRARY AppKit REQUIRED)
set(MVK_PLATFORM_LIBRARIES
${APPKIT_LIBRARY}
${FOUNDATION_LIBRARY}
${IOKIT_LIBRARY}
${IOSURFACE_LIBRARY}
${METAL_LIBRARY}
${QUARTZCORE_LIBRARY})
set(MVK_LIBRARY_TYPE SHARED)
endif()
# SPIRV-Cross
option(SPIRV_CROSS_CLI "" OFF)
option(SPIRV_CROSS_ENABLE_TESTS "" OFF)
@ -77,10 +98,10 @@ set(MVK_INCLUDES
${MVK_SRC_INCLUDES} ${MVK_GENERATED_INCLUDES} ${MVK_DIR}/include
${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/plume/contrib/Vulkan-Headers/include)
add_library(MoltenVK SHARED ${MVK_SOURCES})
add_library(MoltenVK ${MVK_LIBRARY_TYPE} ${MVK_SOURCES})
target_include_directories(MoltenVK PRIVATE ${MVK_INCLUDES})
target_compile_options(MoltenVK PRIVATE -w)
target_link_libraries(MoltenVK PRIVATE
${APPKIT_LIBRARY} ${FOUNDATION_LIBRARY} ${IOKIT_LIBRARY} ${IOSURFACE_LIBRARY} ${METAL_LIBRARY} ${QUARTZCORE_LIBRARY}
${MVK_PLATFORM_LIBRARIES}
spirv-cross-msl MoltenVKCommon MoltenVKShaderConverter)
target_compile_definitions(MoltenVK PRIVATE MVK_FRAMEWORK_VERSION=${MVK_VERSION} MVK_USE_CEREAL=0)

637
thirdparty/nfd_ios.mm vendored Normal file
View file

@ -0,0 +1,637 @@
#include <nfd.h>
#import <UIKit/UIKit.h>
#include <stdlib.h>
#include <string.h>
#include <string>
struct NFDIOSPathSet
{
nfdpathsetsize_t count;
char** paths;
};
struct NFDIOSPathSetEnumerator
{
const NFDIOSPathSet* pathSet;
nfdpathsetsize_t index;
};
static std::string g_error;
static NSMutableArray<NSURL*>* g_securityScopedURLs;
static void NFDi_SetError(const char* msg)
{
g_error = msg ? msg : "";
}
static void NFDi_SetErrorNSString(NSString* msg)
{
NFDi_SetError(msg ? [msg UTF8String] : "Unknown iOS document picker error.");
}
static nfdresult_t NFDi_CopyUtf8String(const char* utf8Str, char** out)
{
if (!out)
{
NFDi_SetError("NFD output path was null.");
return NFD_ERROR;
}
*out = nullptr;
if (!utf8Str)
{
NFDi_SetError("iOS document picker returned a null path.");
return NFD_ERROR;
}
size_t len = strlen(utf8Str);
char* result = static_cast<char*>(malloc(len + 1));
if (!result)
{
NFDi_SetError("Failed to allocate NFD path.");
return NFD_ERROR;
}
memcpy(result, utf8Str, len + 1);
*out = result;
return NFD_OKAY;
}
static UIViewController* NFDi_GetTopViewController()
{
UIApplication* application = [UIApplication sharedApplication];
UIWindow* keyWindow = nil;
if (@available(iOS 13.0, *))
{
for (UIScene* scene in [application connectedScenes])
{
if (scene.activationState != UISceneActivationStateForegroundActive ||
![scene isKindOfClass:[UIWindowScene class]])
{
continue;
}
UIWindowScene* windowScene = static_cast<UIWindowScene*>(scene);
for (UIWindow* window in windowScene.windows)
{
if (window.isKeyWindow)
{
keyWindow = window;
break;
}
}
if (keyWindow)
break;
}
}
if (!keyWindow)
{
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
keyWindow = application.keyWindow;
#pragma clang diagnostic pop
}
UIViewController* controller = keyWindow.rootViewController;
while (controller.presentedViewController)
controller = controller.presentedViewController;
return controller;
}
static nfdresult_t NFDi_CreatePathSet(NSArray<NSString*>* paths, const nfdpathset_t** outPaths)
{
if (!outPaths)
{
NFDi_SetError("NFD output path set was null.");
return NFD_ERROR;
}
*outPaths = nullptr;
if (!paths || paths.count == 0)
return NFD_CANCEL;
NFDIOSPathSet* pathSet = static_cast<NFDIOSPathSet*>(calloc(1, sizeof(NFDIOSPathSet)));
if (!pathSet)
{
NFDi_SetError("Failed to allocate NFD path set.");
return NFD_ERROR;
}
pathSet->count = static_cast<nfdpathsetsize_t>(paths.count);
pathSet->paths = static_cast<char**>(calloc(pathSet->count, sizeof(char*)));
if (!pathSet->paths)
{
free(pathSet);
NFDi_SetError("Failed to allocate NFD path set entries.");
return NFD_ERROR;
}
for (nfdpathsetsize_t i = 0; i < pathSet->count; i++)
{
NSString* path = [paths objectAtIndex:i];
if (NFDi_CopyUtf8String([path UTF8String], &pathSet->paths[i]) != NFD_OKAY)
{
for (nfdpathsetsize_t j = 0; j < i; j++)
free(pathSet->paths[j]);
free(pathSet->paths);
free(pathSet);
return NFD_ERROR;
}
}
*outPaths = reinterpret_cast<const nfdpathset_t*>(pathSet);
return NFD_OKAY;
}
@interface NFDIOSPickerDelegate : NSObject <UIDocumentPickerDelegate>
{
@public
BOOL completed;
nfdresult_t result;
NSArray<NSString*>* paths;
}
@end
@implementation NFDIOSPickerDelegate
- (id)init
{
self = [super init];
if (self)
{
completed = NO;
result = NFD_CANCEL;
paths = nil;
}
return self;
}
- (void)dealloc
{
[paths release];
[super dealloc];
}
- (void)documentPickerWasCancelled:(UIDocumentPickerViewController*)controller
{
(void)controller;
result = NFD_CANCEL;
completed = YES;
}
- (void)documentPicker:(UIDocumentPickerViewController*)controller didPickDocumentsAtURLs:(NSArray<NSURL*>*)urls
{
(void)controller;
NSMutableArray<NSString*>* pickedPaths = [NSMutableArray arrayWithCapacity:urls.count];
for (NSURL* url in urls)
{
BOOL scoped = [url startAccessingSecurityScopedResource];
if (scoped)
{
if (!g_securityScopedURLs)
g_securityScopedURLs = [[NSMutableArray alloc] init];
[g_securityScopedURLs addObject:url];
}
NSString* path = url.path;
if (path.length > 0)
[pickedPaths addObject:path];
}
[paths release];
paths = [[NSArray alloc] initWithArray:pickedPaths];
result = paths.count > 0 ? NFD_OKAY : NFD_CANCEL;
completed = YES;
}
@end
static void NFDi_PresentPicker(NFDIOSPickerDelegate* delegate, bool folderMode, bool multiple)
{
UIViewController* presenter = NFDi_GetTopViewController();
if (!presenter)
{
NFDi_SetError("Unable to find an iOS view controller for the document picker.");
delegate->result = NFD_ERROR;
delegate->completed = YES;
return;
}
NSArray<NSString*>* documentTypes = folderMode ? @[ @"public.folder" ] : @[ @"public.item" ];
UIDocumentPickerViewController* picker =
[[UIDocumentPickerViewController alloc] initWithDocumentTypes:documentTypes
inMode:UIDocumentPickerModeOpen];
picker.delegate = delegate;
picker.allowsMultipleSelection = multiple ? YES : NO;
UIPopoverPresentationController* popover = picker.popoverPresentationController;
if (popover)
{
popover.sourceView = presenter.view;
popover.sourceRect = CGRectMake(CGRectGetMidX(presenter.view.bounds), CGRectGetMidY(presenter.view.bounds), 1.0, 1.0);
popover.permittedArrowDirections = 0;
}
[presenter presentViewController:picker animated:YES completion:nil];
[picker release];
}
static nfdresult_t NFDi_RunPicker(const nfdpathset_t** outPaths, bool folderMode, bool multiple)
{
@autoreleasepool
{
NFDIOSPickerDelegate* delegate = [[NFDIOSPickerDelegate alloc] init];
if ([NSThread isMainThread])
{
NFDi_PresentPicker(delegate, folderMode, multiple);
while (!delegate->completed)
{
@autoreleasepool
{
[[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode
beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.05]];
}
}
}
else
{
dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);
dispatch_async(dispatch_get_main_queue(), ^{
NFDi_PresentPicker(delegate, folderMode, multiple);
if (delegate->completed)
dispatch_semaphore_signal(semaphore);
});
while (!delegate->completed)
{
dispatch_semaphore_wait(semaphore, dispatch_time(DISPATCH_TIME_NOW, 50 * NSEC_PER_MSEC));
}
}
nfdresult_t result = delegate->result;
if (result == NFD_OKAY)
result = NFDi_CreatePathSet(delegate->paths, outPaths);
[delegate release];
return result;
}
}
extern "C" {
nfdresult_t NFD_Init(void)
{
NFDi_SetError(nullptr);
return NFD_OKAY;
}
void NFD_Quit(void)
{
for (NSURL* url in g_securityScopedURLs)
[url stopAccessingSecurityScopedResource];
[g_securityScopedURLs release];
g_securityScopedURLs = nil;
}
const char* NFD_GetError(void)
{
return g_error.empty() ? nullptr : g_error.c_str();
}
void NFD_ClearError(void)
{
NFDi_SetError(nullptr);
}
void NFD_FreePathN(nfdnchar_t* filePath)
{
free(filePath);
}
void NFD_FreePathU8(nfdu8char_t* filePath)
{
free(filePath);
}
nfdresult_t NFD_OpenDialogN(nfdnchar_t** outPath,
const nfdnfilteritem_t* filterList,
nfdfiltersize_t filterCount,
const nfdnchar_t* defaultPath)
{
(void)filterList;
(void)filterCount;
(void)defaultPath;
const nfdpathset_t* pathSet = nullptr;
nfdresult_t result = NFDi_RunPicker(&pathSet, false, false);
if (result != NFD_OKAY)
return result;
result = NFD_PathSet_GetPathN(pathSet, 0, outPath);
NFD_PathSet_Free(pathSet);
return result;
}
nfdresult_t NFD_OpenDialogU8(nfdu8char_t** outPath,
const nfdu8filteritem_t* filterList,
nfdfiltersize_t filterCount,
const nfdu8char_t* defaultPath)
{
return NFD_OpenDialogN(outPath, filterList, filterCount, defaultPath);
}
nfdresult_t NFD_OpenDialogN_With_Impl(nfdversion_t version,
nfdnchar_t** outPath,
const nfdopendialognargs_t* args)
{
(void)version;
return NFD_OpenDialogN(outPath,
args ? args->filterList : nullptr,
args ? args->filterCount : 0,
args ? args->defaultPath : nullptr);
}
nfdresult_t NFD_OpenDialogU8_With_Impl(nfdversion_t version,
nfdu8char_t** outPath,
const nfdopendialogu8args_t* args)
{
return NFD_OpenDialogN_With_Impl(version, outPath, args);
}
nfdresult_t NFD_OpenDialogMultipleN(const nfdpathset_t** outPaths,
const nfdnfilteritem_t* filterList,
nfdfiltersize_t filterCount,
const nfdnchar_t* defaultPath)
{
(void)filterList;
(void)filterCount;
(void)defaultPath;
return NFDi_RunPicker(outPaths, false, true);
}
nfdresult_t NFD_OpenDialogMultipleU8(const nfdpathset_t** outPaths,
const nfdu8filteritem_t* filterList,
nfdfiltersize_t filterCount,
const nfdu8char_t* defaultPath)
{
return NFD_OpenDialogMultipleN(outPaths, filterList, filterCount, defaultPath);
}
nfdresult_t NFD_OpenDialogMultipleN_With_Impl(nfdversion_t version,
const nfdpathset_t** outPaths,
const nfdopendialognargs_t* args)
{
(void)version;
return NFD_OpenDialogMultipleN(outPaths,
args ? args->filterList : nullptr,
args ? args->filterCount : 0,
args ? args->defaultPath : nullptr);
}
nfdresult_t NFD_OpenDialogMultipleU8_With_Impl(nfdversion_t version,
const nfdpathset_t** outPaths,
const nfdopendialogu8args_t* args)
{
return NFD_OpenDialogMultipleN_With_Impl(version, outPaths, args);
}
nfdresult_t NFD_SaveDialogN(nfdnchar_t** outPath,
const nfdnfilteritem_t* filterList,
nfdfiltersize_t filterCount,
const nfdnchar_t* defaultPath,
const nfdnchar_t* defaultName)
{
(void)outPath;
(void)filterList;
(void)filterCount;
(void)defaultPath;
(void)defaultName;
NFDi_SetError("Save dialogs are not supported by the iOS document picker backend.");
return NFD_ERROR;
}
nfdresult_t NFD_SaveDialogU8(nfdu8char_t** outPath,
const nfdu8filteritem_t* filterList,
nfdfiltersize_t filterCount,
const nfdu8char_t* defaultPath,
const nfdu8char_t* defaultName)
{
return NFD_SaveDialogN(outPath, filterList, filterCount, defaultPath, defaultName);
}
nfdresult_t NFD_SaveDialogN_With_Impl(nfdversion_t version,
nfdnchar_t** outPath,
const nfdsavedialognargs_t* args)
{
(void)version;
return NFD_SaveDialogN(outPath,
args ? args->filterList : nullptr,
args ? args->filterCount : 0,
args ? args->defaultPath : nullptr,
args ? args->defaultName : nullptr);
}
nfdresult_t NFD_SaveDialogU8_With_Impl(nfdversion_t version,
nfdu8char_t** outPath,
const nfdsavedialogu8args_t* args)
{
return NFD_SaveDialogN_With_Impl(version, outPath, args);
}
nfdresult_t NFD_PickFolderN(nfdnchar_t** outPath, const nfdnchar_t* defaultPath)
{
(void)defaultPath;
const nfdpathset_t* pathSet = nullptr;
nfdresult_t result = NFDi_RunPicker(&pathSet, true, false);
if (result != NFD_OKAY)
return result;
result = NFD_PathSet_GetPathN(pathSet, 0, outPath);
NFD_PathSet_Free(pathSet);
return result;
}
nfdresult_t NFD_PickFolderU8(nfdu8char_t** outPath, const nfdu8char_t* defaultPath)
{
return NFD_PickFolderN(outPath, defaultPath);
}
nfdresult_t NFD_PickFolderN_With_Impl(nfdversion_t version,
nfdnchar_t** outPath,
const nfdpickfoldernargs_t* args)
{
(void)version;
return NFD_PickFolderN(outPath, args ? args->defaultPath : nullptr);
}
nfdresult_t NFD_PickFolderU8_With_Impl(nfdversion_t version,
nfdu8char_t** outPath,
const nfdpickfolderu8args_t* args)
{
return NFD_PickFolderN_With_Impl(version, outPath, args);
}
nfdresult_t NFD_PickFolderMultipleN(const nfdpathset_t** outPaths, const nfdnchar_t* defaultPath)
{
(void)defaultPath;
return NFDi_RunPicker(outPaths, true, true);
}
nfdresult_t NFD_PickFolderMultipleU8(const nfdpathset_t** outPaths, const nfdu8char_t* defaultPath)
{
return NFD_PickFolderMultipleN(outPaths, defaultPath);
}
nfdresult_t NFD_PickFolderMultipleN_With_Impl(nfdversion_t version,
const nfdpathset_t** outPaths,
const nfdpickfoldernargs_t* args)
{
(void)version;
return NFD_PickFolderMultipleN(outPaths, args ? args->defaultPath : nullptr);
}
nfdresult_t NFD_PickFolderMultipleU8_With_Impl(nfdversion_t version,
const nfdpathset_t** outPaths,
const nfdpickfolderu8args_t* args)
{
return NFD_PickFolderMultipleN_With_Impl(version, outPaths, args);
}
nfdresult_t NFD_PathSet_GetCount(const nfdpathset_t* pathSet, nfdpathsetsize_t* count)
{
if (!pathSet || !count)
{
NFDi_SetError("NFD path set or count was null.");
return NFD_ERROR;
}
const NFDIOSPathSet* iosPathSet = reinterpret_cast<const NFDIOSPathSet*>(pathSet);
*count = iosPathSet->count;
return NFD_OKAY;
}
nfdresult_t NFD_PathSet_GetPathN(const nfdpathset_t* pathSet, nfdpathsetsize_t index, nfdnchar_t** outPath)
{
if (!pathSet)
{
NFDi_SetError("NFD path set was null.");
return NFD_ERROR;
}
const NFDIOSPathSet* iosPathSet = reinterpret_cast<const NFDIOSPathSet*>(pathSet);
if (index >= iosPathSet->count)
{
NFDi_SetError("NFD path set index was out of range.");
return NFD_ERROR;
}
return NFDi_CopyUtf8String(iosPathSet->paths[index], outPath);
}
nfdresult_t NFD_PathSet_GetPathU8(const nfdpathset_t* pathSet, nfdpathsetsize_t index, nfdu8char_t** outPath)
{
return NFD_PathSet_GetPathN(pathSet, index, outPath);
}
void NFD_PathSet_FreePathN(const nfdnchar_t* filePath)
{
free(const_cast<nfdnchar_t*>(filePath));
}
void NFD_PathSet_FreePathU8(const nfdu8char_t* filePath)
{
free(const_cast<nfdu8char_t*>(filePath));
}
void NFD_PathSet_Free(const nfdpathset_t* pathSet)
{
if (!pathSet)
return;
const NFDIOSPathSet* iosPathSet = reinterpret_cast<const NFDIOSPathSet*>(pathSet);
for (nfdpathsetsize_t i = 0; i < iosPathSet->count; i++)
free(iosPathSet->paths[i]);
free(iosPathSet->paths);
free(const_cast<NFDIOSPathSet*>(iosPathSet));
}
nfdresult_t NFD_PathSet_GetEnum(const nfdpathset_t* pathSet, nfdpathsetenum_t* outEnumerator)
{
if (!pathSet || !outEnumerator)
{
NFDi_SetError("NFD path set or enumerator was null.");
return NFD_ERROR;
}
NFDIOSPathSetEnumerator* enumerator =
static_cast<NFDIOSPathSetEnumerator*>(calloc(1, sizeof(NFDIOSPathSetEnumerator)));
if (!enumerator)
{
NFDi_SetError("Failed to allocate NFD path set enumerator.");
return NFD_ERROR;
}
enumerator->pathSet = reinterpret_cast<const NFDIOSPathSet*>(pathSet);
enumerator->index = 0;
outEnumerator->ptr = enumerator;
return NFD_OKAY;
}
void NFD_PathSet_FreeEnum(nfdpathsetenum_t* enumerator)
{
if (!enumerator)
return;
free(enumerator->ptr);
enumerator->ptr = nullptr;
}
nfdresult_t NFD_PathSet_EnumNextN(nfdpathsetenum_t* enumerator, nfdnchar_t** outPath)
{
if (!enumerator || !outPath)
{
NFDi_SetError("NFD enumerator or output path was null.");
return NFD_ERROR;
}
NFDIOSPathSetEnumerator* iosEnumerator = static_cast<NFDIOSPathSetEnumerator*>(enumerator->ptr);
if (!iosEnumerator || !iosEnumerator->pathSet)
{
NFDi_SetError("NFD enumerator was invalid.");
return NFD_ERROR;
}
if (iosEnumerator->index >= iosEnumerator->pathSet->count)
{
*outPath = nullptr;
return NFD_OKAY;
}
return NFDi_CopyUtf8String(iosEnumerator->pathSet->paths[iosEnumerator->index++], outPath);
}
nfdresult_t NFD_PathSet_EnumNextU8(nfdpathsetenum_t* enumerator, nfdu8char_t** outPath)
{
return NFD_PathSet_EnumNextN(enumerator, outPath);
}
}

View file

@ -1,43 +0,0 @@
#include <nfd.h>
#include <stdlib.h>
static const char* g_nfd_ios_error = "Native file dialogs are not implemented for iOS yet.";
nfdresult_t NFD_Init(void) { return NFD_OKAY; }
void NFD_Quit(void) {}
const char* NFD_GetError(void) { return g_nfd_ios_error; }
void NFD_ClearError(void) {}
void NFD_FreePathN(nfdnchar_t* filePath) { free(filePath); }
void NFD_FreePathU8(nfdu8char_t* filePath) { free(filePath); }
nfdresult_t NFD_OpenDialogN(nfdnchar_t** outPath, const nfdnfilteritem_t* filterList, nfdfiltersize_t filterCount, const nfdnchar_t* defaultPath) { (void)outPath; (void)filterList; (void)filterCount; (void)defaultPath; return NFD_ERROR; }
nfdresult_t NFD_OpenDialogU8(nfdu8char_t** outPath, const nfdu8filteritem_t* filterList, nfdfiltersize_t filterCount, const nfdu8char_t* defaultPath) { (void)outPath; (void)filterList; (void)filterCount; (void)defaultPath; return NFD_ERROR; }
nfdresult_t NFD_OpenDialogN_With_Impl(nfdversion_t version, nfdnchar_t** outPath, const nfdopendialognargs_t* args) { (void)version; (void)outPath; (void)args; return NFD_ERROR; }
nfdresult_t NFD_OpenDialogU8_With_Impl(nfdversion_t version, nfdu8char_t** outPath, const nfdopendialogu8args_t* args) { (void)version; (void)outPath; (void)args; return NFD_ERROR; }
nfdresult_t NFD_OpenDialogMultipleN(const nfdpathset_t** outPaths, const nfdnfilteritem_t* filterList, nfdfiltersize_t filterCount, const nfdnchar_t* defaultPath) { (void)outPaths; (void)filterList; (void)filterCount; (void)defaultPath; return NFD_ERROR; }
nfdresult_t NFD_OpenDialogMultipleU8(const nfdpathset_t** outPaths, const nfdu8filteritem_t* filterList, nfdfiltersize_t filterCount, const nfdu8char_t* defaultPath) { (void)outPaths; (void)filterList; (void)filterCount; (void)defaultPath; return NFD_ERROR; }
nfdresult_t NFD_OpenDialogMultipleN_With_Impl(nfdversion_t version, const nfdpathset_t** outPaths, const nfdopendialognargs_t* args) { (void)version; (void)outPaths; (void)args; return NFD_ERROR; }
nfdresult_t NFD_OpenDialogMultipleU8_With_Impl(nfdversion_t version, const nfdpathset_t** outPaths, const nfdopendialogu8args_t* args) { (void)version; (void)outPaths; (void)args; return NFD_ERROR; }
nfdresult_t NFD_SaveDialogN(nfdnchar_t** outPath, const nfdnfilteritem_t* filterList, nfdfiltersize_t filterCount, const nfdnchar_t* defaultPath, const nfdnchar_t* defaultName) { (void)outPath; (void)filterList; (void)filterCount; (void)defaultPath; (void)defaultName; return NFD_ERROR; }
nfdresult_t NFD_SaveDialogU8(nfdu8char_t** outPath, const nfdu8filteritem_t* filterList, nfdfiltersize_t filterCount, const nfdu8char_t* defaultPath, const nfdu8char_t* defaultName) { (void)outPath; (void)filterList; (void)filterCount; (void)defaultPath; (void)defaultName; return NFD_ERROR; }
nfdresult_t NFD_SaveDialogN_With_Impl(nfdversion_t version, nfdnchar_t** outPath, const nfdsavedialognargs_t* args) { (void)version; (void)outPath; (void)args; return NFD_ERROR; }
nfdresult_t NFD_SaveDialogU8_With_Impl(nfdversion_t version, nfdu8char_t** outPath, const nfdsavedialogu8args_t* args) { (void)version; (void)outPath; (void)args; return NFD_ERROR; }
nfdresult_t NFD_PickFolderN(nfdnchar_t** outPath, const nfdnchar_t* defaultPath) { (void)outPath; (void)defaultPath; return NFD_ERROR; }
nfdresult_t NFD_PickFolderU8(nfdu8char_t** outPath, const nfdu8char_t* defaultPath) { (void)outPath; (void)defaultPath; return NFD_ERROR; }
nfdresult_t NFD_PickFolderN_With_Impl(nfdversion_t version, nfdnchar_t** outPath, const nfdpickfoldernargs_t* args) { (void)version; (void)outPath; (void)args; return NFD_ERROR; }
nfdresult_t NFD_PickFolderU8_With_Impl(nfdversion_t version, nfdu8char_t** outPath, const nfdpickfolderu8args_t* args) { (void)version; (void)outPath; (void)args; return NFD_ERROR; }
nfdresult_t NFD_PickFolderMultipleN(const nfdpathset_t** outPaths, const nfdnchar_t* defaultPath) { (void)outPaths; (void)defaultPath; return NFD_ERROR; }
nfdresult_t NFD_PickFolderMultipleU8(const nfdpathset_t** outPaths, const nfdu8char_t* defaultPath) { (void)outPaths; (void)defaultPath; return NFD_ERROR; }
nfdresult_t NFD_PickFolderMultipleN_With_Impl(nfdversion_t version, const nfdpathset_t** outPaths, const nfdpickfoldernargs_t* args) { (void)version; (void)outPaths; (void)args; return NFD_ERROR; }
nfdresult_t NFD_PickFolderMultipleU8_With_Impl(nfdversion_t version, const nfdpathset_t** outPaths, const nfdpickfolderu8args_t* args) { (void)version; (void)outPaths; (void)args; return NFD_ERROR; }
nfdresult_t NFD_PathSet_GetCount(const nfdpathset_t* pathSet, nfdpathsetsize_t* count) { (void)pathSet; if (count) *count = 0; return NFD_OKAY; }
nfdresult_t NFD_PathSet_GetPathN(const nfdpathset_t* pathSet, nfdpathsetsize_t index, nfdnchar_t** outPath) { (void)pathSet; (void)index; (void)outPath; return NFD_ERROR; }
nfdresult_t NFD_PathSet_GetPathU8(const nfdpathset_t* pathSet, nfdpathsetsize_t index, nfdu8char_t** outPath) { (void)pathSet; (void)index; (void)outPath; return NFD_ERROR; }
void NFD_PathSet_FreePathN(const nfdnchar_t* filePath) { free((void*)filePath); }
void NFD_PathSet_FreePathU8(const nfdu8char_t* filePath) { free((void*)filePath); }
void NFD_PathSet_Free(const nfdpathset_t* pathSet) { (void)pathSet; }
void NFD_PathSet_FreeEnum(nfdpathsetenum_t* enumerator) { (void)enumerator; }
nfdresult_t NFD_PathSet_GetEnum(const nfdpathset_t* pathSet, nfdpathsetenum_t* outEnumerator) { (void)pathSet; (void)outEnumerator; return NFD_ERROR; }
nfdresult_t NFD_PathSet_EnumNextN(nfdpathsetenum_t* enumerator, nfdnchar_t** outPath) { (void)enumerator; (void)outPath; return NFD_ERROR; }
nfdresult_t NFD_PathSet_EnumNextU8(nfdpathsetenum_t* enumerator, nfdu8char_t** outPath) { (void)enumerator; (void)outPath; return NFD_ERROR; }

View file

@ -39,10 +39,31 @@ index 6a7645a..6e6e887 100644
${CMAKE_CURRENT_SOURCE_DIR}/contrib/metal-cpp
)
diff --git a/plume_vulkan.cpp b/plume_vulkan.cpp
index 9103ca8..02c3591 100644
index 9103ca8..d69b4de 100644
--- a/plume_vulkan.cpp
+++ b/plume_vulkan.cpp
@@ -2112,6 +2112,12 @@ namespace plume {
@@ -8,6 +8,9 @@
#define VMA_IMPLEMENTATION
#define VOLK_IMPLEMENTATION
+#if defined(__APPLE__) && defined(SDL_VULKAN_ENABLED)
+#include "plume_volk_rename_ios.h"
+#endif
#include "plume_vulkan.h"
#include <algorithm>
@@ -19,6 +22,10 @@
# include "render/plume_dlss.h"
#endif
+#if defined(__APPLE__) && defined(SDL_VULKAN_ENABLED)
+extern "C" VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL mvkGetInstanceProcAddr(VkInstance instance, const char *pName) __asm("_vkGetInstanceProcAddr");
+#endif
+
#ifndef NDEBUG
# define VULKAN_VALIDATION_LAYER_ENABLED
# define VULKAN_OBJECT_NAMES_ENABLED
@@ -2112,6 +2119,12 @@ namespace plume {
fprintf(stderr, "vkCreateXlibSurfaceKHR failed with error code 0x%X.\n", res);
return;
}
@ -55,7 +76,7 @@ index 9103ca8..02c3591 100644
# elif defined(__APPLE__)
assert(renderWindow.window != 0);
assert(renderWindow.view != 0);
@@ -2443,7 +2449,7 @@ namespace plume {
@@ -2443,7 +2456,7 @@ namespace plume {
// The attributes width and height members do not include the border.
dstWidth = attributes.width;
dstHeight = attributes.height;
@ -64,6 +85,24 @@ index 9103ca8..02c3591 100644
CocoaWindowAttributes attributes;
windowWrapper->getWindowAttributes(&attributes);
dstWidth = attributes.width;
@@ -4398,11 +4411,16 @@ namespace plume {
#else
VulkanInterface::VulkanInterface() {
#endif
- VkResult res = volkInitialize();
+ VkResult res = VK_SUCCESS;
+#if defined(__APPLE__) && defined(SDL_VULKAN_ENABLED)
+ volkInitializeCustom(mvkGetInstanceProcAddr);
+#else
+ res = volkInitialize();
if (res != VK_SUCCESS) {
fprintf(stderr, "volkInitialize failed with error code 0x%X.\n", res);
return;
}
+#endif
appInfo.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO;
appInfo.pApplicationName = "plume";
diff --git a/plume_vulkan.h b/plume_vulkan.h
index 73022bb..9d89adf 100644
--- a/plume_vulkan.h
@ -88,3 +127,771 @@ index 73022bb..9d89adf 100644
std::unique_ptr<CocoaWindow> windowWrapper;
#endif
uint32_t textureCount = 0;
diff --git a/plume_volk_rename_ios.h b/plume_volk_rename_ios.h
new file mode 100644
index 0000000..327d094
--- /dev/null
+++ b/plume_volk_rename_ios.h
@@ -0,0 +1,762 @@
+#pragma once
+
+// Keep Plume's embedded volk function-pointer globals from colliding with statically linked MoltenVK on iOS.
+#define vkAcquireDrmDisplayEXT plumeVolk_vkAcquireDrmDisplayEXT
+#define vkAcquireFullScreenExclusiveModeEXT plumeVolk_vkAcquireFullScreenExclusiveModeEXT
+#define vkAcquireNextImage2KHR plumeVolk_vkAcquireNextImage2KHR
+#define vkAcquireNextImageKHR plumeVolk_vkAcquireNextImageKHR
+#define vkAcquirePerformanceConfigurationINTEL plumeVolk_vkAcquirePerformanceConfigurationINTEL
+#define vkAcquireProfilingLockKHR plumeVolk_vkAcquireProfilingLockKHR
+#define vkAcquireWinrtDisplayNV plumeVolk_vkAcquireWinrtDisplayNV
+#define vkAcquireXlibDisplayEXT plumeVolk_vkAcquireXlibDisplayEXT
+#define vkAllocateCommandBuffers plumeVolk_vkAllocateCommandBuffers
+#define vkAllocateDescriptorSets plumeVolk_vkAllocateDescriptorSets
+#define vkAllocateMemory plumeVolk_vkAllocateMemory
+#define vkAntiLagUpdateAMD plumeVolk_vkAntiLagUpdateAMD
+#define vkBeginCommandBuffer plumeVolk_vkBeginCommandBuffer
+#define vkBindAccelerationStructureMemoryNV plumeVolk_vkBindAccelerationStructureMemoryNV
+#define vkBindBufferMemory plumeVolk_vkBindBufferMemory
+#define vkBindBufferMemory2 plumeVolk_vkBindBufferMemory2
+#define vkBindBufferMemory2KHR plumeVolk_vkBindBufferMemory2KHR
+#define vkBindDataGraphPipelineSessionMemoryARM plumeVolk_vkBindDataGraphPipelineSessionMemoryARM
+#define vkBindImageMemory plumeVolk_vkBindImageMemory
+#define vkBindImageMemory2 plumeVolk_vkBindImageMemory2
+#define vkBindImageMemory2KHR plumeVolk_vkBindImageMemory2KHR
+#define vkBindOpticalFlowSessionImageNV plumeVolk_vkBindOpticalFlowSessionImageNV
+#define vkBindTensorMemoryARM plumeVolk_vkBindTensorMemoryARM
+#define vkBindVideoSessionMemoryKHR plumeVolk_vkBindVideoSessionMemoryKHR
+#define vkBuildAccelerationStructuresKHR plumeVolk_vkBuildAccelerationStructuresKHR
+#define vkBuildMicromapsEXT plumeVolk_vkBuildMicromapsEXT
+#define vkCmdBeginConditionalRenderingEXT plumeVolk_vkCmdBeginConditionalRenderingEXT
+#define vkCmdBeginDebugUtilsLabelEXT plumeVolk_vkCmdBeginDebugUtilsLabelEXT
+#define vkCmdBeginPerTileExecutionQCOM plumeVolk_vkCmdBeginPerTileExecutionQCOM
+#define vkCmdBeginQuery plumeVolk_vkCmdBeginQuery
+#define vkCmdBeginQueryIndexedEXT plumeVolk_vkCmdBeginQueryIndexedEXT
+#define vkCmdBeginRenderPass plumeVolk_vkCmdBeginRenderPass
+#define vkCmdBeginRenderPass2 plumeVolk_vkCmdBeginRenderPass2
+#define vkCmdBeginRenderPass2KHR plumeVolk_vkCmdBeginRenderPass2KHR
+#define vkCmdBeginRendering plumeVolk_vkCmdBeginRendering
+#define vkCmdBeginRenderingKHR plumeVolk_vkCmdBeginRenderingKHR
+#define vkCmdBeginTransformFeedbackEXT plumeVolk_vkCmdBeginTransformFeedbackEXT
+#define vkCmdBeginVideoCodingKHR plumeVolk_vkCmdBeginVideoCodingKHR
+#define vkCmdBindDescriptorBufferEmbeddedSamplers2EXT plumeVolk_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT
+#define vkCmdBindDescriptorBufferEmbeddedSamplersEXT plumeVolk_vkCmdBindDescriptorBufferEmbeddedSamplersEXT
+#define vkCmdBindDescriptorBuffersEXT plumeVolk_vkCmdBindDescriptorBuffersEXT
+#define vkCmdBindDescriptorSets plumeVolk_vkCmdBindDescriptorSets
+#define vkCmdBindDescriptorSets2 plumeVolk_vkCmdBindDescriptorSets2
+#define vkCmdBindDescriptorSets2KHR plumeVolk_vkCmdBindDescriptorSets2KHR
+#define vkCmdBindIndexBuffer plumeVolk_vkCmdBindIndexBuffer
+#define vkCmdBindIndexBuffer2 plumeVolk_vkCmdBindIndexBuffer2
+#define vkCmdBindIndexBuffer2KHR plumeVolk_vkCmdBindIndexBuffer2KHR
+#define vkCmdBindInvocationMaskHUAWEI plumeVolk_vkCmdBindInvocationMaskHUAWEI
+#define vkCmdBindPipeline plumeVolk_vkCmdBindPipeline
+#define vkCmdBindPipelineShaderGroupNV plumeVolk_vkCmdBindPipelineShaderGroupNV
+#define vkCmdBindShadersEXT plumeVolk_vkCmdBindShadersEXT
+#define vkCmdBindShadingRateImageNV plumeVolk_vkCmdBindShadingRateImageNV
+#define vkCmdBindTileMemoryQCOM plumeVolk_vkCmdBindTileMemoryQCOM
+#define vkCmdBindTransformFeedbackBuffersEXT plumeVolk_vkCmdBindTransformFeedbackBuffersEXT
+#define vkCmdBindVertexBuffers plumeVolk_vkCmdBindVertexBuffers
+#define vkCmdBindVertexBuffers2 plumeVolk_vkCmdBindVertexBuffers2
+#define vkCmdBindVertexBuffers2EXT plumeVolk_vkCmdBindVertexBuffers2EXT
+#define vkCmdBlitImage plumeVolk_vkCmdBlitImage
+#define vkCmdBlitImage2 plumeVolk_vkCmdBlitImage2
+#define vkCmdBlitImage2KHR plumeVolk_vkCmdBlitImage2KHR
+#define vkCmdBuildAccelerationStructureNV plumeVolk_vkCmdBuildAccelerationStructureNV
+#define vkCmdBuildAccelerationStructuresIndirectKHR plumeVolk_vkCmdBuildAccelerationStructuresIndirectKHR
+#define vkCmdBuildAccelerationStructuresKHR plumeVolk_vkCmdBuildAccelerationStructuresKHR
+#define vkCmdBuildClusterAccelerationStructureIndirectNV plumeVolk_vkCmdBuildClusterAccelerationStructureIndirectNV
+#define vkCmdBuildMicromapsEXT plumeVolk_vkCmdBuildMicromapsEXT
+#define vkCmdBuildPartitionedAccelerationStructuresNV plumeVolk_vkCmdBuildPartitionedAccelerationStructuresNV
+#define vkCmdClearAttachments plumeVolk_vkCmdClearAttachments
+#define vkCmdClearColorImage plumeVolk_vkCmdClearColorImage
+#define vkCmdClearDepthStencilImage plumeVolk_vkCmdClearDepthStencilImage
+#define vkCmdControlVideoCodingKHR plumeVolk_vkCmdControlVideoCodingKHR
+#define vkCmdConvertCooperativeVectorMatrixNV plumeVolk_vkCmdConvertCooperativeVectorMatrixNV
+#define vkCmdCopyAccelerationStructureKHR plumeVolk_vkCmdCopyAccelerationStructureKHR
+#define vkCmdCopyAccelerationStructureNV plumeVolk_vkCmdCopyAccelerationStructureNV
+#define vkCmdCopyAccelerationStructureToMemoryKHR plumeVolk_vkCmdCopyAccelerationStructureToMemoryKHR
+#define vkCmdCopyBuffer plumeVolk_vkCmdCopyBuffer
+#define vkCmdCopyBuffer2 plumeVolk_vkCmdCopyBuffer2
+#define vkCmdCopyBuffer2KHR plumeVolk_vkCmdCopyBuffer2KHR
+#define vkCmdCopyBufferToImage plumeVolk_vkCmdCopyBufferToImage
+#define vkCmdCopyBufferToImage2 plumeVolk_vkCmdCopyBufferToImage2
+#define vkCmdCopyBufferToImage2KHR plumeVolk_vkCmdCopyBufferToImage2KHR
+#define vkCmdCopyImage plumeVolk_vkCmdCopyImage
+#define vkCmdCopyImage2 plumeVolk_vkCmdCopyImage2
+#define vkCmdCopyImage2KHR plumeVolk_vkCmdCopyImage2KHR
+#define vkCmdCopyImageToBuffer plumeVolk_vkCmdCopyImageToBuffer
+#define vkCmdCopyImageToBuffer2 plumeVolk_vkCmdCopyImageToBuffer2
+#define vkCmdCopyImageToBuffer2KHR plumeVolk_vkCmdCopyImageToBuffer2KHR
+#define vkCmdCopyMemoryIndirectNV plumeVolk_vkCmdCopyMemoryIndirectNV
+#define vkCmdCopyMemoryToAccelerationStructureKHR plumeVolk_vkCmdCopyMemoryToAccelerationStructureKHR
+#define vkCmdCopyMemoryToImageIndirectNV plumeVolk_vkCmdCopyMemoryToImageIndirectNV
+#define vkCmdCopyMemoryToMicromapEXT plumeVolk_vkCmdCopyMemoryToMicromapEXT
+#define vkCmdCopyMicromapEXT plumeVolk_vkCmdCopyMicromapEXT
+#define vkCmdCopyMicromapToMemoryEXT plumeVolk_vkCmdCopyMicromapToMemoryEXT
+#define vkCmdCopyQueryPoolResults plumeVolk_vkCmdCopyQueryPoolResults
+#define vkCmdCopyTensorARM plumeVolk_vkCmdCopyTensorARM
+#define vkCmdCuLaunchKernelNVX plumeVolk_vkCmdCuLaunchKernelNVX
+#define vkCmdCudaLaunchKernelNV plumeVolk_vkCmdCudaLaunchKernelNV
+#define vkCmdDebugMarkerBeginEXT plumeVolk_vkCmdDebugMarkerBeginEXT
+#define vkCmdDebugMarkerEndEXT plumeVolk_vkCmdDebugMarkerEndEXT
+#define vkCmdDebugMarkerInsertEXT plumeVolk_vkCmdDebugMarkerInsertEXT
+#define vkCmdDecodeVideoKHR plumeVolk_vkCmdDecodeVideoKHR
+#define vkCmdDecompressMemoryIndirectCountNV plumeVolk_vkCmdDecompressMemoryIndirectCountNV
+#define vkCmdDecompressMemoryNV plumeVolk_vkCmdDecompressMemoryNV
+#define vkCmdDispatch plumeVolk_vkCmdDispatch
+#define vkCmdDispatchBase plumeVolk_vkCmdDispatchBase
+#define vkCmdDispatchBaseKHR plumeVolk_vkCmdDispatchBaseKHR
+#define vkCmdDispatchDataGraphARM plumeVolk_vkCmdDispatchDataGraphARM
+#define vkCmdDispatchGraphAMDX plumeVolk_vkCmdDispatchGraphAMDX
+#define vkCmdDispatchGraphIndirectAMDX plumeVolk_vkCmdDispatchGraphIndirectAMDX
+#define vkCmdDispatchGraphIndirectCountAMDX plumeVolk_vkCmdDispatchGraphIndirectCountAMDX
+#define vkCmdDispatchIndirect plumeVolk_vkCmdDispatchIndirect
+#define vkCmdDispatchTileQCOM plumeVolk_vkCmdDispatchTileQCOM
+#define vkCmdDraw plumeVolk_vkCmdDraw
+#define vkCmdDrawClusterHUAWEI plumeVolk_vkCmdDrawClusterHUAWEI
+#define vkCmdDrawClusterIndirectHUAWEI plumeVolk_vkCmdDrawClusterIndirectHUAWEI
+#define vkCmdDrawIndexed plumeVolk_vkCmdDrawIndexed
+#define vkCmdDrawIndexedIndirect plumeVolk_vkCmdDrawIndexedIndirect
+#define vkCmdDrawIndexedIndirectCount plumeVolk_vkCmdDrawIndexedIndirectCount
+#define vkCmdDrawIndexedIndirectCountAMD plumeVolk_vkCmdDrawIndexedIndirectCountAMD
+#define vkCmdDrawIndexedIndirectCountKHR plumeVolk_vkCmdDrawIndexedIndirectCountKHR
+#define vkCmdDrawIndirect plumeVolk_vkCmdDrawIndirect
+#define vkCmdDrawIndirectByteCountEXT plumeVolk_vkCmdDrawIndirectByteCountEXT
+#define vkCmdDrawIndirectCount plumeVolk_vkCmdDrawIndirectCount
+#define vkCmdDrawIndirectCountAMD plumeVolk_vkCmdDrawIndirectCountAMD
+#define vkCmdDrawIndirectCountKHR plumeVolk_vkCmdDrawIndirectCountKHR
+#define vkCmdDrawMeshTasksEXT plumeVolk_vkCmdDrawMeshTasksEXT
+#define vkCmdDrawMeshTasksIndirectCountEXT plumeVolk_vkCmdDrawMeshTasksIndirectCountEXT
+#define vkCmdDrawMeshTasksIndirectCountNV plumeVolk_vkCmdDrawMeshTasksIndirectCountNV
+#define vkCmdDrawMeshTasksIndirectEXT plumeVolk_vkCmdDrawMeshTasksIndirectEXT
+#define vkCmdDrawMeshTasksIndirectNV plumeVolk_vkCmdDrawMeshTasksIndirectNV
+#define vkCmdDrawMeshTasksNV plumeVolk_vkCmdDrawMeshTasksNV
+#define vkCmdDrawMultiEXT plumeVolk_vkCmdDrawMultiEXT
+#define vkCmdDrawMultiIndexedEXT plumeVolk_vkCmdDrawMultiIndexedEXT
+#define vkCmdEncodeVideoKHR plumeVolk_vkCmdEncodeVideoKHR
+#define vkCmdEndConditionalRenderingEXT plumeVolk_vkCmdEndConditionalRenderingEXT
+#define vkCmdEndDebugUtilsLabelEXT plumeVolk_vkCmdEndDebugUtilsLabelEXT
+#define vkCmdEndPerTileExecutionQCOM plumeVolk_vkCmdEndPerTileExecutionQCOM
+#define vkCmdEndQuery plumeVolk_vkCmdEndQuery
+#define vkCmdEndQueryIndexedEXT plumeVolk_vkCmdEndQueryIndexedEXT
+#define vkCmdEndRenderPass plumeVolk_vkCmdEndRenderPass
+#define vkCmdEndRenderPass2 plumeVolk_vkCmdEndRenderPass2
+#define vkCmdEndRenderPass2KHR plumeVolk_vkCmdEndRenderPass2KHR
+#define vkCmdEndRendering plumeVolk_vkCmdEndRendering
+#define vkCmdEndRendering2EXT plumeVolk_vkCmdEndRendering2EXT
+#define vkCmdEndRenderingKHR plumeVolk_vkCmdEndRenderingKHR
+#define vkCmdEndTransformFeedbackEXT plumeVolk_vkCmdEndTransformFeedbackEXT
+#define vkCmdEndVideoCodingKHR plumeVolk_vkCmdEndVideoCodingKHR
+#define vkCmdExecuteCommands plumeVolk_vkCmdExecuteCommands
+#define vkCmdExecuteGeneratedCommandsEXT plumeVolk_vkCmdExecuteGeneratedCommandsEXT
+#define vkCmdExecuteGeneratedCommandsNV plumeVolk_vkCmdExecuteGeneratedCommandsNV
+#define vkCmdFillBuffer plumeVolk_vkCmdFillBuffer
+#define vkCmdInitializeGraphScratchMemoryAMDX plumeVolk_vkCmdInitializeGraphScratchMemoryAMDX
+#define vkCmdInsertDebugUtilsLabelEXT plumeVolk_vkCmdInsertDebugUtilsLabelEXT
+#define vkCmdNextSubpass plumeVolk_vkCmdNextSubpass
+#define vkCmdNextSubpass2 plumeVolk_vkCmdNextSubpass2
+#define vkCmdNextSubpass2KHR plumeVolk_vkCmdNextSubpass2KHR
+#define vkCmdOpticalFlowExecuteNV plumeVolk_vkCmdOpticalFlowExecuteNV
+#define vkCmdPipelineBarrier plumeVolk_vkCmdPipelineBarrier
+#define vkCmdPipelineBarrier2 plumeVolk_vkCmdPipelineBarrier2
+#define vkCmdPipelineBarrier2KHR plumeVolk_vkCmdPipelineBarrier2KHR
+#define vkCmdPreprocessGeneratedCommandsEXT plumeVolk_vkCmdPreprocessGeneratedCommandsEXT
+#define vkCmdPreprocessGeneratedCommandsNV plumeVolk_vkCmdPreprocessGeneratedCommandsNV
+#define vkCmdPushConstants plumeVolk_vkCmdPushConstants
+#define vkCmdPushConstants2 plumeVolk_vkCmdPushConstants2
+#define vkCmdPushConstants2KHR plumeVolk_vkCmdPushConstants2KHR
+#define vkCmdPushDescriptorSet plumeVolk_vkCmdPushDescriptorSet
+#define vkCmdPushDescriptorSet2 plumeVolk_vkCmdPushDescriptorSet2
+#define vkCmdPushDescriptorSet2KHR plumeVolk_vkCmdPushDescriptorSet2KHR
+#define vkCmdPushDescriptorSetKHR plumeVolk_vkCmdPushDescriptorSetKHR
+#define vkCmdPushDescriptorSetWithTemplate plumeVolk_vkCmdPushDescriptorSetWithTemplate
+#define vkCmdPushDescriptorSetWithTemplate2 plumeVolk_vkCmdPushDescriptorSetWithTemplate2
+#define vkCmdPushDescriptorSetWithTemplate2KHR plumeVolk_vkCmdPushDescriptorSetWithTemplate2KHR
+#define vkCmdPushDescriptorSetWithTemplateKHR plumeVolk_vkCmdPushDescriptorSetWithTemplateKHR
+#define vkCmdResetEvent plumeVolk_vkCmdResetEvent
+#define vkCmdResetEvent2 plumeVolk_vkCmdResetEvent2
+#define vkCmdResetEvent2KHR plumeVolk_vkCmdResetEvent2KHR
+#define vkCmdResetQueryPool plumeVolk_vkCmdResetQueryPool
+#define vkCmdResolveImage plumeVolk_vkCmdResolveImage
+#define vkCmdResolveImage2 plumeVolk_vkCmdResolveImage2
+#define vkCmdResolveImage2KHR plumeVolk_vkCmdResolveImage2KHR
+#define vkCmdSetAlphaToCoverageEnableEXT plumeVolk_vkCmdSetAlphaToCoverageEnableEXT
+#define vkCmdSetAlphaToOneEnableEXT plumeVolk_vkCmdSetAlphaToOneEnableEXT
+#define vkCmdSetAttachmentFeedbackLoopEnableEXT plumeVolk_vkCmdSetAttachmentFeedbackLoopEnableEXT
+#define vkCmdSetBlendConstants plumeVolk_vkCmdSetBlendConstants
+#define vkCmdSetCheckpointNV plumeVolk_vkCmdSetCheckpointNV
+#define vkCmdSetCoarseSampleOrderNV plumeVolk_vkCmdSetCoarseSampleOrderNV
+#define vkCmdSetColorBlendAdvancedEXT plumeVolk_vkCmdSetColorBlendAdvancedEXT
+#define vkCmdSetColorBlendEnableEXT plumeVolk_vkCmdSetColorBlendEnableEXT
+#define vkCmdSetColorBlendEquationEXT plumeVolk_vkCmdSetColorBlendEquationEXT
+#define vkCmdSetColorWriteEnableEXT plumeVolk_vkCmdSetColorWriteEnableEXT
+#define vkCmdSetColorWriteMaskEXT plumeVolk_vkCmdSetColorWriteMaskEXT
+#define vkCmdSetConservativeRasterizationModeEXT plumeVolk_vkCmdSetConservativeRasterizationModeEXT
+#define vkCmdSetCoverageModulationModeNV plumeVolk_vkCmdSetCoverageModulationModeNV
+#define vkCmdSetCoverageModulationTableEnableNV plumeVolk_vkCmdSetCoverageModulationTableEnableNV
+#define vkCmdSetCoverageModulationTableNV plumeVolk_vkCmdSetCoverageModulationTableNV
+#define vkCmdSetCoverageReductionModeNV plumeVolk_vkCmdSetCoverageReductionModeNV
+#define vkCmdSetCoverageToColorEnableNV plumeVolk_vkCmdSetCoverageToColorEnableNV
+#define vkCmdSetCoverageToColorLocationNV plumeVolk_vkCmdSetCoverageToColorLocationNV
+#define vkCmdSetCullMode plumeVolk_vkCmdSetCullMode
+#define vkCmdSetCullModeEXT plumeVolk_vkCmdSetCullModeEXT
+#define vkCmdSetDepthBias plumeVolk_vkCmdSetDepthBias
+#define vkCmdSetDepthBias2EXT plumeVolk_vkCmdSetDepthBias2EXT
+#define vkCmdSetDepthBiasEnable plumeVolk_vkCmdSetDepthBiasEnable
+#define vkCmdSetDepthBiasEnableEXT plumeVolk_vkCmdSetDepthBiasEnableEXT
+#define vkCmdSetDepthBounds plumeVolk_vkCmdSetDepthBounds
+#define vkCmdSetDepthBoundsTestEnable plumeVolk_vkCmdSetDepthBoundsTestEnable
+#define vkCmdSetDepthBoundsTestEnableEXT plumeVolk_vkCmdSetDepthBoundsTestEnableEXT
+#define vkCmdSetDepthClampEnableEXT plumeVolk_vkCmdSetDepthClampEnableEXT
+#define vkCmdSetDepthClampRangeEXT plumeVolk_vkCmdSetDepthClampRangeEXT
+#define vkCmdSetDepthClipEnableEXT plumeVolk_vkCmdSetDepthClipEnableEXT
+#define vkCmdSetDepthClipNegativeOneToOneEXT plumeVolk_vkCmdSetDepthClipNegativeOneToOneEXT
+#define vkCmdSetDepthCompareOp plumeVolk_vkCmdSetDepthCompareOp
+#define vkCmdSetDepthCompareOpEXT plumeVolk_vkCmdSetDepthCompareOpEXT
+#define vkCmdSetDepthTestEnable plumeVolk_vkCmdSetDepthTestEnable
+#define vkCmdSetDepthTestEnableEXT plumeVolk_vkCmdSetDepthTestEnableEXT
+#define vkCmdSetDepthWriteEnable plumeVolk_vkCmdSetDepthWriteEnable
+#define vkCmdSetDepthWriteEnableEXT plumeVolk_vkCmdSetDepthWriteEnableEXT
+#define vkCmdSetDescriptorBufferOffsets2EXT plumeVolk_vkCmdSetDescriptorBufferOffsets2EXT
+#define vkCmdSetDescriptorBufferOffsetsEXT plumeVolk_vkCmdSetDescriptorBufferOffsetsEXT
+#define vkCmdSetDeviceMask plumeVolk_vkCmdSetDeviceMask
+#define vkCmdSetDeviceMaskKHR plumeVolk_vkCmdSetDeviceMaskKHR
+#define vkCmdSetDiscardRectangleEXT plumeVolk_vkCmdSetDiscardRectangleEXT
+#define vkCmdSetDiscardRectangleEnableEXT plumeVolk_vkCmdSetDiscardRectangleEnableEXT
+#define vkCmdSetDiscardRectangleModeEXT plumeVolk_vkCmdSetDiscardRectangleModeEXT
+#define vkCmdSetEvent plumeVolk_vkCmdSetEvent
+#define vkCmdSetEvent2 plumeVolk_vkCmdSetEvent2
+#define vkCmdSetEvent2KHR plumeVolk_vkCmdSetEvent2KHR
+#define vkCmdSetExclusiveScissorEnableNV plumeVolk_vkCmdSetExclusiveScissorEnableNV
+#define vkCmdSetExclusiveScissorNV plumeVolk_vkCmdSetExclusiveScissorNV
+#define vkCmdSetExtraPrimitiveOverestimationSizeEXT plumeVolk_vkCmdSetExtraPrimitiveOverestimationSizeEXT
+#define vkCmdSetFragmentShadingRateEnumNV plumeVolk_vkCmdSetFragmentShadingRateEnumNV
+#define vkCmdSetFragmentShadingRateKHR plumeVolk_vkCmdSetFragmentShadingRateKHR
+#define vkCmdSetFrontFace plumeVolk_vkCmdSetFrontFace
+#define vkCmdSetFrontFaceEXT plumeVolk_vkCmdSetFrontFaceEXT
+#define vkCmdSetLineRasterizationModeEXT plumeVolk_vkCmdSetLineRasterizationModeEXT
+#define vkCmdSetLineStipple plumeVolk_vkCmdSetLineStipple
+#define vkCmdSetLineStippleEXT plumeVolk_vkCmdSetLineStippleEXT
+#define vkCmdSetLineStippleEnableEXT plumeVolk_vkCmdSetLineStippleEnableEXT
+#define vkCmdSetLineStippleKHR plumeVolk_vkCmdSetLineStippleKHR
+#define vkCmdSetLineWidth plumeVolk_vkCmdSetLineWidth
+#define vkCmdSetLogicOpEXT plumeVolk_vkCmdSetLogicOpEXT
+#define vkCmdSetLogicOpEnableEXT plumeVolk_vkCmdSetLogicOpEnableEXT
+#define vkCmdSetPatchControlPointsEXT plumeVolk_vkCmdSetPatchControlPointsEXT
+#define vkCmdSetPerformanceMarkerINTEL plumeVolk_vkCmdSetPerformanceMarkerINTEL
+#define vkCmdSetPerformanceOverrideINTEL plumeVolk_vkCmdSetPerformanceOverrideINTEL
+#define vkCmdSetPerformanceStreamMarkerINTEL plumeVolk_vkCmdSetPerformanceStreamMarkerINTEL
+#define vkCmdSetPolygonModeEXT plumeVolk_vkCmdSetPolygonModeEXT
+#define vkCmdSetPrimitiveRestartEnable plumeVolk_vkCmdSetPrimitiveRestartEnable
+#define vkCmdSetPrimitiveRestartEnableEXT plumeVolk_vkCmdSetPrimitiveRestartEnableEXT
+#define vkCmdSetPrimitiveTopology plumeVolk_vkCmdSetPrimitiveTopology
+#define vkCmdSetPrimitiveTopologyEXT plumeVolk_vkCmdSetPrimitiveTopologyEXT
+#define vkCmdSetProvokingVertexModeEXT plumeVolk_vkCmdSetProvokingVertexModeEXT
+#define vkCmdSetRasterizationSamplesEXT plumeVolk_vkCmdSetRasterizationSamplesEXT
+#define vkCmdSetRasterizationStreamEXT plumeVolk_vkCmdSetRasterizationStreamEXT
+#define vkCmdSetRasterizerDiscardEnable plumeVolk_vkCmdSetRasterizerDiscardEnable
+#define vkCmdSetRasterizerDiscardEnableEXT plumeVolk_vkCmdSetRasterizerDiscardEnableEXT
+#define vkCmdSetRayTracingPipelineStackSizeKHR plumeVolk_vkCmdSetRayTracingPipelineStackSizeKHR
+#define vkCmdSetRenderingAttachmentLocations plumeVolk_vkCmdSetRenderingAttachmentLocations
+#define vkCmdSetRenderingAttachmentLocationsKHR plumeVolk_vkCmdSetRenderingAttachmentLocationsKHR
+#define vkCmdSetRenderingInputAttachmentIndices plumeVolk_vkCmdSetRenderingInputAttachmentIndices
+#define vkCmdSetRenderingInputAttachmentIndicesKHR plumeVolk_vkCmdSetRenderingInputAttachmentIndicesKHR
+#define vkCmdSetRepresentativeFragmentTestEnableNV plumeVolk_vkCmdSetRepresentativeFragmentTestEnableNV
+#define vkCmdSetSampleLocationsEXT plumeVolk_vkCmdSetSampleLocationsEXT
+#define vkCmdSetSampleLocationsEnableEXT plumeVolk_vkCmdSetSampleLocationsEnableEXT
+#define vkCmdSetSampleMaskEXT plumeVolk_vkCmdSetSampleMaskEXT
+#define vkCmdSetScissor plumeVolk_vkCmdSetScissor
+#define vkCmdSetScissorWithCount plumeVolk_vkCmdSetScissorWithCount
+#define vkCmdSetScissorWithCountEXT plumeVolk_vkCmdSetScissorWithCountEXT
+#define vkCmdSetShadingRateImageEnableNV plumeVolk_vkCmdSetShadingRateImageEnableNV
+#define vkCmdSetStencilCompareMask plumeVolk_vkCmdSetStencilCompareMask
+#define vkCmdSetStencilOp plumeVolk_vkCmdSetStencilOp
+#define vkCmdSetStencilOpEXT plumeVolk_vkCmdSetStencilOpEXT
+#define vkCmdSetStencilReference plumeVolk_vkCmdSetStencilReference
+#define vkCmdSetStencilTestEnable plumeVolk_vkCmdSetStencilTestEnable
+#define vkCmdSetStencilTestEnableEXT plumeVolk_vkCmdSetStencilTestEnableEXT
+#define vkCmdSetStencilWriteMask plumeVolk_vkCmdSetStencilWriteMask
+#define vkCmdSetTessellationDomainOriginEXT plumeVolk_vkCmdSetTessellationDomainOriginEXT
+#define vkCmdSetVertexInputEXT plumeVolk_vkCmdSetVertexInputEXT
+#define vkCmdSetViewport plumeVolk_vkCmdSetViewport
+#define vkCmdSetViewportShadingRatePaletteNV plumeVolk_vkCmdSetViewportShadingRatePaletteNV
+#define vkCmdSetViewportSwizzleNV plumeVolk_vkCmdSetViewportSwizzleNV
+#define vkCmdSetViewportWScalingEnableNV plumeVolk_vkCmdSetViewportWScalingEnableNV
+#define vkCmdSetViewportWScalingNV plumeVolk_vkCmdSetViewportWScalingNV
+#define vkCmdSetViewportWithCount plumeVolk_vkCmdSetViewportWithCount
+#define vkCmdSetViewportWithCountEXT plumeVolk_vkCmdSetViewportWithCountEXT
+#define vkCmdSubpassShadingHUAWEI plumeVolk_vkCmdSubpassShadingHUAWEI
+#define vkCmdTraceRaysIndirect2KHR plumeVolk_vkCmdTraceRaysIndirect2KHR
+#define vkCmdTraceRaysIndirectKHR plumeVolk_vkCmdTraceRaysIndirectKHR
+#define vkCmdTraceRaysKHR plumeVolk_vkCmdTraceRaysKHR
+#define vkCmdTraceRaysNV plumeVolk_vkCmdTraceRaysNV
+#define vkCmdUpdateBuffer plumeVolk_vkCmdUpdateBuffer
+#define vkCmdUpdatePipelineIndirectBufferNV plumeVolk_vkCmdUpdatePipelineIndirectBufferNV
+#define vkCmdWaitEvents plumeVolk_vkCmdWaitEvents
+#define vkCmdWaitEvents2 plumeVolk_vkCmdWaitEvents2
+#define vkCmdWaitEvents2KHR plumeVolk_vkCmdWaitEvents2KHR
+#define vkCmdWriteAccelerationStructuresPropertiesKHR plumeVolk_vkCmdWriteAccelerationStructuresPropertiesKHR
+#define vkCmdWriteAccelerationStructuresPropertiesNV plumeVolk_vkCmdWriteAccelerationStructuresPropertiesNV
+#define vkCmdWriteBufferMarker2AMD plumeVolk_vkCmdWriteBufferMarker2AMD
+#define vkCmdWriteBufferMarkerAMD plumeVolk_vkCmdWriteBufferMarkerAMD
+#define vkCmdWriteMicromapsPropertiesEXT plumeVolk_vkCmdWriteMicromapsPropertiesEXT
+#define vkCmdWriteTimestamp plumeVolk_vkCmdWriteTimestamp
+#define vkCmdWriteTimestamp2 plumeVolk_vkCmdWriteTimestamp2
+#define vkCmdWriteTimestamp2KHR plumeVolk_vkCmdWriteTimestamp2KHR
+#define vkCompileDeferredNV plumeVolk_vkCompileDeferredNV
+#define vkConvertCooperativeVectorMatrixNV plumeVolk_vkConvertCooperativeVectorMatrixNV
+#define vkCopyAccelerationStructureKHR plumeVolk_vkCopyAccelerationStructureKHR
+#define vkCopyAccelerationStructureToMemoryKHR plumeVolk_vkCopyAccelerationStructureToMemoryKHR
+#define vkCopyImageToImage plumeVolk_vkCopyImageToImage
+#define vkCopyImageToImageEXT plumeVolk_vkCopyImageToImageEXT
+#define vkCopyImageToMemory plumeVolk_vkCopyImageToMemory
+#define vkCopyImageToMemoryEXT plumeVolk_vkCopyImageToMemoryEXT
+#define vkCopyMemoryToAccelerationStructureKHR plumeVolk_vkCopyMemoryToAccelerationStructureKHR
+#define vkCopyMemoryToImage plumeVolk_vkCopyMemoryToImage
+#define vkCopyMemoryToImageEXT plumeVolk_vkCopyMemoryToImageEXT
+#define vkCopyMemoryToMicromapEXT plumeVolk_vkCopyMemoryToMicromapEXT
+#define vkCopyMicromapEXT plumeVolk_vkCopyMicromapEXT
+#define vkCopyMicromapToMemoryEXT plumeVolk_vkCopyMicromapToMemoryEXT
+#define vkCreateAccelerationStructureKHR plumeVolk_vkCreateAccelerationStructureKHR
+#define vkCreateAccelerationStructureNV plumeVolk_vkCreateAccelerationStructureNV
+#define vkCreateAndroidSurfaceKHR plumeVolk_vkCreateAndroidSurfaceKHR
+#define vkCreateBuffer plumeVolk_vkCreateBuffer
+#define vkCreateBufferCollectionFUCHSIA plumeVolk_vkCreateBufferCollectionFUCHSIA
+#define vkCreateBufferView plumeVolk_vkCreateBufferView
+#define vkCreateCommandPool plumeVolk_vkCreateCommandPool
+#define vkCreateComputePipelines plumeVolk_vkCreateComputePipelines
+#define vkCreateCuFunctionNVX plumeVolk_vkCreateCuFunctionNVX
+#define vkCreateCuModuleNVX plumeVolk_vkCreateCuModuleNVX
+#define vkCreateCudaFunctionNV plumeVolk_vkCreateCudaFunctionNV
+#define vkCreateCudaModuleNV plumeVolk_vkCreateCudaModuleNV
+#define vkCreateDataGraphPipelineSessionARM plumeVolk_vkCreateDataGraphPipelineSessionARM
+#define vkCreateDataGraphPipelinesARM plumeVolk_vkCreateDataGraphPipelinesARM
+#define vkCreateDebugReportCallbackEXT plumeVolk_vkCreateDebugReportCallbackEXT
+#define vkCreateDebugUtilsMessengerEXT plumeVolk_vkCreateDebugUtilsMessengerEXT
+#define vkCreateDeferredOperationKHR plumeVolk_vkCreateDeferredOperationKHR
+#define vkCreateDescriptorPool plumeVolk_vkCreateDescriptorPool
+#define vkCreateDescriptorSetLayout plumeVolk_vkCreateDescriptorSetLayout
+#define vkCreateDescriptorUpdateTemplate plumeVolk_vkCreateDescriptorUpdateTemplate
+#define vkCreateDescriptorUpdateTemplateKHR plumeVolk_vkCreateDescriptorUpdateTemplateKHR
+#define vkCreateDevice plumeVolk_vkCreateDevice
+#define vkCreateDirectFBSurfaceEXT plumeVolk_vkCreateDirectFBSurfaceEXT
+#define vkCreateDisplayModeKHR plumeVolk_vkCreateDisplayModeKHR
+#define vkCreateDisplayPlaneSurfaceKHR plumeVolk_vkCreateDisplayPlaneSurfaceKHR
+#define vkCreateEvent plumeVolk_vkCreateEvent
+#define vkCreateExecutionGraphPipelinesAMDX plumeVolk_vkCreateExecutionGraphPipelinesAMDX
+#define vkCreateExternalComputeQueueNV plumeVolk_vkCreateExternalComputeQueueNV
+#define vkCreateFence plumeVolk_vkCreateFence
+#define vkCreateFramebuffer plumeVolk_vkCreateFramebuffer
+#define vkCreateGraphicsPipelines plumeVolk_vkCreateGraphicsPipelines
+#define vkCreateHeadlessSurfaceEXT plumeVolk_vkCreateHeadlessSurfaceEXT
+#define vkCreateIOSSurfaceMVK plumeVolk_vkCreateIOSSurfaceMVK
+#define vkCreateImage plumeVolk_vkCreateImage
+#define vkCreateImagePipeSurfaceFUCHSIA plumeVolk_vkCreateImagePipeSurfaceFUCHSIA
+#define vkCreateImageView plumeVolk_vkCreateImageView
+#define vkCreateIndirectCommandsLayoutEXT plumeVolk_vkCreateIndirectCommandsLayoutEXT
+#define vkCreateIndirectCommandsLayoutNV plumeVolk_vkCreateIndirectCommandsLayoutNV
+#define vkCreateIndirectExecutionSetEXT plumeVolk_vkCreateIndirectExecutionSetEXT
+#define vkCreateInstance plumeVolk_vkCreateInstance
+#define vkCreateMacOSSurfaceMVK plumeVolk_vkCreateMacOSSurfaceMVK
+#define vkCreateMetalSurfaceEXT plumeVolk_vkCreateMetalSurfaceEXT
+#define vkCreateMicromapEXT plumeVolk_vkCreateMicromapEXT
+#define vkCreateOpticalFlowSessionNV plumeVolk_vkCreateOpticalFlowSessionNV
+#define vkCreatePipelineBinariesKHR plumeVolk_vkCreatePipelineBinariesKHR
+#define vkCreatePipelineCache plumeVolk_vkCreatePipelineCache
+#define vkCreatePipelineLayout plumeVolk_vkCreatePipelineLayout
+#define vkCreatePrivateDataSlot plumeVolk_vkCreatePrivateDataSlot
+#define vkCreatePrivateDataSlotEXT plumeVolk_vkCreatePrivateDataSlotEXT
+#define vkCreateQueryPool plumeVolk_vkCreateQueryPool
+#define vkCreateRayTracingPipelinesKHR plumeVolk_vkCreateRayTracingPipelinesKHR
+#define vkCreateRayTracingPipelinesNV plumeVolk_vkCreateRayTracingPipelinesNV
+#define vkCreateRenderPass plumeVolk_vkCreateRenderPass
+#define vkCreateRenderPass2 plumeVolk_vkCreateRenderPass2
+#define vkCreateRenderPass2KHR plumeVolk_vkCreateRenderPass2KHR
+#define vkCreateSampler plumeVolk_vkCreateSampler
+#define vkCreateSamplerYcbcrConversion plumeVolk_vkCreateSamplerYcbcrConversion
+#define vkCreateSamplerYcbcrConversionKHR plumeVolk_vkCreateSamplerYcbcrConversionKHR
+#define vkCreateScreenSurfaceQNX plumeVolk_vkCreateScreenSurfaceQNX
+#define vkCreateSemaphore plumeVolk_vkCreateSemaphore
+#define vkCreateShaderModule plumeVolk_vkCreateShaderModule
+#define vkCreateShadersEXT plumeVolk_vkCreateShadersEXT
+#define vkCreateSharedSwapchainsKHR plumeVolk_vkCreateSharedSwapchainsKHR
+#define vkCreateStreamDescriptorSurfaceGGP plumeVolk_vkCreateStreamDescriptorSurfaceGGP
+#define vkCreateSurfaceOHOS plumeVolk_vkCreateSurfaceOHOS
+#define vkCreateSwapchainKHR plumeVolk_vkCreateSwapchainKHR
+#define vkCreateTensorARM plumeVolk_vkCreateTensorARM
+#define vkCreateTensorViewARM plumeVolk_vkCreateTensorViewARM
+#define vkCreateValidationCacheEXT plumeVolk_vkCreateValidationCacheEXT
+#define vkCreateViSurfaceNN plumeVolk_vkCreateViSurfaceNN
+#define vkCreateVideoSessionKHR plumeVolk_vkCreateVideoSessionKHR
+#define vkCreateVideoSessionParametersKHR plumeVolk_vkCreateVideoSessionParametersKHR
+#define vkCreateWaylandSurfaceKHR plumeVolk_vkCreateWaylandSurfaceKHR
+#define vkCreateWin32SurfaceKHR plumeVolk_vkCreateWin32SurfaceKHR
+#define vkCreateXcbSurfaceKHR plumeVolk_vkCreateXcbSurfaceKHR
+#define vkCreateXlibSurfaceKHR plumeVolk_vkCreateXlibSurfaceKHR
+#define vkDebugMarkerSetObjectNameEXT plumeVolk_vkDebugMarkerSetObjectNameEXT
+#define vkDebugMarkerSetObjectTagEXT plumeVolk_vkDebugMarkerSetObjectTagEXT
+#define vkDebugReportMessageEXT plumeVolk_vkDebugReportMessageEXT
+#define vkDeferredOperationJoinKHR plumeVolk_vkDeferredOperationJoinKHR
+#define vkDestroyAccelerationStructureKHR plumeVolk_vkDestroyAccelerationStructureKHR
+#define vkDestroyAccelerationStructureNV plumeVolk_vkDestroyAccelerationStructureNV
+#define vkDestroyBuffer plumeVolk_vkDestroyBuffer
+#define vkDestroyBufferCollectionFUCHSIA plumeVolk_vkDestroyBufferCollectionFUCHSIA
+#define vkDestroyBufferView plumeVolk_vkDestroyBufferView
+#define vkDestroyCommandPool plumeVolk_vkDestroyCommandPool
+#define vkDestroyCuFunctionNVX plumeVolk_vkDestroyCuFunctionNVX
+#define vkDestroyCuModuleNVX plumeVolk_vkDestroyCuModuleNVX
+#define vkDestroyCudaFunctionNV plumeVolk_vkDestroyCudaFunctionNV
+#define vkDestroyCudaModuleNV plumeVolk_vkDestroyCudaModuleNV
+#define vkDestroyDataGraphPipelineSessionARM plumeVolk_vkDestroyDataGraphPipelineSessionARM
+#define vkDestroyDebugReportCallbackEXT plumeVolk_vkDestroyDebugReportCallbackEXT
+#define vkDestroyDebugUtilsMessengerEXT plumeVolk_vkDestroyDebugUtilsMessengerEXT
+#define vkDestroyDeferredOperationKHR plumeVolk_vkDestroyDeferredOperationKHR
+#define vkDestroyDescriptorPool plumeVolk_vkDestroyDescriptorPool
+#define vkDestroyDescriptorSetLayout plumeVolk_vkDestroyDescriptorSetLayout
+#define vkDestroyDescriptorUpdateTemplate plumeVolk_vkDestroyDescriptorUpdateTemplate
+#define vkDestroyDescriptorUpdateTemplateKHR plumeVolk_vkDestroyDescriptorUpdateTemplateKHR
+#define vkDestroyDevice plumeVolk_vkDestroyDevice
+#define vkDestroyEvent plumeVolk_vkDestroyEvent
+#define vkDestroyExternalComputeQueueNV plumeVolk_vkDestroyExternalComputeQueueNV
+#define vkDestroyFence plumeVolk_vkDestroyFence
+#define vkDestroyFramebuffer plumeVolk_vkDestroyFramebuffer
+#define vkDestroyImage plumeVolk_vkDestroyImage
+#define vkDestroyImageView plumeVolk_vkDestroyImageView
+#define vkDestroyIndirectCommandsLayoutEXT plumeVolk_vkDestroyIndirectCommandsLayoutEXT
+#define vkDestroyIndirectCommandsLayoutNV plumeVolk_vkDestroyIndirectCommandsLayoutNV
+#define vkDestroyIndirectExecutionSetEXT plumeVolk_vkDestroyIndirectExecutionSetEXT
+#define vkDestroyInstance plumeVolk_vkDestroyInstance
+#define vkDestroyMicromapEXT plumeVolk_vkDestroyMicromapEXT
+#define vkDestroyOpticalFlowSessionNV plumeVolk_vkDestroyOpticalFlowSessionNV
+#define vkDestroyPipeline plumeVolk_vkDestroyPipeline
+#define vkDestroyPipelineBinaryKHR plumeVolk_vkDestroyPipelineBinaryKHR
+#define vkDestroyPipelineCache plumeVolk_vkDestroyPipelineCache
+#define vkDestroyPipelineLayout plumeVolk_vkDestroyPipelineLayout
+#define vkDestroyPrivateDataSlot plumeVolk_vkDestroyPrivateDataSlot
+#define vkDestroyPrivateDataSlotEXT plumeVolk_vkDestroyPrivateDataSlotEXT
+#define vkDestroyQueryPool plumeVolk_vkDestroyQueryPool
+#define vkDestroyRenderPass plumeVolk_vkDestroyRenderPass
+#define vkDestroySampler plumeVolk_vkDestroySampler
+#define vkDestroySamplerYcbcrConversion plumeVolk_vkDestroySamplerYcbcrConversion
+#define vkDestroySamplerYcbcrConversionKHR plumeVolk_vkDestroySamplerYcbcrConversionKHR
+#define vkDestroySemaphore plumeVolk_vkDestroySemaphore
+#define vkDestroyShaderEXT plumeVolk_vkDestroyShaderEXT
+#define vkDestroyShaderModule plumeVolk_vkDestroyShaderModule
+#define vkDestroySurfaceKHR plumeVolk_vkDestroySurfaceKHR
+#define vkDestroySwapchainKHR plumeVolk_vkDestroySwapchainKHR
+#define vkDestroyTensorARM plumeVolk_vkDestroyTensorARM
+#define vkDestroyTensorViewARM plumeVolk_vkDestroyTensorViewARM
+#define vkDestroyValidationCacheEXT plumeVolk_vkDestroyValidationCacheEXT
+#define vkDestroyVideoSessionKHR plumeVolk_vkDestroyVideoSessionKHR
+#define vkDestroyVideoSessionParametersKHR plumeVolk_vkDestroyVideoSessionParametersKHR
+#define vkDeviceWaitIdle plumeVolk_vkDeviceWaitIdle
+#define vkDisplayPowerControlEXT plumeVolk_vkDisplayPowerControlEXT
+#define vkEndCommandBuffer plumeVolk_vkEndCommandBuffer
+#define vkEnumerateDeviceExtensionProperties plumeVolk_vkEnumerateDeviceExtensionProperties
+#define vkEnumerateDeviceLayerProperties plumeVolk_vkEnumerateDeviceLayerProperties
+#define vkEnumerateInstanceExtensionProperties plumeVolk_vkEnumerateInstanceExtensionProperties
+#define vkEnumerateInstanceLayerProperties plumeVolk_vkEnumerateInstanceLayerProperties
+#define vkEnumerateInstanceVersion plumeVolk_vkEnumerateInstanceVersion
+#define vkEnumeratePhysicalDeviceGroups plumeVolk_vkEnumeratePhysicalDeviceGroups
+#define vkEnumeratePhysicalDeviceGroupsKHR plumeVolk_vkEnumeratePhysicalDeviceGroupsKHR
+#define vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR plumeVolk_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR
+#define vkEnumeratePhysicalDevices plumeVolk_vkEnumeratePhysicalDevices
+#define vkExportMetalObjectsEXT plumeVolk_vkExportMetalObjectsEXT
+#define vkFlushMappedMemoryRanges plumeVolk_vkFlushMappedMemoryRanges
+#define vkFreeCommandBuffers plumeVolk_vkFreeCommandBuffers
+#define vkFreeDescriptorSets plumeVolk_vkFreeDescriptorSets
+#define vkFreeMemory plumeVolk_vkFreeMemory
+#define vkGetAccelerationStructureBuildSizesKHR plumeVolk_vkGetAccelerationStructureBuildSizesKHR
+#define vkGetAccelerationStructureDeviceAddressKHR plumeVolk_vkGetAccelerationStructureDeviceAddressKHR
+#define vkGetAccelerationStructureHandleNV plumeVolk_vkGetAccelerationStructureHandleNV
+#define vkGetAccelerationStructureMemoryRequirementsNV plumeVolk_vkGetAccelerationStructureMemoryRequirementsNV
+#define vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT plumeVolk_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT
+#define vkGetAndroidHardwareBufferPropertiesANDROID plumeVolk_vkGetAndroidHardwareBufferPropertiesANDROID
+#define vkGetBufferCollectionPropertiesFUCHSIA plumeVolk_vkGetBufferCollectionPropertiesFUCHSIA
+#define vkGetBufferDeviceAddress plumeVolk_vkGetBufferDeviceAddress
+#define vkGetBufferDeviceAddressEXT plumeVolk_vkGetBufferDeviceAddressEXT
+#define vkGetBufferDeviceAddressKHR plumeVolk_vkGetBufferDeviceAddressKHR
+#define vkGetBufferMemoryRequirements plumeVolk_vkGetBufferMemoryRequirements
+#define vkGetBufferMemoryRequirements2 plumeVolk_vkGetBufferMemoryRequirements2
+#define vkGetBufferMemoryRequirements2KHR plumeVolk_vkGetBufferMemoryRequirements2KHR
+#define vkGetBufferOpaqueCaptureAddress plumeVolk_vkGetBufferOpaqueCaptureAddress
+#define vkGetBufferOpaqueCaptureAddressKHR plumeVolk_vkGetBufferOpaqueCaptureAddressKHR
+#define vkGetBufferOpaqueCaptureDescriptorDataEXT plumeVolk_vkGetBufferOpaqueCaptureDescriptorDataEXT
+#define vkGetCalibratedTimestampsEXT plumeVolk_vkGetCalibratedTimestampsEXT
+#define vkGetCalibratedTimestampsKHR plumeVolk_vkGetCalibratedTimestampsKHR
+#define vkGetClusterAccelerationStructureBuildSizesNV plumeVolk_vkGetClusterAccelerationStructureBuildSizesNV
+#define vkGetCudaModuleCacheNV plumeVolk_vkGetCudaModuleCacheNV
+#define vkGetDataGraphPipelineAvailablePropertiesARM plumeVolk_vkGetDataGraphPipelineAvailablePropertiesARM
+#define vkGetDataGraphPipelinePropertiesARM plumeVolk_vkGetDataGraphPipelinePropertiesARM
+#define vkGetDataGraphPipelineSessionBindPointRequirementsARM plumeVolk_vkGetDataGraphPipelineSessionBindPointRequirementsARM
+#define vkGetDataGraphPipelineSessionMemoryRequirementsARM plumeVolk_vkGetDataGraphPipelineSessionMemoryRequirementsARM
+#define vkGetDeferredOperationMaxConcurrencyKHR plumeVolk_vkGetDeferredOperationMaxConcurrencyKHR
+#define vkGetDeferredOperationResultKHR plumeVolk_vkGetDeferredOperationResultKHR
+#define vkGetDescriptorEXT plumeVolk_vkGetDescriptorEXT
+#define vkGetDescriptorSetHostMappingVALVE plumeVolk_vkGetDescriptorSetHostMappingVALVE
+#define vkGetDescriptorSetLayoutBindingOffsetEXT plumeVolk_vkGetDescriptorSetLayoutBindingOffsetEXT
+#define vkGetDescriptorSetLayoutHostMappingInfoVALVE plumeVolk_vkGetDescriptorSetLayoutHostMappingInfoVALVE
+#define vkGetDescriptorSetLayoutSizeEXT plumeVolk_vkGetDescriptorSetLayoutSizeEXT
+#define vkGetDescriptorSetLayoutSupport plumeVolk_vkGetDescriptorSetLayoutSupport
+#define vkGetDescriptorSetLayoutSupportKHR plumeVolk_vkGetDescriptorSetLayoutSupportKHR
+#define vkGetDeviceAccelerationStructureCompatibilityKHR plumeVolk_vkGetDeviceAccelerationStructureCompatibilityKHR
+#define vkGetDeviceBufferMemoryRequirements plumeVolk_vkGetDeviceBufferMemoryRequirements
+#define vkGetDeviceBufferMemoryRequirementsKHR plumeVolk_vkGetDeviceBufferMemoryRequirementsKHR
+#define vkGetDeviceFaultInfoEXT plumeVolk_vkGetDeviceFaultInfoEXT
+#define vkGetDeviceGroupPeerMemoryFeatures plumeVolk_vkGetDeviceGroupPeerMemoryFeatures
+#define vkGetDeviceGroupPeerMemoryFeaturesKHR plumeVolk_vkGetDeviceGroupPeerMemoryFeaturesKHR
+#define vkGetDeviceGroupPresentCapabilitiesKHR plumeVolk_vkGetDeviceGroupPresentCapabilitiesKHR
+#define vkGetDeviceGroupSurfacePresentModes2EXT plumeVolk_vkGetDeviceGroupSurfacePresentModes2EXT
+#define vkGetDeviceGroupSurfacePresentModesKHR plumeVolk_vkGetDeviceGroupSurfacePresentModesKHR
+#define vkGetDeviceImageMemoryRequirements plumeVolk_vkGetDeviceImageMemoryRequirements
+#define vkGetDeviceImageMemoryRequirementsKHR plumeVolk_vkGetDeviceImageMemoryRequirementsKHR
+#define vkGetDeviceImageSparseMemoryRequirements plumeVolk_vkGetDeviceImageSparseMemoryRequirements
+#define vkGetDeviceImageSparseMemoryRequirementsKHR plumeVolk_vkGetDeviceImageSparseMemoryRequirementsKHR
+#define vkGetDeviceImageSubresourceLayout plumeVolk_vkGetDeviceImageSubresourceLayout
+#define vkGetDeviceImageSubresourceLayoutKHR plumeVolk_vkGetDeviceImageSubresourceLayoutKHR
+#define vkGetDeviceMemoryCommitment plumeVolk_vkGetDeviceMemoryCommitment
+#define vkGetDeviceMemoryOpaqueCaptureAddress plumeVolk_vkGetDeviceMemoryOpaqueCaptureAddress
+#define vkGetDeviceMemoryOpaqueCaptureAddressKHR plumeVolk_vkGetDeviceMemoryOpaqueCaptureAddressKHR
+#define vkGetDeviceMicromapCompatibilityEXT plumeVolk_vkGetDeviceMicromapCompatibilityEXT
+#define vkGetDeviceProcAddr plumeVolk_vkGetDeviceProcAddr
+#define vkGetDeviceQueue plumeVolk_vkGetDeviceQueue
+#define vkGetDeviceQueue2 plumeVolk_vkGetDeviceQueue2
+#define vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI plumeVolk_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI
+#define vkGetDeviceTensorMemoryRequirementsARM plumeVolk_vkGetDeviceTensorMemoryRequirementsARM
+#define vkGetDisplayModeProperties2KHR plumeVolk_vkGetDisplayModeProperties2KHR
+#define vkGetDisplayModePropertiesKHR plumeVolk_vkGetDisplayModePropertiesKHR
+#define vkGetDisplayPlaneCapabilities2KHR plumeVolk_vkGetDisplayPlaneCapabilities2KHR
+#define vkGetDisplayPlaneCapabilitiesKHR plumeVolk_vkGetDisplayPlaneCapabilitiesKHR
+#define vkGetDisplayPlaneSupportedDisplaysKHR plumeVolk_vkGetDisplayPlaneSupportedDisplaysKHR
+#define vkGetDrmDisplayEXT plumeVolk_vkGetDrmDisplayEXT
+#define vkGetDynamicRenderingTilePropertiesQCOM plumeVolk_vkGetDynamicRenderingTilePropertiesQCOM
+#define vkGetEncodedVideoSessionParametersKHR plumeVolk_vkGetEncodedVideoSessionParametersKHR
+#define vkGetEventStatus plumeVolk_vkGetEventStatus
+#define vkGetExecutionGraphPipelineNodeIndexAMDX plumeVolk_vkGetExecutionGraphPipelineNodeIndexAMDX
+#define vkGetExecutionGraphPipelineScratchSizeAMDX plumeVolk_vkGetExecutionGraphPipelineScratchSizeAMDX
+#define vkGetExternalComputeQueueDataNV plumeVolk_vkGetExternalComputeQueueDataNV
+#define vkGetFenceFdKHR plumeVolk_vkGetFenceFdKHR
+#define vkGetFenceStatus plumeVolk_vkGetFenceStatus
+#define vkGetFenceWin32HandleKHR plumeVolk_vkGetFenceWin32HandleKHR
+#define vkGetFramebufferTilePropertiesQCOM plumeVolk_vkGetFramebufferTilePropertiesQCOM
+#define vkGetGeneratedCommandsMemoryRequirementsEXT plumeVolk_vkGetGeneratedCommandsMemoryRequirementsEXT
+#define vkGetGeneratedCommandsMemoryRequirementsNV plumeVolk_vkGetGeneratedCommandsMemoryRequirementsNV
+#define vkGetImageDrmFormatModifierPropertiesEXT plumeVolk_vkGetImageDrmFormatModifierPropertiesEXT
+#define vkGetImageMemoryRequirements plumeVolk_vkGetImageMemoryRequirements
+#define vkGetImageMemoryRequirements2 plumeVolk_vkGetImageMemoryRequirements2
+#define vkGetImageMemoryRequirements2KHR plumeVolk_vkGetImageMemoryRequirements2KHR
+#define vkGetImageOpaqueCaptureDescriptorDataEXT plumeVolk_vkGetImageOpaqueCaptureDescriptorDataEXT
+#define vkGetImageSparseMemoryRequirements plumeVolk_vkGetImageSparseMemoryRequirements
+#define vkGetImageSparseMemoryRequirements2 plumeVolk_vkGetImageSparseMemoryRequirements2
+#define vkGetImageSparseMemoryRequirements2KHR plumeVolk_vkGetImageSparseMemoryRequirements2KHR
+#define vkGetImageSubresourceLayout plumeVolk_vkGetImageSubresourceLayout
+#define vkGetImageSubresourceLayout2 plumeVolk_vkGetImageSubresourceLayout2
+#define vkGetImageSubresourceLayout2EXT plumeVolk_vkGetImageSubresourceLayout2EXT
+#define vkGetImageSubresourceLayout2KHR plumeVolk_vkGetImageSubresourceLayout2KHR
+#define vkGetImageViewAddressNVX plumeVolk_vkGetImageViewAddressNVX
+#define vkGetImageViewHandle64NVX plumeVolk_vkGetImageViewHandle64NVX
+#define vkGetImageViewHandleNVX plumeVolk_vkGetImageViewHandleNVX
+#define vkGetImageViewOpaqueCaptureDescriptorDataEXT plumeVolk_vkGetImageViewOpaqueCaptureDescriptorDataEXT
+#define vkGetInstanceProcAddr plumeVolk_vkGetInstanceProcAddr
+#define vkGetLatencyTimingsNV plumeVolk_vkGetLatencyTimingsNV
+#define vkGetMemoryAndroidHardwareBufferANDROID plumeVolk_vkGetMemoryAndroidHardwareBufferANDROID
+#define vkGetMemoryFdKHR plumeVolk_vkGetMemoryFdKHR
+#define vkGetMemoryFdPropertiesKHR plumeVolk_vkGetMemoryFdPropertiesKHR
+#define vkGetMemoryHostPointerPropertiesEXT plumeVolk_vkGetMemoryHostPointerPropertiesEXT
+#define vkGetMemoryMetalHandleEXT plumeVolk_vkGetMemoryMetalHandleEXT
+#define vkGetMemoryMetalHandlePropertiesEXT plumeVolk_vkGetMemoryMetalHandlePropertiesEXT
+#define vkGetMemoryRemoteAddressNV plumeVolk_vkGetMemoryRemoteAddressNV
+#define vkGetMemoryWin32HandleKHR plumeVolk_vkGetMemoryWin32HandleKHR
+#define vkGetMemoryWin32HandleNV plumeVolk_vkGetMemoryWin32HandleNV
+#define vkGetMemoryWin32HandlePropertiesKHR plumeVolk_vkGetMemoryWin32HandlePropertiesKHR
+#define vkGetMemoryZirconHandleFUCHSIA plumeVolk_vkGetMemoryZirconHandleFUCHSIA
+#define vkGetMemoryZirconHandlePropertiesFUCHSIA plumeVolk_vkGetMemoryZirconHandlePropertiesFUCHSIA
+#define vkGetMicromapBuildSizesEXT plumeVolk_vkGetMicromapBuildSizesEXT
+#define vkGetPartitionedAccelerationStructuresBuildSizesNV plumeVolk_vkGetPartitionedAccelerationStructuresBuildSizesNV
+#define vkGetPastPresentationTimingGOOGLE plumeVolk_vkGetPastPresentationTimingGOOGLE
+#define vkGetPerformanceParameterINTEL plumeVolk_vkGetPerformanceParameterINTEL
+#define vkGetPhysicalDeviceCalibrateableTimeDomainsEXT plumeVolk_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT
+#define vkGetPhysicalDeviceCalibrateableTimeDomainsKHR plumeVolk_vkGetPhysicalDeviceCalibrateableTimeDomainsKHR
+#define vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV plumeVolk_vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV
+#define vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR plumeVolk_vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR
+#define vkGetPhysicalDeviceCooperativeMatrixPropertiesNV plumeVolk_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV
+#define vkGetPhysicalDeviceCooperativeVectorPropertiesNV plumeVolk_vkGetPhysicalDeviceCooperativeVectorPropertiesNV
+#define vkGetPhysicalDeviceDirectFBPresentationSupportEXT plumeVolk_vkGetPhysicalDeviceDirectFBPresentationSupportEXT
+#define vkGetPhysicalDeviceDisplayPlaneProperties2KHR plumeVolk_vkGetPhysicalDeviceDisplayPlaneProperties2KHR
+#define vkGetPhysicalDeviceDisplayPlanePropertiesKHR plumeVolk_vkGetPhysicalDeviceDisplayPlanePropertiesKHR
+#define vkGetPhysicalDeviceDisplayProperties2KHR plumeVolk_vkGetPhysicalDeviceDisplayProperties2KHR
+#define vkGetPhysicalDeviceDisplayPropertiesKHR plumeVolk_vkGetPhysicalDeviceDisplayPropertiesKHR
+#define vkGetPhysicalDeviceExternalBufferProperties plumeVolk_vkGetPhysicalDeviceExternalBufferProperties
+#define vkGetPhysicalDeviceExternalBufferPropertiesKHR plumeVolk_vkGetPhysicalDeviceExternalBufferPropertiesKHR
+#define vkGetPhysicalDeviceExternalFenceProperties plumeVolk_vkGetPhysicalDeviceExternalFenceProperties
+#define vkGetPhysicalDeviceExternalFencePropertiesKHR plumeVolk_vkGetPhysicalDeviceExternalFencePropertiesKHR
+#define vkGetPhysicalDeviceExternalImageFormatPropertiesNV plumeVolk_vkGetPhysicalDeviceExternalImageFormatPropertiesNV
+#define vkGetPhysicalDeviceExternalSemaphoreProperties plumeVolk_vkGetPhysicalDeviceExternalSemaphoreProperties
+#define vkGetPhysicalDeviceExternalSemaphorePropertiesKHR plumeVolk_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR
+#define vkGetPhysicalDeviceExternalTensorPropertiesARM plumeVolk_vkGetPhysicalDeviceExternalTensorPropertiesARM
+#define vkGetPhysicalDeviceFeatures plumeVolk_vkGetPhysicalDeviceFeatures
+#define vkGetPhysicalDeviceFeatures2 plumeVolk_vkGetPhysicalDeviceFeatures2
+#define vkGetPhysicalDeviceFeatures2KHR plumeVolk_vkGetPhysicalDeviceFeatures2KHR
+#define vkGetPhysicalDeviceFormatProperties plumeVolk_vkGetPhysicalDeviceFormatProperties
+#define vkGetPhysicalDeviceFormatProperties2 plumeVolk_vkGetPhysicalDeviceFormatProperties2
+#define vkGetPhysicalDeviceFormatProperties2KHR plumeVolk_vkGetPhysicalDeviceFormatProperties2KHR
+#define vkGetPhysicalDeviceFragmentShadingRatesKHR plumeVolk_vkGetPhysicalDeviceFragmentShadingRatesKHR
+#define vkGetPhysicalDeviceImageFormatProperties plumeVolk_vkGetPhysicalDeviceImageFormatProperties
+#define vkGetPhysicalDeviceImageFormatProperties2 plumeVolk_vkGetPhysicalDeviceImageFormatProperties2
+#define vkGetPhysicalDeviceImageFormatProperties2KHR plumeVolk_vkGetPhysicalDeviceImageFormatProperties2KHR
+#define vkGetPhysicalDeviceMemoryProperties plumeVolk_vkGetPhysicalDeviceMemoryProperties
+#define vkGetPhysicalDeviceMemoryProperties2 plumeVolk_vkGetPhysicalDeviceMemoryProperties2
+#define vkGetPhysicalDeviceMemoryProperties2KHR plumeVolk_vkGetPhysicalDeviceMemoryProperties2KHR
+#define vkGetPhysicalDeviceMultisamplePropertiesEXT plumeVolk_vkGetPhysicalDeviceMultisamplePropertiesEXT
+#define vkGetPhysicalDeviceOpticalFlowImageFormatsNV plumeVolk_vkGetPhysicalDeviceOpticalFlowImageFormatsNV
+#define vkGetPhysicalDevicePresentRectanglesKHR plumeVolk_vkGetPhysicalDevicePresentRectanglesKHR
+#define vkGetPhysicalDeviceProperties plumeVolk_vkGetPhysicalDeviceProperties
+#define vkGetPhysicalDeviceProperties2 plumeVolk_vkGetPhysicalDeviceProperties2
+#define vkGetPhysicalDeviceProperties2KHR plumeVolk_vkGetPhysicalDeviceProperties2KHR
+#define vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM plumeVolk_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM
+#define vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM plumeVolk_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM
+#define vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR plumeVolk_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR
+#define vkGetPhysicalDeviceQueueFamilyProperties plumeVolk_vkGetPhysicalDeviceQueueFamilyProperties
+#define vkGetPhysicalDeviceQueueFamilyProperties2 plumeVolk_vkGetPhysicalDeviceQueueFamilyProperties2
+#define vkGetPhysicalDeviceQueueFamilyProperties2KHR plumeVolk_vkGetPhysicalDeviceQueueFamilyProperties2KHR
+#define vkGetPhysicalDeviceScreenPresentationSupportQNX plumeVolk_vkGetPhysicalDeviceScreenPresentationSupportQNX
+#define vkGetPhysicalDeviceSparseImageFormatProperties plumeVolk_vkGetPhysicalDeviceSparseImageFormatProperties
+#define vkGetPhysicalDeviceSparseImageFormatProperties2 plumeVolk_vkGetPhysicalDeviceSparseImageFormatProperties2
+#define vkGetPhysicalDeviceSparseImageFormatProperties2KHR plumeVolk_vkGetPhysicalDeviceSparseImageFormatProperties2KHR
+#define vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV plumeVolk_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV
+#define vkGetPhysicalDeviceSurfaceCapabilities2EXT plumeVolk_vkGetPhysicalDeviceSurfaceCapabilities2EXT
+#define vkGetPhysicalDeviceSurfaceCapabilities2KHR plumeVolk_vkGetPhysicalDeviceSurfaceCapabilities2KHR
+#define vkGetPhysicalDeviceSurfaceCapabilitiesKHR plumeVolk_vkGetPhysicalDeviceSurfaceCapabilitiesKHR
+#define vkGetPhysicalDeviceSurfaceFormats2KHR plumeVolk_vkGetPhysicalDeviceSurfaceFormats2KHR
+#define vkGetPhysicalDeviceSurfaceFormatsKHR plumeVolk_vkGetPhysicalDeviceSurfaceFormatsKHR
+#define vkGetPhysicalDeviceSurfacePresentModes2EXT plumeVolk_vkGetPhysicalDeviceSurfacePresentModes2EXT
+#define vkGetPhysicalDeviceSurfacePresentModesKHR plumeVolk_vkGetPhysicalDeviceSurfacePresentModesKHR
+#define vkGetPhysicalDeviceSurfaceSupportKHR plumeVolk_vkGetPhysicalDeviceSurfaceSupportKHR
+#define vkGetPhysicalDeviceToolProperties plumeVolk_vkGetPhysicalDeviceToolProperties
+#define vkGetPhysicalDeviceToolPropertiesEXT plumeVolk_vkGetPhysicalDeviceToolPropertiesEXT
+#define vkGetPhysicalDeviceVideoCapabilitiesKHR plumeVolk_vkGetPhysicalDeviceVideoCapabilitiesKHR
+#define vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR plumeVolk_vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR
+#define vkGetPhysicalDeviceVideoFormatPropertiesKHR plumeVolk_vkGetPhysicalDeviceVideoFormatPropertiesKHR
+#define vkGetPhysicalDeviceWaylandPresentationSupportKHR plumeVolk_vkGetPhysicalDeviceWaylandPresentationSupportKHR
+#define vkGetPhysicalDeviceWin32PresentationSupportKHR plumeVolk_vkGetPhysicalDeviceWin32PresentationSupportKHR
+#define vkGetPhysicalDeviceXcbPresentationSupportKHR plumeVolk_vkGetPhysicalDeviceXcbPresentationSupportKHR
+#define vkGetPhysicalDeviceXlibPresentationSupportKHR plumeVolk_vkGetPhysicalDeviceXlibPresentationSupportKHR
+#define vkGetPipelineBinaryDataKHR plumeVolk_vkGetPipelineBinaryDataKHR
+#define vkGetPipelineCacheData plumeVolk_vkGetPipelineCacheData
+#define vkGetPipelineExecutableInternalRepresentationsKHR plumeVolk_vkGetPipelineExecutableInternalRepresentationsKHR
+#define vkGetPipelineExecutablePropertiesKHR plumeVolk_vkGetPipelineExecutablePropertiesKHR
+#define vkGetPipelineExecutableStatisticsKHR plumeVolk_vkGetPipelineExecutableStatisticsKHR
+#define vkGetPipelineIndirectDeviceAddressNV plumeVolk_vkGetPipelineIndirectDeviceAddressNV
+#define vkGetPipelineIndirectMemoryRequirementsNV plumeVolk_vkGetPipelineIndirectMemoryRequirementsNV
+#define vkGetPipelineKeyKHR plumeVolk_vkGetPipelineKeyKHR
+#define vkGetPipelinePropertiesEXT plumeVolk_vkGetPipelinePropertiesEXT
+#define vkGetPrivateData plumeVolk_vkGetPrivateData
+#define vkGetPrivateDataEXT plumeVolk_vkGetPrivateDataEXT
+#define vkGetQueryPoolResults plumeVolk_vkGetQueryPoolResults
+#define vkGetQueueCheckpointData2NV plumeVolk_vkGetQueueCheckpointData2NV
+#define vkGetQueueCheckpointDataNV plumeVolk_vkGetQueueCheckpointDataNV
+#define vkGetRandROutputDisplayEXT plumeVolk_vkGetRandROutputDisplayEXT
+#define vkGetRayTracingCaptureReplayShaderGroupHandlesKHR plumeVolk_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR
+#define vkGetRayTracingShaderGroupHandlesKHR plumeVolk_vkGetRayTracingShaderGroupHandlesKHR
+#define vkGetRayTracingShaderGroupHandlesNV plumeVolk_vkGetRayTracingShaderGroupHandlesNV
+#define vkGetRayTracingShaderGroupStackSizeKHR plumeVolk_vkGetRayTracingShaderGroupStackSizeKHR
+#define vkGetRefreshCycleDurationGOOGLE plumeVolk_vkGetRefreshCycleDurationGOOGLE
+#define vkGetRenderAreaGranularity plumeVolk_vkGetRenderAreaGranularity
+#define vkGetRenderingAreaGranularity plumeVolk_vkGetRenderingAreaGranularity
+#define vkGetRenderingAreaGranularityKHR plumeVolk_vkGetRenderingAreaGranularityKHR
+#define vkGetSamplerOpaqueCaptureDescriptorDataEXT plumeVolk_vkGetSamplerOpaqueCaptureDescriptorDataEXT
+#define vkGetScreenBufferPropertiesQNX plumeVolk_vkGetScreenBufferPropertiesQNX
+#define vkGetSemaphoreCounterValue plumeVolk_vkGetSemaphoreCounterValue
+#define vkGetSemaphoreCounterValueKHR plumeVolk_vkGetSemaphoreCounterValueKHR
+#define vkGetSemaphoreFdKHR plumeVolk_vkGetSemaphoreFdKHR
+#define vkGetSemaphoreWin32HandleKHR plumeVolk_vkGetSemaphoreWin32HandleKHR
+#define vkGetSemaphoreZirconHandleFUCHSIA plumeVolk_vkGetSemaphoreZirconHandleFUCHSIA
+#define vkGetShaderBinaryDataEXT plumeVolk_vkGetShaderBinaryDataEXT
+#define vkGetShaderInfoAMD plumeVolk_vkGetShaderInfoAMD
+#define vkGetShaderModuleCreateInfoIdentifierEXT plumeVolk_vkGetShaderModuleCreateInfoIdentifierEXT
+#define vkGetShaderModuleIdentifierEXT plumeVolk_vkGetShaderModuleIdentifierEXT
+#define vkGetSwapchainCounterEXT plumeVolk_vkGetSwapchainCounterEXT
+#define vkGetSwapchainImagesKHR plumeVolk_vkGetSwapchainImagesKHR
+#define vkGetSwapchainStatusKHR plumeVolk_vkGetSwapchainStatusKHR
+#define vkGetTensorMemoryRequirementsARM plumeVolk_vkGetTensorMemoryRequirementsARM
+#define vkGetTensorOpaqueCaptureDescriptorDataARM plumeVolk_vkGetTensorOpaqueCaptureDescriptorDataARM
+#define vkGetTensorViewOpaqueCaptureDescriptorDataARM plumeVolk_vkGetTensorViewOpaqueCaptureDescriptorDataARM
+#define vkGetValidationCacheDataEXT plumeVolk_vkGetValidationCacheDataEXT
+#define vkGetVideoSessionMemoryRequirementsKHR plumeVolk_vkGetVideoSessionMemoryRequirementsKHR
+#define vkGetWinrtDisplayNV plumeVolk_vkGetWinrtDisplayNV
+#define vkImportFenceFdKHR plumeVolk_vkImportFenceFdKHR
+#define vkImportFenceWin32HandleKHR plumeVolk_vkImportFenceWin32HandleKHR
+#define vkImportSemaphoreFdKHR plumeVolk_vkImportSemaphoreFdKHR
+#define vkImportSemaphoreWin32HandleKHR plumeVolk_vkImportSemaphoreWin32HandleKHR
+#define vkImportSemaphoreZirconHandleFUCHSIA plumeVolk_vkImportSemaphoreZirconHandleFUCHSIA
+#define vkInitializePerformanceApiINTEL plumeVolk_vkInitializePerformanceApiINTEL
+#define vkInvalidateMappedMemoryRanges plumeVolk_vkInvalidateMappedMemoryRanges
+#define vkLatencySleepNV plumeVolk_vkLatencySleepNV
+#define vkMapMemory plumeVolk_vkMapMemory
+#define vkMapMemory2 plumeVolk_vkMapMemory2
+#define vkMapMemory2KHR plumeVolk_vkMapMemory2KHR
+#define vkMergePipelineCaches plumeVolk_vkMergePipelineCaches
+#define vkMergeValidationCachesEXT plumeVolk_vkMergeValidationCachesEXT
+#define vkQueueBeginDebugUtilsLabelEXT plumeVolk_vkQueueBeginDebugUtilsLabelEXT
+#define vkQueueBindSparse plumeVolk_vkQueueBindSparse
+#define vkQueueEndDebugUtilsLabelEXT plumeVolk_vkQueueEndDebugUtilsLabelEXT
+#define vkQueueInsertDebugUtilsLabelEXT plumeVolk_vkQueueInsertDebugUtilsLabelEXT
+#define vkQueueNotifyOutOfBandNV plumeVolk_vkQueueNotifyOutOfBandNV
+#define vkQueuePresentKHR plumeVolk_vkQueuePresentKHR
+#define vkQueueSetPerformanceConfigurationINTEL plumeVolk_vkQueueSetPerformanceConfigurationINTEL
+#define vkQueueSubmit plumeVolk_vkQueueSubmit
+#define vkQueueSubmit2 plumeVolk_vkQueueSubmit2
+#define vkQueueSubmit2KHR plumeVolk_vkQueueSubmit2KHR
+#define vkQueueWaitIdle plumeVolk_vkQueueWaitIdle
+#define vkRegisterDeviceEventEXT plumeVolk_vkRegisterDeviceEventEXT
+#define vkRegisterDisplayEventEXT plumeVolk_vkRegisterDisplayEventEXT
+#define vkReleaseCapturedPipelineDataKHR plumeVolk_vkReleaseCapturedPipelineDataKHR
+#define vkReleaseDisplayEXT plumeVolk_vkReleaseDisplayEXT
+#define vkReleaseFullScreenExclusiveModeEXT plumeVolk_vkReleaseFullScreenExclusiveModeEXT
+#define vkReleasePerformanceConfigurationINTEL plumeVolk_vkReleasePerformanceConfigurationINTEL
+#define vkReleaseProfilingLockKHR plumeVolk_vkReleaseProfilingLockKHR
+#define vkReleaseSwapchainImagesEXT plumeVolk_vkReleaseSwapchainImagesEXT
+#define vkReleaseSwapchainImagesKHR plumeVolk_vkReleaseSwapchainImagesKHR
+#define vkResetCommandBuffer plumeVolk_vkResetCommandBuffer
+#define vkResetCommandPool plumeVolk_vkResetCommandPool
+#define vkResetDescriptorPool plumeVolk_vkResetDescriptorPool
+#define vkResetEvent plumeVolk_vkResetEvent
+#define vkResetFences plumeVolk_vkResetFences
+#define vkResetQueryPool plumeVolk_vkResetQueryPool
+#define vkResetQueryPoolEXT plumeVolk_vkResetQueryPoolEXT
+#define vkSetBufferCollectionBufferConstraintsFUCHSIA plumeVolk_vkSetBufferCollectionBufferConstraintsFUCHSIA
+#define vkSetBufferCollectionImageConstraintsFUCHSIA plumeVolk_vkSetBufferCollectionImageConstraintsFUCHSIA
+#define vkSetDebugUtilsObjectNameEXT plumeVolk_vkSetDebugUtilsObjectNameEXT
+#define vkSetDebugUtilsObjectTagEXT plumeVolk_vkSetDebugUtilsObjectTagEXT
+#define vkSetDeviceMemoryPriorityEXT plumeVolk_vkSetDeviceMemoryPriorityEXT
+#define vkSetEvent plumeVolk_vkSetEvent
+#define vkSetHdrMetadataEXT plumeVolk_vkSetHdrMetadataEXT
+#define vkSetLatencyMarkerNV plumeVolk_vkSetLatencyMarkerNV
+#define vkSetLatencySleepModeNV plumeVolk_vkSetLatencySleepModeNV
+#define vkSetLocalDimmingAMD plumeVolk_vkSetLocalDimmingAMD
+#define vkSetPrivateData plumeVolk_vkSetPrivateData
+#define vkSetPrivateDataEXT plumeVolk_vkSetPrivateDataEXT
+#define vkSignalSemaphore plumeVolk_vkSignalSemaphore
+#define vkSignalSemaphoreKHR plumeVolk_vkSignalSemaphoreKHR
+#define vkSubmitDebugUtilsMessageEXT plumeVolk_vkSubmitDebugUtilsMessageEXT
+#define vkTransitionImageLayout plumeVolk_vkTransitionImageLayout
+#define vkTransitionImageLayoutEXT plumeVolk_vkTransitionImageLayoutEXT
+#define vkTrimCommandPool plumeVolk_vkTrimCommandPool
+#define vkTrimCommandPoolKHR plumeVolk_vkTrimCommandPoolKHR
+#define vkUninitializePerformanceApiINTEL plumeVolk_vkUninitializePerformanceApiINTEL
+#define vkUnmapMemory plumeVolk_vkUnmapMemory
+#define vkUnmapMemory2 plumeVolk_vkUnmapMemory2
+#define vkUnmapMemory2KHR plumeVolk_vkUnmapMemory2KHR
+#define vkUpdateDescriptorSetWithTemplate plumeVolk_vkUpdateDescriptorSetWithTemplate
+#define vkUpdateDescriptorSetWithTemplateKHR plumeVolk_vkUpdateDescriptorSetWithTemplateKHR
+#define vkUpdateDescriptorSets plumeVolk_vkUpdateDescriptorSets
+#define vkUpdateIndirectExecutionSetPipelineEXT plumeVolk_vkUpdateIndirectExecutionSetPipelineEXT
+#define vkUpdateIndirectExecutionSetShaderEXT plumeVolk_vkUpdateIndirectExecutionSetShaderEXT
+#define vkUpdateVideoSessionParametersKHR plumeVolk_vkUpdateVideoSessionParametersKHR
+#define vkWaitForFences plumeVolk_vkWaitForFences
+#define vkWaitForPresent2KHR plumeVolk_vkWaitForPresent2KHR
+#define vkWaitForPresentKHR plumeVolk_vkWaitForPresentKHR
+#define vkWaitSemaphores plumeVolk_vkWaitSemaphores
+#define vkWaitSemaphoresKHR plumeVolk_vkWaitSemaphoresKHR
+#define vkWriteAccelerationStructuresPropertiesKHR plumeVolk_vkWriteAccelerationStructuresPropertiesKHR
+#define vkWriteMicromapsPropertiesEXT plumeVolk_vkWriteMicromapsPropertiesEXT