diff --git a/CMakeLists.txt b/CMakeLists.txt index 281b9697e..5c891a3ce 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,7 +18,7 @@ # ~~~ cmake_minimum_required(VERSION 3.22.1) -project(VULKAN_LOADER VERSION 1.4.344 LANGUAGES C) +project(VULKAN_LOADER VERSION 1.4.345 LANGUAGES C) option(CODE_COVERAGE "Enable Code Coverage" OFF) if (CODE_COVERAGE) diff --git a/loader/generated/vk_layer_dispatch_table.h b/loader/generated/vk_layer_dispatch_table.h index 6d2093eed..7a1ba6483 100644 --- a/loader/generated/vk_layer_dispatch_table.h +++ b/loader/generated/vk_layer_dispatch_table.h @@ -313,6 +313,9 @@ typedef struct VkLayerInstanceDispatchTable_ { // ---- VK_ARM_performance_counters_by_region extension commands PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM EnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM; + // ---- VK_ARM_shader_instrumentation extension commands + PFN_vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM EnumeratePhysicalDeviceShaderInstrumentationMetricsARM; + // ---- VK_SEC_ubm_surface extension commands #if defined(VK_USE_PLATFORM_UBM_SEC) PFN_vkCreateUbmSurfaceSEC CreateUbmSurfaceSEC; @@ -1320,6 +1323,14 @@ typedef struct VkLayerDispatchTable_ { PFN_vkGetMemoryMetalHandlePropertiesEXT GetMemoryMetalHandlePropertiesEXT; #endif // VK_USE_PLATFORM_METAL_EXT + // ---- VK_ARM_shader_instrumentation extension commands + PFN_vkCreateShaderInstrumentationARM CreateShaderInstrumentationARM; + PFN_vkDestroyShaderInstrumentationARM DestroyShaderInstrumentationARM; + PFN_vkCmdBeginShaderInstrumentationARM CmdBeginShaderInstrumentationARM; + PFN_vkCmdEndShaderInstrumentationARM CmdEndShaderInstrumentationARM; + PFN_vkGetShaderInstrumentationValuesARM GetShaderInstrumentationValuesARM; + PFN_vkClearShaderInstrumentationMetricsARM ClearShaderInstrumentationMetricsARM; + // ---- VK_EXT_fragment_density_map_offset extension commands PFN_vkCmdEndRendering2EXT CmdEndRendering2EXT; diff --git a/loader/generated/vk_loader_extensions.c b/loader/generated/vk_loader_extensions.c index fc72fbe8e..712916ff0 100644 --- a/loader/generated/vk_loader_extensions.c +++ b/loader/generated/vk_loader_extensions.c @@ -337,6 +337,9 @@ VKAPI_ATTR bool VKAPI_CALL loader_icd_init_entries(struct loader_instance* inst, // ---- VK_ARM_performance_counters_by_region extension commands LOOKUP_GIPA(EnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM); + // ---- VK_ARM_shader_instrumentation extension commands + LOOKUP_GIPA(EnumeratePhysicalDeviceShaderInstrumentationMetricsARM); + // ---- VK_SEC_ubm_surface extension commands #if defined(VK_USE_PLATFORM_UBM_SEC) LOOKUP_GIPA(CreateUbmSurfaceSEC); @@ -1361,6 +1364,14 @@ VKAPI_ATTR void VKAPI_CALL loader_init_device_extension_dispatch_table(struct lo table->GetMemoryMetalHandlePropertiesEXT = (PFN_vkGetMemoryMetalHandlePropertiesEXT)gdpa(dev, "vkGetMemoryMetalHandlePropertiesEXT"); #endif // VK_USE_PLATFORM_METAL_EXT + // ---- VK_ARM_shader_instrumentation extension commands + table->CreateShaderInstrumentationARM = (PFN_vkCreateShaderInstrumentationARM)gdpa(dev, "vkCreateShaderInstrumentationARM"); + table->DestroyShaderInstrumentationARM = (PFN_vkDestroyShaderInstrumentationARM)gdpa(dev, "vkDestroyShaderInstrumentationARM"); + table->CmdBeginShaderInstrumentationARM = (PFN_vkCmdBeginShaderInstrumentationARM)gdpa(dev, "vkCmdBeginShaderInstrumentationARM"); + table->CmdEndShaderInstrumentationARM = (PFN_vkCmdEndShaderInstrumentationARM)gdpa(dev, "vkCmdEndShaderInstrumentationARM"); + table->GetShaderInstrumentationValuesARM = (PFN_vkGetShaderInstrumentationValuesARM)gdpa(dev, "vkGetShaderInstrumentationValuesARM"); + table->ClearShaderInstrumentationMetricsARM = (PFN_vkClearShaderInstrumentationMetricsARM)gdpa(dev, "vkClearShaderInstrumentationMetricsARM"); + // ---- VK_EXT_fragment_density_map_offset extension commands table->CmdEndRendering2EXT = (PFN_vkCmdEndRendering2EXT)gdpa(dev, "vkCmdEndRendering2EXT"); @@ -1683,6 +1694,9 @@ VKAPI_ATTR void VKAPI_CALL loader_init_instance_extension_dispatch_table(VkLayer // ---- VK_ARM_performance_counters_by_region extension commands table->EnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM = (PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM)gpa(inst, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM"); + // ---- VK_ARM_shader_instrumentation extension commands + table->EnumeratePhysicalDeviceShaderInstrumentationMetricsARM = (PFN_vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM)gpa(inst, "vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM"); + // ---- VK_SEC_ubm_surface extension commands #if defined(VK_USE_PLATFORM_UBM_SEC) table->CreateUbmSurfaceSEC = (PFN_vkCreateUbmSurfaceSEC)gpa(inst, "vkCreateUbmSurfaceSEC"); @@ -3380,6 +3394,14 @@ VKAPI_ATTR void* VKAPI_CALL loader_lookup_device_dispatch_table(const VkLayerDis if (!strcmp(name, "GetMemoryMetalHandlePropertiesEXT")) return (void *)table->GetMemoryMetalHandlePropertiesEXT; #endif // VK_USE_PLATFORM_METAL_EXT + // ---- VK_ARM_shader_instrumentation extension commands + if (!strcmp(name, "CreateShaderInstrumentationARM")) return (void *)table->CreateShaderInstrumentationARM; + if (!strcmp(name, "DestroyShaderInstrumentationARM")) return (void *)table->DestroyShaderInstrumentationARM; + if (!strcmp(name, "CmdBeginShaderInstrumentationARM")) return (void *)table->CmdBeginShaderInstrumentationARM; + if (!strcmp(name, "CmdEndShaderInstrumentationARM")) return (void *)table->CmdEndShaderInstrumentationARM; + if (!strcmp(name, "GetShaderInstrumentationValuesARM")) return (void *)table->GetShaderInstrumentationValuesARM; + if (!strcmp(name, "ClearShaderInstrumentationMetricsARM")) return (void *)table->ClearShaderInstrumentationMetricsARM; + // ---- VK_EXT_fragment_density_map_offset extension commands if (!strcmp(name, "CmdEndRendering2EXT")) return (void *)table->CmdEndRendering2EXT; @@ -3707,6 +3729,9 @@ VKAPI_ATTR void* VKAPI_CALL loader_lookup_instance_dispatch_table(const VkLayerI // ---- VK_ARM_performance_counters_by_region extension commands if (!strcmp(name, "EnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM")) return (void *)table->EnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM; + // ---- VK_ARM_shader_instrumentation extension commands + if (!strcmp(name, "EnumeratePhysicalDeviceShaderInstrumentationMetricsARM")) return (void *)table->EnumeratePhysicalDeviceShaderInstrumentationMetricsARM; + // ---- VK_SEC_ubm_surface extension commands #if defined(VK_USE_PLATFORM_UBM_SEC) if (!strcmp(name, "CreateUbmSurfaceSEC")) return (void *)table->CreateUbmSurfaceSEC; @@ -11280,6 +11305,122 @@ VKAPI_ATTR VkResult VKAPI_CALL terminator_EnumeratePhysicalDeviceQueueFamilyPerf } +// ---- VK_ARM_shader_instrumentation extension trampoline/terminators + +VKAPI_ATTR VkResult VKAPI_CALL EnumeratePhysicalDeviceShaderInstrumentationMetricsARM( + VkPhysicalDevice physicalDevice, + uint32_t* pDescriptionCount, + VkShaderInstrumentationMetricDescriptionARM* pDescriptions) { + const VkLayerInstanceDispatchTable *disp; + VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice); + if (VK_NULL_HANDLE == unwrapped_phys_dev) { + loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0, + "vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM: Invalid physicalDevice " + "[VUID-vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM-physicalDevice-parameter]"); + abort(); /* Intentionally fail so user can correct issue. */ + } + disp = loader_get_instance_layer_dispatch(physicalDevice); + return disp->EnumeratePhysicalDeviceShaderInstrumentationMetricsARM(unwrapped_phys_dev, pDescriptionCount, pDescriptions); +} + +VKAPI_ATTR VkResult VKAPI_CALL terminator_EnumeratePhysicalDeviceShaderInstrumentationMetricsARM( + VkPhysicalDevice physicalDevice, + uint32_t* pDescriptionCount, + VkShaderInstrumentationMetricDescriptionARM* pDescriptions) { + 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.EnumeratePhysicalDeviceShaderInstrumentationMetricsARM) { + loader_log(icd_term->this_instance, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT, 0, + "ICD associated with VkPhysicalDevice does not support EnumeratePhysicalDeviceShaderInstrumentationMetricsARM"); + abort(); /* Intentionally fail so user can correct issue. */ + } + return icd_term->dispatch.EnumeratePhysicalDeviceShaderInstrumentationMetricsARM(phys_dev_term->phys_dev, pDescriptionCount, pDescriptions); +} + +VKAPI_ATTR VkResult VKAPI_CALL CreateShaderInstrumentationARM( + VkDevice device, + const VkShaderInstrumentationCreateInfoARM* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkShaderInstrumentationARM* pInstrumentation) { + const VkLayerDispatchTable *disp = loader_get_dispatch(device); + if (NULL == disp) { + loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0, + "vkCreateShaderInstrumentationARM: Invalid device " + "[VUID-vkCreateShaderInstrumentationARM-device-parameter]"); + abort(); /* Intentionally fail so user can correct issue. */ + } + return disp->CreateShaderInstrumentationARM(device, pCreateInfo, pAllocator, pInstrumentation); +} + +VKAPI_ATTR void VKAPI_CALL DestroyShaderInstrumentationARM( + VkDevice device, + VkShaderInstrumentationARM instrumentation, + const VkAllocationCallbacks* pAllocator) { + const VkLayerDispatchTable *disp = loader_get_dispatch(device); + if (NULL == disp) { + loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0, + "vkDestroyShaderInstrumentationARM: Invalid device " + "[VUID-vkDestroyShaderInstrumentationARM-device-parameter]"); + abort(); /* Intentionally fail so user can correct issue. */ + } + disp->DestroyShaderInstrumentationARM(device, instrumentation, pAllocator); +} + +VKAPI_ATTR void VKAPI_CALL CmdBeginShaderInstrumentationARM( + VkCommandBuffer commandBuffer, + VkShaderInstrumentationARM instrumentation) { + const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer); + if (NULL == disp) { + loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0, + "vkCmdBeginShaderInstrumentationARM: Invalid commandBuffer " + "[VUID-vkCmdBeginShaderInstrumentationARM-commandBuffer-parameter]"); + abort(); /* Intentionally fail so user can correct issue. */ + } + disp->CmdBeginShaderInstrumentationARM(commandBuffer, instrumentation); +} + +VKAPI_ATTR void VKAPI_CALL CmdEndShaderInstrumentationARM( + VkCommandBuffer commandBuffer) { + const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer); + if (NULL == disp) { + loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0, + "vkCmdEndShaderInstrumentationARM: Invalid commandBuffer " + "[VUID-vkCmdEndShaderInstrumentationARM-commandBuffer-parameter]"); + abort(); /* Intentionally fail so user can correct issue. */ + } + disp->CmdEndShaderInstrumentationARM(commandBuffer); +} + +VKAPI_ATTR VkResult VKAPI_CALL GetShaderInstrumentationValuesARM( + VkDevice device, + VkShaderInstrumentationARM instrumentation, + uint32_t* pMetricBlockCount, + void* pMetricValues, + VkShaderInstrumentationValuesFlagsARM flags) { + const VkLayerDispatchTable *disp = loader_get_dispatch(device); + if (NULL == disp) { + loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0, + "vkGetShaderInstrumentationValuesARM: Invalid device " + "[VUID-vkGetShaderInstrumentationValuesARM-device-parameter]"); + abort(); /* Intentionally fail so user can correct issue. */ + } + return disp->GetShaderInstrumentationValuesARM(device, instrumentation, pMetricBlockCount, pMetricValues, flags); +} + +VKAPI_ATTR void VKAPI_CALL ClearShaderInstrumentationMetricsARM( + VkDevice device, + VkShaderInstrumentationARM instrumentation) { + const VkLayerDispatchTable *disp = loader_get_dispatch(device); + if (NULL == disp) { + loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0, + "vkClearShaderInstrumentationMetricsARM: Invalid device " + "[VUID-vkClearShaderInstrumentationMetricsARM-device-parameter]"); + abort(); /* Intentionally fail so user can correct issue. */ + } + disp->ClearShaderInstrumentationMetricsARM(device, instrumentation); +} + + // ---- VK_EXT_fragment_density_map_offset extension trampoline/terminators VKAPI_ATTR void VKAPI_CALL CmdEndRendering2EXT( @@ -14107,6 +14248,36 @@ bool extension_instance_gpa(struct loader_instance *ptr_instance, const char *na return true; } + // ---- VK_ARM_shader_instrumentation extension commands + if (!strcmp("vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM", name)) { + *addr = (void *)EnumeratePhysicalDeviceShaderInstrumentationMetricsARM; + return true; + } + if (!strcmp("vkCreateShaderInstrumentationARM", name)) { + *addr = (void *)CreateShaderInstrumentationARM; + return true; + } + if (!strcmp("vkDestroyShaderInstrumentationARM", name)) { + *addr = (void *)DestroyShaderInstrumentationARM; + return true; + } + if (!strcmp("vkCmdBeginShaderInstrumentationARM", name)) { + *addr = (void *)CmdBeginShaderInstrumentationARM; + return true; + } + if (!strcmp("vkCmdEndShaderInstrumentationARM", name)) { + *addr = (void *)CmdEndShaderInstrumentationARM; + return true; + } + if (!strcmp("vkGetShaderInstrumentationValuesARM", name)) { + *addr = (void *)GetShaderInstrumentationValuesARM; + return true; + } + if (!strcmp("vkClearShaderInstrumentationMetricsARM", name)) { + *addr = (void *)ClearShaderInstrumentationMetricsARM; + return true; + } + // ---- VK_EXT_fragment_density_map_offset extension commands if (!strcmp("vkCmdEndRendering2EXT", name)) { *addr = (void *)CmdEndRendering2EXT; @@ -14784,6 +14955,9 @@ const VkLayerInstanceDispatchTable instance_disp = { // ---- VK_ARM_performance_counters_by_region extension commands .EnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM = terminator_EnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM, + // ---- VK_ARM_shader_instrumentation extension commands + .EnumeratePhysicalDeviceShaderInstrumentationMetricsARM = terminator_EnumeratePhysicalDeviceShaderInstrumentationMetricsARM, + // ---- VK_SEC_ubm_surface extension commands #if defined(VK_USE_PLATFORM_UBM_SEC) .CreateUbmSurfaceSEC = terminator_CreateUbmSurfaceSEC, diff --git a/loader/generated/vk_loader_extensions.h b/loader/generated/vk_loader_extensions.h index 9121d9845..4f7057f0f 100644 --- a/loader/generated/vk_loader_extensions.h +++ b/loader/generated/vk_loader_extensions.h @@ -504,6 +504,9 @@ struct loader_icd_term_dispatch { // ---- VK_ARM_performance_counters_by_region extension commands PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM EnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM; + // ---- VK_ARM_shader_instrumentation extension commands + PFN_vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM EnumeratePhysicalDeviceShaderInstrumentationMetricsARM; + // ---- VK_SEC_ubm_surface extension commands #if defined(VK_USE_PLATFORM_UBM_SEC) PFN_vkCreateUbmSurfaceSEC CreateUbmSurfaceSEC; diff --git a/loader/generated/vk_object_types.h b/loader/generated/vk_object_types.h index 8bc659ecb..32db56b5f 100644 --- a/loader/generated/vk_object_types.h +++ b/loader/generated/vk_object_types.h @@ -96,7 +96,8 @@ typedef enum VulkanObjectType { kVulkanObjectTypeExternalComputeQueueNV = 55, kVulkanObjectTypeIndirectExecutionSetEXT = 56, kVulkanObjectTypeIndirectCommandsLayoutEXT = 57, - kVulkanObjectTypeMax = 58, + kVulkanObjectTypeShaderInstrumentationARM = 58, + kVulkanObjectTypeMax = 59, // Aliases for backwards compatibility of "promoted" types kVulkanObjectTypeDescriptorUpdateTemplateKHR = kVulkanObjectTypeDescriptorUpdateTemplate, kVulkanObjectTypeSamplerYcbcrConversionKHR = kVulkanObjectTypeSamplerYcbcrConversion, @@ -163,6 +164,7 @@ static const char * const object_string[kVulkanObjectTypeMax] = { "ExternalComputeQueueNV", "IndirectExecutionSetEXT", "IndirectCommandsLayoutEXT", + "ShaderInstrumentationARM", }; // Helper array to get Vulkan VK_EXT_debug_report object type enum from the internal layers version @@ -225,6 +227,7 @@ const VkDebugReportObjectTypeEXT get_debug_report_enum[] = { VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, // kVulkanObjectTypeExternalComputeQueueNV VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, // kVulkanObjectTypeIndirectExecutionSetEXT VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, // kVulkanObjectTypeIndirectCommandsLayoutEXT + VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, // kVulkanObjectTypeShaderInstrumentationARM }; // Helper array to get Official Vulkan VkObjectType enum from the internal layers version @@ -287,6 +290,7 @@ const VkObjectType get_object_type_enum[] = { VK_OBJECT_TYPE_EXTERNAL_COMPUTE_QUEUE_NV, // kVulkanObjectTypeExternalComputeQueueNV VK_OBJECT_TYPE_INDIRECT_EXECUTION_SET_EXT, // kVulkanObjectTypeIndirectExecutionSetEXT VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_EXT, // kVulkanObjectTypeIndirectCommandsLayoutEXT + VK_OBJECT_TYPE_SHADER_INSTRUMENTATION_ARM, // kVulkanObjectTypeShaderInstrumentationARM }; // Helper function to convert from VkDebugReportObjectTypeEXT to VkObjectType diff --git a/loader/loader.rc b/loader/loader.rc index 49897f5f1..cede33ec8 100644 --- a/loader/loader.rc +++ b/loader/loader.rc @@ -22,8 +22,8 @@ #include "winres.h" // All set through CMake -#define VER_FILE_VERSION 1, 4, 344, 0 -#define VER_FILE_DESCRIPTION_STR "1.4.344.Dev Build" +#define VER_FILE_VERSION 1, 4, 345, 0 +#define VER_FILE_DESCRIPTION_STR "1.4.345.Dev Build" #define VER_FILE_VERSION_STR "Vulkan Loader - Dev Build" #define VER_COPYRIGHT_STR "Copyright (C) 2015-2026" diff --git a/scripts/known_good.json b/scripts/known_good.json index f59bf765f..77952a221 100644 --- a/scripts/known_good.json +++ b/scripts/known_good.json @@ -7,7 +7,7 @@ "sub_dir": "Vulkan-Headers", "build_dir": "Vulkan-Headers/build", "install_dir": "Vulkan-Headers/build/install", - "commit": "v1.4.344" + "commit": "v1.4.345" }, { "name": "googletest", @@ -42,4 +42,4 @@ "googletest": "GOOGLETEST_INSTALL_DIR", "detours": "DETOURS_INSTALL_DIR" } -} +} \ No newline at end of file diff --git a/tests/framework/layer/generated/vk_dispatch_table_helper.h b/tests/framework/layer/generated/vk_dispatch_table_helper.h index f17329677..b6bcc4ef6 100644 --- a/tests/framework/layer/generated/vk_dispatch_table_helper.h +++ b/tests/framework/layer/generated/vk_dispatch_table_helper.h @@ -755,6 +755,12 @@ static inline void layer_init_device_dispatch_table(VkDevice device, VkLayerDisp #if defined(VK_USE_PLATFORM_METAL_EXT) table->GetMemoryMetalHandlePropertiesEXT = (PFN_vkGetMemoryMetalHandlePropertiesEXT)gpa(device, "vkGetMemoryMetalHandlePropertiesEXT"); #endif // VK_USE_PLATFORM_METAL_EXT + table->CreateShaderInstrumentationARM = (PFN_vkCreateShaderInstrumentationARM)gpa(device, "vkCreateShaderInstrumentationARM"); + table->DestroyShaderInstrumentationARM = (PFN_vkDestroyShaderInstrumentationARM)gpa(device, "vkDestroyShaderInstrumentationARM"); + table->CmdBeginShaderInstrumentationARM = (PFN_vkCmdBeginShaderInstrumentationARM)gpa(device, "vkCmdBeginShaderInstrumentationARM"); + table->CmdEndShaderInstrumentationARM = (PFN_vkCmdEndShaderInstrumentationARM)gpa(device, "vkCmdEndShaderInstrumentationARM"); + table->GetShaderInstrumentationValuesARM = (PFN_vkGetShaderInstrumentationValuesARM)gpa(device, "vkGetShaderInstrumentationValuesARM"); + table->ClearShaderInstrumentationMetricsARM = (PFN_vkClearShaderInstrumentationMetricsARM)gpa(device, "vkClearShaderInstrumentationMetricsARM"); table->CmdEndRendering2EXT = (PFN_vkCmdEndRendering2EXT)gpa(device, "vkCmdEndRendering2EXT"); table->CmdBeginCustomResolveEXT = (PFN_vkCmdBeginCustomResolveEXT)gpa(device, "vkCmdBeginCustomResolveEXT"); table->CmdSetComputeOccupancyPriorityNV = (PFN_vkCmdSetComputeOccupancyPriorityNV)gpa(device, "vkCmdSetComputeOccupancyPriorityNV"); @@ -958,6 +964,7 @@ static inline void layer_init_instance_dispatch_table(VkInstance instance, VkLay #endif // VK_USE_PLATFORM_OHOS table->GetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV = (PFN_vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV)gpa(instance, "vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV"); table->EnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM = (PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM)gpa(instance, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM"); + table->EnumeratePhysicalDeviceShaderInstrumentationMetricsARM = (PFN_vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM)gpa(instance, "vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM"); #if defined(VK_USE_PLATFORM_UBM_SEC) table->CreateUbmSurfaceSEC = (PFN_vkCreateUbmSurfaceSEC)gpa(instance, "vkCreateUbmSurfaceSEC"); #endif // VK_USE_PLATFORM_UBM_SEC