aboutsummaryrefslogtreecommitdiff
path: root/layers/parameter_validation.cpp
diff options
context:
space:
mode:
authorMark Lobodzinski <mark@lunarg.com>2017-06-07 14:00:31 -0600
committerMark Lobodzinski <mark@lunarg.com>2017-06-09 08:48:10 -0600
commit06ee14dc64a70613a5c2db54c1b8a670f6d6642b (patch)
treebe0d1d8f5f0e1ed91f156ceea462ab9050f76720 /layers/parameter_validation.cpp
parent9fd722c87a9f47e9925e395200d3fec9c602b567 (diff)
downloadusermoji-06ee14dc64a70613a5c2db54c1b8a670f6d6642b.tar.xz
layers: Make PV GPA handling more consistent
Change-Id: I28d4642ca924928b9a76d6ddeb3a4e9ef106710b
Diffstat (limited to 'layers/parameter_validation.cpp')
-rw-r--r--layers/parameter_validation.cpp38
1 files changed, 15 insertions, 23 deletions
diff --git a/layers/parameter_validation.cpp b/layers/parameter_validation.cpp
index 87c40bad..7f0f8174 100644
--- a/layers/parameter_validation.cpp
+++ b/layers/parameter_validation.cpp
@@ -5744,36 +5744,28 @@ VKAPI_ATTR void VKAPI_CALL SetHdrMetadataEXT(VkDevice device, uint32_t swapchain
}
}
-static inline PFN_vkVoidFunction layer_intercept_proc(const char *name) {
- for (unsigned int i = 0; i < sizeof(procmap) / sizeof(procmap[0]); i++) {
- if (!strcmp(name, procmap[i].name)) return procmap[i].pFunc;
- }
- return NULL;
-}
-
VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL GetDeviceProcAddr(VkDevice device, const char *funcName) {
- assert(device);
-
- PFN_vkVoidFunction addr = layer_intercept_proc(funcName);
- if (addr) return addr;
-
- layer_data *dev_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
+ const auto item = name_to_funcptr_map.find(funcName);
+ if (item != name_to_funcptr_map.end()) {
+ return reinterpret_cast<PFN_vkVoidFunction>(item->second);
+ }
- if (!dev_data->dispatch_table.GetDeviceProcAddr) return nullptr;
- return dev_data->dispatch_table.GetDeviceProcAddr(device, funcName);
+ layer_data *device_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
+ const auto &table = device_data->dispatch_table;
+ if (!table.GetDeviceProcAddr) return nullptr;
+ return table.GetDeviceProcAddr(device, funcName);
}
VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL GetInstanceProcAddr(VkInstance instance, const char *funcName) {
-
- PFN_vkVoidFunction addr = layer_intercept_proc(funcName);
- if (addr) return addr;
-
- assert(instance);
+ const auto item = name_to_funcptr_map.find(funcName);
+ if (item != name_to_funcptr_map.end()) {
+ return reinterpret_cast<PFN_vkVoidFunction>(item->second);
+ }
auto instance_data = GetLayerDataPtr(get_dispatch_key(instance), instance_layer_data_map);
-
- if (!instance_data->dispatch_table.GetInstanceProcAddr) return nullptr;
- return instance_data->dispatch_table.GetInstanceProcAddr(instance, funcName);
+ auto &table = instance_data->dispatch_table;
+ if (!table.GetInstanceProcAddr) return nullptr;
+ return table.GetInstanceProcAddr(instance, funcName);
}
VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL GetPhysicalDeviceProcAddr(VkInstance instance, const char *funcName) {