@@ -337,6 +337,9 @@ VKAPI_ATTR bool VKAPI_CALL loader_icd_init_entries(struct loader_instance* inst,
337337 // ---- VK_ARM_performance_counters_by_region extension commands
338338 LOOKUP_GIPA(EnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM);
339339
340+ // ---- VK_ARM_shader_instrumentation extension commands
341+ LOOKUP_GIPA(EnumeratePhysicalDeviceShaderInstrumentationMetricsARM);
342+
340343 // ---- VK_SEC_ubm_surface extension commands
341344#if defined(VK_USE_PLATFORM_UBM_SEC)
342345 LOOKUP_GIPA(CreateUbmSurfaceSEC);
@@ -1361,6 +1364,14 @@ VKAPI_ATTR void VKAPI_CALL loader_init_device_extension_dispatch_table(struct lo
13611364 table->GetMemoryMetalHandlePropertiesEXT = (PFN_vkGetMemoryMetalHandlePropertiesEXT)gdpa(dev, "vkGetMemoryMetalHandlePropertiesEXT");
13621365#endif // VK_USE_PLATFORM_METAL_EXT
13631366
1367+ // ---- VK_ARM_shader_instrumentation extension commands
1368+ table->CreateShaderInstrumentationARM = (PFN_vkCreateShaderInstrumentationARM)gdpa(dev, "vkCreateShaderInstrumentationARM");
1369+ table->DestroyShaderInstrumentationARM = (PFN_vkDestroyShaderInstrumentationARM)gdpa(dev, "vkDestroyShaderInstrumentationARM");
1370+ table->CmdBeginShaderInstrumentationARM = (PFN_vkCmdBeginShaderInstrumentationARM)gdpa(dev, "vkCmdBeginShaderInstrumentationARM");
1371+ table->CmdEndShaderInstrumentationARM = (PFN_vkCmdEndShaderInstrumentationARM)gdpa(dev, "vkCmdEndShaderInstrumentationARM");
1372+ table->GetShaderInstrumentationValuesARM = (PFN_vkGetShaderInstrumentationValuesARM)gdpa(dev, "vkGetShaderInstrumentationValuesARM");
1373+ table->ClearShaderInstrumentationMetricsARM = (PFN_vkClearShaderInstrumentationMetricsARM)gdpa(dev, "vkClearShaderInstrumentationMetricsARM");
1374+
13641375 // ---- VK_EXT_fragment_density_map_offset extension commands
13651376 table->CmdEndRendering2EXT = (PFN_vkCmdEndRendering2EXT)gdpa(dev, "vkCmdEndRendering2EXT");
13661377
@@ -1683,6 +1694,9 @@ VKAPI_ATTR void VKAPI_CALL loader_init_instance_extension_dispatch_table(VkLayer
16831694 // ---- VK_ARM_performance_counters_by_region extension commands
16841695 table->EnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM = (PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM)gpa(inst, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM");
16851696
1697+ // ---- VK_ARM_shader_instrumentation extension commands
1698+ table->EnumeratePhysicalDeviceShaderInstrumentationMetricsARM = (PFN_vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM)gpa(inst, "vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM");
1699+
16861700 // ---- VK_SEC_ubm_surface extension commands
16871701#if defined(VK_USE_PLATFORM_UBM_SEC)
16881702 table->CreateUbmSurfaceSEC = (PFN_vkCreateUbmSurfaceSEC)gpa(inst, "vkCreateUbmSurfaceSEC");
@@ -3380,6 +3394,14 @@ VKAPI_ATTR void* VKAPI_CALL loader_lookup_device_dispatch_table(const VkLayerDis
33803394 if (!strcmp(name, "GetMemoryMetalHandlePropertiesEXT")) return (void *)table->GetMemoryMetalHandlePropertiesEXT;
33813395#endif // VK_USE_PLATFORM_METAL_EXT
33823396
3397+ // ---- VK_ARM_shader_instrumentation extension commands
3398+ if (!strcmp(name, "CreateShaderInstrumentationARM")) return (void *)table->CreateShaderInstrumentationARM;
3399+ if (!strcmp(name, "DestroyShaderInstrumentationARM")) return (void *)table->DestroyShaderInstrumentationARM;
3400+ if (!strcmp(name, "CmdBeginShaderInstrumentationARM")) return (void *)table->CmdBeginShaderInstrumentationARM;
3401+ if (!strcmp(name, "CmdEndShaderInstrumentationARM")) return (void *)table->CmdEndShaderInstrumentationARM;
3402+ if (!strcmp(name, "GetShaderInstrumentationValuesARM")) return (void *)table->GetShaderInstrumentationValuesARM;
3403+ if (!strcmp(name, "ClearShaderInstrumentationMetricsARM")) return (void *)table->ClearShaderInstrumentationMetricsARM;
3404+
33833405 // ---- VK_EXT_fragment_density_map_offset extension commands
33843406 if (!strcmp(name, "CmdEndRendering2EXT")) return (void *)table->CmdEndRendering2EXT;
33853407
@@ -3707,6 +3729,9 @@ VKAPI_ATTR void* VKAPI_CALL loader_lookup_instance_dispatch_table(const VkLayerI
37073729 // ---- VK_ARM_performance_counters_by_region extension commands
37083730 if (!strcmp(name, "EnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM")) return (void *)table->EnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM;
37093731
3732+ // ---- VK_ARM_shader_instrumentation extension commands
3733+ if (!strcmp(name, "EnumeratePhysicalDeviceShaderInstrumentationMetricsARM")) return (void *)table->EnumeratePhysicalDeviceShaderInstrumentationMetricsARM;
3734+
37103735 // ---- VK_SEC_ubm_surface extension commands
37113736#if defined(VK_USE_PLATFORM_UBM_SEC)
37123737 if (!strcmp(name, "CreateUbmSurfaceSEC")) return (void *)table->CreateUbmSurfaceSEC;
@@ -11280,6 +11305,122 @@ VKAPI_ATTR VkResult VKAPI_CALL terminator_EnumeratePhysicalDeviceQueueFamilyPerf
1128011305}
1128111306
1128211307
11308+ // ---- VK_ARM_shader_instrumentation extension trampoline/terminators
11309+
11310+ VKAPI_ATTR VkResult VKAPI_CALL EnumeratePhysicalDeviceShaderInstrumentationMetricsARM(
11311+ VkPhysicalDevice physicalDevice,
11312+ uint32_t* pDescriptionCount,
11313+ VkShaderInstrumentationMetricDescriptionARM* pDescriptions) {
11314+ const VkLayerInstanceDispatchTable *disp;
11315+ VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
11316+ if (VK_NULL_HANDLE == unwrapped_phys_dev) {
11317+ loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
11318+ "vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM: Invalid physicalDevice "
11319+ "[VUID-vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM-physicalDevice-parameter]");
11320+ abort(); /* Intentionally fail so user can correct issue. */
11321+ }
11322+ disp = loader_get_instance_layer_dispatch(physicalDevice);
11323+ return disp->EnumeratePhysicalDeviceShaderInstrumentationMetricsARM(unwrapped_phys_dev, pDescriptionCount, pDescriptions);
11324+ }
11325+
11326+ VKAPI_ATTR VkResult VKAPI_CALL terminator_EnumeratePhysicalDeviceShaderInstrumentationMetricsARM(
11327+ VkPhysicalDevice physicalDevice,
11328+ uint32_t* pDescriptionCount,
11329+ VkShaderInstrumentationMetricDescriptionARM* pDescriptions) {
11330+ struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
11331+ struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
11332+ if (NULL == icd_term->dispatch.EnumeratePhysicalDeviceShaderInstrumentationMetricsARM) {
11333+ loader_log(icd_term->this_instance, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT, 0,
11334+ "ICD associated with VkPhysicalDevice does not support EnumeratePhysicalDeviceShaderInstrumentationMetricsARM");
11335+ abort(); /* Intentionally fail so user can correct issue. */
11336+ }
11337+ return icd_term->dispatch.EnumeratePhysicalDeviceShaderInstrumentationMetricsARM(phys_dev_term->phys_dev, pDescriptionCount, pDescriptions);
11338+ }
11339+
11340+ VKAPI_ATTR VkResult VKAPI_CALL CreateShaderInstrumentationARM(
11341+ VkDevice device,
11342+ const VkShaderInstrumentationCreateInfoARM* pCreateInfo,
11343+ const VkAllocationCallbacks* pAllocator,
11344+ VkShaderInstrumentationARM* pInstrumentation) {
11345+ const VkLayerDispatchTable *disp = loader_get_dispatch(device);
11346+ if (NULL == disp) {
11347+ loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
11348+ "vkCreateShaderInstrumentationARM: Invalid device "
11349+ "[VUID-vkCreateShaderInstrumentationARM-device-parameter]");
11350+ abort(); /* Intentionally fail so user can correct issue. */
11351+ }
11352+ return disp->CreateShaderInstrumentationARM(device, pCreateInfo, pAllocator, pInstrumentation);
11353+ }
11354+
11355+ VKAPI_ATTR void VKAPI_CALL DestroyShaderInstrumentationARM(
11356+ VkDevice device,
11357+ VkShaderInstrumentationARM instrumentation,
11358+ const VkAllocationCallbacks* pAllocator) {
11359+ const VkLayerDispatchTable *disp = loader_get_dispatch(device);
11360+ if (NULL == disp) {
11361+ loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
11362+ "vkDestroyShaderInstrumentationARM: Invalid device "
11363+ "[VUID-vkDestroyShaderInstrumentationARM-device-parameter]");
11364+ abort(); /* Intentionally fail so user can correct issue. */
11365+ }
11366+ disp->DestroyShaderInstrumentationARM(device, instrumentation, pAllocator);
11367+ }
11368+
11369+ VKAPI_ATTR void VKAPI_CALL CmdBeginShaderInstrumentationARM(
11370+ VkCommandBuffer commandBuffer,
11371+ VkShaderInstrumentationARM instrumentation) {
11372+ const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
11373+ if (NULL == disp) {
11374+ loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
11375+ "vkCmdBeginShaderInstrumentationARM: Invalid commandBuffer "
11376+ "[VUID-vkCmdBeginShaderInstrumentationARM-commandBuffer-parameter]");
11377+ abort(); /* Intentionally fail so user can correct issue. */
11378+ }
11379+ disp->CmdBeginShaderInstrumentationARM(commandBuffer, instrumentation);
11380+ }
11381+
11382+ VKAPI_ATTR void VKAPI_CALL CmdEndShaderInstrumentationARM(
11383+ VkCommandBuffer commandBuffer) {
11384+ const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
11385+ if (NULL == disp) {
11386+ loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
11387+ "vkCmdEndShaderInstrumentationARM: Invalid commandBuffer "
11388+ "[VUID-vkCmdEndShaderInstrumentationARM-commandBuffer-parameter]");
11389+ abort(); /* Intentionally fail so user can correct issue. */
11390+ }
11391+ disp->CmdEndShaderInstrumentationARM(commandBuffer);
11392+ }
11393+
11394+ VKAPI_ATTR VkResult VKAPI_CALL GetShaderInstrumentationValuesARM(
11395+ VkDevice device,
11396+ VkShaderInstrumentationARM instrumentation,
11397+ uint32_t* pMetricBlockCount,
11398+ void* pMetricValues,
11399+ VkShaderInstrumentationValuesFlagsARM flags) {
11400+ const VkLayerDispatchTable *disp = loader_get_dispatch(device);
11401+ if (NULL == disp) {
11402+ loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
11403+ "vkGetShaderInstrumentationValuesARM: Invalid device "
11404+ "[VUID-vkGetShaderInstrumentationValuesARM-device-parameter]");
11405+ abort(); /* Intentionally fail so user can correct issue. */
11406+ }
11407+ return disp->GetShaderInstrumentationValuesARM(device, instrumentation, pMetricBlockCount, pMetricValues, flags);
11408+ }
11409+
11410+ VKAPI_ATTR void VKAPI_CALL ClearShaderInstrumentationMetricsARM(
11411+ VkDevice device,
11412+ VkShaderInstrumentationARM instrumentation) {
11413+ const VkLayerDispatchTable *disp = loader_get_dispatch(device);
11414+ if (NULL == disp) {
11415+ loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
11416+ "vkClearShaderInstrumentationMetricsARM: Invalid device "
11417+ "[VUID-vkClearShaderInstrumentationMetricsARM-device-parameter]");
11418+ abort(); /* Intentionally fail so user can correct issue. */
11419+ }
11420+ disp->ClearShaderInstrumentationMetricsARM(device, instrumentation);
11421+ }
11422+
11423+
1128311424// ---- VK_EXT_fragment_density_map_offset extension trampoline/terminators
1128411425
1128511426VKAPI_ATTR void VKAPI_CALL CmdEndRendering2EXT(
@@ -14107,6 +14248,36 @@ bool extension_instance_gpa(struct loader_instance *ptr_instance, const char *na
1410714248 return true;
1410814249 }
1410914250
14251+ // ---- VK_ARM_shader_instrumentation extension commands
14252+ if (!strcmp("vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM", name)) {
14253+ *addr = (void *)EnumeratePhysicalDeviceShaderInstrumentationMetricsARM;
14254+ return true;
14255+ }
14256+ if (!strcmp("vkCreateShaderInstrumentationARM", name)) {
14257+ *addr = (void *)CreateShaderInstrumentationARM;
14258+ return true;
14259+ }
14260+ if (!strcmp("vkDestroyShaderInstrumentationARM", name)) {
14261+ *addr = (void *)DestroyShaderInstrumentationARM;
14262+ return true;
14263+ }
14264+ if (!strcmp("vkCmdBeginShaderInstrumentationARM", name)) {
14265+ *addr = (void *)CmdBeginShaderInstrumentationARM;
14266+ return true;
14267+ }
14268+ if (!strcmp("vkCmdEndShaderInstrumentationARM", name)) {
14269+ *addr = (void *)CmdEndShaderInstrumentationARM;
14270+ return true;
14271+ }
14272+ if (!strcmp("vkGetShaderInstrumentationValuesARM", name)) {
14273+ *addr = (void *)GetShaderInstrumentationValuesARM;
14274+ return true;
14275+ }
14276+ if (!strcmp("vkClearShaderInstrumentationMetricsARM", name)) {
14277+ *addr = (void *)ClearShaderInstrumentationMetricsARM;
14278+ return true;
14279+ }
14280+
1411014281 // ---- VK_EXT_fragment_density_map_offset extension commands
1411114282 if (!strcmp("vkCmdEndRendering2EXT", name)) {
1411214283 *addr = (void *)CmdEndRendering2EXT;
@@ -14784,6 +14955,9 @@ const VkLayerInstanceDispatchTable instance_disp = {
1478414955 // ---- VK_ARM_performance_counters_by_region extension commands
1478514956 .EnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM = terminator_EnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM,
1478614957
14958+ // ---- VK_ARM_shader_instrumentation extension commands
14959+ .EnumeratePhysicalDeviceShaderInstrumentationMetricsARM = terminator_EnumeratePhysicalDeviceShaderInstrumentationMetricsARM,
14960+
1478714961 // ---- VK_SEC_ubm_surface extension commands
1478814962#if defined(VK_USE_PLATFORM_UBM_SEC)
1478914963 .CreateUbmSurfaceSEC = terminator_CreateUbmSurfaceSEC,
0 commit comments