Cleanup and warning for user provided VkPhysicalDeviceFeatures2.

This commit is contained in:
Cody Goodson 2021-04-18 14:09:05 -05:00 committed by Charles Giessen
parent 5ac038b778
commit 91b3949339
2 changed files with 9 additions and 8 deletions

View File

@ -31,6 +31,7 @@
#include <dlfcn.h>
#endif
#include <cstdio>
#include <mutex>
namespace vkb {
@ -1264,6 +1265,10 @@ PhysicalDeviceSelector& PhysicalDeviceSelector::set_desired_version(uint32_t maj
criteria.desired_version = VK_MAKE_VERSION(major, minor, 0);
return *this;
}
PhysicalDeviceSelector& PhysicalDeviceSelector::set_required_features(VkPhysicalDeviceFeatures const& features) {
criteria.required_features = features;
return *this;
}
#if defined(VK_API_VERSION_1_2)
// Just calls add_required_features
PhysicalDeviceSelector& PhysicalDeviceSelector::set_required_features_11(
@ -1435,6 +1440,8 @@ detail::Result<Device> DeviceBuilder::build() const {
final_pnext_chain.push_back(reinterpret_cast<VkBaseOutStructure*>(&features_node));
}
}
} else {
printf("User provided VkPhysicalDeviceFeatures2 instance found in pNext chain. All requirements added via 'add_required_extension_features' will be ignored.");
}
if(!user_defined_phys_dev_features_2 && !has_phys_dev_features_2) {
@ -1458,10 +1465,6 @@ detail::Result<Device> DeviceBuilder::build() const {
device_create_info.enabledExtensionCount = static_cast<uint32_t>(extensions.size());
device_create_info.ppEnabledExtensionNames = extensions.data();
if(!final_pnext_chain.empty()) {
device_create_info.pNext = final_pnext_chain.front();
}
Device device;
VkResult res = detail::vulkan_functions().fp_vkCreateDevice(

View File

@ -459,10 +459,8 @@ class PhysicalDeviceSelector {
return *this;
}
#endif
PhysicalDeviceSelector& set_required_features(VkPhysicalDeviceFeatures const& features) {
criteria.required_features = features;
return *this;
}
// Require a physical device which supports the features in VkPhysicalDeviceFeatures.
PhysicalDeviceSelector& set_required_features(VkPhysicalDeviceFeatures const& features);
#if defined(VK_API_VERSION_1_2)
// Require a physical device which supports the features in VkPhysicalDeviceVulkan11Features.
// Must have vulkan version 1.2 - This is due to the VkPhysicalDeviceVulkan11Features struct being added in 1.2, not 1.1