layers: Verify dev extension APIs enabled for GDPA
Parameter Validation must return NULL for any device API whose parent
extension has not been enabled during CreateDevice.
diff --git a/layers/parameter_validation_utils.cpp b/layers/parameter_validation_utils.cpp
index a9809b4..c5706db 100644
--- a/layers/parameter_validation_utils.cpp
+++ b/layers/parameter_validation_utils.cpp
@@ -2977,12 +2977,14 @@
}
VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetDeviceProcAddr(VkDevice device, const char *funcName) {
+ layer_data *device_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
+ if (!ApiParentExtensionEnabled(funcName, device_data->extensions.device_extension_set)) {
+ return nullptr;
+ }
const auto item = name_to_funcptr_map.find(funcName);
if (item != name_to_funcptr_map.end()) {
return reinterpret_cast<PFN_vkVoidFunction>(item->second);
}
-
- 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);