| 257 | } |
| 258 | |
| 259 | VkBool32 ErrorMonitor::CheckForDesiredMsg(const char* vuid, const char* const msg_string) { |
| 260 | VkBool32 result = VK_FALSE; |
| 261 | auto guard = Lock(); |
| 262 | if (bailout_ != nullptr) { |
| 263 | *bailout_ = true; |
| 264 | } |
| 265 | std::string error_string(msg_string); |
| 266 | bool found_expected = false; |
| 267 | |
| 268 | if (print_all_errors_) { |
| 269 | #ifdef VK_USE_PLATFORM_ANDROID_KHR |
| 270 | __android_log_print(ANDROID_LOG_INFO, "VulkanLayerValidationTests", "%s", msg_string); |
| 271 | #else |
| 272 | std::cout << error_string; |
| 273 | #endif |
| 274 | } |
| 275 | |
| 276 | if (IgnoreMessage(error_string)) { |
| 277 | return result; |
| 278 | } |
| 279 | |
| 280 | for (const VuidAndMessage& undesired_message : undesired_messages_) { |
| 281 | if (undesired_message.Search(vuid, msg_string)) { |
| 282 | } |
| 283 | } |
| 284 | |
| 285 | for (size_t desired_message_i = 0; desired_message_i < desired_messages_.size(); ++desired_message_i) { |
| 286 | VuidAndMessage& desired_message = desired_messages_[desired_message_i]; |
| 287 | if (desired_message.SearchUndesiredRegex(msg_string)) { |
| 288 | ADD_FAILURE() << "Received undesired error message " << '"' << desired_message.undesired_msg_regex_string << '"' |
| 289 | << " in:\n" |
| 290 | << error_string; |
| 291 | return VK_TRUE; |
| 292 | } |
| 293 | if (desired_message.Search(vuid, msg_string)) { |
| 294 | found_expected = true; |
| 295 | failure_message_strings_.emplace_back(error_string); |
| 296 | message_found_ = true; |
| 297 | result = VK_TRUE; |
| 298 | // Remove desired message |
| 299 | std::swap(desired_message, desired_messages_[desired_messages_.size() - 1]); |
| 300 | desired_messages_.resize(desired_messages_.size() - 1); |
| 301 | break; |
| 302 | } |
| 303 | } |
| 304 | |
| 305 | if (!found_expected) { |
| 306 | for (const auto& allowed_msg : allowed_message_strings_) { |
| 307 | if (error_string.find(allowed_msg) != std::string::npos) { |
| 308 | found_expected = true; |
| 309 | break; |
| 310 | } |
| 311 | } |
| 312 | } |
| 313 | |
| 314 | if (!found_expected) { |
| 315 | result = VK_TRUE; |
| 316 | ADD_FAILURE() << error_string; |
no test coverage detected