Merge pull request #207 from unexploredtest/master

Raises an error when having no/exceeding vulkan device's limit
This commit is contained in:
Alejandro Saucedo 2021-04-12 17:12:05 +01:00 committed by GitHub
commit 943a281232
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -287,6 +287,25 @@ Manager::createDevice(const std::vector<uint32_t>& familyQueueIndices,
}
this->mFreeDevice = true;
// Getting an integer that says how many vuklan devices we have
uint32_t deviceCount = 0;
vkEnumeratePhysicalDevices(*(this->mInstance), &deviceCount, nullptr);
// This means there are no devices at all
if (deviceCount == 0) {
throw std::runtime_error("Failed to find GPUs with Vulkan support! "
"Maybe you haven't installed vulkan drivers?");
}
// This means that we're exceeding our device limit, for
// example if we have 2 devices, just physicalDeviceIndex
// 0 and 1 are acceptable. Hence, physicalDeviceIndex should
// always be less than deviceCount, else we raise an error
if ( !(deviceCount > physicalDeviceIndex) ) {
throw std::runtime_error("There is no such physical index or device, "
"please use your existing device");
}
std::vector<vk::PhysicalDevice> physicalDevices =
this->mInstance->enumeratePhysicalDevices();