Skip to content

Commit

Permalink
Merge pull request #207 from unexploredtest/master
Browse files Browse the repository at this point in the history
Raises an error when having no/exceeding vulkan device's limit
  • Loading branch information
axsaucedo authored Apr 12, 2021
2 parents 4f7c15b + 71498b2 commit 943a281
Showing 1 changed file with 19 additions and 0 deletions.
19 changes: 19 additions & 0 deletions src/Manager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down

0 comments on commit 943a281

Please sign in to comment.