diff options
| author | Jon Ashburn <jon@lunarg.com> | 2015-11-02 17:37:20 -0700 |
|---|---|---|
| committer | Jon Ashburn <jon@lunarg.com> | 2015-11-03 14:51:46 -0700 |
| commit | 0ff01aaf3046a0b7c21391efaa239658af6c264e (patch) | |
| tree | 103ba906c90bb47f465403d32d9ecf99b13343e6 | |
| parent | fa754692ec72ad6f40e095421ed571b5517bfa1d (diff) | |
| download | usermoji-0ff01aaf3046a0b7c21391efaa239658af6c264e.tar.xz | |
layers: Allow calling down chain with vkEnumerateDeviceExtensionProperties
| -rw-r--r-- | layers/basic.cpp | 13 | ||||
| -rwxr-xr-x | layers/draw_state.cpp | 17 | ||||
| -rw-r--r-- | layers/image.cpp | 15 | ||||
| -rw-r--r-- | layers/mem_tracker.cpp | 12 | ||||
| -rw-r--r-- | layers/param_checker.cpp | 10 | ||||
| -rw-r--r-- | layers/screenshot.cpp | 13 | ||||
| -rw-r--r-- | layers/shader_checker.cpp | 12 |
7 files changed, 81 insertions, 11 deletions
diff --git a/layers/basic.cpp b/layers/basic.cpp index a87ab59e..66e6c285 100644 --- a/layers/basic.cpp +++ b/layers/basic.cpp @@ -80,8 +80,17 @@ VK_LAYER_EXPORT VkResult VKAPI vkEnumerateDeviceExtensionProperties( uint32_t *pCount, VkExtensionProperties *pProperties) { - return util_GetExtensionProperties(ARRAY_SIZE(basic_physicaldevice_extensions), basic_physicaldevice_extensions, - pCount, pProperties); + if (pLayerName == NULL) { + return instance_dispatch_table(physicalDevice)->EnumerateDeviceExtensionProperties( + physicalDevice, + NULL, + pCount, + pProperties); + } else { + return util_GetExtensionProperties(ARRAY_SIZE(basic_physicaldevice_extensions), + basic_physicaldevice_extensions, + pCount, pProperties); + } } VK_LAYER_EXPORT VkResult VKAPI basic_EnumeratePhysicalDevices( diff --git a/layers/draw_state.cpp b/layers/draw_state.cpp index 17bc4217..341f95ed 100755 --- a/layers/draw_state.cpp +++ b/layers/draw_state.cpp @@ -1709,9 +1709,20 @@ VK_LAYER_EXPORT VkResult VKAPI vkEnumerateDeviceExtensionProperties( uint32_t* pCount, VkExtensionProperties* pProperties) { - /* Mem tracker does not have any physical device extensions */ - return util_GetExtensionProperties(ARRAY_SIZE(ds_device_extensions), ds_device_extensions, - pCount, pProperties); + if (pLayerName == NULL) { + dispatch_key key = get_dispatch_key(physicalDevice); + layer_data *my_data = get_my_data_ptr(key, layer_data_map); + VkLayerInstanceDispatchTable *pTable = my_data->instance_dispatch_table; + return pTable->EnumerateDeviceExtensionProperties( + physicalDevice, + NULL, + pCount, + pProperties); + } else { + return util_GetExtensionProperties(ARRAY_SIZE(ds_device_extensions), + ds_device_extensions, + pCount, pProperties); + } } VK_LAYER_EXPORT VkResult VKAPI vkEnumerateDeviceLayerProperties( diff --git a/layers/image.cpp b/layers/image.cpp index c84fa9c1..b210d640 100644 --- a/layers/image.cpp +++ b/layers/image.cpp @@ -204,8 +204,19 @@ VK_LAYER_EXPORT VkResult VKAPI vkEnumerateDeviceExtensionProperties( uint32_t* pCount, VkExtensionProperties* pProperties) { - // ParamChecker does not have any physical device extensions - return util_GetExtensionProperties(0, NULL, pCount, pProperties); + // Image does not have any physical device extensions + if (pLayerName == NULL) { + dispatch_key key = get_dispatch_key(physicalDevice); + layer_data *my_data = get_my_data_ptr(key, layer_data_map); + VkLayerInstanceDispatchTable *pTable = my_data->instance_dispatch_table; + return pTable->EnumerateDeviceExtensionProperties( + physicalDevice, + NULL, + pCount, + pProperties); + } else { + return util_GetExtensionProperties(0, NULL, pCount, pProperties); + } } VK_LAYER_EXPORT VkResult VKAPI vkEnumerateDeviceLayerProperties( diff --git a/layers/mem_tracker.cpp b/layers/mem_tracker.cpp index f4f62c97..93b1d8eb 100644 --- a/layers/mem_tracker.cpp +++ b/layers/mem_tracker.cpp @@ -1095,7 +1095,17 @@ VK_LAYER_EXPORT VkResult VKAPI vkEnumerateDeviceExtensionProperties( VkExtensionProperties* pProperties) { /* Mem tracker does not have any physical device extensions */ - return util_GetExtensionProperties(0, NULL, pCount, pProperties); + if (pLayerName == NULL) { + layer_data *my_data = get_my_data_ptr(get_dispatch_key(physicalDevice), layer_data_map); + VkLayerInstanceDispatchTable *pInstanceTable = my_data->instance_dispatch_table; + return pInstanceTable->EnumerateDeviceExtensionProperties( + physicalDevice, + NULL, + pCount, + pProperties); + } else { + return util_GetExtensionProperties(0, NULL, pCount, pProperties); + } } VK_LAYER_EXPORT VkResult VKAPI vkEnumerateDeviceLayerProperties( diff --git a/layers/param_checker.cpp b/layers/param_checker.cpp index 0aff4509..022c6b9d 100644 --- a/layers/param_checker.cpp +++ b/layers/param_checker.cpp @@ -170,7 +170,15 @@ VK_LAYER_EXPORT VkResult VKAPI vkEnumerateDeviceExtensionProperties( VkExtensionProperties* pProperties) { /* ParamChecker does not have any physical device extensions */ - return util_GetExtensionProperties(0, NULL, pCount, pProperties); + if (pLayerName == NULL) { + return get_dispatch_table(pc_instance_table_map, physicalDevice)->EnumerateDeviceExtensionProperties( + physicalDevice, + NULL, + pCount, + pProperties); + } else { + return util_GetExtensionProperties(0, NULL, pCount, pProperties); + } } VK_LAYER_EXPORT VkResult VKAPI vkEnumerateDeviceLayerProperties( diff --git a/layers/screenshot.cpp b/layers/screenshot.cpp index 6a85aeb5..ddd6566a 100644 --- a/layers/screenshot.cpp +++ b/layers/screenshot.cpp @@ -418,7 +418,16 @@ VK_LAYER_EXPORT VkResult VKAPI vkEnumerateDeviceExtensionProperties( VkExtensionProperties* pProperties) { /* ScreenShot does not have any physical device extensions */ - return util_GetExtensionProperties(0, NULL, pCount, pProperties); + if (pLayerName == NULL) { + VkLayerInstanceDispatchTable* pTable = instance_dispatch_table(physicalDevice); + return pTable->EnumerateDeviceExtensionProperties( + physicalDevice, + NULL, + pCount, + pProperties); + } else { + return util_GetExtensionProperties(0, NULL, pCount, pProperties); + } } VK_LAYER_EXPORT VkResult VKAPI vkEnumerateDeviceLayerProperties( @@ -714,6 +723,8 @@ VK_LAYER_EXPORT PFN_vkVoidFunction VKAPI vkGetInstanceProcAddr(VkInstance instan if (!strcmp(funcName, "vkEnumeratePhysicalDevices")) return (PFN_vkVoidFunction)vkEnumeratePhysicalDevices; + if (!strcmp(funcName, "vkEnumerateDeviceExtensionProperties")) + return (PFN_vkVoidFunction)vkEnumerateDeviceExtensionProperties; VkLayerInstanceDispatchTable* pTable = instance_dispatch_table(instance); if (pTable->GetInstanceProcAddr == NULL) diff --git a/layers/shader_checker.cpp b/layers/shader_checker.cpp index d7a9aa91..1999aef2 100644 --- a/layers/shader_checker.cpp +++ b/layers/shader_checker.cpp @@ -299,7 +299,17 @@ VK_LAYER_EXPORT VkResult VKAPI vkEnumerateDeviceExtensionProperties( VkExtensionProperties* pProperties) { /* Shader checker does not have any physical device extensions */ - return util_GetExtensionProperties(0, NULL, pCount, pProperties); + if (pLayerName == NULL) { + dispatch_key key = get_dispatch_key(physicalDevice); + layer_data *my_data = get_my_data_ptr(key, layer_data_map); + my_data->instance_dispatch_table->EnumerateDeviceExtensionProperties( + physicalDevice, + NULL, + pCount, + pProperties); + } else { + return util_GetExtensionProperties(0, NULL, pCount, pProperties); + } } VK_LAYER_EXPORT VkResult VKAPI vkEnumerateDeviceLayerProperties( |
