aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJon Ashburn <jon@lunarg.com>2015-11-02 17:37:20 -0700
committerJon Ashburn <jon@lunarg.com>2015-11-03 14:51:46 -0700
commit0ff01aaf3046a0b7c21391efaa239658af6c264e (patch)
tree103ba906c90bb47f465403d32d9ecf99b13343e6
parentfa754692ec72ad6f40e095421ed571b5517bfa1d (diff)
downloadusermoji-0ff01aaf3046a0b7c21391efaa239658af6c264e.tar.xz
layers: Allow calling down chain with vkEnumerateDeviceExtensionProperties
-rw-r--r--layers/basic.cpp13
-rwxr-xr-xlayers/draw_state.cpp17
-rw-r--r--layers/image.cpp15
-rw-r--r--layers/mem_tracker.cpp12
-rw-r--r--layers/param_checker.cpp10
-rw-r--r--layers/screenshot.cpp13
-rw-r--r--layers/shader_checker.cpp12
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(