Added function for checking extension support at device level
This commit is contained in:
parent
100d8e40e9
commit
f421d17814
1 changed files with 29 additions and 0 deletions
|
|
@ -32,6 +32,8 @@ namespace vk
|
||||||
VkPhysicalDeviceMemoryProperties memoryProperties;
|
VkPhysicalDeviceMemoryProperties memoryProperties;
|
||||||
/** @brief Queue family properties of the physical device */
|
/** @brief Queue family properties of the physical device */
|
||||||
std::vector<VkQueueFamilyProperties> queueFamilyProperties;
|
std::vector<VkQueueFamilyProperties> queueFamilyProperties;
|
||||||
|
/** @brief List of extensions supported by the device */
|
||||||
|
std::vector<std::string> supportedExtensions;
|
||||||
|
|
||||||
/** @brief Default command pool for the graphics queue family index */
|
/** @brief Default command pool for the graphics queue family index */
|
||||||
VkCommandPool commandPool = VK_NULL_HANDLE;
|
VkCommandPool commandPool = VK_NULL_HANDLE;
|
||||||
|
|
@ -70,6 +72,21 @@ namespace vk
|
||||||
assert(queueFamilyCount > 0);
|
assert(queueFamilyCount > 0);
|
||||||
queueFamilyProperties.resize(queueFamilyCount);
|
queueFamilyProperties.resize(queueFamilyCount);
|
||||||
vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, &queueFamilyCount, queueFamilyProperties.data());
|
vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, &queueFamilyCount, queueFamilyProperties.data());
|
||||||
|
|
||||||
|
// Get list of supported extensions
|
||||||
|
uint32_t extCount = 0;
|
||||||
|
vkEnumerateDeviceExtensionProperties(physicalDevice, nullptr, &extCount, nullptr);
|
||||||
|
if (extCount > 0)
|
||||||
|
{
|
||||||
|
std::vector<VkExtensionProperties> extensions(extCount);
|
||||||
|
if (vkEnumerateDeviceExtensionProperties(physicalDevice, nullptr, &extCount, &extensions.front()) == VK_SUCCESS)
|
||||||
|
{
|
||||||
|
for (auto ext : extensions)
|
||||||
|
{
|
||||||
|
supportedExtensions.push_back(ext.extensionName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -521,5 +538,17 @@ namespace vk
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if an extension is supported by the (physical device)
|
||||||
|
*
|
||||||
|
* @param extension Name of the extension to check
|
||||||
|
*
|
||||||
|
* @return True if the extension is supported (present in the list read at device creation time)
|
||||||
|
*/
|
||||||
|
bool extensionSupported(std::string extension)
|
||||||
|
{
|
||||||
|
return (std::find(supportedExtensions.begin(), supportedExtensions.end(), extension) != supportedExtensions.end());
|
||||||
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue