From f5970c76038ae09ef457ecf8a239c50e86cd789e Mon Sep 17 00:00:00 2001 From: Courtney Goeltzenleuchter Date: Tue, 1 Dec 2015 14:08:28 -0700 Subject: layers: export debug_report extension Need the EnumerateInstanceExtensionProperties to report support for the debug report extension as well as in the json file because different platforms will use either the json file (Windows & Linux) or the Enumerate call (Android). --- layers/device_limits.cpp | 5 ++--- layers/draw_state.cpp | 20 +++++++++++++------- layers/image.cpp | 20 +++++++++++++------- layers/mem_tracker.cpp | 20 +++++++++++++------- layers/param_checker.cpp | 20 +++++++++++++------- layers/swapchain.cpp | 38 ++++++++++++++++++++++++++++++++++++++ 6 files changed, 92 insertions(+), 31 deletions(-) diff --git a/layers/device_limits.cpp b/layers/device_limits.cpp index c7df462e..25beadec 100644 --- a/layers/device_limits.cpp +++ b/layers/device_limits.cpp @@ -147,20 +147,19 @@ static void init_device_limits(layer_data *my_data, const VkAllocationCallbacks } } -static const VkExtensionProperties dl_physicaldevice_extensions[] = { +static const VkExtensionProperties instance_extensions[] = { { VK_EXT_LUNARG_DEBUG_REPORT_EXTENSION_NAME, VK_EXT_LUNARG_DEBUG_REPORT_EXTENSION_REVISION } }; -/* DeviceLimits does not have any global extensions */ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceExtensionProperties( const char *pLayerName, uint32_t *pCount, VkExtensionProperties* pProperties) { - return util_GetExtensionProperties(1, dl_physicaldevice_extensions, pCount, pProperties); + return util_GetExtensionProperties(1, instance_extensions, pCount, pProperties); } static const VkLayerProperties dl_global_layers[] = { diff --git a/layers/draw_state.cpp b/layers/draw_state.cpp index c2afbdc6..2cafc404 100644 --- a/layers/draw_state.cpp +++ b/layers/draw_state.cpp @@ -2713,12 +2713,10 @@ VK_LAYER_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyDevice(VkDevice device, cons layer_data_map.erase(key); } -static const VkLayerProperties ds_global_layers[] = { +static const VkExtensionProperties instance_extensions[] = { { - "DrawState", - VK_API_VERSION, - VK_MAKE_VERSION(0, 1, 0), - "Validation layer: DrawState", + VK_EXT_LUNARG_DEBUG_REPORT_EXTENSION_NAME, + VK_EXT_LUNARG_DEBUG_REPORT_EXTENSION_REVISION } }; @@ -2727,10 +2725,18 @@ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceExtensionPrope uint32_t *pCount, VkExtensionProperties* pProperties) { - /* DrawState does not have any global extensions */ - return util_GetExtensionProperties(0, NULL, pCount, pProperties); + return util_GetExtensionProperties(1, instance_extensions, pCount, pProperties); } +static const VkLayerProperties ds_global_layers[] = { + { + "DrawState", + VK_API_VERSION, + VK_MAKE_VERSION(0, 1, 0), + "Validation layer: DrawState", + } +}; + VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceLayerProperties( uint32_t *pCount, VkLayerProperties* pProperties) diff --git a/layers/image.cpp b/layers/image.cpp index cde964af..614f9d54 100644 --- a/layers/image.cpp +++ b/layers/image.cpp @@ -190,12 +190,10 @@ VK_LAYER_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyDevice(VkDevice device, cons layer_data_map.erase(key); } -static const VkLayerProperties pc_global_layers[] = { +static const VkExtensionProperties instance_extensions[] = { { - "Image", - VK_API_VERSION, - VK_MAKE_VERSION(0, 1, 0), - "Validation layer: Image ParamChecker", + VK_EXT_LUNARG_DEBUG_REPORT_EXTENSION_NAME, + VK_EXT_LUNARG_DEBUG_REPORT_EXTENSION_REVISION } }; @@ -204,10 +202,18 @@ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceExtensionPrope uint32_t *pCount, VkExtensionProperties* pProperties) { - // ParamChecker does not have any global extensions - return util_GetExtensionProperties(0, NULL, pCount, pProperties); + return util_GetExtensionProperties(1, instance_extensions, pCount, pProperties); } +static const VkLayerProperties pc_global_layers[] = { + { + "Image", + VK_API_VERSION, + VK_MAKE_VERSION(0, 1, 0), + "Validation layer: Image ParamChecker", + } +}; + VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceLayerProperties( uint32_t *pCount, VkLayerProperties* pProperties) diff --git a/layers/mem_tracker.cpp b/layers/mem_tracker.cpp index 62a78ba8..c77f1cd9 100644 --- a/layers/mem_tracker.cpp +++ b/layers/mem_tracker.cpp @@ -1180,12 +1180,10 @@ VK_LAYER_EXPORT VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties( memcpy(&memProps, pMemoryProperties, sizeof(VkPhysicalDeviceMemoryProperties)); } -static const VkLayerProperties mtGlobalLayers[] = { +static const VkExtensionProperties instance_extensions[] = { { - "MemTracker", - VK_API_VERSION, - VK_MAKE_VERSION(0, 1, 0), - "Validation layer: MemTracker", + VK_EXT_LUNARG_DEBUG_REPORT_EXTENSION_NAME, + VK_EXT_LUNARG_DEBUG_REPORT_EXTENSION_REVISION } }; @@ -1194,10 +1192,18 @@ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceExtensionPrope uint32_t *pCount, VkExtensionProperties *pProperties) { - /* Mem tracker does not have any global extensions */ - return util_GetExtensionProperties(0, NULL, pCount, pProperties); + return util_GetExtensionProperties(1, instance_extensions, pCount, pProperties); } +static const VkLayerProperties mtGlobalLayers[] = { + { + "MemTracker", + VK_API_VERSION, + VK_MAKE_VERSION(0, 1, 0), + "Validation layer: MemTracker", + } +}; + VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceLayerProperties( uint32_t *pCount, VkLayerProperties *pProperties) diff --git a/layers/param_checker.cpp b/layers/param_checker.cpp index 0514bf18..6f023753 100644 --- a/layers/param_checker.cpp +++ b/layers/param_checker.cpp @@ -150,12 +150,10 @@ VK_LAYER_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyDebugReportCallbackLUNARG( layer_destroy_msg_callback(data->report_data, msgCallback, pAllocator); } -static const VkLayerProperties pc_global_layers[] = { +static const VkExtensionProperties instance_extensions[] = { { - "ParamChecker", - VK_API_VERSION, - VK_MAKE_VERSION(0, 1, 0), - "Validation layer: ParamChecker", + VK_EXT_LUNARG_DEBUG_REPORT_EXTENSION_NAME, + VK_EXT_LUNARG_DEBUG_REPORT_EXTENSION_REVISION } }; @@ -164,10 +162,18 @@ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceExtensionPrope uint32_t *pCount, VkExtensionProperties* pProperties) { - /* ParamChecker does not have any global extensions */ - return util_GetExtensionProperties(0, NULL, pCount, pProperties); + return util_GetExtensionProperties(1, instance_extensions, pCount, pProperties); } +static const VkLayerProperties pc_global_layers[] = { + { + "ParamChecker", + VK_API_VERSION, + VK_MAKE_VERSION(0, 1, 0), + "Validation layer: ParamChecker", + } +}; + VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceLayerProperties( uint32_t *pCount, VkLayerProperties* pProperties) diff --git a/layers/swapchain.cpp b/layers/swapchain.cpp index 2b8ed24c..609f44e6 100644 --- a/layers/swapchain.cpp +++ b/layers/swapchain.cpp @@ -41,6 +41,39 @@ template layer_data *get_my_data_ptr( void *data_key, std::unordered_map &data_map); +static const VkExtensionProperties instance_extensions[] = { + { + VK_EXT_LUNARG_DEBUG_REPORT_EXTENSION_NAME, + VK_EXT_LUNARG_DEBUG_REPORT_EXTENSION_REVISION + } +}; + +VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceExtensionProperties( + const char *pLayerName, + uint32_t *pCount, + VkExtensionProperties* pProperties) +{ + return util_GetExtensionProperties(1, instance_extensions, pCount, pProperties); +} + +static const VkLayerProperties swapchain_global_layers[] = { + { + "Swapchain", + VK_API_VERSION, + VK_MAKE_VERSION(0, 1, 0), + "Validation layer: Swapchain", + } +}; + +VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceLayerProperties( + uint32_t *pCount, + VkLayerProperties* pProperties) +{ + return util_GetLayerProperties(ARRAY_SIZE(swapchain_global_layers), + swapchain_global_layers, + pCount, pProperties); +} + static void createDeviceRegisterExtensions(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, VkDevice device) { @@ -1204,6 +1237,11 @@ VK_LAYER_EXPORT VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetInstanceProcAddr(V return (PFN_vkVoidFunction) vkGetInstanceProcAddr; } + if (!strcmp(funcName, "vkEnumerateInstanceLayerProperties")) + return (PFN_vkVoidFunction) vkEnumerateInstanceLayerProperties; + if (!strcmp(funcName, "vkEnumerateInstanceExtensionProperties")) + return (PFN_vkVoidFunction) vkEnumerateInstanceExtensionProperties; + addr = layer_intercept_instance_proc(funcName); if (addr) return addr; -- cgit v1.2.3