diff --git a/src/Manager.cpp b/src/Manager.cpp index a78cc7a3..025ff804 100644 --- a/src/Manager.cpp +++ b/src/Manager.cpp @@ -287,6 +287,25 @@ Manager::createDevice(const std::vector& 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 physicalDevices = this->mInstance->enumeratePhysicalDevices();