Rename set_api_version to required_api_version and make the PhysicalDeviceSelector use the provided value as the required minimum for devices

This commit is contained in:
Charles Giessen 2020-03-08 00:59:58 -07:00
parent bb312e8c92
commit 1160b19a5c
3 changed files with 8 additions and 5 deletions

View File

@ -406,6 +406,7 @@ detail::Expected<Instance, detail::Error<InstanceError>> InstanceBuilder::build
instance.headless = true; instance.headless = true;
} }
instance.allocation_callbacks = info.allocation_callbacks; instance.allocation_callbacks = info.allocation_callbacks;
instance.instance_version = info.api_version;
return instance; return instance;
} }
@ -427,7 +428,7 @@ InstanceBuilder& InstanceBuilder::set_engine_version (uint32_t major, uint32_t m
info.engine_version = VK_MAKE_VERSION (major, minor, patch); info.engine_version = VK_MAKE_VERSION (major, minor, patch);
return *this; return *this;
} }
InstanceBuilder& InstanceBuilder::set_api_version (uint32_t major, uint32_t minor, uint32_t patch) { InstanceBuilder& InstanceBuilder::require_api_version (uint32_t major, uint32_t minor, uint32_t patch) {
info.api_version = VK_MAKE_VERSION (major, minor, patch); info.api_version = VK_MAKE_VERSION (major, minor, patch);
return *this; return *this;
} }
@ -750,6 +751,7 @@ PhysicalDeviceSelector::PhysicalDeviceSelector (Instance const& instance) {
system_info.instance = instance.instance; system_info.instance = instance.instance;
system_info.headless = instance.headless; system_info.headless = instance.headless;
criteria.require_present = !instance.headless; criteria.require_present = !instance.headless;
criteria.required_version = instance.instance_version;
} }
detail::Expected<PhysicalDevice, detail::Error<PhysicalDeviceError>> PhysicalDeviceSelector::select () const { detail::Expected<PhysicalDevice, detail::Error<PhysicalDeviceError>> PhysicalDeviceSelector::select () const {

View File

@ -159,6 +159,7 @@ struct Instance {
private: private:
bool headless = false; bool headless = false;
uint32_t instance_version = VK_MAKE_VERSION (1, 0, 0);
friend class InstanceBuilder; friend class InstanceBuilder;
friend class PhysicalDeviceSelector; friend class PhysicalDeviceSelector;
@ -182,8 +183,8 @@ class InstanceBuilder {
InstanceBuilder& set_app_version (uint32_t major, uint32_t minor, uint32_t patch); InstanceBuilder& set_app_version (uint32_t major, uint32_t minor, uint32_t patch);
// Sets the (major, minor, patch) version of the engine. // Sets the (major, minor, patch) version of the engine.
InstanceBuilder& set_engine_version (uint32_t major, uint32_t minor, uint32_t patch); InstanceBuilder& set_engine_version (uint32_t major, uint32_t minor, uint32_t patch);
// Sets the vulkan API version to use. // Require a minimum vulkan instance API version.
InstanceBuilder& set_api_version (uint32_t major, uint32_t minor, uint32_t patch); InstanceBuilder& require_api_version (uint32_t major, uint32_t minor, uint32_t patch);
// Adds a layer to be enabled. Will fail to create an instance if the layer isn't available. // Adds a layer to be enabled. Will fail to create an instance if the layer isn't available.
InstanceBuilder& enable_layer (const char* layer_name); InstanceBuilder& enable_layer (const char* layer_name);

View File

@ -55,7 +55,7 @@ int test_instance_basic () {
printf ("[%s: %s](user defined)\n%s\n", ms, mt, pCallbackData->pMessage); printf ("[%s: %s](user defined)\n%s\n", ms, mt, pCallbackData->pMessage);
return VK_FALSE; return VK_FALSE;
}) })
.set_api_version (1, 2, 111) .require_api_version (1, 2, 111)
.build (); .build ();
if (!instance_ret.has_value ()) { if (!instance_ret.has_value ()) {
return 1; return 1;
@ -76,7 +76,7 @@ int test_instance_headless () {
.set_app_version (4, 5, 6) .set_app_version (4, 5, 6)
.set_app_name ("headless") .set_app_name ("headless")
.set_engine_name ("nick") .set_engine_name ("nick")
.set_api_version (1, 0, 34) .require_api_version (1, 0, 34)
.use_default_debug_messenger () .use_default_debug_messenger ()
.add_validation_feature_enable (VkValidationFeatureEnableEXT::VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT) .add_validation_feature_enable (VkValidationFeatureEnableEXT::VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT)
.add_validation_feature_disable (VkValidationFeatureDisableEXT::VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT) .add_validation_feature_disable (VkValidationFeatureDisableEXT::VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT)