// Check enabled device extensions against supported device extension whitelist static void DeviceExtensionWhitelist(const VkDeviceCreateInfo *pCreateInfo, VkDevice device) { layer_data *device_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); for (uint32_t i = 0; i < pCreateInfo->enabledExtensionCount; i++) { // Check for recognized device extensions if (!white_list(pCreateInfo->ppEnabledExtensionNames[i], kUniqueObjectsSupportedDeviceExtensions)) { log_msg(device_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, VALIDATION_ERROR_UNDEFINED, "UniqueObjects", "Device Extension %s is not supported by this layer. Using this extension may adversely affect " "validation results and/or produce undefined behavior.", pCreateInfo->ppEnabledExtensionNames[i]); } } }
// Utility function for finding a text string in another string bool white_list(const char *item, const char *list) { std::string candidate(item); std::string white_list(list); return (white_list.find(candidate) != std::string::npos); }