From 2069798558ec7eb9b489ffc69fd1d27eebb0c84e Mon Sep 17 00:00:00 2001 From: Lenny Komow Date: Thu, 12 Dec 2019 15:38:07 -0700 Subject: [PATCH] loader: Add custom terminator to tool properties Since vkGetPhysicalDeviceToolPropertiesEXT is implemented in the layers and not drivers, this changes the terminator to never call into the driver. Change-Id: I3beb92ab5c327672f21a17b857068968099c2345 --- loader/extension_manual.c | 19 +++++++++++++++++++ loader/extension_manual.h | 12 ++++++++++++ loader/generated/vk_loader_extensions.c | 30 ------------------------------ scripts/loader_extension_generator.py | 6 +++--- 4 files changed, 34 insertions(+), 33 deletions(-) diff --git a/loader/extension_manual.c b/loader/extension_manual.c index 490496d..b8118fd 100644 --- a/loader/extension_manual.c +++ b/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/loader/extension_manual.h b/loader/extension_manual.h index e07b910..fe4287e 100644 --- a/loader/extension_manual.h +++ b/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/loader/generated/vk_loader_extensions.c b/loader/generated/vk_loader_extensions.c index 06d9ce8..01c73be 100644 --- a/loader/generated/vk_loader_extensions.c +++ b/loader/generated/vk_loader_extensions.c @@ -3226,36 +3226,6 @@ VKAPI_ATTR VkDeviceAddress VKAPI_CALL GetBufferDeviceAddressEXT( } -// ---- 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); - if (disp->GetPhysicalDeviceToolPropertiesEXT != NULL) { - return disp->GetPhysicalDeviceToolPropertiesEXT(unwrapped_phys_dev, pToolCount, pToolProperties); - } else { - return VK_SUCCESS; - } -} - -VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceToolPropertiesEXT( - VkPhysicalDevice physicalDevice, - uint32_t* pToolCount, - VkPhysicalDeviceToolPropertiesEXT* pToolProperties) { - 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.GetPhysicalDeviceToolPropertiesEXT) { - loader_log(icd_term->this_instance, VK_DEBUG_REPORT_ERROR_BIT_EXT, 0, - "ICD associated with VkPhysicalDevice does not support GetPhysicalDeviceToolPropertiesEXT"); - } - return icd_term->dispatch.GetPhysicalDeviceToolPropertiesEXT(phys_dev_term->phys_dev, pToolCount, pToolProperties); -} - - // ---- VK_NV_cooperative_matrix extension trampoline/terminators VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceCooperativeMatrixPropertiesNV( diff --git a/scripts/loader_extension_generator.py b/scripts/loader_extension_generator.py index bd5abd3..e3f6a00 100644 --- a/scripts/loader_extension_generator.py +++ b/scripts/loader_extension_generator.py @@ -49,8 +49,7 @@ ADD_INST_CMDS = ['vkCreateInstance', AVOID_EXT_NAMES = ['VK_EXT_debug_report'] -NULL_CHECK_EXT_NAMES= ['VK_EXT_debug_utils', - 'VK_EXT_tooling_info'] +NULL_CHECK_EXT_NAMES= ['VK_EXT_debug_utils'] AVOID_CMD_NAMES = ['vkCreateDebugUtilsMessengerEXT', 'vkDestroyDebugUtilsMessengerEXT', @@ -928,7 +927,8 @@ class LoaderExtensionOutputGenerator(OutputGenerator): 'vkGetDisplayModeProperties2KHR', 'vkGetDisplayPlaneCapabilities2KHR', 'vkGetPhysicalDeviceSurfacePresentModes2EXT', - 'vkGetDeviceGroupSurfacePresentModes2EXT'] + 'vkGetDeviceGroupSurfacePresentModes2EXT', + 'vkGetPhysicalDeviceToolPropertiesEXT'] for ext_cmd in self.ext_commands: if (ext_cmd.ext_name in WSI_EXT_NAMES or -- 2.7.4