Added check for swapchain extention

This commit is contained in:
Warwick New 2024-12-24 14:51:21 +00:00
parent da681747e7
commit cbda78de7b

View file

@ -267,21 +267,45 @@ QueueFamilyIndices findQueueFamilies(VkPhysicalDevice device,
return indices; return indices;
} }
bool ckeckDeviceExtensionSupport(VkPhysicalDevice device) { bool checkDeviceExtensionSupport(VkPhysicalDevice device,
uint32_t extensionCount; const char *requiredExtentions[],
vkEnumerateDeviceExtensionProperties(device, NULL, &extensionCount, NULL); size_t requiredExtentionCount) {
uint32_t availableExtensionCount;
VkExtensionProperties availableExtentions[extensionCount]; vkEnumerateDeviceExtensionProperties(device, NULL, &availableExtensionCount,
vkEnumerateDeviceExtensionProperties(device, NULL, &extensionCount, NULL);
VkExtensionProperties availableExtentions[availableExtensionCount];
vkEnumerateDeviceExtensionProperties(device, NULL, &availableExtensionCount,
availableExtentions); availableExtentions);
for (uint i = 0; i < requiredExtentionCount; i++) {
bool extentionFound = false;
for (uint j = 0; j < availableExtensionCount; j++) {
if (strcmp(availableExtentions[j].extensionName, requiredExtentions[i]) ==
0) {
extentionFound = true;
break;
}
}
if (!extentionFound) {
return false;
}
}
return true; return true;
} }
bool isDeviceSuitable(VkPhysicalDevice device, VkSurfaceKHR *surface) { bool isDeviceSuitable(VkPhysicalDevice device, VkSurfaceKHR *surface) {
QueueFamilyIndices indices = findQueueFamilies(device, surface); QueueFamilyIndices indices = findQueueFamilies(device, surface);
bool completeIndeces =
indices.graphicsFamilyExists && indices.presentFamilyExists;
return indices.graphicsFamilyExists && indices.presentFamilyExists; const char *requiredExtensions[] = {VK_KHR_SWAPCHAIN_EXTENSION_NAME};
size_t requiredExtentionCount =
sizeof(requiredExtensions) / sizeof(const char *);
bool extensionsSupported = checkDeviceExtensionSupport(
device, requiredExtensions, requiredExtentionCount);
return completeIndeces && extensionsSupported;
} }
void pickPhysicalDevice(Application *app) { void pickPhysicalDevice(Application *app) {