@@ -64,13 +64,15 @@ bool CoreChecks::ValidatePhysicalDeviceQueueFamilies(uint32_t queue_family_count
6464 const Location& loc, const char * vuid) const {
6565 bool skip = false ;
6666 if (queue_families) {
67- vvl::unordered_set <uint32_t > set ;
67+ vvl::unordered_map <uint32_t , uint32_t > first_queue_family_index ;
6868 for (uint32_t i = 0 ; i < queue_family_count; ++i) {
69- if (set.count (queue_families[i])) {
70- skip |= LogError (vuid, device, loc.dot (Field::pQueueFamilyIndices, i),
71- " (%" PRIu32 " ) is also in pQueueFamilyIndices[0]." , queue_families[i]);
69+ if (const auto duplicate = first_queue_family_index.find (queue_families[i]);
70+ duplicate != first_queue_family_index.end ()) {
71+ skip |=
72+ LogError (vuid, device, loc.dot (Field::pQueueFamilyIndices, i),
73+ " (%" PRIu32 " ) is also in pQueueFamilyIndices[%" PRIu32 " ]." , queue_families[i], duplicate->second );
7274 } else {
73- set. insert (queue_families[i]);
75+ first_queue_family_index. emplace (queue_families[i], i );
7476 if (queue_families[i] == VK_QUEUE_FAMILY_IGNORED) {
7577 skip |= LogError (vuid, device, loc.dot (Field::pQueueFamilyIndices, i),
7678 " is VK_QUEUE_FAMILY_IGNORED, but it is required to provide a valid queue family index value." );
0 commit comments