summaryrefslogtreecommitdiff
path: root/thirdparty/vulkan/loader
diff options
context:
space:
mode:
Diffstat (limited to 'thirdparty/vulkan/loader')
-rw-r--r--thirdparty/vulkan/loader/extension_manual.c19
-rw-r--r--thirdparty/vulkan/loader/extension_manual.h12
-rw-r--r--thirdparty/vulkan/loader/gpa_helper.h21
-rw-r--r--thirdparty/vulkan/loader/loader.c167
-rw-r--r--thirdparty/vulkan/loader/loader.h6
-rw-r--r--thirdparty/vulkan/loader/trampoline.c113
-rw-r--r--thirdparty/vulkan/loader/unknown_ext_chain_gas.S885
-rw-r--r--thirdparty/vulkan/loader/unknown_ext_chain_masm.asm883
-rw-r--r--thirdparty/vulkan/loader/vk_dispatch_table_helper.h45
-rw-r--r--thirdparty/vulkan/loader/vk_layer_dispatch_table.h31
-rw-r--r--thirdparty/vulkan/loader/vk_loader_extensions.c314
-rw-r--r--thirdparty/vulkan/loader/vk_loader_extensions.h13
-rw-r--r--thirdparty/vulkan/loader/vk_loader_platform.h47
13 files changed, 613 insertions, 1943 deletions
diff --git a/thirdparty/vulkan/loader/extension_manual.c b/thirdparty/vulkan/loader/extension_manual.c
index 490496d7c7..b8118fdc8a 100644
--- a/thirdparty/vulkan/loader/extension_manual.c
+++ b/thirdparty/vulkan/loader/extension_manual.c
@@ -441,3 +441,22 @@ VKAPI_ATTR VkResult VKAPI_CALL terminator_GetDeviceGroupSurfacePresentModes2EXT(
}
#endif // VK_USE_PLATFORM_WIN32_KHR
+
+// ---- VK_EXT_tooling_info extension trampoline/terminators
+
+VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceToolPropertiesEXT(
+ VkPhysicalDevice physicalDevice,
+ uint32_t* pToolCount,
+ VkPhysicalDeviceToolPropertiesEXT* pToolProperties) {
+ const VkLayerInstanceDispatchTable *disp;
+ VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
+ disp = loader_get_instance_layer_dispatch(physicalDevice);
+ return disp->GetPhysicalDeviceToolPropertiesEXT(unwrapped_phys_dev, pToolCount, pToolProperties);
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceToolPropertiesEXT(
+ VkPhysicalDevice physicalDevice,
+ uint32_t* pToolCount,
+ VkPhysicalDeviceToolPropertiesEXT* pToolProperties) {
+ return VK_SUCCESS;
+}
diff --git a/thirdparty/vulkan/loader/extension_manual.h b/thirdparty/vulkan/loader/extension_manual.h
index e07b9102dc..fe4287effb 100644
--- a/thirdparty/vulkan/loader/extension_manual.h
+++ b/thirdparty/vulkan/loader/extension_manual.h
@@ -104,3 +104,15 @@ VKAPI_ATTR VkResult VKAPI_CALL terminator_GetDeviceGroupSurfacePresentModes2EXT(
VkDevice device,
const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
VkDeviceGroupPresentModeFlagsKHR* pModes);
+
+// ---- VK_EXT_tooling_info extension trampoline/terminators
+
+VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceToolPropertiesEXT(
+ VkPhysicalDevice physicalDevice,
+ uint32_t* pToolCount,
+ VkPhysicalDeviceToolPropertiesEXT* pToolProperties);
+
+VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceToolPropertiesEXT(
+ VkPhysicalDevice physicalDevice,
+ uint32_t* pToolCount,
+ VkPhysicalDeviceToolPropertiesEXT* pToolProperties);
diff --git a/thirdparty/vulkan/loader/gpa_helper.h b/thirdparty/vulkan/loader/gpa_helper.h
index e08898b6d8..832b68c3ef 100644
--- a/thirdparty/vulkan/loader/gpa_helper.h
+++ b/thirdparty/vulkan/loader/gpa_helper.h
@@ -1,8 +1,8 @@
/*
*
- * Copyright (c) 2015 The Khronos Group Inc.
- * Copyright (c) 2015 Valve Corporation
- * Copyright (c) 2015 LunarG, Inc.
+ * Copyright (c) 2015-18, 2020 The Khronos Group Inc.
+ * Copyright (c) 2015-18, 2020 Valve Corporation
+ * Copyright (c) 2015-18, 2020 LunarG, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -190,6 +190,21 @@ static inline void *trampolineGetProcAddr(struct loader_instance *inst, const ch
if (!strcmp(funcName, "vkGetImageSparseMemoryRequirements2")) return vkGetImageSparseMemoryRequirements2;
if (!strcmp(funcName, "vkGetBufferMemoryRequirements2")) return vkGetBufferMemoryRequirements2;
+ // Core 1.2 functions
+ if (!strcmp(funcName, "vkCreateRenderPass2")) return vkCreateRenderPass2;
+ if (!strcmp(funcName, "vkCmdBeginRenderPass2")) return vkCmdBeginRenderPass2;
+ if (!strcmp(funcName, "vkCmdNextSubpass2")) return vkCmdNextSubpass2;
+ if (!strcmp(funcName, "vkCmdEndRenderPass2")) return vkCmdEndRenderPass2;
+ if (!strcmp(funcName, "vkCmdDrawIndirectCount")) return vkCmdDrawIndirectCount;
+ if (!strcmp(funcName, "vkCmdDrawIndexedIndirectCount")) return vkCmdDrawIndexedIndirectCount;
+ if (!strcmp(funcName, "vkGetSemaphoreCounterValue")) return vkGetSemaphoreCounterValue;
+ if (!strcmp(funcName, "vkWaitSemaphores")) return vkWaitSemaphores;
+ if (!strcmp(funcName, "vkSignalSemaphore")) return vkSignalSemaphore;
+ if (!strcmp(funcName, "vkGetBufferDeviceAddress")) return vkGetBufferDeviceAddress;
+ if (!strcmp(funcName, "vkGetBufferOpaqueCaptureAddress")) return vkGetBufferOpaqueCaptureAddress;
+ if (!strcmp(funcName, "vkGetDeviceMemoryOpaqueCaptureAddress")) return vkGetDeviceMemoryOpaqueCaptureAddress;
+ if (!strcmp(funcName, "vkResetQueryPool")) return vkResetQueryPool;
+
// Instance extensions
void *addr;
if (debug_utils_InstanceGpa(inst, funcName, &addr)) return addr;
diff --git a/thirdparty/vulkan/loader/loader.c b/thirdparty/vulkan/loader/loader.c
index 398c44bf9c..87d08d5116 100644
--- a/thirdparty/vulkan/loader/loader.c
+++ b/thirdparty/vulkan/loader/loader.c
@@ -1,8 +1,8 @@
/*
*
- * Copyright (c) 2014-2019 The Khronos Group Inc.
- * Copyright (c) 2014-2019 Valve Corporation
- * Copyright (c) 2014-2019 LunarG, Inc.
+ * Copyright (c) 2014-2020 The Khronos Group Inc.
+ * Copyright (c) 2014-2020 Valve Corporation
+ * Copyright (c) 2014-2020 LunarG, Inc.
* Copyright (C) 2015 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -126,7 +126,7 @@ LOADER_PLATFORM_THREAD_ONCE_DECLARATION(once_init);
// This loader supports Vulkan API version 1.1
uint32_t loader_major_version = 1;
-uint32_t loader_minor_version = 1;
+uint32_t loader_minor_version = 2;
void *loader_instance_heap_alloc(const struct loader_instance *instance, size_t size, VkSystemAllocationScope alloc_scope) {
void *pMemory = NULL;
@@ -252,6 +252,7 @@ static inline char *loader_getenv(const char *name, const struct loader_instance
}
static inline char *loader_secure_getenv(const char *name, const struct loader_instance *inst) {
+ char *out;
#if defined(__APPLE__)
// Apple does not appear to have a secure getenv implementation.
// The main difference between secure getenv and getenv is that secure getenv
@@ -263,19 +264,21 @@ static inline char *loader_secure_getenv(const char *name, const struct loader_i
return IsHighIntegrity() ? NULL : loader_getenv(name, inst);
#else
// Linux
-#ifdef HAVE_SECURE_GETENV
+#if defined(HAVE_SECURE_GETENV) && !defined(USE_UNSAFE_FILE_SEARCH)
(void)inst;
- return secure_getenv(name);
-#elif defined(HAVE___SECURE_GETENV)
+ out = secure_getenv(name);
+#elif defined(HAVE___SECURE_GETENV) && !defined(USE_UNSAFE_FILE_SEARCH)
(void)inst;
- return __secure_getenv(name);
+ out = __secure_getenv(name);
#else
-#pragma message( \
- "Warning: Falling back to non-secure getenv for environmental lookups! Consider" \
- " updating to a different libc.")
- return loader_getenv(name, inst);
+ out = loader_getenv(name, inst);
#endif
#endif
+ if (out == NULL) {
+ loader_log(inst, LOADER_INFO_BIT, 0,
+ "Loader is running with elevated permissions. Environment variable %s will be ignored.", name);
+ }
+ return out;
}
static inline void loader_free_getenv(char *val, const struct loader_instance *inst) {
@@ -335,9 +338,13 @@ static inline char *loader_getenv(const char *name, const struct loader_instance
}
static inline char *loader_secure_getenv(const char *name, const struct loader_instance *inst) {
+#if !defined(USE_UNSAFE_FILE_SEARCH)
if (IsHighIntegrity()) {
+ loader_log(inst, LOADER_INFO_BIT, 0,
+ "Loader is running with elevated permissions. Environment variable %s will be ignored.", name);
return NULL;
}
+#endif
return loader_getenv(name, inst);
}
@@ -578,7 +585,7 @@ static bool loaderAddJsonEntry(const struct loader_instance *inst,
//
// This function looks for filename in given device handle, filename is then added to return list
// function return true if filename was appended to reg_data list
-// If error occures result is updated with failure reason
+// If error occurs result is updated with failure reason
bool loaderGetDeviceRegistryEntry(const struct loader_instance *inst, char **reg_data, PDWORD total_size, DEVINST dev_id,
LPCSTR value_name, VkResult *result) {
HKEY hkrKey = INVALID_HANDLE_VALUE;
@@ -855,7 +862,6 @@ VkResult loaderGetRegistryFiles(const struct loader_instance *inst, char *locati
char name[2048];
char *loc = location;
char *next;
- DWORD idx;
DWORD name_size = sizeof(name);
DWORD value;
DWORD value_size = sizeof(value);
@@ -885,9 +891,9 @@ VkResult loaderGetRegistryFiles(const struct loader_instance *inst, char *locati
access_flags = KEY_QUERY_VALUE;
rtn_value = RegOpenKeyEx(hive, loc, 0, access_flags, &key);
if (ERROR_SUCCESS == rtn_value) {
- idx = 0;
- while ((rtn_value = RegEnumValue(key, idx++, name, &name_size, NULL, NULL, (LPBYTE)&value, &value_size)) ==
- ERROR_SUCCESS) {
+ for (DWORD idx = 0;
+ (rtn_value = RegEnumValue(key, idx++, name, &name_size, NULL, NULL, (LPBYTE)&value, &value_size)) == ERROR_SUCCESS;
+ name_size = sizeof(name), value_size = sizeof(value)) {
if (value_size == sizeof(value) && value == 0) {
if (NULL == *reg_data) {
*reg_data = loader_instance_heap_alloc(inst, *reg_data_size, VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE);
@@ -960,7 +966,7 @@ VkResult loaderGetRegistryFiles(const struct loader_instance *inst, char *locati
if (!found_gpu) {
loader_log(inst, VK_DEBUG_REPORT_INFORMATION_BIT_EXT, 0,
- "Dropping driver %s as no corresponduing DXGI adapter was found", name);
+ "Dropping driver %s as no corresponding DXGI adapter was found", name);
continue;
}
}
@@ -972,7 +978,7 @@ VkResult loaderGetRegistryFiles(const struct loader_instance *inst, char *locati
found = true;
} else {
// At this point the reg_data variable contains other JSON paths, likely from the PNP/device section
- // of the registry that we want to have precendence over this non-device specific section of the registry.
+ // of the registry that we want to have precedence over this non-device specific section of the registry.
// To make sure we avoid enumerating old JSON files/drivers that might be present in the non-device specific
// area of the registry when a newer device specific JSON file is present, do a check before adding.
// Find the file name, without path, of the JSON file found in the non-device specific registry location.
@@ -999,8 +1005,6 @@ VkResult loaderGetRegistryFiles(const struct loader_instance *inst, char *locati
}
}
}
- name_size = sizeof(name);
- value_size = sizeof(value);
}
RegCloseKey(key);
}
@@ -2045,7 +2049,7 @@ out:
return res;
}
-struct loader_icd_term *loader_get_icd_and_device(const VkDevice device, struct loader_device **found_dev, uint32_t *icd_index) {
+struct loader_icd_term *loader_get_icd_and_device(const void *device, struct loader_device **found_dev, uint32_t *icd_index) {
*found_dev = NULL;
for (struct loader_instance *inst = loader.instances; inst; inst = inst->next) {
uint32_t index = 0;
@@ -2423,7 +2427,7 @@ static void loader_debug_init(void) {
}
void loader_initialize(void) {
- // initialize mutexs
+ // initialize mutexes
loader_platform_thread_create_mutex(&loader_lock);
loader_platform_thread_create_mutex(&loader_json_lock);
@@ -2450,7 +2454,7 @@ struct loader_data_files {
};
void loader_release() {
- // release mutexs
+ // release mutexes
loader_platform_thread_delete_mutex(&loader_lock);
loader_platform_thread_delete_mutex(&loader_json_lock);
}
@@ -2578,60 +2582,6 @@ out:
return res;
}
-const char *std_validation_str = "VK_LAYER_LUNARG_standard_validation";
-
-// Adds the legacy VK_LAYER_LUNARG_standard_validation as a meta-layer if it
-// fails to find it in the list already. This is usually an indication that a
-// newer loader is being used with an older layer set.
-static bool loaderAddLegacyStandardValidationLayer(const struct loader_instance *inst,
- struct loader_layer_list *layer_instance_list) {
- uint32_t i;
- bool success = true;
- struct loader_layer_properties *props = loaderGetNextLayerPropertySlot(inst, layer_instance_list);
- const char std_validation_names[6][VK_MAX_EXTENSION_NAME_SIZE] = {
- "VK_LAYER_GOOGLE_threading", "VK_LAYER_LUNARG_parameter_validation", "VK_LAYER_LUNARG_object_tracker",
- "VK_LAYER_LUNARG_core_validation", "VK_LAYER_GOOGLE_unique_objects"};
- uint32_t layer_count = sizeof(std_validation_names) / sizeof(std_validation_names[0]);
-
- loader_log(inst, VK_DEBUG_REPORT_DEBUG_BIT_EXT, 0,
- "Adding VK_LAYER_LUNARG_standard_validation using the loader legacy path. This is"
- " not an error.");
-
- if (NULL == props) {
- goto out;
- }
-
- memset(props, 0, sizeof(struct loader_layer_properties));
- props->type_flags = VK_LAYER_TYPE_FLAG_INSTANCE_LAYER | VK_LAYER_TYPE_FLAG_EXPLICIT_LAYER | VK_LAYER_TYPE_FLAG_META_LAYER;
- strncpy(props->info.description, "LunarG Standard Validation Layer", sizeof(props->info.description));
- props->info.implementationVersion = 1;
- strncpy(props->info.layerName, std_validation_str, sizeof(props->info.layerName));
- props->info.specVersion = VK_MAKE_VERSION(1, 0, VK_HEADER_VERSION);
-
- props->component_layer_names =
- loader_instance_heap_alloc(inst, sizeof(char[MAX_STRING_SIZE]) * layer_count, VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE);
- if (NULL == props->component_layer_names) {
- loader_log(inst, VK_DEBUG_REPORT_ERROR_BIT_EXT, 0,
- "Failed to allocate space for legacy VK_LAYER_LUNARG_standard_validation"
- " meta-layer component_layers information.");
- success = false;
- goto out;
- }
- for (i = 0; i < layer_count; i++) {
- strncpy(props->component_layer_names[i], std_validation_names[i], MAX_STRING_SIZE - 1);
- props->component_layer_names[i][MAX_STRING_SIZE - 1] = '\0';
- }
-
-out:
-
- if (!success && NULL != props && NULL != props->component_layer_names) {
- loader_instance_heap_free(inst, props->component_layer_names);
- props->component_layer_names = NULL;
- }
-
- return success;
-}
-
// Verify that all component layers in a meta-layer are valid.
static bool verifyMetaLayerComponentLayers(const struct loader_instance *inst, struct loader_layer_properties *prop,
struct loader_layer_list *instance_layers) {
@@ -3201,7 +3151,7 @@ static VkResult loaderReadLayerJson(const struct loader_instance *inst, struct l
if (version.major > 1 || version.minor >= 1) {
loader_log(inst, VK_DEBUG_REPORT_INFORMATION_BIT_EXT, 0,
"Layer \"%s\" using deprecated \'vkGetInstanceProcAddr\' tag which was deprecated starting with JSON "
- "file version 1.1.0. The new vkNegotiateLayerInterfaceVersion function is preferred, though for "
+ "file version 1.1.0. The new vkNegotiateLoaderLayerInterfaceVersion function is preferred, though for "
"compatibility reasons it may be desirable to continue using the deprecated tag.",
name);
}
@@ -3212,7 +3162,7 @@ static VkResult loaderReadLayerJson(const struct loader_instance *inst, struct l
if (version.major > 1 || version.minor >= 1) {
loader_log(inst, VK_DEBUG_REPORT_INFORMATION_BIT_EXT, 0,
"Layer \"%s\" using deprecated \'vkGetDeviceProcAddr\' tag which was deprecated starting with JSON "
- "file version 1.1.0. The new vkNegotiateLayerInterfaceVersion function is preferred, though for "
+ "file version 1.1.0. The new vkNegotiateLoaderLayerInterfaceVersion function is preferred, though for "
"compatibility reasons it may be desirable to continue using the deprecated tag.",
name);
}
@@ -3949,7 +3899,7 @@ out:
}
#ifdef _WIN32
-// Read manifest JSON files uing the Windows driver interface
+// Read manifest JSON files using the Windows driver interface
static VkResult ReadManifestsFromD3DAdapters(const struct loader_instance *inst, char **reg_data, PDWORD reg_data_size,
const wchar_t *value_name) {
VkResult result = VK_INCOMPLETE;
@@ -3994,7 +3944,7 @@ static VkResult ReadManifestsFromD3DAdapters(const struct loader_instance *inst,
.value_type = REG_MULTI_SZ,
.physical_adapter_index = 0,
};
- wcsncpy(filename_info.value_name, value_name, sizeof(filename_info.value_name) / sizeof(DWORD));
+ wcsncpy(filename_info.value_name, value_name, sizeof(filename_info.value_name) / sizeof(WCHAR));
LoaderQueryAdapterInfo query_info = {
.handle = adapters.adapters[i].handle,
.type = LOADER_QUERY_TYPE_REGISTRY,
@@ -4603,23 +4553,6 @@ void loaderScanForLayers(struct loader_instance *inst, struct loader_layer_list
}
}
- // See if "VK_LAYER_LUNARG_standard_validation" already in list.
- bool found_std_val = false;
- for (uint32_t i = 0; i < instance_layers->count; i++) {
- struct loader_layer_properties *props = &instance_layers->list[i];
- if (strcmp(props->info.layerName, std_validation_str) == 0) {
- found_std_val = true;
- break;
- }
- }
-
- // If we didn't find the VK_LAYER_LUNARG_standard_validation meta-layer in
- // the list, then we need to add it manually. This is likely because we're
- // dealing with a new loader, but an old layer folder.
- if (!found_std_val && !loaderAddLegacyStandardValidationLayer(inst, instance_layers)) {
- goto out;
- }
-
// Verify any meta-layers in the list are valid and all the component layers are
// actually present in the available layer list
VerifyAllMetaLayers(inst, instance_layers, &override_layer_valid);
@@ -4853,6 +4786,32 @@ static VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL loader_gpa_instance_internal(VkI
return (PFN_vkVoidFunction)terminator_CreateDevice;
}
+ // The VK_EXT_debug_utils functions need a special case here so the terminators can still be found from vkGetInstanceProcAddr
+ if (!strcmp(pName, "vkSetDebugUtilsObjectNameEXT")) {
+ return (PFN_vkVoidFunction)terminator_SetDebugUtilsObjectNameEXT;
+ }
+ if (!strcmp(pName, "vkSetDebugUtilsObjectTagEXT")) {
+ return (PFN_vkVoidFunction)terminator_SetDebugUtilsObjectTagEXT;
+ }
+ if (!strcmp(pName, "vkQueueBeginDebugUtilsLabelEXT")) {
+ return (PFN_vkVoidFunction)terminator_QueueBeginDebugUtilsLabelEXT;
+ }
+ if (!strcmp(pName, "vkQueueEndDebugUtilsLabelEXT")) {
+ return (PFN_vkVoidFunction)terminator_QueueEndDebugUtilsLabelEXT;
+ }
+ if (!strcmp(pName, "vkQueueInsertDebugUtilsLabelEXT")) {
+ return (PFN_vkVoidFunction)terminator_QueueInsertDebugUtilsLabelEXT;
+ }
+ if (!strcmp(pName, "vkCmdBeginDebugUtilsLabelEXT")) {
+ return (PFN_vkVoidFunction)terminator_CmdBeginDebugUtilsLabelEXT;
+ }
+ if (!strcmp(pName, "vkCmdEndDebugUtilsLabelEXT")) {
+ return (PFN_vkVoidFunction)terminator_CmdEndDebugUtilsLabelEXT;
+ }
+ if (!strcmp(pName, "vkCmdInsertDebugUtilsLabelEXT")) {
+ return (PFN_vkVoidFunction)terminator_CmdInsertDebugUtilsLabelEXT;
+ }
+
// inst is not wrapped
if (inst == VK_NULL_HANDLE) {
return NULL;
@@ -5510,8 +5469,6 @@ VKAPI_ATTR VkResult VKAPI_CALL loader_layer_create_device(VkInstance instance, V
struct loader_device *dev = NULL;
struct loader_instance *inst = NULL;
- assert(pCreateInfo->queueCreateInfoCount >= 1);
-
if (instance != NULL) {
inst = loader_get_instance(instance);
internal_device = physicalDevice;
@@ -6187,7 +6144,7 @@ VkResult loader_validate_device_extensions(struct loader_instance *this_instance
}
// Terminator functions for the Instance chain
-// All named terminator_<Vulakn API name>
+// All named terminator_<Vulkan API name>
VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateInstance(const VkInstanceCreateInfo *pCreateInfo,
const VkAllocationCallbacks *pAllocator, VkInstance *pInstance) {
struct loader_icd_term *icd_term;
@@ -7204,6 +7161,10 @@ VkStringErrorFlags vk_string_validate(const int max_length, const char *utf8) {
int num_char_bytes = 0;
int i, j;
+ if (utf8 == NULL) {
+ return VK_STRING_ERROR_NULL_PTR;
+ }
+
for (i = 0; i <= max_length; i++) {
if (utf8[i] == 0) {
break;
@@ -7369,7 +7330,7 @@ out:
return result;
}
-#if defined(_WIN32) && defined(LOADER_DYNAMIC_LIB)
+#if defined(_WIN32)
BOOL WINAPI DllMain(HINSTANCE hinst, DWORD reason, LPVOID reserved) {
switch (reason) {
case DLL_PROCESS_ATTACH:
diff --git a/thirdparty/vulkan/loader/loader.h b/thirdparty/vulkan/loader/loader.h
index 8d6b4c454a..5e9495521b 100644
--- a/thirdparty/vulkan/loader/loader.h
+++ b/thirdparty/vulkan/loader/loader.h
@@ -67,6 +67,7 @@ typedef enum VkStringErrorFlagBits {
VK_STRING_ERROR_NONE = 0x00000000,
VK_STRING_ERROR_LENGTH = 0x00000001,
VK_STRING_ERROR_BAD_DATA = 0x00000002,
+ VK_STRING_ERROR_NULL_PTR = 0x00000004,
} VkStringErrorFlagBits;
typedef VkFlags VkStringErrorFlags;
@@ -419,9 +420,6 @@ static inline void loader_init_dispatch(void *obj, const void *data) {
// Global variables used across files
extern struct loader_struct loader;
extern THREAD_LOCAL_DECL struct loader_instance *tls_instance;
-#if defined(_WIN32) && !defined(LOADER_DYNAMIC_LIB)
-extern LOADER_PLATFORM_THREAD_ONCE_DEFINITION(once_init);
-#endif
extern loader_platform_thread_mutex loader_lock;
extern loader_platform_thread_mutex loader_json_lock;
@@ -480,7 +478,7 @@ void loaderScanForImplicitLayers(struct loader_instance *inst, struct loader_lay
bool loaderImplicitLayerIsEnabled(const struct loader_instance *inst, const struct loader_layer_properties *prop);
VkResult loader_get_icd_loader_instance_extensions(const struct loader_instance *inst, struct loader_icd_tramp_list *icd_tramp_list,
struct loader_extension_list *inst_exts);
-struct loader_icd_term *loader_get_icd_and_device(const VkDevice device, struct loader_device **found_dev, uint32_t *icd_index);
+struct loader_icd_term *loader_get_icd_and_device(const void *device, struct loader_device **found_dev, uint32_t *icd_index);
void loader_init_dispatch_dev_ext(struct loader_instance *inst, struct loader_device *dev);
void *loader_dev_ext_gpa(struct loader_instance *inst, const char *funcName);
void *loader_get_dev_ext_trampoline(uint32_t index);
diff --git a/thirdparty/vulkan/loader/trampoline.c b/thirdparty/vulkan/loader/trampoline.c
index 52eea968e8..a6a37f0fce 100644
--- a/thirdparty/vulkan/loader/trampoline.c
+++ b/thirdparty/vulkan/loader/trampoline.c
@@ -135,6 +135,12 @@ LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceExtensionPropert
}
loader_platform_dl_handle layer_lib = loader_platform_open_library(layers.list[i].lib_name);
+ if (layer_lib == NULL) {
+ loader_log(NULL, VK_DEBUG_REPORT_WARNING_BIT_EXT, 0, "%s: Unable to load implicit layer library \"%s\"", __FUNCTION__,
+ layers.list[i].lib_name);
+ continue;
+ }
+
libs[lib_count++] = layer_lib;
void *pfn = loader_platform_get_proc_address(layer_lib,
layers.list[i].pre_instance_functions.enumerate_instance_extension_properties);
@@ -223,6 +229,12 @@ LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceLayerProperties(
}
loader_platform_dl_handle layer_lib = loader_platform_open_library(layers.list[i].lib_name);
+ if (layer_lib == NULL) {
+ loader_log(NULL, VK_DEBUG_REPORT_WARNING_BIT_EXT, 0, "%s: Unable to load implicit layer library \"%s\"", __FUNCTION__,
+ layers.list[i].lib_name);
+ continue;
+ }
+
libs[lib_count++] = layer_lib;
void *pfn =
loader_platform_get_proc_address(layer_lib, layers.list[i].pre_instance_functions.enumerate_instance_layer_properties);
@@ -311,6 +323,12 @@ LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceVersion(uint32_t
}
loader_platform_dl_handle layer_lib = loader_platform_open_library(layers.list[i].lib_name);
+ if (layer_lib == NULL) {
+ loader_log(NULL, VK_DEBUG_REPORT_WARNING_BIT_EXT, 0, "%s: Unable to load implicit layer library \"%s\"", __FUNCTION__,
+ layers.list[i].lib_name);
+ continue;
+ }
+
libs[lib_count++] = layer_lib;
void *pfn = loader_platform_get_proc_address(layer_lib,
layers.list[i].pre_instance_functions.enumerate_instance_version);
@@ -2478,3 +2496,98 @@ LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSetWithTemplate(VkDev
const VkLayerDispatchTable *disp = loader_get_dispatch(device);
disp->UpdateDescriptorSetWithTemplate(device, descriptorSet, descriptorUpdateTemplate, pData);
}
+
+// ---- Vulkan core 1.2 trampolines
+
+LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass2(VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass)
+{
+ const VkLayerDispatchTable *disp = loader_get_dispatch(device);
+ return disp->CreateRenderPass2(device, pCreateInfo, pAllocator, pRenderPass);
+}
+
+LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass2(VkCommandBuffer commandBuffer,
+ const VkRenderPassBeginInfo* pRenderPassBegin,
+ const VkSubpassBeginInfo* pSubpassBeginInfo)
+{
+ const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
+ disp->CmdBeginRenderPass2(commandBuffer, pRenderPassBegin, pSubpassBeginInfo);
+}
+
+LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdNextSubpass2(VkCommandBuffer commandBuffer,
+ const VkSubpassBeginInfo* pSubpassBeginInfo,
+ const VkSubpassEndInfo* pSubpassEndInfo)
+{
+ const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
+ disp->CmdNextSubpass2(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo);
+}
+
+LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderPass2(VkCommandBuffer commandBuffer, const VkSubpassEndInfo* pSubpassEndInfo)
+{
+ const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
+ disp->CmdEndRenderPass2(commandBuffer, pSubpassEndInfo);
+}
+
+LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectCount(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
+ VkBuffer countBuffer, VkDeviceSize countBufferOffset,
+ uint32_t maxDrawCount, uint32_t stride)
+{
+ const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
+ disp->CmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
+}
+
+LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCount(VkCommandBuffer commandBuffer, VkBuffer buffer,
+ VkDeviceSize offset, VkBuffer countBuffer,
+ VkDeviceSize countBufferOffset, uint32_t maxDrawCount,
+ uint32_t stride)
+{
+ const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
+ disp->CmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
+}
+
+LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreCounterValue(VkDevice device, VkSemaphore semaphore, uint64_t* pValue)
+{
+ const VkLayerDispatchTable *disp = loader_get_dispatch(device);
+ return disp->GetSemaphoreCounterValue(device, semaphore, pValue);
+}
+
+LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkWaitSemaphores(VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo,
+ uint64_t timeout)
+{
+ const VkLayerDispatchTable *disp = loader_get_dispatch(device);
+ return disp->WaitSemaphores(device, pWaitInfo, timeout);
+}
+
+LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkSignalSemaphore(VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo)
+{
+ const VkLayerDispatchTable *disp = loader_get_dispatch(device);
+ return disp->SignalSemaphore(device, pSignalInfo);
+}
+
+LOADER_EXPORT VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetBufferDeviceAddress(VkDevice device,
+ const VkBufferDeviceAddressInfo* pInfo)
+{
+ const VkLayerDispatchTable *disp = loader_get_dispatch(device);
+ return disp->GetBufferDeviceAddress(device, pInfo);
+}
+
+LOADER_EXPORT VKAPI_ATTR uint64_t VKAPI_CALL vkGetBufferOpaqueCaptureAddress(VkDevice device,
+ const VkBufferDeviceAddressInfo* pInfo)
+{
+ const VkLayerDispatchTable *disp = loader_get_dispatch(device);
+ return disp->GetBufferOpaqueCaptureAddress(device, pInfo);
+}
+
+LOADER_EXPORT VKAPI_ATTR uint64_t VKAPI_CALL vkGetDeviceMemoryOpaqueCaptureAddress(VkDevice device,
+ const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo)
+{
+ const VkLayerDispatchTable *disp = loader_get_dispatch(device);
+ return disp->GetDeviceMemoryOpaqueCaptureAddress(device, pInfo);
+}
+
+LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkResetQueryPool(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery,
+ uint32_t queryCount)
+{
+ const VkLayerDispatchTable *disp = loader_get_dispatch(device);
+ disp->ResetQueryPool(device, queryPool, firstQuery, queryCount);
+}
diff --git a/thirdparty/vulkan/loader/unknown_ext_chain_gas.S b/thirdparty/vulkan/loader/unknown_ext_chain_gas.S
deleted file mode 100644
index f847e1407d..0000000000
--- a/thirdparty/vulkan/loader/unknown_ext_chain_gas.S
+++ /dev/null
@@ -1,885 +0,0 @@
-#
-# Copyright (c) 2017 The Khronos Group Inc.
-# Copyright (c) 2017 Valve Corporation
-# Copyright (c) 2017 LunarG, Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-# Author: Lenny Komow <lenny@lunarg.com>
-#
-
-# This code is used to pass on device (including physical device) extensions through the call chain. It must do this without
-# creating a stack frame, because the actual parameters of the call are not known. Since the first parameter is known to be a
-# VkPhysicalDevice or a dispatchable object it can unwrap the object, possibly overwriting the wrapped physical device, and then
-# jump to the next function in the call chain
-
-#ifdef HAVE_CET_H
-#include <cet.h>
-#else
-#define _CET_ENDBR
-#endif
-
-.intel_syntax noprefix
-.include "gen_defines.asm"
-
-.ifdef X86_64
-
-.macro PhysDevExtTramp num
-.global vkPhysDevExtTramp\num
-vkPhysDevExtTramp\num:
- _CET_ENDBR
- mov rax, [rdi]
- mov rdi, [rdi + PHYS_DEV_OFFSET_PHYS_DEV_TRAMP]
- jmp [rax + (PHYS_DEV_OFFSET_INST_DISPATCH + (PTR_SIZE * \num))]
-.endm
-
-.macro PhysDevExtTermin num
-.global vkPhysDevExtTermin\num
-vkPhysDevExtTermin\num:
- _CET_ENDBR
- mov rax, [rdi + ICD_TERM_OFFSET_PHYS_DEV_TERM] # Store the loader_icd_term* in rax
- cmp qword ptr [rax + (DISPATCH_OFFSET_ICD_TERM + (PTR_SIZE * \num))], 0 # Check if the next function in the chain is NULL
- je terminError\num # Go to the error section if it is NULL
- mov rdi, [rdi + PHYS_DEV_OFFSET_PHYS_DEV_TERM] # Load the unwrapped VkPhysicalDevice into the first arg
- jmp [rax + (DISPATCH_OFFSET_ICD_TERM + (PTR_SIZE * \num))] # Jump to the next function in the chain
-terminError\num:
- sub rsp, 56 # Create the stack frame
- mov rdi, [rax + INSTANCE_OFFSET_ICD_TERM] # Load the loader_instance into rdi (first arg)
- mov r8, [rdi + (HASH_OFFSET_INSTANCE + (HASH_SIZE * \num) + FUNC_NAME_OFFSET_HASH)] # Load the func name into r8 (fifth arg)
- lea rcx, termin_error_string@GOTPCREL # Load the error string into rcx (fourth arg)
- xor edx, edx # Set rdx to zero (third arg)
- lea esi, [rdx + VK_DEBUG_REPORT_ERROR_BIT_EXT] # Write the error logging bit to rsi (second arg)
- call loader_log # Log the error message before we crash
- add rsp, 56 # Clean up the stack frame
- mov rax, 0
- jmp rax # Crash intentionally by jumping to address zero
-.endm
-
-.macro DevExtTramp num
-.global vkdev_ext\num
-vkdev_ext\num:
- _CET_ENDBR
- mov rax, [rdi] # Dereference the handle to get the dispatch table
- jmp [rax + (EXT_OFFSET_DEVICE_DISPATCH + (PTR_SIZE * \num))] # Jump to the appropriate call chain
-.endm
-
-.else
-
-.macro PhysDevExtTramp num
-.global vkPhysDevExtTramp\num
-vkPhysDevExtTramp\num:
- _CET_ENDBR
- mov eax, [esp + 4] # Load the wrapped VkPhysicalDevice into eax
- mov ecx, [eax + PHYS_DEV_OFFSET_PHYS_DEV_TRAMP] # Load the unwrapped VkPhysicalDevice into ecx
- mov [esp + 4], ecx # Overwrite the wrapped VkPhysicalDevice with the unwrapped one (on the stack)
- mov eax, [eax] # Dereference the wrapped VkPhysicalDevice to get the dispatch table in eax
- jmp [eax + (PHYS_DEV_OFFSET_INST_DISPATCH + (PTR_SIZE * \num))] # Dereference the wrapped VkPhysicalDevice to get the dispatch table in eax
-.endm
-
-.macro PhysDevExtTermin num
-.global vkPhysDevExtTermin\num
-vkPhysDevExtTermin\num:
- _CET_ENDBR
- mov ecx, [esp + 4] # Move the wrapped VkPhysicalDevice into ecx
- mov eax, [ecx + ICD_TERM_OFFSET_PHYS_DEV_TERM] # Store the loader_icd_term* in eax
- cmp dword ptr [eax + (DISPATCH_OFFSET_ICD_TERM + (PTR_SIZE * \num))], 0 # Check if the next function in the chain is NULL
- je terminError\num # Go to the error section if it is NULL
- mov ecx, [ecx + PHYS_DEV_OFFSET_PHYS_DEV_TERM] # Unwrap the VkPhysicalDevice in ecx
- mov [esp + 4], ecx # Copy the unwrapped VkPhysicalDevice into the first arg
- jmp [eax + (DISPATCH_OFFSET_ICD_TERM + (PTR_SIZE * \num))] # Jump to the next function in the chain
-terminError\num:
- mov eax, [eax + INSTANCE_OFFSET_ICD_TERM] # Load the loader_instance into eax
- push [eax + (HASH_OFFSET_INSTANCE + (HASH_SIZE * \num) + FUNC_NAME_OFFSET_HASH)] # Push the func name (fifth arg)
- push offset termin_error_string@GOT # Push the error string (fourth arg)
- push 0 # Push zero (third arg)
- push VK_DEBUG_REPORT_ERROR_BIT_EXT # Push the error logging bit (second arg)
- push eax # Push the loader_instance (first arg)
- call loader_log # Log the error message before we crash
- add esp, 20 # Clean up the args
- mov eax, 0
- jmp eax # Crash intentionally by jumping to address zero
-.endm
-
-.macro DevExtTramp num
-.global vkdev_ext\num
-vkdev_ext\num:
- _CET_ENDBR
- mov eax, [esp + 4] # Dereference the handle to get the dispatch table
- jmp [eax + (EXT_OFFSET_DEVICE_DISPATCH + (PTR_SIZE * \num))] # Jump to the appropriate call chain
-.endm
-
-.endif
-
-#if defined(__ELF__)
-.section .note.GNU-stack,"",%progbits
-#endif
-
-.data
-
-termin_error_string:
-.string "Extension %s not supported for this physical device"
-
-.text
-
- PhysDevExtTramp 0
- PhysDevExtTramp 1
- PhysDevExtTramp 2
- PhysDevExtTramp 3
- PhysDevExtTramp 4
- PhysDevExtTramp 5
- PhysDevExtTramp 6
- PhysDevExtTramp 7
- PhysDevExtTramp 8
- PhysDevExtTramp 9
- PhysDevExtTramp 10
- PhysDevExtTramp 11
- PhysDevExtTramp 12
- PhysDevExtTramp 13
- PhysDevExtTramp 14
- PhysDevExtTramp 15
- PhysDevExtTramp 16
- PhysDevExtTramp 17
- PhysDevExtTramp 18
- PhysDevExtTramp 19
- PhysDevExtTramp 20
- PhysDevExtTramp 21
- PhysDevExtTramp 22
- PhysDevExtTramp 23
- PhysDevExtTramp 24
- PhysDevExtTramp 25
- PhysDevExtTramp 26
- PhysDevExtTramp 27
- PhysDevExtTramp 28
- PhysDevExtTramp 29
- PhysDevExtTramp 30
- PhysDevExtTramp 31
- PhysDevExtTramp 32
- PhysDevExtTramp 33
- PhysDevExtTramp 34
- PhysDevExtTramp 35
- PhysDevExtTramp 36
- PhysDevExtTramp 37
- PhysDevExtTramp 38
- PhysDevExtTramp 39
- PhysDevExtTramp 40
- PhysDevExtTramp 41
- PhysDevExtTramp 42
- PhysDevExtTramp 43
- PhysDevExtTramp 44
- PhysDevExtTramp 45
- PhysDevExtTramp 46
- PhysDevExtTramp 47
- PhysDevExtTramp 48
- PhysDevExtTramp 49
- PhysDevExtTramp 50
- PhysDevExtTramp 51
- PhysDevExtTramp 52
- PhysDevExtTramp 53
- PhysDevExtTramp 54
- PhysDevExtTramp 55
- PhysDevExtTramp 56
- PhysDevExtTramp 57
- PhysDevExtTramp 58
- PhysDevExtTramp 59
- PhysDevExtTramp 60
- PhysDevExtTramp 61
- PhysDevExtTramp 62
- PhysDevExtTramp 63
- PhysDevExtTramp 64
- PhysDevExtTramp 65
- PhysDevExtTramp 66
- PhysDevExtTramp 67
- PhysDevExtTramp 68
- PhysDevExtTramp 69
- PhysDevExtTramp 70
- PhysDevExtTramp 71
- PhysDevExtTramp 72
- PhysDevExtTramp 73
- PhysDevExtTramp 74
- PhysDevExtTramp 75
- PhysDevExtTramp 76
- PhysDevExtTramp 77
- PhysDevExtTramp 78
- PhysDevExtTramp 79
- PhysDevExtTramp 80
- PhysDevExtTramp 81
- PhysDevExtTramp 82
- PhysDevExtTramp 83
- PhysDevExtTramp 84
- PhysDevExtTramp 85
- PhysDevExtTramp 86
- PhysDevExtTramp 87
- PhysDevExtTramp 88
- PhysDevExtTramp 89
- PhysDevExtTramp 90
- PhysDevExtTramp 91
- PhysDevExtTramp 92
- PhysDevExtTramp 93
- PhysDevExtTramp 94
- PhysDevExtTramp 95
- PhysDevExtTramp 96
- PhysDevExtTramp 97
- PhysDevExtTramp 98
- PhysDevExtTramp 99
- PhysDevExtTramp 100
- PhysDevExtTramp 101
- PhysDevExtTramp 102
- PhysDevExtTramp 103
- PhysDevExtTramp 104
- PhysDevExtTramp 105
- PhysDevExtTramp 106
- PhysDevExtTramp 107
- PhysDevExtTramp 108
- PhysDevExtTramp 109
- PhysDevExtTramp 110
- PhysDevExtTramp 111
- PhysDevExtTramp 112
- PhysDevExtTramp 113
- PhysDevExtTramp 114
- PhysDevExtTramp 115
- PhysDevExtTramp 116
- PhysDevExtTramp 117
- PhysDevExtTramp 118
- PhysDevExtTramp 119
- PhysDevExtTramp 120
- PhysDevExtTramp 121
- PhysDevExtTramp 122
- PhysDevExtTramp 123
- PhysDevExtTramp 124
- PhysDevExtTramp 125
- PhysDevExtTramp 126
- PhysDevExtTramp 127
- PhysDevExtTramp 128
- PhysDevExtTramp 129
- PhysDevExtTramp 130
- PhysDevExtTramp 131
- PhysDevExtTramp 132
- PhysDevExtTramp 133
- PhysDevExtTramp 134
- PhysDevExtTramp 135
- PhysDevExtTramp 136
- PhysDevExtTramp 137
- PhysDevExtTramp 138
- PhysDevExtTramp 139
- PhysDevExtTramp 140
- PhysDevExtTramp 141
- PhysDevExtTramp 142
- PhysDevExtTramp 143
- PhysDevExtTramp 144
- PhysDevExtTramp 145
- PhysDevExtTramp 146
- PhysDevExtTramp 147
- PhysDevExtTramp 148
- PhysDevExtTramp 149
- PhysDevExtTramp 150
- PhysDevExtTramp 151
- PhysDevExtTramp 152
- PhysDevExtTramp 153
- PhysDevExtTramp 154
- PhysDevExtTramp 155
- PhysDevExtTramp 156
- PhysDevExtTramp 157
- PhysDevExtTramp 158
- PhysDevExtTramp 159
- PhysDevExtTramp 160
- PhysDevExtTramp 161
- PhysDevExtTramp 162
- PhysDevExtTramp 163
- PhysDevExtTramp 164
- PhysDevExtTramp 165
- PhysDevExtTramp 166
- PhysDevExtTramp 167
- PhysDevExtTramp 168
- PhysDevExtTramp 169
- PhysDevExtTramp 170
- PhysDevExtTramp 171
- PhysDevExtTramp 172
- PhysDevExtTramp 173
- PhysDevExtTramp 174
- PhysDevExtTramp 175
- PhysDevExtTramp 176
- PhysDevExtTramp 177
- PhysDevExtTramp 178
- PhysDevExtTramp 179
- PhysDevExtTramp 180
- PhysDevExtTramp 181
- PhysDevExtTramp 182
- PhysDevExtTramp 183
- PhysDevExtTramp 184
- PhysDevExtTramp 185
- PhysDevExtTramp 186
- PhysDevExtTramp 187
- PhysDevExtTramp 188
- PhysDevExtTramp 189
- PhysDevExtTramp 190
- PhysDevExtTramp 191
- PhysDevExtTramp 192
- PhysDevExtTramp 193
- PhysDevExtTramp 194
- PhysDevExtTramp 195
- PhysDevExtTramp 196
- PhysDevExtTramp 197
- PhysDevExtTramp 198
- PhysDevExtTramp 199
- PhysDevExtTramp 200
- PhysDevExtTramp 201
- PhysDevExtTramp 202
- PhysDevExtTramp 203
- PhysDevExtTramp 204
- PhysDevExtTramp 205
- PhysDevExtTramp 206
- PhysDevExtTramp 207
- PhysDevExtTramp 208
- PhysDevExtTramp 209
- PhysDevExtTramp 210
- PhysDevExtTramp 211
- PhysDevExtTramp 212
- PhysDevExtTramp 213
- PhysDevExtTramp 214
- PhysDevExtTramp 215
- PhysDevExtTramp 216
- PhysDevExtTramp 217
- PhysDevExtTramp 218
- PhysDevExtTramp 219
- PhysDevExtTramp 220
- PhysDevExtTramp 221
- PhysDevExtTramp 222
- PhysDevExtTramp 223
- PhysDevExtTramp 224
- PhysDevExtTramp 225
- PhysDevExtTramp 226
- PhysDevExtTramp 227
- PhysDevExtTramp 228
- PhysDevExtTramp 229
- PhysDevExtTramp 230
- PhysDevExtTramp 231
- PhysDevExtTramp 232
- PhysDevExtTramp 233
- PhysDevExtTramp 234
- PhysDevExtTramp 235
- PhysDevExtTramp 236
- PhysDevExtTramp 237
- PhysDevExtTramp 238
- PhysDevExtTramp 239
- PhysDevExtTramp 240
- PhysDevExtTramp 241
- PhysDevExtTramp 242
- PhysDevExtTramp 243
- PhysDevExtTramp 244
- PhysDevExtTramp 245
- PhysDevExtTramp 246
- PhysDevExtTramp 247
- PhysDevExtTramp 248
- PhysDevExtTramp 249
-
- PhysDevExtTermin 0
- PhysDevExtTermin 1
- PhysDevExtTermin 2
- PhysDevExtTermin 3
- PhysDevExtTermin 4
- PhysDevExtTermin 5
- PhysDevExtTermin 6
- PhysDevExtTermin 7
- PhysDevExtTermin 8
- PhysDevExtTermin 9
- PhysDevExtTermin 10
- PhysDevExtTermin 11
- PhysDevExtTermin 12
- PhysDevExtTermin 13
- PhysDevExtTermin 14
- PhysDevExtTermin 15
- PhysDevExtTermin 16
- PhysDevExtTermin 17
- PhysDevExtTermin 18
- PhysDevExtTermin 19
- PhysDevExtTermin 20
- PhysDevExtTermin 21
- PhysDevExtTermin 22
- PhysDevExtTermin 23
- PhysDevExtTermin 24
- PhysDevExtTermin 25
- PhysDevExtTermin 26
- PhysDevExtTermin 27
- PhysDevExtTermin 28
- PhysDevExtTermin 29
- PhysDevExtTermin 30
- PhysDevExtTermin 31
- PhysDevExtTermin 32
- PhysDevExtTermin 33
- PhysDevExtTermin 34
- PhysDevExtTermin 35
- PhysDevExtTermin 36
- PhysDevExtTermin 37
- PhysDevExtTermin 38
- PhysDevExtTermin 39
- PhysDevExtTermin 40
- PhysDevExtTermin 41
- PhysDevExtTermin 42
- PhysDevExtTermin 43
- PhysDevExtTermin 44
- PhysDevExtTermin 45
- PhysDevExtTermin 46
- PhysDevExtTermin 47
- PhysDevExtTermin 48
- PhysDevExtTermin 49
- PhysDevExtTermin 50
- PhysDevExtTermin 51
- PhysDevExtTermin 52
- PhysDevExtTermin 53
- PhysDevExtTermin 54
- PhysDevExtTermin 55
- PhysDevExtTermin 56
- PhysDevExtTermin 57
- PhysDevExtTermin 58
- PhysDevExtTermin 59
- PhysDevExtTermin 60
- PhysDevExtTermin 61
- PhysDevExtTermin 62
- PhysDevExtTermin 63
- PhysDevExtTermin 64
- PhysDevExtTermin 65
- PhysDevExtTermin 66
- PhysDevExtTermin 67
- PhysDevExtTermin 68
- PhysDevExtTermin 69
- PhysDevExtTermin 70
- PhysDevExtTermin 71
- PhysDevExtTermin 72
- PhysDevExtTermin 73
- PhysDevExtTermin 74
- PhysDevExtTermin 75
- PhysDevExtTermin 76
- PhysDevExtTermin 77
- PhysDevExtTermin 78
- PhysDevExtTermin 79
- PhysDevExtTermin 80
- PhysDevExtTermin 81
- PhysDevExtTermin 82
- PhysDevExtTermin 83
- PhysDevExtTermin 84
- PhysDevExtTermin 85
- PhysDevExtTermin 86
- PhysDevExtTermin 87
- PhysDevExtTermin 88
- PhysDevExtTermin 89
- PhysDevExtTermin 90
- PhysDevExtTermin 91
- PhysDevExtTermin 92
- PhysDevExtTermin 93
- PhysDevExtTermin 94
- PhysDevExtTermin 95
- PhysDevExtTermin 96
- PhysDevExtTermin 97
- PhysDevExtTermin 98
- PhysDevExtTermin 99
- PhysDevExtTermin 100
- PhysDevExtTermin 101
- PhysDevExtTermin 102
- PhysDevExtTermin 103
- PhysDevExtTermin 104
- PhysDevExtTermin 105
- PhysDevExtTermin 106
- PhysDevExtTermin 107
- PhysDevExtTermin 108
- PhysDevExtTermin 109
- PhysDevExtTermin 110
- PhysDevExtTermin 111
- PhysDevExtTermin 112
- PhysDevExtTermin 113
- PhysDevExtTermin 114
- PhysDevExtTermin 115
- PhysDevExtTermin 116
- PhysDevExtTermin 117
- PhysDevExtTermin 118
- PhysDevExtTermin 119
- PhysDevExtTermin 120
- PhysDevExtTermin 121
- PhysDevExtTermin 122
- PhysDevExtTermin 123
- PhysDevExtTermin 124
- PhysDevExtTermin 125
- PhysDevExtTermin 126
- PhysDevExtTermin 127
- PhysDevExtTermin 128
- PhysDevExtTermin 129
- PhysDevExtTermin 130
- PhysDevExtTermin 131
- PhysDevExtTermin 132
- PhysDevExtTermin 133
- PhysDevExtTermin 134
- PhysDevExtTermin 135
- PhysDevExtTermin 136
- PhysDevExtTermin 137
- PhysDevExtTermin 138
- PhysDevExtTermin 139
- PhysDevExtTermin 140
- PhysDevExtTermin 141
- PhysDevExtTermin 142
- PhysDevExtTermin 143
- PhysDevExtTermin 144
- PhysDevExtTermin 145
- PhysDevExtTermin 146
- PhysDevExtTermin 147
- PhysDevExtTermin 148
- PhysDevExtTermin 149
- PhysDevExtTermin 150
- PhysDevExtTermin 151
- PhysDevExtTermin 152
- PhysDevExtTermin 153
- PhysDevExtTermin 154
- PhysDevExtTermin 155
- PhysDevExtTermin 156
- PhysDevExtTermin 157
- PhysDevExtTermin 158
- PhysDevExtTermin 159
- PhysDevExtTermin 160
- PhysDevExtTermin 161
- PhysDevExtTermin 162
- PhysDevExtTermin 163
- PhysDevExtTermin 164
- PhysDevExtTermin 165
- PhysDevExtTermin 166
- PhysDevExtTermin 167
- PhysDevExtTermin 168
- PhysDevExtTermin 169
- PhysDevExtTermin 170
- PhysDevExtTermin 171
- PhysDevExtTermin 172
- PhysDevExtTermin 173
- PhysDevExtTermin 174
- PhysDevExtTermin 175
- PhysDevExtTermin 176
- PhysDevExtTermin 177
- PhysDevExtTermin 178
- PhysDevExtTermin 179
- PhysDevExtTermin 180
- PhysDevExtTermin 181
- PhysDevExtTermin 182
- PhysDevExtTermin 183
- PhysDevExtTermin 184
- PhysDevExtTermin 185
- PhysDevExtTermin 186
- PhysDevExtTermin 187
- PhysDevExtTermin 188
- PhysDevExtTermin 189
- PhysDevExtTermin 190
- PhysDevExtTermin 191
- PhysDevExtTermin 192
- PhysDevExtTermin 193
- PhysDevExtTermin 194
- PhysDevExtTermin 195
- PhysDevExtTermin 196
- PhysDevExtTermin 197
- PhysDevExtTermin 198
- PhysDevExtTermin 199
- PhysDevExtTermin 200
- PhysDevExtTermin 201
- PhysDevExtTermin 202
- PhysDevExtTermin 203
- PhysDevExtTermin 204
- PhysDevExtTermin 205
- PhysDevExtTermin 206
- PhysDevExtTermin 207
- PhysDevExtTermin 208
- PhysDevExtTermin 209
- PhysDevExtTermin 210
- PhysDevExtTermin 211
- PhysDevExtTermin 212
- PhysDevExtTermin 213
- PhysDevExtTermin 214
- PhysDevExtTermin 215
- PhysDevExtTermin 216
- PhysDevExtTermin 217
- PhysDevExtTermin 218
- PhysDevExtTermin 219
- PhysDevExtTermin 220
- PhysDevExtTermin 221
- PhysDevExtTermin 222
- PhysDevExtTermin 223
- PhysDevExtTermin 224
- PhysDevExtTermin 225
- PhysDevExtTermin 226
- PhysDevExtTermin 227
- PhysDevExtTermin 228
- PhysDevExtTermin 229
- PhysDevExtTermin 230
- PhysDevExtTermin 231
- PhysDevExtTermin 232
- PhysDevExtTermin 233
- PhysDevExtTermin 234
- PhysDevExtTermin 235
- PhysDevExtTermin 236
- PhysDevExtTermin 237
- PhysDevExtTermin 238
- PhysDevExtTermin 239
- PhysDevExtTermin 240
- PhysDevExtTermin 241
- PhysDevExtTermin 242
- PhysDevExtTermin 243
- PhysDevExtTermin 244
- PhysDevExtTermin 245
- PhysDevExtTermin 246
- PhysDevExtTermin 247
- PhysDevExtTermin 248
- PhysDevExtTermin 249
-
- DevExtTramp 0
- DevExtTramp 1
- DevExtTramp 2
- DevExtTramp 3
- DevExtTramp 4
- DevExtTramp 5
- DevExtTramp 6
- DevExtTramp 7
- DevExtTramp 8
- DevExtTramp 9
- DevExtTramp 10
- DevExtTramp 11
- DevExtTramp 12
- DevExtTramp 13
- DevExtTramp 14
- DevExtTramp 15
- DevExtTramp 16
- DevExtTramp 17
- DevExtTramp 18
- DevExtTramp 19
- DevExtTramp 20
- DevExtTramp 21
- DevExtTramp 22
- DevExtTramp 23
- DevExtTramp 24
- DevExtTramp 25
- DevExtTramp 26
- DevExtTramp 27
- DevExtTramp 28
- DevExtTramp 29
- DevExtTramp 30
- DevExtTramp 31
- DevExtTramp 32
- DevExtTramp 33
- DevExtTramp 34
- DevExtTramp 35
- DevExtTramp 36
- DevExtTramp 37
- DevExtTramp 38
- DevExtTramp 39
- DevExtTramp 40
- DevExtTramp 41
- DevExtTramp 42
- DevExtTramp 43
- DevExtTramp 44
- DevExtTramp 45
- DevExtTramp 46
- DevExtTramp 47
- DevExtTramp 48
- DevExtTramp 49
- DevExtTramp 50
- DevExtTramp 51
- DevExtTramp 52
- DevExtTramp 53
- DevExtTramp 54
- DevExtTramp 55
- DevExtTramp 56
- DevExtTramp 57
- DevExtTramp 58
- DevExtTramp 59
- DevExtTramp 60
- DevExtTramp 61
- DevExtTramp 62
- DevExtTramp 63
- DevExtTramp 64
- DevExtTramp 65
- DevExtTramp 66
- DevExtTramp 67
- DevExtTramp 68
- DevExtTramp 69
- DevExtTramp 70
- DevExtTramp 71
- DevExtTramp 72
- DevExtTramp 73
- DevExtTramp 74
- DevExtTramp 75
- DevExtTramp 76
- DevExtTramp 77
- DevExtTramp 78
- DevExtTramp 79
- DevExtTramp 80
- DevExtTramp 81
- DevExtTramp 82
- DevExtTramp 83
- DevExtTramp 84
- DevExtTramp 85
- DevExtTramp 86
- DevExtTramp 87
- DevExtTramp 88
- DevExtTramp 89
- DevExtTramp 90
- DevExtTramp 91
- DevExtTramp 92
- DevExtTramp 93
- DevExtTramp 94
- DevExtTramp 95
- DevExtTramp 96
- DevExtTramp 97
- DevExtTramp 98
- DevExtTramp 99
- DevExtTramp 100
- DevExtTramp 101
- DevExtTramp 102
- DevExtTramp 103
- DevExtTramp 104
- DevExtTramp 105
- DevExtTramp 106
- DevExtTramp 107
- DevExtTramp 108
- DevExtTramp 109
- DevExtTramp 110
- DevExtTramp 111
- DevExtTramp 112
- DevExtTramp 113
- DevExtTramp 114
- DevExtTramp 115
- DevExtTramp 116
- DevExtTramp 117
- DevExtTramp 118
- DevExtTramp 119
- DevExtTramp 120
- DevExtTramp 121
- DevExtTramp 122
- DevExtTramp 123
- DevExtTramp 124
- DevExtTramp 125
- DevExtTramp 126
- DevExtTramp 127
- DevExtTramp 128
- DevExtTramp 129
- DevExtTramp 130
- DevExtTramp 131
- DevExtTramp 132
- DevExtTramp 133
- DevExtTramp 134
- DevExtTramp 135
- DevExtTramp 136
- DevExtTramp 137
- DevExtTramp 138
- DevExtTramp 139
- DevExtTramp 140
- DevExtTramp 141
- DevExtTramp 142
- DevExtTramp 143
- DevExtTramp 144
- DevExtTramp 145
- DevExtTramp 146
- DevExtTramp 147
- DevExtTramp 148
- DevExtTramp 149
- DevExtTramp 150
- DevExtTramp 151
- DevExtTramp 152
- DevExtTramp 153
- DevExtTramp 154
- DevExtTramp 155
- DevExtTramp 156
- DevExtTramp 157
- DevExtTramp 158
- DevExtTramp 159
- DevExtTramp 160
- DevExtTramp 161
- DevExtTramp 162
- DevExtTramp 163
- DevExtTramp 164
- DevExtTramp 165
- DevExtTramp 166
- DevExtTramp 167
- DevExtTramp 168
- DevExtTramp 169
- DevExtTramp 170
- DevExtTramp 171
- DevExtTramp 172
- DevExtTramp 173
- DevExtTramp 174
- DevExtTramp 175
- DevExtTramp 176
- DevExtTramp 177
- DevExtTramp 178
- DevExtTramp 179
- DevExtTramp 180
- DevExtTramp 181
- DevExtTramp 182
- DevExtTramp 183
- DevExtTramp 184
- DevExtTramp 185
- DevExtTramp 186
- DevExtTramp 187
- DevExtTramp 188
- DevExtTramp 189
- DevExtTramp 190
- DevExtTramp 191
- DevExtTramp 192
- DevExtTramp 193
- DevExtTramp 194
- DevExtTramp 195
- DevExtTramp 196
- DevExtTramp 197
- DevExtTramp 198
- DevExtTramp 199
- DevExtTramp 200
- DevExtTramp 201
- DevExtTramp 202
- DevExtTramp 203
- DevExtTramp 204
- DevExtTramp 205
- DevExtTramp 206
- DevExtTramp 207
- DevExtTramp 208
- DevExtTramp 209
- DevExtTramp 210
- DevExtTramp 211
- DevExtTramp 212
- DevExtTramp 213
- DevExtTramp 214
- DevExtTramp 215
- DevExtTramp 216
- DevExtTramp 217
- DevExtTramp 218
- DevExtTramp 219
- DevExtTramp 220
- DevExtTramp 221
- DevExtTramp 222
- DevExtTramp 223
- DevExtTramp 224
- DevExtTramp 225
- DevExtTramp 226
- DevExtTramp 227
- DevExtTramp 228
- DevExtTramp 229
- DevExtTramp 230
- DevExtTramp 231
- DevExtTramp 232
- DevExtTramp 233
- DevExtTramp 234
- DevExtTramp 235
- DevExtTramp 236
- DevExtTramp 237
- DevExtTramp 238
- DevExtTramp 239
- DevExtTramp 240
- DevExtTramp 241
- DevExtTramp 242
- DevExtTramp 243
- DevExtTramp 244
- DevExtTramp 245
- DevExtTramp 246
- DevExtTramp 247
- DevExtTramp 248
- DevExtTramp 249
diff --git a/thirdparty/vulkan/loader/unknown_ext_chain_masm.asm b/thirdparty/vulkan/loader/unknown_ext_chain_masm.asm
deleted file mode 100644
index 34bc7c2fc7..0000000000
--- a/thirdparty/vulkan/loader/unknown_ext_chain_masm.asm
+++ /dev/null
@@ -1,883 +0,0 @@
-;
-; Copyright (c) 2017 The Khronos Group Inc.
-; Copyright (c) 2017 Valve Corporation
-; Copyright (c) 2017 LunarG, Inc.
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-; http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-; See the License for the specific language governing permissions and
-; limitations under the License.
-;
-; Author: Lenny Komow <lenny@lunarg.com>
-;
-
-; This code is used to pass on device (including physical device) extensions through the call chain. It must do this without
-; creating a stack frame, because the actual parameters of the call are not known. Since the first parameter is known to be a
-; VkPhysicalDevice or a dispatchable object it can unwrap the object, possibly overwriting the wrapped physical device, and then
-; jump to the next function in the call chain
-
-; Codegen defines a number of values, chiefly offsets of members within structs and sizes of data types within gen_defines.asm.
-; Struct member offsets are defined in the format "XX_OFFSET_YY" where XX indicates the member within the struct and YY indicates
-; the struct type that it is a member of. Data type sizes are defined in the format "XX_SIZE" where XX indicates the data type.
-INCLUDE gen_defines.asm
-
-; 64-bit values and macro
-IFDEF rax
-
-PhysDevExtTramp macro num:req
-public vkPhysDevExtTramp&num&
-vkPhysDevExtTramp&num&:
- mov rax, qword ptr [rcx] ; Dereference the wrapped VkPhysicalDevice to get the dispatch table in rax
- mov rcx, qword ptr [rcx + PHYS_DEV_OFFSET_PHYS_DEV_TRAMP] ; Load the unwrapped VkPhysicalDevice into rcx
- jmp qword ptr [rax + (PHYS_DEV_OFFSET_INST_DISPATCH + (PTR_SIZE * num))] ; Jump to the next function in the chain, preserving the args in other registers
-endm
-
-PhysDevExtTermin macro num
-public vkPhysDevExtTermin&num&
-vkPhysDevExtTermin&num&:
- mov rax, qword ptr [rcx + ICD_TERM_OFFSET_PHYS_DEV_TERM] ; Store the loader_icd_term* in rax
- cmp qword ptr [rax + (DISPATCH_OFFSET_ICD_TERM + (PTR_SIZE * num))], 0 ; Check if the next function in the chain is NULL
- je terminError&num& ; Go to the error section if it is NULL
- mov rcx, qword ptr [rcx + PHYS_DEV_OFFSET_PHYS_DEV_TERM] ; Load the unwrapped VkPhysicalDevice into the first arg
- jmp qword ptr [rax + (DISPATCH_OFFSET_ICD_TERM + (PTR_SIZE * num))] ; Jump to the next function in the chain
-terminError&num&:
- sub rsp, 56 ; Create the stack frame
- mov rcx, qword ptr [rax + INSTANCE_OFFSET_ICD_TERM] ; Load the loader_instance into rcx (first arg)
- mov rax, qword ptr [rcx + (HASH_OFFSET_INSTANCE + (HASH_SIZE * num) + FUNC_NAME_OFFSET_HASH)] ; Load the func name into rax
- lea r9, termin_error_string ; Load the error string into r9 (fourth arg)
- xor r8d, r8d ; Set r8 to zero (third arg)
- mov qword ptr [rsp + 32], rax ; Move the func name onto the stack (fifth arg)
- lea edx, [r8 + VK_DEBUG_REPORT_ERROR_BIT_EXT] ; Write the error logging bit to rdx (second arg)
- call loader_log ; Log the error message before we crash
- add rsp, 56 ; Clean up the stack frame
- mov rax, 0
- jmp rax ; Crash intentionally by jumping to address zero
-endm
-
-DevExtTramp macro num
-public vkdev_ext&num&
-vkdev_ext&num&:
- mov rax, qword ptr [rcx] ; Dereference the handle to get the dispatch table
- jmp qword ptr [rax + (EXT_OFFSET_DEVICE_DISPATCH + (PTR_SIZE * num))] ; Jump to the appropriate call chain
-endm
-
-; 32-bit values and macro
-ELSE
-
-PhysDevExtTramp macro num
-public _vkPhysDevExtTramp&num&@4
-_vkPhysDevExtTramp&num&@4:
- mov eax, dword ptr [esp + 4] ; Load the wrapped VkPhysicalDevice into eax
- mov ecx, [eax + PHYS_DEV_OFFSET_PHYS_DEV_TRAMP] ; Load the unwrapped VkPhysicalDevice into ecx
- mov [esp + 4], ecx ; Overwrite the wrapped VkPhysicalDevice with the unwrapped one (on the stack)
- mov eax, [eax] ; Dereference the wrapped VkPhysicalDevice to get the dispatch table in eax
- jmp dword ptr [eax + (PHYS_DEV_OFFSET_INST_DISPATCH + (PTR_SIZE * num))] ; Jump to the next function in the chain, preserving the args on the stack
-endm
-
-PhysDevExtTermin macro num
-public _vkPhysDevExtTermin&num&@4
-_vkPhysDevExtTermin&num&@4:
- mov ecx, dword ptr [esp + 4] ; Move the wrapped VkPhysicalDevice into ecx
- mov eax, dword ptr [ecx + ICD_TERM_OFFSET_PHYS_DEV_TERM] ; Store the loader_icd_term* in eax
- cmp dword ptr [eax + (DISPATCH_OFFSET_ICD_TERM + (PTR_SIZE * num))], 0 ; Check if the next function in the chain is NULL
- je terminError&num& ; Go to the error section if it is NULL
- mov ecx, dword ptr [ecx + PHYS_DEV_OFFSET_PHYS_DEV_TERM] ; Unwrap the VkPhysicalDevice in ecx
- mov dword ptr [esp + 4], ecx ; Copy the unwrapped VkPhysicalDevice into the first arg
- jmp dword ptr [eax + (DISPATCH_OFFSET_ICD_TERM + (PTR_SIZE * num))] ; Jump to the next function in the chain
-terminError&num&:
- mov eax, dword ptr [eax + INSTANCE_OFFSET_ICD_TERM] ; Load the loader_instance into eax
- push dword ptr [eax + (HASH_OFFSET_INSTANCE + (HASH_SIZE * num) + FUNC_NAME_OFFSET_HASH)] ; Push the func name (fifth arg)
- push offset termin_error_string ; Push the error string (fourth arg)
- push 0 ; Push zero (third arg)
- push VK_DEBUG_REPORT_ERROR_BIT_EXT ; Push the error logging bit (second arg)
- push eax ; Push the loader_instance (first arg)
- call _loader_log ; Log the error message before we crash
- add esp, 20 ; Clean up the args
- mov eax, 0
- jmp eax ; Crash intentionally by jumping to address zero
-endm
-
-DevExtTramp macro num
-public _vkdev_ext&num&@4
-_vkdev_ext&num&@4:
- mov eax, dword ptr [esp + 4] ; Dereference the handle to get the dispatch table
- jmp dword ptr [eax + (EXT_OFFSET_DEVICE_DISPATCH + (PTR_SIZE * num))] ; Jump to the appropriate call chain
-endm
-
-; This is also needed for 32-bit only
-.model flat
-
-ENDIF
-
-.const
- termin_error_string db 'Extension %s not supported for this physical device', 0
-
-.code
-
-IFDEF rax
-extrn loader_log:near
-ELSE
-extrn _loader_log:near
-ENDIF
-
- PhysDevExtTramp 0
- PhysDevExtTramp 1
- PhysDevExtTramp 2
- PhysDevExtTramp 3
- PhysDevExtTramp 4
- PhysDevExtTramp 5
- PhysDevExtTramp 6
- PhysDevExtTramp 7
- PhysDevExtTramp 8
- PhysDevExtTramp 9
- PhysDevExtTramp 10
- PhysDevExtTramp 11
- PhysDevExtTramp 12
- PhysDevExtTramp 13
- PhysDevExtTramp 14
- PhysDevExtTramp 15
- PhysDevExtTramp 16
- PhysDevExtTramp 17
- PhysDevExtTramp 18
- PhysDevExtTramp 19
- PhysDevExtTramp 20
- PhysDevExtTramp 21
- PhysDevExtTramp 22
- PhysDevExtTramp 23
- PhysDevExtTramp 24
- PhysDevExtTramp 25
- PhysDevExtTramp 26
- PhysDevExtTramp 27
- PhysDevExtTramp 28
- PhysDevExtTramp 29
- PhysDevExtTramp 30
- PhysDevExtTramp 31
- PhysDevExtTramp 32
- PhysDevExtTramp 33
- PhysDevExtTramp 34
- PhysDevExtTramp 35
- PhysDevExtTramp 36
- PhysDevExtTramp 37
- PhysDevExtTramp 38
- PhysDevExtTramp 39
- PhysDevExtTramp 40
- PhysDevExtTramp 41
- PhysDevExtTramp 42
- PhysDevExtTramp 43
- PhysDevExtTramp 44
- PhysDevExtTramp 45
- PhysDevExtTramp 46
- PhysDevExtTramp 47
- PhysDevExtTramp 48
- PhysDevExtTramp 49
- PhysDevExtTramp 50
- PhysDevExtTramp 51
- PhysDevExtTramp 52
- PhysDevExtTramp 53
- PhysDevExtTramp 54
- PhysDevExtTramp 55
- PhysDevExtTramp 56
- PhysDevExtTramp 57
- PhysDevExtTramp 58
- PhysDevExtTramp 59
- PhysDevExtTramp 60
- PhysDevExtTramp 61
- PhysDevExtTramp 62
- PhysDevExtTramp 63
- PhysDevExtTramp 64
- PhysDevExtTramp 65
- PhysDevExtTramp 66
- PhysDevExtTramp 67
- PhysDevExtTramp 68
- PhysDevExtTramp 69
- PhysDevExtTramp 70
- PhysDevExtTramp 71
- PhysDevExtTramp 72
- PhysDevExtTramp 73
- PhysDevExtTramp 74
- PhysDevExtTramp 75
- PhysDevExtTramp 76
- PhysDevExtTramp 77
- PhysDevExtTramp 78
- PhysDevExtTramp 79
- PhysDevExtTramp 80
- PhysDevExtTramp 81
- PhysDevExtTramp 82
- PhysDevExtTramp 83
- PhysDevExtTramp 84
- PhysDevExtTramp 85
- PhysDevExtTramp 86
- PhysDevExtTramp 87
- PhysDevExtTramp 88
- PhysDevExtTramp 89
- PhysDevExtTramp 90
- PhysDevExtTramp 91
- PhysDevExtTramp 92
- PhysDevExtTramp 93
- PhysDevExtTramp 94
- PhysDevExtTramp 95
- PhysDevExtTramp 96
- PhysDevExtTramp 97
- PhysDevExtTramp 98
- PhysDevExtTramp 99
- PhysDevExtTramp 100
- PhysDevExtTramp 101
- PhysDevExtTramp 102
- PhysDevExtTramp 103
- PhysDevExtTramp 104
- PhysDevExtTramp 105
- PhysDevExtTramp 106
- PhysDevExtTramp 107
- PhysDevExtTramp 108
- PhysDevExtTramp 109
- PhysDevExtTramp 110
- PhysDevExtTramp 111
- PhysDevExtTramp 112
- PhysDevExtTramp 113
- PhysDevExtTramp 114
- PhysDevExtTramp 115
- PhysDevExtTramp 116
- PhysDevExtTramp 117
- PhysDevExtTramp 118
- PhysDevExtTramp 119
- PhysDevExtTramp 120
- PhysDevExtTramp 121
- PhysDevExtTramp 122
- PhysDevExtTramp 123
- PhysDevExtTramp 124
- PhysDevExtTramp 125
- PhysDevExtTramp 126
- PhysDevExtTramp 127
- PhysDevExtTramp 128
- PhysDevExtTramp 129
- PhysDevExtTramp 130
- PhysDevExtTramp 131
- PhysDevExtTramp 132
- PhysDevExtTramp 133
- PhysDevExtTramp 134
- PhysDevExtTramp 135
- PhysDevExtTramp 136
- PhysDevExtTramp 137
- PhysDevExtTramp 138
- PhysDevExtTramp 139
- PhysDevExtTramp 140
- PhysDevExtTramp 141
- PhysDevExtTramp 142
- PhysDevExtTramp 143
- PhysDevExtTramp 144
- PhysDevExtTramp 145
- PhysDevExtTramp 146
- PhysDevExtTramp 147
- PhysDevExtTramp 148
- PhysDevExtTramp 149
- PhysDevExtTramp 150
- PhysDevExtTramp 151
- PhysDevExtTramp 152
- PhysDevExtTramp 153
- PhysDevExtTramp 154
- PhysDevExtTramp 155
- PhysDevExtTramp 156
- PhysDevExtTramp 157
- PhysDevExtTramp 158
- PhysDevExtTramp 159
- PhysDevExtTramp 160
- PhysDevExtTramp 161
- PhysDevExtTramp 162
- PhysDevExtTramp 163
- PhysDevExtTramp 164
- PhysDevExtTramp 165
- PhysDevExtTramp 166
- PhysDevExtTramp 167
- PhysDevExtTramp 168
- PhysDevExtTramp 169
- PhysDevExtTramp 170
- PhysDevExtTramp 171
- PhysDevExtTramp 172
- PhysDevExtTramp 173
- PhysDevExtTramp 174
- PhysDevExtTramp 175
- PhysDevExtTramp 176
- PhysDevExtTramp 177
- PhysDevExtTramp 178
- PhysDevExtTramp 179
- PhysDevExtTramp 180
- PhysDevExtTramp 181
- PhysDevExtTramp 182
- PhysDevExtTramp 183
- PhysDevExtTramp 184
- PhysDevExtTramp 185
- PhysDevExtTramp 186
- PhysDevExtTramp 187
- PhysDevExtTramp 188
- PhysDevExtTramp 189
- PhysDevExtTramp 190
- PhysDevExtTramp 191
- PhysDevExtTramp 192
- PhysDevExtTramp 193
- PhysDevExtTramp 194
- PhysDevExtTramp 195
- PhysDevExtTramp 196
- PhysDevExtTramp 197
- PhysDevExtTramp 198
- PhysDevExtTramp 199
- PhysDevExtTramp 200
- PhysDevExtTramp 201
- PhysDevExtTramp 202
- PhysDevExtTramp 203
- PhysDevExtTramp 204
- PhysDevExtTramp 205
- PhysDevExtTramp 206
- PhysDevExtTramp 207
- PhysDevExtTramp 208
- PhysDevExtTramp 209
- PhysDevExtTramp 210
- PhysDevExtTramp 211
- PhysDevExtTramp 212
- PhysDevExtTramp 213
- PhysDevExtTramp 214
- PhysDevExtTramp 215
- PhysDevExtTramp 216
- PhysDevExtTramp 217
- PhysDevExtTramp 218
- PhysDevExtTramp 219
- PhysDevExtTramp 220
- PhysDevExtTramp 221
- PhysDevExtTramp 222
- PhysDevExtTramp 223
- PhysDevExtTramp 224
- PhysDevExtTramp 225
- PhysDevExtTramp 226
- PhysDevExtTramp 227
- PhysDevExtTramp 228
- PhysDevExtTramp 229
- PhysDevExtTramp 230
- PhysDevExtTramp 231
- PhysDevExtTramp 232
- PhysDevExtTramp 233
- PhysDevExtTramp 234
- PhysDevExtTramp 235
- PhysDevExtTramp 236
- PhysDevExtTramp 237
- PhysDevExtTramp 238
- PhysDevExtTramp 239
- PhysDevExtTramp 240
- PhysDevExtTramp 241
- PhysDevExtTramp 242
- PhysDevExtTramp 243
- PhysDevExtTramp 244
- PhysDevExtTramp 245
- PhysDevExtTramp 246
- PhysDevExtTramp 247
- PhysDevExtTramp 248
- PhysDevExtTramp 249
-
- PhysDevExtTermin 0
- PhysDevExtTermin 1
- PhysDevExtTermin 2
- PhysDevExtTermin 3
- PhysDevExtTermin 4
- PhysDevExtTermin 5
- PhysDevExtTermin 6
- PhysDevExtTermin 7
- PhysDevExtTermin 8
- PhysDevExtTermin 9
- PhysDevExtTermin 10
- PhysDevExtTermin 11
- PhysDevExtTermin 12
- PhysDevExtTermin 13
- PhysDevExtTermin 14
- PhysDevExtTermin 15
- PhysDevExtTermin 16
- PhysDevExtTermin 17
- PhysDevExtTermin 18
- PhysDevExtTermin 19
- PhysDevExtTermin 20
- PhysDevExtTermin 21
- PhysDevExtTermin 22
- PhysDevExtTermin 23
- PhysDevExtTermin 24
- PhysDevExtTermin 25
- PhysDevExtTermin 26
- PhysDevExtTermin 27
- PhysDevExtTermin 28
- PhysDevExtTermin 29
- PhysDevExtTermin 30
- PhysDevExtTermin 31
- PhysDevExtTermin 32
- PhysDevExtTermin 33
- PhysDevExtTermin 34
- PhysDevExtTermin 35
- PhysDevExtTermin 36
- PhysDevExtTermin 37
- PhysDevExtTermin 38
- PhysDevExtTermin 39
- PhysDevExtTermin 40
- PhysDevExtTermin 41
- PhysDevExtTermin 42
- PhysDevExtTermin 43
- PhysDevExtTermin 44
- PhysDevExtTermin 45
- PhysDevExtTermin 46
- PhysDevExtTermin 47
- PhysDevExtTermin 48
- PhysDevExtTermin 49
- PhysDevExtTermin 50
- PhysDevExtTermin 51
- PhysDevExtTermin 52
- PhysDevExtTermin 53
- PhysDevExtTermin 54
- PhysDevExtTermin 55
- PhysDevExtTermin 56
- PhysDevExtTermin 57
- PhysDevExtTermin 58
- PhysDevExtTermin 59
- PhysDevExtTermin 60
- PhysDevExtTermin 61
- PhysDevExtTermin 62
- PhysDevExtTermin 63
- PhysDevExtTermin 64
- PhysDevExtTermin 65
- PhysDevExtTermin 66
- PhysDevExtTermin 67
- PhysDevExtTermin 68
- PhysDevExtTermin 69
- PhysDevExtTermin 70
- PhysDevExtTermin 71
- PhysDevExtTermin 72
- PhysDevExtTermin 73
- PhysDevExtTermin 74
- PhysDevExtTermin 75
- PhysDevExtTermin 76
- PhysDevExtTermin 77
- PhysDevExtTermin 78
- PhysDevExtTermin 79
- PhysDevExtTermin 80
- PhysDevExtTermin 81
- PhysDevExtTermin 82
- PhysDevExtTermin 83
- PhysDevExtTermin 84
- PhysDevExtTermin 85
- PhysDevExtTermin 86
- PhysDevExtTermin 87
- PhysDevExtTermin 88
- PhysDevExtTermin 89
- PhysDevExtTermin 90
- PhysDevExtTermin 91
- PhysDevExtTermin 92
- PhysDevExtTermin 93
- PhysDevExtTermin 94
- PhysDevExtTermin 95
- PhysDevExtTermin 96
- PhysDevExtTermin 97
- PhysDevExtTermin 98
- PhysDevExtTermin 99
- PhysDevExtTermin 100
- PhysDevExtTermin 101
- PhysDevExtTermin 102
- PhysDevExtTermin 103
- PhysDevExtTermin 104
- PhysDevExtTermin 105
- PhysDevExtTermin 106
- PhysDevExtTermin 107
- PhysDevExtTermin 108
- PhysDevExtTermin 109
- PhysDevExtTermin 110
- PhysDevExtTermin 111
- PhysDevExtTermin 112
- PhysDevExtTermin 113
- PhysDevExtTermin 114
- PhysDevExtTermin 115
- PhysDevExtTermin 116
- PhysDevExtTermin 117
- PhysDevExtTermin 118
- PhysDevExtTermin 119
- PhysDevExtTermin 120
- PhysDevExtTermin 121
- PhysDevExtTermin 122
- PhysDevExtTermin 123
- PhysDevExtTermin 124
- PhysDevExtTermin 125
- PhysDevExtTermin 126
- PhysDevExtTermin 127
- PhysDevExtTermin 128
- PhysDevExtTermin 129
- PhysDevExtTermin 130
- PhysDevExtTermin 131
- PhysDevExtTermin 132
- PhysDevExtTermin 133
- PhysDevExtTermin 134
- PhysDevExtTermin 135
- PhysDevExtTermin 136
- PhysDevExtTermin 137
- PhysDevExtTermin 138
- PhysDevExtTermin 139
- PhysDevExtTermin 140
- PhysDevExtTermin 141
- PhysDevExtTermin 142
- PhysDevExtTermin 143
- PhysDevExtTermin 144
- PhysDevExtTermin 145
- PhysDevExtTermin 146
- PhysDevExtTermin 147
- PhysDevExtTermin 148
- PhysDevExtTermin 149
- PhysDevExtTermin 150
- PhysDevExtTermin 151
- PhysDevExtTermin 152
- PhysDevExtTermin 153
- PhysDevExtTermin 154
- PhysDevExtTermin 155
- PhysDevExtTermin 156
- PhysDevExtTermin 157
- PhysDevExtTermin 158
- PhysDevExtTermin 159
- PhysDevExtTermin 160
- PhysDevExtTermin 161
- PhysDevExtTermin 162
- PhysDevExtTermin 163
- PhysDevExtTermin 164
- PhysDevExtTermin 165
- PhysDevExtTermin 166
- PhysDevExtTermin 167
- PhysDevExtTermin 168
- PhysDevExtTermin 169
- PhysDevExtTermin 170
- PhysDevExtTermin 171
- PhysDevExtTermin 172
- PhysDevExtTermin 173
- PhysDevExtTermin 174
- PhysDevExtTermin 175
- PhysDevExtTermin 176
- PhysDevExtTermin 177
- PhysDevExtTermin 178
- PhysDevExtTermin 179
- PhysDevExtTermin 180
- PhysDevExtTermin 181
- PhysDevExtTermin 182
- PhysDevExtTermin 183
- PhysDevExtTermin 184
- PhysDevExtTermin 185
- PhysDevExtTermin 186
- PhysDevExtTermin 187
- PhysDevExtTermin 188
- PhysDevExtTermin 189
- PhysDevExtTermin 190
- PhysDevExtTermin 191
- PhysDevExtTermin 192
- PhysDevExtTermin 193
- PhysDevExtTermin 194
- PhysDevExtTermin 195
- PhysDevExtTermin 196
- PhysDevExtTermin 197
- PhysDevExtTermin 198
- PhysDevExtTermin 199
- PhysDevExtTermin 200
- PhysDevExtTermin 201
- PhysDevExtTermin 202
- PhysDevExtTermin 203
- PhysDevExtTermin 204
- PhysDevExtTermin 205
- PhysDevExtTermin 206
- PhysDevExtTermin 207
- PhysDevExtTermin 208
- PhysDevExtTermin 209
- PhysDevExtTermin 210
- PhysDevExtTermin 211
- PhysDevExtTermin 212
- PhysDevExtTermin 213
- PhysDevExtTermin 214
- PhysDevExtTermin 215
- PhysDevExtTermin 216
- PhysDevExtTermin 217
- PhysDevExtTermin 218
- PhysDevExtTermin 219
- PhysDevExtTermin 220
- PhysDevExtTermin 221
- PhysDevExtTermin 222
- PhysDevExtTermin 223
- PhysDevExtTermin 224
- PhysDevExtTermin 225
- PhysDevExtTermin 226
- PhysDevExtTermin 227
- PhysDevExtTermin 228
- PhysDevExtTermin 229
- PhysDevExtTermin 230
- PhysDevExtTermin 231
- PhysDevExtTermin 232
- PhysDevExtTermin 233
- PhysDevExtTermin 234
- PhysDevExtTermin 235
- PhysDevExtTermin 236
- PhysDevExtTermin 237
- PhysDevExtTermin 238
- PhysDevExtTermin 239
- PhysDevExtTermin 240
- PhysDevExtTermin 241
- PhysDevExtTermin 242
- PhysDevExtTermin 243
- PhysDevExtTermin 244
- PhysDevExtTermin 245
- PhysDevExtTermin 246
- PhysDevExtTermin 247
- PhysDevExtTermin 248
- PhysDevExtTermin 249
-
- DevExtTramp 0
- DevExtTramp 1
- DevExtTramp 2
- DevExtTramp 3
- DevExtTramp 4
- DevExtTramp 5
- DevExtTramp 6
- DevExtTramp 7
- DevExtTramp 8
- DevExtTramp 9
- DevExtTramp 10
- DevExtTramp 11
- DevExtTramp 12
- DevExtTramp 13
- DevExtTramp 14
- DevExtTramp 15
- DevExtTramp 16
- DevExtTramp 17
- DevExtTramp 18
- DevExtTramp 19
- DevExtTramp 20
- DevExtTramp 21
- DevExtTramp 22
- DevExtTramp 23
- DevExtTramp 24
- DevExtTramp 25
- DevExtTramp 26
- DevExtTramp 27
- DevExtTramp 28
- DevExtTramp 29
- DevExtTramp 30
- DevExtTramp 31
- DevExtTramp 32
- DevExtTramp 33
- DevExtTramp 34
- DevExtTramp 35
- DevExtTramp 36
- DevExtTramp 37
- DevExtTramp 38
- DevExtTramp 39
- DevExtTramp 40
- DevExtTramp 41
- DevExtTramp 42
- DevExtTramp 43
- DevExtTramp 44
- DevExtTramp 45
- DevExtTramp 46
- DevExtTramp 47
- DevExtTramp 48
- DevExtTramp 49
- DevExtTramp 50
- DevExtTramp 51
- DevExtTramp 52
- DevExtTramp 53
- DevExtTramp 54
- DevExtTramp 55
- DevExtTramp 56
- DevExtTramp 57
- DevExtTramp 58
- DevExtTramp 59
- DevExtTramp 60
- DevExtTramp 61
- DevExtTramp 62
- DevExtTramp 63
- DevExtTramp 64
- DevExtTramp 65
- DevExtTramp 66
- DevExtTramp 67
- DevExtTramp 68
- DevExtTramp 69
- DevExtTramp 70
- DevExtTramp 71
- DevExtTramp 72
- DevExtTramp 73
- DevExtTramp 74
- DevExtTramp 75
- DevExtTramp 76
- DevExtTramp 77
- DevExtTramp 78
- DevExtTramp 79
- DevExtTramp 80
- DevExtTramp 81
- DevExtTramp 82
- DevExtTramp 83
- DevExtTramp 84
- DevExtTramp 85
- DevExtTramp 86
- DevExtTramp 87
- DevExtTramp 88
- DevExtTramp 89
- DevExtTramp 90
- DevExtTramp 91
- DevExtTramp 92
- DevExtTramp 93
- DevExtTramp 94
- DevExtTramp 95
- DevExtTramp 96
- DevExtTramp 97
- DevExtTramp 98
- DevExtTramp 99
- DevExtTramp 100
- DevExtTramp 101
- DevExtTramp 102
- DevExtTramp 103
- DevExtTramp 104
- DevExtTramp 105
- DevExtTramp 106
- DevExtTramp 107
- DevExtTramp 108
- DevExtTramp 109
- DevExtTramp 110
- DevExtTramp 111
- DevExtTramp 112
- DevExtTramp 113
- DevExtTramp 114
- DevExtTramp 115
- DevExtTramp 116
- DevExtTramp 117
- DevExtTramp 118
- DevExtTramp 119
- DevExtTramp 120
- DevExtTramp 121
- DevExtTramp 122
- DevExtTramp 123
- DevExtTramp 124
- DevExtTramp 125
- DevExtTramp 126
- DevExtTramp 127
- DevExtTramp 128
- DevExtTramp 129
- DevExtTramp 130
- DevExtTramp 131
- DevExtTramp 132
- DevExtTramp 133
- DevExtTramp 134
- DevExtTramp 135
- DevExtTramp 136
- DevExtTramp 137
- DevExtTramp 138
- DevExtTramp 139
- DevExtTramp 140
- DevExtTramp 141
- DevExtTramp 142
- DevExtTramp 143
- DevExtTramp 144
- DevExtTramp 145
- DevExtTramp 146
- DevExtTramp 147
- DevExtTramp 148
- DevExtTramp 149
- DevExtTramp 150
- DevExtTramp 151
- DevExtTramp 152
- DevExtTramp 153
- DevExtTramp 154
- DevExtTramp 155
- DevExtTramp 156
- DevExtTramp 157
- DevExtTramp 158
- DevExtTramp 159
- DevExtTramp 160
- DevExtTramp 161
- DevExtTramp 162
- DevExtTramp 163
- DevExtTramp 164
- DevExtTramp 165
- DevExtTramp 166
- DevExtTramp 167
- DevExtTramp 168
- DevExtTramp 169
- DevExtTramp 170
- DevExtTramp 171
- DevExtTramp 172
- DevExtTramp 173
- DevExtTramp 174
- DevExtTramp 175
- DevExtTramp 176
- DevExtTramp 177
- DevExtTramp 178
- DevExtTramp 179
- DevExtTramp 180
- DevExtTramp 181
- DevExtTramp 182
- DevExtTramp 183
- DevExtTramp 184
- DevExtTramp 185
- DevExtTramp 186
- DevExtTramp 187
- DevExtTramp 188
- DevExtTramp 189
- DevExtTramp 190
- DevExtTramp 191
- DevExtTramp 192
- DevExtTramp 193
- DevExtTramp 194
- DevExtTramp 195
- DevExtTramp 196
- DevExtTramp 197
- DevExtTramp 198
- DevExtTramp 199
- DevExtTramp 200
- DevExtTramp 201
- DevExtTramp 202
- DevExtTramp 203
- DevExtTramp 204
- DevExtTramp 205
- DevExtTramp 206
- DevExtTramp 207
- DevExtTramp 208
- DevExtTramp 209
- DevExtTramp 210
- DevExtTramp 211
- DevExtTramp 212
- DevExtTramp 213
- DevExtTramp 214
- DevExtTramp 215
- DevExtTramp 216
- DevExtTramp 217
- DevExtTramp 218
- DevExtTramp 219
- DevExtTramp 220
- DevExtTramp 221
- DevExtTramp 222
- DevExtTramp 223
- DevExtTramp 224
- DevExtTramp 225
- DevExtTramp 226
- DevExtTramp 227
- DevExtTramp 228
- DevExtTramp 229
- DevExtTramp 230
- DevExtTramp 231
- DevExtTramp 232
- DevExtTramp 233
- DevExtTramp 234
- DevExtTramp 235
- DevExtTramp 236
- DevExtTramp 237
- DevExtTramp 238
- DevExtTramp 239
- DevExtTramp 240
- DevExtTramp 241
- DevExtTramp 242
- DevExtTramp 243
- DevExtTramp 244
- DevExtTramp 245
- DevExtTramp 246
- DevExtTramp 247
- DevExtTramp 248
- DevExtTramp 249
-
-end
diff --git a/thirdparty/vulkan/loader/vk_dispatch_table_helper.h b/thirdparty/vulkan/loader/vk_dispatch_table_helper.h
index d934798db4..386745a1e7 100644
--- a/thirdparty/vulkan/loader/vk_dispatch_table_helper.h
+++ b/thirdparty/vulkan/loader/vk_dispatch_table_helper.h
@@ -63,10 +63,10 @@ static VKAPI_ATTR void VKAPI_CALL StubCmdPushDescriptorSetWithTemplateKHR(VkComm
static VKAPI_ATTR VkResult VKAPI_CALL StubCreateDescriptorUpdateTemplateKHR(VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate) { return VK_SUCCESS; };
static VKAPI_ATTR void VKAPI_CALL StubDestroyDescriptorUpdateTemplateKHR(VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator) { };
static VKAPI_ATTR void VKAPI_CALL StubUpdateDescriptorSetWithTemplateKHR(VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData) { };
-static VKAPI_ATTR VkResult VKAPI_CALL StubCreateRenderPass2KHR(VkDevice device, const VkRenderPassCreateInfo2KHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass) { return VK_SUCCESS; };
-static VKAPI_ATTR void VKAPI_CALL StubCmdBeginRenderPass2KHR(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfoKHR* pSubpassBeginInfo) { };
-static VKAPI_ATTR void VKAPI_CALL StubCmdNextSubpass2KHR(VkCommandBuffer commandBuffer, const VkSubpassBeginInfoKHR* pSubpassBeginInfo, const VkSubpassEndInfoKHR* pSubpassEndInfo) { };
-static VKAPI_ATTR void VKAPI_CALL StubCmdEndRenderPass2KHR(VkCommandBuffer commandBuffer, const VkSubpassEndInfoKHR* pSubpassEndInfo) { };
+static VKAPI_ATTR VkResult VKAPI_CALL StubCreateRenderPass2KHR(VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass) { return VK_SUCCESS; };
+static VKAPI_ATTR void VKAPI_CALL StubCmdBeginRenderPass2KHR(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfo* pSubpassBeginInfo) { };
+static VKAPI_ATTR void VKAPI_CALL StubCmdNextSubpass2KHR(VkCommandBuffer commandBuffer, const VkSubpassBeginInfo* pSubpassBeginInfo, const VkSubpassEndInfo* pSubpassEndInfo) { };
+static VKAPI_ATTR void VKAPI_CALL StubCmdEndRenderPass2KHR(VkCommandBuffer commandBuffer, const VkSubpassEndInfo* pSubpassEndInfo) { };
static VKAPI_ATTR VkResult VKAPI_CALL StubGetSwapchainStatusKHR(VkDevice device, VkSwapchainKHR swapchain) { return VK_SUCCESS; };
#ifdef VK_USE_PLATFORM_WIN32_KHR
static VKAPI_ATTR VkResult VKAPI_CALL StubImportFenceWin32HandleKHR(VkDevice device, const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo) { return VK_SUCCESS; };
@@ -76,6 +76,8 @@ static VKAPI_ATTR VkResult VKAPI_CALL StubGetFenceWin32HandleKHR(VkDevice device
#endif // VK_USE_PLATFORM_WIN32_KHR
static VKAPI_ATTR VkResult VKAPI_CALL StubImportFenceFdKHR(VkDevice device, const VkImportFenceFdInfoKHR* pImportFenceFdInfo) { return VK_SUCCESS; };
static VKAPI_ATTR VkResult VKAPI_CALL StubGetFenceFdKHR(VkDevice device, const VkFenceGetFdInfoKHR* pGetFdInfo, int* pFd) { return VK_SUCCESS; };
+static VKAPI_ATTR VkResult VKAPI_CALL StubAcquireProfilingLockKHR(VkDevice device, const VkAcquireProfilingLockInfoKHR* pInfo) { return VK_SUCCESS; };
+static VKAPI_ATTR void VKAPI_CALL StubReleaseProfilingLockKHR(VkDevice device) { };
static VKAPI_ATTR void VKAPI_CALL StubGetImageMemoryRequirements2KHR(VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements) { };
static VKAPI_ATTR void VKAPI_CALL StubGetBufferMemoryRequirements2KHR(VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements) { };
static VKAPI_ATTR void VKAPI_CALL StubGetImageSparseMemoryRequirements2KHR(VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) { };
@@ -87,8 +89,11 @@ static VKAPI_ATTR void VKAPI_CALL StubGetDescriptorSetLayoutSupportKHR(VkDevice
static VKAPI_ATTR void VKAPI_CALL StubCmdDrawIndirectCountKHR(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride) { };
static VKAPI_ATTR void VKAPI_CALL StubCmdDrawIndexedIndirectCountKHR(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride) { };
static VKAPI_ATTR VkResult VKAPI_CALL StubGetSemaphoreCounterValueKHR(VkDevice device, VkSemaphore semaphore, uint64_t* pValue) { return VK_SUCCESS; };
-static VKAPI_ATTR VkResult VKAPI_CALL StubWaitSemaphoresKHR(VkDevice device, const VkSemaphoreWaitInfoKHR* pWaitInfo, uint64_t timeout) { return VK_SUCCESS; };
-static VKAPI_ATTR VkResult VKAPI_CALL StubSignalSemaphoreKHR(VkDevice device, const VkSemaphoreSignalInfoKHR* pSignalInfo) { return VK_SUCCESS; };
+static VKAPI_ATTR VkResult VKAPI_CALL StubWaitSemaphoresKHR(VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout) { return VK_SUCCESS; };
+static VKAPI_ATTR VkResult VKAPI_CALL StubSignalSemaphoreKHR(VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo) { return VK_SUCCESS; };
+static VKAPI_ATTR void VKAPI_CALL StubGetBufferDeviceAddressKHR(VkDevice device, const VkBufferDeviceAddressInfo* pInfo) { };
+static VKAPI_ATTR void VKAPI_CALL StubGetBufferOpaqueCaptureAddressKHR(VkDevice device, const VkBufferDeviceAddressInfo* pInfo) { };
+static VKAPI_ATTR void VKAPI_CALL StubGetDeviceMemoryOpaqueCaptureAddressKHR(VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo) { };
static VKAPI_ATTR VkResult VKAPI_CALL StubGetPipelineExecutablePropertiesKHR(VkDevice device, const VkPipelineInfoKHR* pPipelineInfo, uint32_t* pExecutableCount, VkPipelineExecutablePropertiesKHR* pProperties) { return VK_SUCCESS; };
static VKAPI_ATTR VkResult VKAPI_CALL StubGetPipelineExecutableStatisticsKHR(VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, uint32_t* pStatisticCount, VkPipelineExecutableStatisticKHR* pStatistics) { return VK_SUCCESS; };
static VKAPI_ATTR VkResult VKAPI_CALL StubGetPipelineExecutableInternalRepresentationsKHR(VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, uint32_t* pInternalRepresentationCount, VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations) { return VK_SUCCESS; };
@@ -175,7 +180,7 @@ static VKAPI_ATTR VkResult VKAPI_CALL StubReleasePerformanceConfigurationINTEL(V
static VKAPI_ATTR VkResult VKAPI_CALL StubQueueSetPerformanceConfigurationINTEL(VkQueue queue, VkPerformanceConfigurationINTEL configuration) { return VK_SUCCESS; };
static VKAPI_ATTR VkResult VKAPI_CALL StubGetPerformanceParameterINTEL(VkDevice device, VkPerformanceParameterTypeINTEL parameter, VkPerformanceValueINTEL* pValue) { return VK_SUCCESS; };
static VKAPI_ATTR void VKAPI_CALL StubSetLocalDimmingAMD(VkDevice device, VkSwapchainKHR swapChain, VkBool32 localDimmingEnable) { };
-static VKAPI_ATTR void VKAPI_CALL StubGetBufferDeviceAddressEXT(VkDevice device, const VkBufferDeviceAddressInfoEXT* pInfo) { };
+static VKAPI_ATTR void VKAPI_CALL StubGetBufferDeviceAddressEXT(VkDevice device, const VkBufferDeviceAddressInfo* pInfo) { };
#ifdef VK_USE_PLATFORM_WIN32_KHR
static VKAPI_ATTR VkResult VKAPI_CALL StubAcquireFullScreenExclusiveModeEXT(VkDevice device, VkSwapchainKHR swapchain) { return VK_SUCCESS; };
#endif // VK_USE_PLATFORM_WIN32_KHR
@@ -330,6 +335,19 @@ static inline void layer_init_device_dispatch_table(VkDevice device, VkLayerDisp
table->DestroyDescriptorUpdateTemplate = (PFN_vkDestroyDescriptorUpdateTemplate) gpa(device, "vkDestroyDescriptorUpdateTemplate");
table->UpdateDescriptorSetWithTemplate = (PFN_vkUpdateDescriptorSetWithTemplate) gpa(device, "vkUpdateDescriptorSetWithTemplate");
table->GetDescriptorSetLayoutSupport = (PFN_vkGetDescriptorSetLayoutSupport) gpa(device, "vkGetDescriptorSetLayoutSupport");
+ table->CmdDrawIndirectCount = (PFN_vkCmdDrawIndirectCount) gpa(device, "vkCmdDrawIndirectCount");
+ table->CmdDrawIndexedIndirectCount = (PFN_vkCmdDrawIndexedIndirectCount) gpa(device, "vkCmdDrawIndexedIndirectCount");
+ table->CreateRenderPass2 = (PFN_vkCreateRenderPass2) gpa(device, "vkCreateRenderPass2");
+ table->CmdBeginRenderPass2 = (PFN_vkCmdBeginRenderPass2) gpa(device, "vkCmdBeginRenderPass2");
+ table->CmdNextSubpass2 = (PFN_vkCmdNextSubpass2) gpa(device, "vkCmdNextSubpass2");
+ table->CmdEndRenderPass2 = (PFN_vkCmdEndRenderPass2) gpa(device, "vkCmdEndRenderPass2");
+ table->ResetQueryPool = (PFN_vkResetQueryPool) gpa(device, "vkResetQueryPool");
+ table->GetSemaphoreCounterValue = (PFN_vkGetSemaphoreCounterValue) gpa(device, "vkGetSemaphoreCounterValue");
+ table->WaitSemaphores = (PFN_vkWaitSemaphores) gpa(device, "vkWaitSemaphores");
+ table->SignalSemaphore = (PFN_vkSignalSemaphore) gpa(device, "vkSignalSemaphore");
+ table->GetBufferDeviceAddress = (PFN_vkGetBufferDeviceAddress) gpa(device, "vkGetBufferDeviceAddress");
+ table->GetBufferOpaqueCaptureAddress = (PFN_vkGetBufferOpaqueCaptureAddress) gpa(device, "vkGetBufferOpaqueCaptureAddress");
+ table->GetDeviceMemoryOpaqueCaptureAddress = (PFN_vkGetDeviceMemoryOpaqueCaptureAddress) gpa(device, "vkGetDeviceMemoryOpaqueCaptureAddress");
table->CreateSwapchainKHR = (PFN_vkCreateSwapchainKHR) gpa(device, "vkCreateSwapchainKHR");
if (table->CreateSwapchainKHR == nullptr) { table->CreateSwapchainKHR = (PFN_vkCreateSwapchainKHR)StubCreateSwapchainKHR; }
table->DestroySwapchainKHR = (PFN_vkDestroySwapchainKHR) gpa(device, "vkDestroySwapchainKHR");
@@ -412,6 +430,10 @@ static inline void layer_init_device_dispatch_table(VkDevice device, VkLayerDisp
if (table->ImportFenceFdKHR == nullptr) { table->ImportFenceFdKHR = (PFN_vkImportFenceFdKHR)StubImportFenceFdKHR; }
table->GetFenceFdKHR = (PFN_vkGetFenceFdKHR) gpa(device, "vkGetFenceFdKHR");
if (table->GetFenceFdKHR == nullptr) { table->GetFenceFdKHR = (PFN_vkGetFenceFdKHR)StubGetFenceFdKHR; }
+ table->AcquireProfilingLockKHR = (PFN_vkAcquireProfilingLockKHR) gpa(device, "vkAcquireProfilingLockKHR");
+ if (table->AcquireProfilingLockKHR == nullptr) { table->AcquireProfilingLockKHR = (PFN_vkAcquireProfilingLockKHR)StubAcquireProfilingLockKHR; }
+ table->ReleaseProfilingLockKHR = (PFN_vkReleaseProfilingLockKHR) gpa(device, "vkReleaseProfilingLockKHR");
+ if (table->ReleaseProfilingLockKHR == nullptr) { table->ReleaseProfilingLockKHR = (PFN_vkReleaseProfilingLockKHR)StubReleaseProfilingLockKHR; }
table->GetImageMemoryRequirements2KHR = (PFN_vkGetImageMemoryRequirements2KHR) gpa(device, "vkGetImageMemoryRequirements2KHR");
if (table->GetImageMemoryRequirements2KHR == nullptr) { table->GetImageMemoryRequirements2KHR = (PFN_vkGetImageMemoryRequirements2KHR)StubGetImageMemoryRequirements2KHR; }
table->GetBufferMemoryRequirements2KHR = (PFN_vkGetBufferMemoryRequirements2KHR) gpa(device, "vkGetBufferMemoryRequirements2KHR");
@@ -438,6 +460,12 @@ static inline void layer_init_device_dispatch_table(VkDevice device, VkLayerDisp
if (table->WaitSemaphoresKHR == nullptr) { table->WaitSemaphoresKHR = (PFN_vkWaitSemaphoresKHR)StubWaitSemaphoresKHR; }
table->SignalSemaphoreKHR = (PFN_vkSignalSemaphoreKHR) gpa(device, "vkSignalSemaphoreKHR");
if (table->SignalSemaphoreKHR == nullptr) { table->SignalSemaphoreKHR = (PFN_vkSignalSemaphoreKHR)StubSignalSemaphoreKHR; }
+ table->GetBufferDeviceAddressKHR = (PFN_vkGetBufferDeviceAddressKHR) gpa(device, "vkGetBufferDeviceAddressKHR");
+ if (table->GetBufferDeviceAddressKHR == nullptr) { table->GetBufferDeviceAddressKHR = (PFN_vkGetBufferDeviceAddressKHR)StubGetBufferDeviceAddressKHR; }
+ table->GetBufferOpaqueCaptureAddressKHR = (PFN_vkGetBufferOpaqueCaptureAddressKHR) gpa(device, "vkGetBufferOpaqueCaptureAddressKHR");
+ if (table->GetBufferOpaqueCaptureAddressKHR == nullptr) { table->GetBufferOpaqueCaptureAddressKHR = (PFN_vkGetBufferOpaqueCaptureAddressKHR)StubGetBufferOpaqueCaptureAddressKHR; }
+ table->GetDeviceMemoryOpaqueCaptureAddressKHR = (PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR) gpa(device, "vkGetDeviceMemoryOpaqueCaptureAddressKHR");
+ if (table->GetDeviceMemoryOpaqueCaptureAddressKHR == nullptr) { table->GetDeviceMemoryOpaqueCaptureAddressKHR = (PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR)StubGetDeviceMemoryOpaqueCaptureAddressKHR; }
table->GetPipelineExecutablePropertiesKHR = (PFN_vkGetPipelineExecutablePropertiesKHR) gpa(device, "vkGetPipelineExecutablePropertiesKHR");
if (table->GetPipelineExecutablePropertiesKHR == nullptr) { table->GetPipelineExecutablePropertiesKHR = (PFN_vkGetPipelineExecutablePropertiesKHR)StubGetPipelineExecutablePropertiesKHR; }
table->GetPipelineExecutableStatisticsKHR = (PFN_vkGetPipelineExecutableStatisticsKHR) gpa(device, "vkGetPipelineExecutableStatisticsKHR");
@@ -710,6 +738,8 @@ static inline void layer_init_instance_dispatch_table(VkInstance instance, VkLay
table->GetPhysicalDeviceExternalBufferPropertiesKHR = (PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR) gpa(instance, "vkGetPhysicalDeviceExternalBufferPropertiesKHR");
table->GetPhysicalDeviceExternalSemaphorePropertiesKHR = (PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR) gpa(instance, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR");
table->GetPhysicalDeviceExternalFencePropertiesKHR = (PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR) gpa(instance, "vkGetPhysicalDeviceExternalFencePropertiesKHR");
+ table->EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = (PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR) gpa(instance, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR");
+ table->GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = (PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR) gpa(instance, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR");
table->GetPhysicalDeviceSurfaceCapabilities2KHR = (PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR) gpa(instance, "vkGetPhysicalDeviceSurfaceCapabilities2KHR");
table->GetPhysicalDeviceSurfaceFormats2KHR = (PFN_vkGetPhysicalDeviceSurfaceFormats2KHR) gpa(instance, "vkGetPhysicalDeviceSurfaceFormats2KHR");
table->GetPhysicalDeviceDisplayProperties2KHR = (PFN_vkGetPhysicalDeviceDisplayProperties2KHR) gpa(instance, "vkGetPhysicalDeviceDisplayProperties2KHR");
@@ -752,6 +782,7 @@ static inline void layer_init_instance_dispatch_table(VkInstance instance, VkLay
#ifdef VK_USE_PLATFORM_METAL_EXT
table->CreateMetalSurfaceEXT = (PFN_vkCreateMetalSurfaceEXT) gpa(instance, "vkCreateMetalSurfaceEXT");
#endif // VK_USE_PLATFORM_METAL_EXT
+ table->GetPhysicalDeviceToolPropertiesEXT = (PFN_vkGetPhysicalDeviceToolPropertiesEXT) gpa(instance, "vkGetPhysicalDeviceToolPropertiesEXT");
table->GetPhysicalDeviceCooperativeMatrixPropertiesNV = (PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV) gpa(instance, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV");
table->GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = (PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV) gpa(instance, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV");
#ifdef VK_USE_PLATFORM_WIN32_KHR
diff --git a/thirdparty/vulkan/loader/vk_layer_dispatch_table.h b/thirdparty/vulkan/loader/vk_layer_dispatch_table.h
index 1f0342dc49..b919447e55 100644
--- a/thirdparty/vulkan/loader/vk_layer_dispatch_table.h
+++ b/thirdparty/vulkan/loader/vk_layer_dispatch_table.h
@@ -140,6 +140,10 @@ typedef struct VkLayerInstanceDispatchTable_ {
// ---- VK_KHR_external_fence_capabilities extension commands
PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR GetPhysicalDeviceExternalFencePropertiesKHR;
+ // ---- VK_KHR_performance_query extension commands
+ PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR;
+ PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR;
+
// ---- VK_KHR_get_surface_capabilities2 extension commands
PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR GetPhysicalDeviceSurfaceCapabilities2KHR;
PFN_vkGetPhysicalDeviceSurfaceFormats2KHR GetPhysicalDeviceSurfaceFormats2KHR;
@@ -216,6 +220,9 @@ typedef struct VkLayerInstanceDispatchTable_ {
PFN_vkCreateMetalSurfaceEXT CreateMetalSurfaceEXT;
#endif // VK_USE_PLATFORM_METAL_EXT
+ // ---- VK_EXT_tooling_info extension commands
+ PFN_vkGetPhysicalDeviceToolPropertiesEXT GetPhysicalDeviceToolPropertiesEXT;
+
// ---- VK_NV_cooperative_matrix extension commands
PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV GetPhysicalDeviceCooperativeMatrixPropertiesNV;
@@ -375,6 +382,21 @@ typedef struct VkLayerDispatchTable_ {
PFN_vkUpdateDescriptorSetWithTemplate UpdateDescriptorSetWithTemplate;
PFN_vkGetDescriptorSetLayoutSupport GetDescriptorSetLayoutSupport;
+ // ---- Core 1_2 commands
+ PFN_vkCmdDrawIndirectCount CmdDrawIndirectCount;
+ PFN_vkCmdDrawIndexedIndirectCount CmdDrawIndexedIndirectCount;
+ PFN_vkCreateRenderPass2 CreateRenderPass2;
+ PFN_vkCmdBeginRenderPass2 CmdBeginRenderPass2;
+ PFN_vkCmdNextSubpass2 CmdNextSubpass2;
+ PFN_vkCmdEndRenderPass2 CmdEndRenderPass2;
+ PFN_vkResetQueryPool ResetQueryPool;
+ PFN_vkGetSemaphoreCounterValue GetSemaphoreCounterValue;
+ PFN_vkWaitSemaphores WaitSemaphores;
+ PFN_vkSignalSemaphore SignalSemaphore;
+ PFN_vkGetBufferDeviceAddress GetBufferDeviceAddress;
+ PFN_vkGetBufferOpaqueCaptureAddress GetBufferOpaqueCaptureAddress;
+ PFN_vkGetDeviceMemoryOpaqueCaptureAddress GetDeviceMemoryOpaqueCaptureAddress;
+
// ---- VK_KHR_swapchain extension commands
PFN_vkCreateSwapchainKHR CreateSwapchainKHR;
PFN_vkDestroySwapchainKHR DestroySwapchainKHR;
@@ -450,6 +472,10 @@ typedef struct VkLayerDispatchTable_ {
PFN_vkImportFenceFdKHR ImportFenceFdKHR;
PFN_vkGetFenceFdKHR GetFenceFdKHR;
+ // ---- VK_KHR_performance_query extension commands
+ PFN_vkAcquireProfilingLockKHR AcquireProfilingLockKHR;
+ PFN_vkReleaseProfilingLockKHR ReleaseProfilingLockKHR;
+
// ---- VK_KHR_get_memory_requirements2 extension commands
PFN_vkGetImageMemoryRequirements2KHR GetImageMemoryRequirements2KHR;
PFN_vkGetBufferMemoryRequirements2KHR GetBufferMemoryRequirements2KHR;
@@ -475,6 +501,11 @@ typedef struct VkLayerDispatchTable_ {
PFN_vkWaitSemaphoresKHR WaitSemaphoresKHR;
PFN_vkSignalSemaphoreKHR SignalSemaphoreKHR;
+ // ---- VK_KHR_buffer_device_address extension commands
+ PFN_vkGetBufferDeviceAddressKHR GetBufferDeviceAddressKHR;
+ PFN_vkGetBufferOpaqueCaptureAddressKHR GetBufferOpaqueCaptureAddressKHR;
+ PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR GetDeviceMemoryOpaqueCaptureAddressKHR;
+
// ---- VK_KHR_pipeline_executable_properties extension commands
PFN_vkGetPipelineExecutablePropertiesKHR GetPipelineExecutablePropertiesKHR;
PFN_vkGetPipelineExecutableStatisticsKHR GetPipelineExecutableStatisticsKHR;
diff --git a/thirdparty/vulkan/loader/vk_loader_extensions.c b/thirdparty/vulkan/loader/vk_loader_extensions.c
index c7a55cf11a..542b8b4af4 100644
--- a/thirdparty/vulkan/loader/vk_loader_extensions.c
+++ b/thirdparty/vulkan/loader/vk_loader_extensions.c
@@ -172,6 +172,10 @@ VKAPI_ATTR bool VKAPI_CALL loader_icd_init_entries(struct loader_icd_term *icd_t
// ---- VK_KHR_external_fence_capabilities extension commands
LOOKUP_GIPA(GetPhysicalDeviceExternalFencePropertiesKHR, false);
+ // ---- VK_KHR_performance_query extension commands
+ LOOKUP_GIPA(EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, false);
+ LOOKUP_GIPA(GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, false);
+
// ---- VK_KHR_get_surface_capabilities2 extension commands
LOOKUP_GIPA(GetPhysicalDeviceSurfaceCapabilities2KHR, false);
LOOKUP_GIPA(GetPhysicalDeviceSurfaceFormats2KHR, false);
@@ -234,6 +238,12 @@ VKAPI_ATTR bool VKAPI_CALL loader_icd_init_entries(struct loader_icd_term *icd_t
// ---- VK_EXT_debug_utils extension commands
LOOKUP_GIPA(SetDebugUtilsObjectNameEXT, false);
LOOKUP_GIPA(SetDebugUtilsObjectTagEXT, false);
+ LOOKUP_GIPA(QueueBeginDebugUtilsLabelEXT, false);
+ LOOKUP_GIPA(QueueEndDebugUtilsLabelEXT, false);
+ LOOKUP_GIPA(QueueInsertDebugUtilsLabelEXT, false);
+ LOOKUP_GIPA(CmdBeginDebugUtilsLabelEXT, false);
+ LOOKUP_GIPA(CmdEndDebugUtilsLabelEXT, false);
+ LOOKUP_GIPA(CmdInsertDebugUtilsLabelEXT, false);
LOOKUP_GIPA(CreateDebugUtilsMessengerEXT, false);
LOOKUP_GIPA(DestroyDebugUtilsMessengerEXT, false);
LOOKUP_GIPA(SubmitDebugUtilsMessageEXT, false);
@@ -254,6 +264,9 @@ VKAPI_ATTR bool VKAPI_CALL loader_icd_init_entries(struct loader_icd_term *icd_t
LOOKUP_GIPA(CreateMetalSurfaceEXT, false);
#endif // VK_USE_PLATFORM_METAL_EXT
+ // ---- VK_EXT_tooling_info extension commands
+ LOOKUP_GIPA(GetPhysicalDeviceToolPropertiesEXT, false);
+
// ---- VK_NV_cooperative_matrix extension commands
LOOKUP_GIPA(GetPhysicalDeviceCooperativeMatrixPropertiesNV, false);
@@ -422,6 +435,21 @@ VKAPI_ATTR void VKAPI_CALL loader_init_device_dispatch_table(struct loader_dev_d
table->DestroyDescriptorUpdateTemplate = (PFN_vkDestroyDescriptorUpdateTemplate)gpa(dev, "vkDestroyDescriptorUpdateTemplate");
table->UpdateDescriptorSetWithTemplate = (PFN_vkUpdateDescriptorSetWithTemplate)gpa(dev, "vkUpdateDescriptorSetWithTemplate");
table->GetDescriptorSetLayoutSupport = (PFN_vkGetDescriptorSetLayoutSupport)gpa(dev, "vkGetDescriptorSetLayoutSupport");
+
+ // ---- Core 1_2 commands
+ table->CmdDrawIndirectCount = (PFN_vkCmdDrawIndirectCount)gpa(dev, "vkCmdDrawIndirectCount");
+ table->CmdDrawIndexedIndirectCount = (PFN_vkCmdDrawIndexedIndirectCount)gpa(dev, "vkCmdDrawIndexedIndirectCount");
+ table->CreateRenderPass2 = (PFN_vkCreateRenderPass2)gpa(dev, "vkCreateRenderPass2");
+ table->CmdBeginRenderPass2 = (PFN_vkCmdBeginRenderPass2)gpa(dev, "vkCmdBeginRenderPass2");
+ table->CmdNextSubpass2 = (PFN_vkCmdNextSubpass2)gpa(dev, "vkCmdNextSubpass2");
+ table->CmdEndRenderPass2 = (PFN_vkCmdEndRenderPass2)gpa(dev, "vkCmdEndRenderPass2");
+ table->ResetQueryPool = (PFN_vkResetQueryPool)gpa(dev, "vkResetQueryPool");
+ table->GetSemaphoreCounterValue = (PFN_vkGetSemaphoreCounterValue)gpa(dev, "vkGetSemaphoreCounterValue");
+ table->WaitSemaphores = (PFN_vkWaitSemaphores)gpa(dev, "vkWaitSemaphores");
+ table->SignalSemaphore = (PFN_vkSignalSemaphore)gpa(dev, "vkSignalSemaphore");
+ table->GetBufferDeviceAddress = (PFN_vkGetBufferDeviceAddress)gpa(dev, "vkGetBufferDeviceAddress");
+ table->GetBufferOpaqueCaptureAddress = (PFN_vkGetBufferOpaqueCaptureAddress)gpa(dev, "vkGetBufferOpaqueCaptureAddress");
+ table->GetDeviceMemoryOpaqueCaptureAddress = (PFN_vkGetDeviceMemoryOpaqueCaptureAddress)gpa(dev, "vkGetDeviceMemoryOpaqueCaptureAddress");
}
// Init Device function pointer dispatch table with extension commands
@@ -507,6 +535,10 @@ VKAPI_ATTR void VKAPI_CALL loader_init_device_extension_dispatch_table(struct lo
table->ImportFenceFdKHR = (PFN_vkImportFenceFdKHR)gdpa(dev, "vkImportFenceFdKHR");
table->GetFenceFdKHR = (PFN_vkGetFenceFdKHR)gdpa(dev, "vkGetFenceFdKHR");
+ // ---- VK_KHR_performance_query extension commands
+ table->AcquireProfilingLockKHR = (PFN_vkAcquireProfilingLockKHR)gdpa(dev, "vkAcquireProfilingLockKHR");
+ table->ReleaseProfilingLockKHR = (PFN_vkReleaseProfilingLockKHR)gdpa(dev, "vkReleaseProfilingLockKHR");
+
// ---- VK_KHR_get_memory_requirements2 extension commands
table->GetImageMemoryRequirements2KHR = (PFN_vkGetImageMemoryRequirements2KHR)gdpa(dev, "vkGetImageMemoryRequirements2KHR");
table->GetBufferMemoryRequirements2KHR = (PFN_vkGetBufferMemoryRequirements2KHR)gdpa(dev, "vkGetBufferMemoryRequirements2KHR");
@@ -532,6 +564,11 @@ VKAPI_ATTR void VKAPI_CALL loader_init_device_extension_dispatch_table(struct lo
table->WaitSemaphoresKHR = (PFN_vkWaitSemaphoresKHR)gdpa(dev, "vkWaitSemaphoresKHR");
table->SignalSemaphoreKHR = (PFN_vkSignalSemaphoreKHR)gdpa(dev, "vkSignalSemaphoreKHR");
+ // ---- VK_KHR_buffer_device_address extension commands
+ table->GetBufferDeviceAddressKHR = (PFN_vkGetBufferDeviceAddressKHR)gdpa(dev, "vkGetBufferDeviceAddressKHR");
+ table->GetBufferOpaqueCaptureAddressKHR = (PFN_vkGetBufferOpaqueCaptureAddressKHR)gdpa(dev, "vkGetBufferOpaqueCaptureAddressKHR");
+ table->GetDeviceMemoryOpaqueCaptureAddressKHR = (PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR)gdpa(dev, "vkGetDeviceMemoryOpaqueCaptureAddressKHR");
+
// ---- VK_KHR_pipeline_executable_properties extension commands
table->GetPipelineExecutablePropertiesKHR = (PFN_vkGetPipelineExecutablePropertiesKHR)gdpa(dev, "vkGetPipelineExecutablePropertiesKHR");
table->GetPipelineExecutableStatisticsKHR = (PFN_vkGetPipelineExecutableStatisticsKHR)gdpa(dev, "vkGetPipelineExecutableStatisticsKHR");
@@ -818,6 +855,10 @@ VKAPI_ATTR void VKAPI_CALL loader_init_instance_extension_dispatch_table(VkLayer
// ---- VK_KHR_external_fence_capabilities extension commands
table->GetPhysicalDeviceExternalFencePropertiesKHR = (PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR)gpa(inst, "vkGetPhysicalDeviceExternalFencePropertiesKHR");
+ // ---- VK_KHR_performance_query extension commands
+ table->EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = (PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR)gpa(inst, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR");
+ table->GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = (PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR)gpa(inst, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR");
+
// ---- VK_KHR_get_surface_capabilities2 extension commands
table->GetPhysicalDeviceSurfaceCapabilities2KHR = (PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR)gpa(inst, "vkGetPhysicalDeviceSurfaceCapabilities2KHR");
table->GetPhysicalDeviceSurfaceFormats2KHR = (PFN_vkGetPhysicalDeviceSurfaceFormats2KHR)gpa(inst, "vkGetPhysicalDeviceSurfaceFormats2KHR");
@@ -894,6 +935,9 @@ VKAPI_ATTR void VKAPI_CALL loader_init_instance_extension_dispatch_table(VkLayer
table->CreateMetalSurfaceEXT = (PFN_vkCreateMetalSurfaceEXT)gpa(inst, "vkCreateMetalSurfaceEXT");
#endif // VK_USE_PLATFORM_METAL_EXT
+ // ---- VK_EXT_tooling_info extension commands
+ table->GetPhysicalDeviceToolPropertiesEXT = (PFN_vkGetPhysicalDeviceToolPropertiesEXT)gpa(inst, "vkGetPhysicalDeviceToolPropertiesEXT");
+
// ---- VK_NV_cooperative_matrix extension commands
table->GetPhysicalDeviceCooperativeMatrixPropertiesNV = (PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV)gpa(inst, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV");
@@ -1056,6 +1100,21 @@ VKAPI_ATTR void* VKAPI_CALL loader_lookup_device_dispatch_table(const VkLayerDis
if (!strcmp(name, "UpdateDescriptorSetWithTemplate")) return (void *)table->UpdateDescriptorSetWithTemplate;
if (!strcmp(name, "GetDescriptorSetLayoutSupport")) return (void *)table->GetDescriptorSetLayoutSupport;
+ // ---- Core 1_2 commands
+ if (!strcmp(name, "CmdDrawIndirectCount")) return (void *)table->CmdDrawIndirectCount;
+ if (!strcmp(name, "CmdDrawIndexedIndirectCount")) return (void *)table->CmdDrawIndexedIndirectCount;
+ if (!strcmp(name, "CreateRenderPass2")) return (void *)table->CreateRenderPass2;
+ if (!strcmp(name, "CmdBeginRenderPass2")) return (void *)table->CmdBeginRenderPass2;
+ if (!strcmp(name, "CmdNextSubpass2")) return (void *)table->CmdNextSubpass2;
+ if (!strcmp(name, "CmdEndRenderPass2")) return (void *)table->CmdEndRenderPass2;
+ if (!strcmp(name, "ResetQueryPool")) return (void *)table->ResetQueryPool;
+ if (!strcmp(name, "GetSemaphoreCounterValue")) return (void *)table->GetSemaphoreCounterValue;
+ if (!strcmp(name, "WaitSemaphores")) return (void *)table->WaitSemaphores;
+ if (!strcmp(name, "SignalSemaphore")) return (void *)table->SignalSemaphore;
+ if (!strcmp(name, "GetBufferDeviceAddress")) return (void *)table->GetBufferDeviceAddress;
+ if (!strcmp(name, "GetBufferOpaqueCaptureAddress")) return (void *)table->GetBufferOpaqueCaptureAddress;
+ if (!strcmp(name, "GetDeviceMemoryOpaqueCaptureAddress")) return (void *)table->GetDeviceMemoryOpaqueCaptureAddress;
+
// ---- VK_KHR_swapchain extension commands
if (!strcmp(name, "CreateSwapchainKHR")) return (void *)table->CreateSwapchainKHR;
if (!strcmp(name, "DestroySwapchainKHR")) return (void *)table->DestroySwapchainKHR;
@@ -1131,6 +1190,10 @@ VKAPI_ATTR void* VKAPI_CALL loader_lookup_device_dispatch_table(const VkLayerDis
if (!strcmp(name, "ImportFenceFdKHR")) return (void *)table->ImportFenceFdKHR;
if (!strcmp(name, "GetFenceFdKHR")) return (void *)table->GetFenceFdKHR;
+ // ---- VK_KHR_performance_query extension commands
+ if (!strcmp(name, "AcquireProfilingLockKHR")) return (void *)table->AcquireProfilingLockKHR;
+ if (!strcmp(name, "ReleaseProfilingLockKHR")) return (void *)table->ReleaseProfilingLockKHR;
+
// ---- VK_KHR_get_memory_requirements2 extension commands
if (!strcmp(name, "GetImageMemoryRequirements2KHR")) return (void *)table->GetImageMemoryRequirements2KHR;
if (!strcmp(name, "GetBufferMemoryRequirements2KHR")) return (void *)table->GetBufferMemoryRequirements2KHR;
@@ -1156,6 +1219,11 @@ VKAPI_ATTR void* VKAPI_CALL loader_lookup_device_dispatch_table(const VkLayerDis
if (!strcmp(name, "WaitSemaphoresKHR")) return (void *)table->WaitSemaphoresKHR;
if (!strcmp(name, "SignalSemaphoreKHR")) return (void *)table->SignalSemaphoreKHR;
+ // ---- VK_KHR_buffer_device_address extension commands
+ if (!strcmp(name, "GetBufferDeviceAddressKHR")) return (void *)table->GetBufferDeviceAddressKHR;
+ if (!strcmp(name, "GetBufferOpaqueCaptureAddressKHR")) return (void *)table->GetBufferOpaqueCaptureAddressKHR;
+ if (!strcmp(name, "GetDeviceMemoryOpaqueCaptureAddressKHR")) return (void *)table->GetDeviceMemoryOpaqueCaptureAddressKHR;
+
// ---- VK_KHR_pipeline_executable_properties extension commands
if (!strcmp(name, "GetPipelineExecutablePropertiesKHR")) return (void *)table->GetPipelineExecutablePropertiesKHR;
if (!strcmp(name, "GetPipelineExecutableStatisticsKHR")) return (void *)table->GetPipelineExecutableStatisticsKHR;
@@ -1446,6 +1514,10 @@ VKAPI_ATTR void* VKAPI_CALL loader_lookup_instance_dispatch_table(const VkLayerI
// ---- VK_KHR_external_fence_capabilities extension commands
if (!strcmp(name, "GetPhysicalDeviceExternalFencePropertiesKHR")) return (void *)table->GetPhysicalDeviceExternalFencePropertiesKHR;
+ // ---- VK_KHR_performance_query extension commands
+ if (!strcmp(name, "EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR")) return (void *)table->EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR;
+ if (!strcmp(name, "GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR")) return (void *)table->GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR;
+
// ---- VK_KHR_get_surface_capabilities2 extension commands
if (!strcmp(name, "GetPhysicalDeviceSurfaceCapabilities2KHR")) return (void *)table->GetPhysicalDeviceSurfaceCapabilities2KHR;
if (!strcmp(name, "GetPhysicalDeviceSurfaceFormats2KHR")) return (void *)table->GetPhysicalDeviceSurfaceFormats2KHR;
@@ -1522,6 +1594,9 @@ VKAPI_ATTR void* VKAPI_CALL loader_lookup_instance_dispatch_table(const VkLayerI
if (!strcmp(name, "CreateMetalSurfaceEXT")) return (void *)table->CreateMetalSurfaceEXT;
#endif // VK_USE_PLATFORM_METAL_EXT
+ // ---- VK_EXT_tooling_info extension commands
+ if (!strcmp(name, "GetPhysicalDeviceToolPropertiesEXT")) return (void *)table->GetPhysicalDeviceToolPropertiesEXT;
+
// ---- VK_NV_cooperative_matrix extension commands
if (!strcmp(name, "GetPhysicalDeviceCooperativeMatrixPropertiesNV")) return (void *)table->GetPhysicalDeviceCooperativeMatrixPropertiesNV;
@@ -1725,7 +1800,7 @@ VKAPI_ATTR void VKAPI_CALL UpdateDescriptorSetWithTemplateKHR(
VKAPI_ATTR VkResult VKAPI_CALL CreateRenderPass2KHR(
VkDevice device,
- const VkRenderPassCreateInfo2KHR* pCreateInfo,
+ const VkRenderPassCreateInfo2* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkRenderPass* pRenderPass) {
const VkLayerDispatchTable *disp = loader_get_dispatch(device);
@@ -1735,22 +1810,22 @@ VKAPI_ATTR VkResult VKAPI_CALL CreateRenderPass2KHR(
VKAPI_ATTR void VKAPI_CALL CmdBeginRenderPass2KHR(
VkCommandBuffer commandBuffer,
const VkRenderPassBeginInfo* pRenderPassBegin,
- const VkSubpassBeginInfoKHR* pSubpassBeginInfo) {
+ const VkSubpassBeginInfo* pSubpassBeginInfo) {
const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
disp->CmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo);
}
VKAPI_ATTR void VKAPI_CALL CmdNextSubpass2KHR(
VkCommandBuffer commandBuffer,
- const VkSubpassBeginInfoKHR* pSubpassBeginInfo,
- const VkSubpassEndInfoKHR* pSubpassEndInfo) {
+ const VkSubpassBeginInfo* pSubpassBeginInfo,
+ const VkSubpassEndInfo* pSubpassEndInfo) {
const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
disp->CmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo);
}
VKAPI_ATTR void VKAPI_CALL CmdEndRenderPass2KHR(
VkCommandBuffer commandBuffer,
- const VkSubpassEndInfoKHR* pSubpassEndInfo) {
+ const VkSubpassEndInfo* pSubpassEndInfo) {
const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
disp->CmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo);
}
@@ -1806,6 +1881,72 @@ VKAPI_ATTR VkResult VKAPI_CALL GetFenceFdKHR(
}
+// ---- VK_KHR_performance_query extension trampoline/terminators
+
+VKAPI_ATTR VkResult VKAPI_CALL EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(
+ VkPhysicalDevice physicalDevice,
+ uint32_t queueFamilyIndex,
+ uint32_t* pCounterCount,
+ VkPerformanceCounterKHR* pCounters,
+ VkPerformanceCounterDescriptionKHR* pCounterDescriptions) {
+ const VkLayerInstanceDispatchTable *disp;
+ VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
+ disp = loader_get_instance_layer_dispatch(physicalDevice);
+ return disp->EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(unwrapped_phys_dev, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions);
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL terminator_EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(
+ VkPhysicalDevice physicalDevice,
+ uint32_t queueFamilyIndex,
+ uint32_t* pCounterCount,
+ VkPerformanceCounterKHR* pCounters,
+ VkPerformanceCounterDescriptionKHR* pCounterDescriptions) {
+ struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
+ struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
+ if (NULL == icd_term->dispatch.EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR) {
+ loader_log(icd_term->this_instance, VK_DEBUG_REPORT_ERROR_BIT_EXT, 0,
+ "ICD associated with VkPhysicalDevice does not support EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR");
+ }
+ return icd_term->dispatch.EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(phys_dev_term->phys_dev, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions);
+}
+
+VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(
+ VkPhysicalDevice physicalDevice,
+ const VkQueryPoolPerformanceCreateInfoKHR* pPerformanceQueryCreateInfo,
+ uint32_t* pNumPasses) {
+ const VkLayerInstanceDispatchTable *disp;
+ VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
+ disp = loader_get_instance_layer_dispatch(physicalDevice);
+ disp->GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(unwrapped_phys_dev, pPerformanceQueryCreateInfo, pNumPasses);
+}
+
+VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(
+ VkPhysicalDevice physicalDevice,
+ const VkQueryPoolPerformanceCreateInfoKHR* pPerformanceQueryCreateInfo,
+ uint32_t* pNumPasses) {
+ struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
+ struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
+ if (NULL == icd_term->dispatch.GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR) {
+ loader_log(icd_term->this_instance, VK_DEBUG_REPORT_ERROR_BIT_EXT, 0,
+ "ICD associated with VkPhysicalDevice does not support GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR");
+ }
+ icd_term->dispatch.GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(phys_dev_term->phys_dev, pPerformanceQueryCreateInfo, pNumPasses);
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL AcquireProfilingLockKHR(
+ VkDevice device,
+ const VkAcquireProfilingLockInfoKHR* pInfo) {
+ const VkLayerDispatchTable *disp = loader_get_dispatch(device);
+ return disp->AcquireProfilingLockKHR(device, pInfo);
+}
+
+VKAPI_ATTR void VKAPI_CALL ReleaseProfilingLockKHR(
+ VkDevice device) {
+ const VkLayerDispatchTable *disp = loader_get_dispatch(device);
+ disp->ReleaseProfilingLockKHR(device);
+}
+
+
// ---- VK_KHR_get_memory_requirements2 extension trampoline/terminators
VKAPI_ATTR void VKAPI_CALL GetImageMemoryRequirements2KHR(
@@ -1923,7 +2064,7 @@ VKAPI_ATTR VkResult VKAPI_CALL GetSemaphoreCounterValueKHR(
VKAPI_ATTR VkResult VKAPI_CALL WaitSemaphoresKHR(
VkDevice device,
- const VkSemaphoreWaitInfoKHR* pWaitInfo,
+ const VkSemaphoreWaitInfo* pWaitInfo,
uint64_t timeout) {
const VkLayerDispatchTable *disp = loader_get_dispatch(device);
return disp->WaitSemaphoresKHR(device, pWaitInfo, timeout);
@@ -1931,12 +2072,36 @@ VKAPI_ATTR VkResult VKAPI_CALL WaitSemaphoresKHR(
VKAPI_ATTR VkResult VKAPI_CALL SignalSemaphoreKHR(
VkDevice device,
- const VkSemaphoreSignalInfoKHR* pSignalInfo) {
+ const VkSemaphoreSignalInfo* pSignalInfo) {
const VkLayerDispatchTable *disp = loader_get_dispatch(device);
return disp->SignalSemaphoreKHR(device, pSignalInfo);
}
+// ---- VK_KHR_buffer_device_address extension trampoline/terminators
+
+VKAPI_ATTR VkDeviceAddress VKAPI_CALL GetBufferDeviceAddressKHR(
+ VkDevice device,
+ const VkBufferDeviceAddressInfo* pInfo) {
+ const VkLayerDispatchTable *disp = loader_get_dispatch(device);
+ return disp->GetBufferDeviceAddressKHR(device, pInfo);
+}
+
+VKAPI_ATTR uint64_t VKAPI_CALL GetBufferOpaqueCaptureAddressKHR(
+ VkDevice device,
+ const VkBufferDeviceAddressInfo* pInfo) {
+ const VkLayerDispatchTable *disp = loader_get_dispatch(device);
+ return disp->GetBufferOpaqueCaptureAddressKHR(device, pInfo);
+}
+
+VKAPI_ATTR uint64_t VKAPI_CALL GetDeviceMemoryOpaqueCaptureAddressKHR(
+ VkDevice device,
+ const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo) {
+ const VkLayerDispatchTable *disp = loader_get_dispatch(device);
+ return disp->GetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo);
+}
+
+
// ---- VK_KHR_pipeline_executable_properties extension trampoline/terminators
VKAPI_ATTR VkResult VKAPI_CALL GetPipelineExecutablePropertiesKHR(
@@ -2552,7 +2717,18 @@ VKAPI_ATTR void VKAPI_CALL QueueBeginDebugUtilsLabelEXT(
const VkDebugUtilsLabelEXT* pLabelInfo) {
const VkLayerDispatchTable *disp = loader_get_dispatch(queue);
if (disp->QueueBeginDebugUtilsLabelEXT != NULL) {
- disp->QueueBeginDebugUtilsLabelEXT(queue, pLabelInfo);
+ disp->QueueBeginDebugUtilsLabelEXT(queue, pLabelInfo);
+ }
+}
+
+VKAPI_ATTR void VKAPI_CALL terminator_QueueBeginDebugUtilsLabelEXT(
+ VkQueue queue,
+ const VkDebugUtilsLabelEXT* pLabelInfo) {
+ uint32_t icd_index = 0;
+ struct loader_device *dev;
+ struct loader_icd_term *icd_term = loader_get_icd_and_device(queue, &dev, &icd_index);
+ if (NULL != icd_term && NULL != icd_term->dispatch.QueueBeginDebugUtilsLabelEXT) {
+ icd_term->dispatch.QueueBeginDebugUtilsLabelEXT(queue, pLabelInfo);
}
}
@@ -2560,7 +2736,17 @@ VKAPI_ATTR void VKAPI_CALL QueueEndDebugUtilsLabelEXT(
VkQueue queue) {
const VkLayerDispatchTable *disp = loader_get_dispatch(queue);
if (disp->QueueEndDebugUtilsLabelEXT != NULL) {
- disp->QueueEndDebugUtilsLabelEXT(queue);
+ disp->QueueEndDebugUtilsLabelEXT(queue);
+ }
+}
+
+VKAPI_ATTR void VKAPI_CALL terminator_QueueEndDebugUtilsLabelEXT(
+ VkQueue queue) {
+ uint32_t icd_index = 0;
+ struct loader_device *dev;
+ struct loader_icd_term *icd_term = loader_get_icd_and_device(queue, &dev, &icd_index);
+ if (NULL != icd_term && NULL != icd_term->dispatch.QueueEndDebugUtilsLabelEXT) {
+ icd_term->dispatch.QueueEndDebugUtilsLabelEXT(queue);
}
}
@@ -2569,7 +2755,18 @@ VKAPI_ATTR void VKAPI_CALL QueueInsertDebugUtilsLabelEXT(
const VkDebugUtilsLabelEXT* pLabelInfo) {
const VkLayerDispatchTable *disp = loader_get_dispatch(queue);
if (disp->QueueInsertDebugUtilsLabelEXT != NULL) {
- disp->QueueInsertDebugUtilsLabelEXT(queue, pLabelInfo);
+ disp->QueueInsertDebugUtilsLabelEXT(queue, pLabelInfo);
+ }
+}
+
+VKAPI_ATTR void VKAPI_CALL terminator_QueueInsertDebugUtilsLabelEXT(
+ VkQueue queue,
+ const VkDebugUtilsLabelEXT* pLabelInfo) {
+ uint32_t icd_index = 0;
+ struct loader_device *dev;
+ struct loader_icd_term *icd_term = loader_get_icd_and_device(queue, &dev, &icd_index);
+ if (NULL != icd_term && NULL != icd_term->dispatch.QueueInsertDebugUtilsLabelEXT) {
+ icd_term->dispatch.QueueInsertDebugUtilsLabelEXT(queue, pLabelInfo);
}
}
@@ -2578,7 +2775,18 @@ VKAPI_ATTR void VKAPI_CALL CmdBeginDebugUtilsLabelEXT(
const VkDebugUtilsLabelEXT* pLabelInfo) {
const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
if (disp->CmdBeginDebugUtilsLabelEXT != NULL) {
- disp->CmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo);
+ disp->CmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo);
+ }
+}
+
+VKAPI_ATTR void VKAPI_CALL terminator_CmdBeginDebugUtilsLabelEXT(
+ VkCommandBuffer commandBuffer,
+ const VkDebugUtilsLabelEXT* pLabelInfo) {
+ uint32_t icd_index = 0;
+ struct loader_device *dev;
+ struct loader_icd_term *icd_term = loader_get_icd_and_device(commandBuffer, &dev, &icd_index);
+ if (NULL != icd_term && NULL != icd_term->dispatch.CmdBeginDebugUtilsLabelEXT) {
+ icd_term->dispatch.CmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo);
}
}
@@ -2586,7 +2794,17 @@ VKAPI_ATTR void VKAPI_CALL CmdEndDebugUtilsLabelEXT(
VkCommandBuffer commandBuffer) {
const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
if (disp->CmdEndDebugUtilsLabelEXT != NULL) {
- disp->CmdEndDebugUtilsLabelEXT(commandBuffer);
+ disp->CmdEndDebugUtilsLabelEXT(commandBuffer);
+ }
+}
+
+VKAPI_ATTR void VKAPI_CALL terminator_CmdEndDebugUtilsLabelEXT(
+ VkCommandBuffer commandBuffer) {
+ uint32_t icd_index = 0;
+ struct loader_device *dev;
+ struct loader_icd_term *icd_term = loader_get_icd_and_device(commandBuffer, &dev, &icd_index);
+ if (NULL != icd_term && NULL != icd_term->dispatch.CmdEndDebugUtilsLabelEXT) {
+ icd_term->dispatch.CmdEndDebugUtilsLabelEXT(commandBuffer);
}
}
@@ -2595,7 +2813,18 @@ VKAPI_ATTR void VKAPI_CALL CmdInsertDebugUtilsLabelEXT(
const VkDebugUtilsLabelEXT* pLabelInfo) {
const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
if (disp->CmdInsertDebugUtilsLabelEXT != NULL) {
- disp->CmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo);
+ disp->CmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo);
+ }
+}
+
+VKAPI_ATTR void VKAPI_CALL terminator_CmdInsertDebugUtilsLabelEXT(
+ VkCommandBuffer commandBuffer,
+ const VkDebugUtilsLabelEXT* pLabelInfo) {
+ uint32_t icd_index = 0;
+ struct loader_device *dev;
+ struct loader_icd_term *icd_term = loader_get_icd_and_device(commandBuffer, &dev, &icd_index);
+ if (NULL != icd_term && NULL != icd_term->dispatch.CmdInsertDebugUtilsLabelEXT) {
+ icd_term->dispatch.CmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo);
}
}
@@ -3091,7 +3320,7 @@ VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateImagePipeSurfaceFUCHSIA(
VKAPI_ATTR VkDeviceAddress VKAPI_CALL GetBufferDeviceAddressEXT(
VkDevice device,
- const VkBufferDeviceAddressInfoEXT* pInfo) {
+ const VkBufferDeviceAddressInfo* pInfo) {
const VkLayerDispatchTable *disp = loader_get_dispatch(device);
return disp->GetBufferDeviceAddressEXT(device, pInfo);
}
@@ -3413,6 +3642,24 @@ bool extension_instance_gpa(struct loader_instance *ptr_instance, const char *na
return true;
}
+ // ---- VK_KHR_performance_query extension commands
+ if (!strcmp("vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR", name)) {
+ *addr = (void *)EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR;
+ return true;
+ }
+ if (!strcmp("vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR", name)) {
+ *addr = (void *)GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR;
+ return true;
+ }
+ if (!strcmp("vkAcquireProfilingLockKHR", name)) {
+ *addr = (void *)AcquireProfilingLockKHR;
+ return true;
+ }
+ if (!strcmp("vkReleaseProfilingLockKHR", name)) {
+ *addr = (void *)ReleaseProfilingLockKHR;
+ return true;
+ }
+
// ---- VK_KHR_get_surface_capabilities2 extension commands
if (!strcmp("vkGetPhysicalDeviceSurfaceCapabilities2KHR", name)) {
*addr = (ptr_instance->enabled_known_extensions.khr_get_surface_capabilities2 == 1)
@@ -3491,6 +3738,20 @@ bool extension_instance_gpa(struct loader_instance *ptr_instance, const char *na
return true;
}
+ // ---- VK_KHR_buffer_device_address extension commands
+ if (!strcmp("vkGetBufferDeviceAddressKHR", name)) {
+ *addr = (void *)GetBufferDeviceAddressKHR;
+ return true;
+ }
+ if (!strcmp("vkGetBufferOpaqueCaptureAddressKHR", name)) {
+ *addr = (void *)GetBufferOpaqueCaptureAddressKHR;
+ return true;
+ }
+ if (!strcmp("vkGetDeviceMemoryOpaqueCaptureAddressKHR", name)) {
+ *addr = (void *)GetDeviceMemoryOpaqueCaptureAddressKHR;
+ return true;
+ }
+
// ---- VK_KHR_pipeline_executable_properties extension commands
if (!strcmp("vkGetPipelineExecutablePropertiesKHR", name)) {
*addr = (void *)GetPipelineExecutablePropertiesKHR;
@@ -4013,6 +4274,12 @@ bool extension_instance_gpa(struct loader_instance *ptr_instance, const char *na
return true;
}
+ // ---- VK_EXT_tooling_info extension commands
+ if (!strcmp("vkGetPhysicalDeviceToolPropertiesEXT", name)) {
+ *addr = (void *)GetPhysicalDeviceToolPropertiesEXT;
+ return true;
+ }
+
// ---- VK_NV_cooperative_matrix extension commands
if (!strcmp("vkGetPhysicalDeviceCooperativeMatrixPropertiesNV", name)) {
*addr = (void *)GetPhysicalDeviceCooperativeMatrixPropertiesNV;
@@ -4173,6 +4440,18 @@ PFN_vkVoidFunction get_extension_device_proc_terminator(struct loader_device *de
addr = (PFN_vkVoidFunction)terminator_SetDebugUtilsObjectNameEXT;
} else if(!strcmp(pName, "vkSetDebugUtilsObjectTagEXT")) {
addr = (PFN_vkVoidFunction)terminator_SetDebugUtilsObjectTagEXT;
+ } else if(!strcmp(pName, "vkQueueBeginDebugUtilsLabelEXT")) {
+ addr = (PFN_vkVoidFunction)terminator_QueueBeginDebugUtilsLabelEXT;
+ } else if(!strcmp(pName, "vkQueueEndDebugUtilsLabelEXT")) {
+ addr = (PFN_vkVoidFunction)terminator_QueueEndDebugUtilsLabelEXT;
+ } else if(!strcmp(pName, "vkQueueInsertDebugUtilsLabelEXT")) {
+ addr = (PFN_vkVoidFunction)terminator_QueueInsertDebugUtilsLabelEXT;
+ } else if(!strcmp(pName, "vkCmdBeginDebugUtilsLabelEXT")) {
+ addr = (PFN_vkVoidFunction)terminator_CmdBeginDebugUtilsLabelEXT;
+ } else if(!strcmp(pName, "vkCmdEndDebugUtilsLabelEXT")) {
+ addr = (PFN_vkVoidFunction)terminator_CmdEndDebugUtilsLabelEXT;
+ } else if(!strcmp(pName, "vkCmdInsertDebugUtilsLabelEXT")) {
+ addr = (PFN_vkVoidFunction)terminator_CmdInsertDebugUtilsLabelEXT;
}
}
#ifdef VK_USE_PLATFORM_WIN32_KHR
@@ -4296,6 +4575,10 @@ const VkLayerInstanceDispatchTable instance_disp = {
// ---- VK_KHR_external_fence_capabilities extension commands
.GetPhysicalDeviceExternalFencePropertiesKHR = terminator_GetPhysicalDeviceExternalFenceProperties,
+ // ---- VK_KHR_performance_query extension commands
+ .EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = terminator_EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR,
+ .GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = terminator_GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR,
+
// ---- VK_KHR_get_surface_capabilities2 extension commands
.GetPhysicalDeviceSurfaceCapabilities2KHR = terminator_GetPhysicalDeviceSurfaceCapabilities2KHR,
.GetPhysicalDeviceSurfaceFormats2KHR = terminator_GetPhysicalDeviceSurfaceFormats2KHR,
@@ -4372,6 +4655,9 @@ const VkLayerInstanceDispatchTable instance_disp = {
.CreateMetalSurfaceEXT = terminator_CreateMetalSurfaceEXT,
#endif // VK_USE_PLATFORM_METAL_EXT
+ // ---- VK_EXT_tooling_info extension commands
+ .GetPhysicalDeviceToolPropertiesEXT = terminator_GetPhysicalDeviceToolPropertiesEXT,
+
// ---- VK_NV_cooperative_matrix extension commands
.GetPhysicalDeviceCooperativeMatrixPropertiesNV = terminator_GetPhysicalDeviceCooperativeMatrixPropertiesNV,
diff --git a/thirdparty/vulkan/loader/vk_loader_extensions.h b/thirdparty/vulkan/loader/vk_loader_extensions.h
index b08af33838..a50f3cdd32 100644
--- a/thirdparty/vulkan/loader/vk_loader_extensions.h
+++ b/thirdparty/vulkan/loader/vk_loader_extensions.h
@@ -320,6 +320,10 @@ struct loader_icd_term_dispatch {
// ---- VK_KHR_external_fence_capabilities extension commands
PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR GetPhysicalDeviceExternalFencePropertiesKHR;
+ // ---- VK_KHR_performance_query extension commands
+ PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR;
+ PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR;
+
// ---- VK_KHR_get_surface_capabilities2 extension commands
PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR GetPhysicalDeviceSurfaceCapabilities2KHR;
PFN_vkGetPhysicalDeviceSurfaceFormats2KHR GetPhysicalDeviceSurfaceFormats2KHR;
@@ -382,6 +386,12 @@ struct loader_icd_term_dispatch {
// ---- VK_EXT_debug_utils extension commands
PFN_vkSetDebugUtilsObjectNameEXT SetDebugUtilsObjectNameEXT;
PFN_vkSetDebugUtilsObjectTagEXT SetDebugUtilsObjectTagEXT;
+ PFN_vkQueueBeginDebugUtilsLabelEXT QueueBeginDebugUtilsLabelEXT;
+ PFN_vkQueueEndDebugUtilsLabelEXT QueueEndDebugUtilsLabelEXT;
+ PFN_vkQueueInsertDebugUtilsLabelEXT QueueInsertDebugUtilsLabelEXT;
+ PFN_vkCmdBeginDebugUtilsLabelEXT CmdBeginDebugUtilsLabelEXT;
+ PFN_vkCmdEndDebugUtilsLabelEXT CmdEndDebugUtilsLabelEXT;
+ PFN_vkCmdInsertDebugUtilsLabelEXT CmdInsertDebugUtilsLabelEXT;
PFN_vkCreateDebugUtilsMessengerEXT CreateDebugUtilsMessengerEXT;
PFN_vkDestroyDebugUtilsMessengerEXT DestroyDebugUtilsMessengerEXT;
PFN_vkSubmitDebugUtilsMessageEXT SubmitDebugUtilsMessageEXT;
@@ -402,6 +412,9 @@ struct loader_icd_term_dispatch {
PFN_vkCreateMetalSurfaceEXT CreateMetalSurfaceEXT;
#endif // VK_USE_PLATFORM_METAL_EXT
+ // ---- VK_EXT_tooling_info extension commands
+ PFN_vkGetPhysicalDeviceToolPropertiesEXT GetPhysicalDeviceToolPropertiesEXT;
+
// ---- VK_NV_cooperative_matrix extension commands
PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV GetPhysicalDeviceCooperativeMatrixPropertiesNV;
diff --git a/thirdparty/vulkan/loader/vk_loader_platform.h b/thirdparty/vulkan/loader/vk_loader_platform.h
index 2ffda55367..7824e35d6b 100644
--- a/thirdparty/vulkan/loader/vk_loader_platform.h
+++ b/thirdparty/vulkan/loader/vk_loader_platform.h
@@ -279,31 +279,6 @@ static inline char *loader_platform_dirname(char *path) {
return path;
}
-// WIN32 runtime doesn't have basename().
-// Microsoft also doesn't have basename(). Paths are different on Windows, and
-// so this is just a temporary solution in order to get us compiling, so that we
-// can test some scenarios, and develop the correct solution for Windows.
-// TODO: Develop a better, permanent solution for Windows, to replace this
-// temporary code:
-static char *loader_platform_basename(char *pathname) {
- char *current, *next;
-
- // TODO/TBD: Do we need to deal with the Windows's ":" character?
-
- for (current = pathname; *current != '\0'; current = next) {
- next = strchr(current, DIRECTORY_SYMBOL);
- if (next == NULL) {
- // No more DIRECTORY_SYMBOL's so return p:
- return current;
- } else {
- // Point one character past the DIRECTORY_SYMBOL:
- next++;
- }
- }
- // We shouldn't get to here, but this makes the compiler happy:
- return current;
-}
-
// Dynamic Loading:
typedef HMODULE loader_platform_dl_handle;
static loader_platform_dl_handle loader_platform_open_library(const char *lib_path) {
@@ -336,15 +311,15 @@ static char *loader_platform_get_proc_address_error(const char *name) {
typedef HANDLE loader_platform_thread;
// __declspec(thread) is not supported by MinGW compiler (ignored with warning or
-// cause erorr depending on compiler switches)
+// cause error depending on compiler switches)
//
// __thread should be used instead
//
// __MINGW32__ defined for both 32 and 64 bit MinGW compilers, so it is enough to
-// detect any (32 or 64) flawor of MinGW compiler.
+// detect any (32 or 64) flavor of MinGW compiler.
//
// @note __GNUC__ could be used as a more generic way to detect _any_
-// GCC[-compitible] compiler on Windows, but this fix was tested
+// GCC[-compatible] compiler on Windows, but this fix was tested
// only with MinGW, so keep it explicit at the moment.
#if defined(__MINGW32__)
#define THREAD_LOCAL_DECL __thread
@@ -355,25 +330,9 @@ typedef HANDLE loader_platform_thread;
// The once init functionality is not used when building a DLL on Windows. This is because there is no way to clean up the
// resources allocated by anything allocated by once init. This isn't a problem for static libraries, but it is for dynamic
// ones. When building a DLL, we use DllMain() instead to allow properly cleaning up resources.
-#if defined(LOADER_DYNAMIC_LIB)
#define LOADER_PLATFORM_THREAD_ONCE_DECLARATION(var)
#define LOADER_PLATFORM_THREAD_ONCE_DEFINITION(var)
#define LOADER_PLATFORM_THREAD_ONCE(ctl, func)
-#else
-#define LOADER_PLATFORM_THREAD_ONCE_DECLARATION(var) INIT_ONCE var = INIT_ONCE_STATIC_INIT;
-#define LOADER_PLATFORM_THREAD_ONCE_DEFINITION(var) INIT_ONCE var;
-#define LOADER_PLATFORM_THREAD_ONCE(ctl, func) loader_platform_thread_once_fn(ctl, func)
-static BOOL CALLBACK InitFuncWrapper(PINIT_ONCE InitOnce, PVOID Parameter, PVOID *Context) {
- void (*func)(void) = (void (*)(void))Parameter;
- func();
- return TRUE;
-}
-static void loader_platform_thread_once_fn(void *ctl, void (*func)(void)) {
- assert(func != NULL);
- assert(ctl != NULL);
- InitOnceExecuteOnce((PINIT_ONCE)ctl, InitFuncWrapper, (void *)func, NULL);
-}
-#endif
// Thread IDs:
typedef DWORD loader_platform_thread_id;