After reviewing the Vulkan specification, on a note about VkPhysicalDeviceProperties::apiVersion (Vulkan® 1.2.162 - A Specification (with all registered extensions)), turns out Vulkan can have different API versions for instance and device. The application should not be using functionality that is beyond the max supported corresponding version: The API version returned by vkEnumerateInstanceVersion is associated to the instance, and the one by VkPhysicalDeviceProperties::apiVersion, to the physical device:
The value of apiVersion may be different than the version returned by vkEnumerateInstanceVersion; either higher or lower. In such cases, the application must not use functionality that exceeds the version of Vulkan associated with a given object. The pApiVersion parameter returned by vkEnumerateInstanceVersion is the version associated with a VkInstance and its children, except for a VkPhysicalDevice and its children. VkPhysicalDeviceProperties::apiVersion is the version associated with a VkPhysicalDevice and its children.
Instance-level functionality or behavior added by an instance extension to the API must not be used unless that extension is supported by the instance as determined by vkEnumerateInstanceExtensionProperties, and that extension is enabled in VkInstanceCreateInfo.
Device functionality or behavior added by a device extension to the API must not be used unless that extension is supported by the device as determined by vkEnumerateDeviceExtensionProperties, and that extension is enabled in VkDeviceCreateInfo.
So the validation errors you’re getting with vkCreateDevice seem to be following the official Vulkan spec I’m afraid:
vkCreateDevice is trying the be created with version 1.1 when it supports up to 1.0.76.
The extensions VK_KHR_shader_draw_parameters, VK_KHR_get_memory_requirements2, VK_KHR_dedicated_allocation and VK_KHR_relaxed_block_layout require Device API version 1.1, but your Device API version is 1.0.76.
So, sould I recreate VkInstance with 1.0.76 ? Because in this case I will not get any validation errors.
Any way, this device supports these extensions for 1.0.76, so I could add them for extension list for VkDevice creation, but what about validation’s error message in this case?
You are right, you should create the instance with API version 1.0.76.
In that case, you should not get the best practices layer validation warnings, since in 1.0.76 it makes sense to use those extensions (it is from v1.1 onwards when you should use for each extension its promoted core functionality).