Raises an error if 1: There is no Vulkan device 2: physicalDeviceIndex exceeds the device limit

This commit is contained in:
unexploredtest 2021-04-12 10:25:48 +04:30
parent 4f7c15b112
commit 429f3aaacf

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();