Vulkan 验证失败提升了设备扩展依赖性

Vulkan validation failure promoted device extension dependency

vkCreateDevice 验证失败,因为包含的扩展的依赖项未包含在内。但是,此依赖项已升级到 Vulkan 1.1,这就是我正在使用的版本。如果我尝试包含依赖项,系统会抱怨扩展不可用,这是没有意义的。我想了解这种失败是否合理。

我正在尝试包括外部存储器 Android 硬件缓冲区扩展:https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VK_ANDROID_external_memory_android_hardware_buffer。我在设备扩展名称中包含以下元素:

我从验证中得到以下错误:

ERROR: (INSTANCE 0x0) [Validation]  [ VUID-vkCreateDevice-ppEnabledExtensionNames-01387 ] Object: VK_NULL_HANDLE (Type = 1) | Missing extension required by the device extension VK_ANDROID_external_memory_android_hardware_buffer: VK_KHR_external_memory. The Vulkan spec states: All required extensions for each extension in the VkDeviceCreateInfo::ppEnabledExtensionNames list must also be present in that list. (https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VUID-vkCreateDevice-ppEnabledExtensionNames-01387)
ERROR: (INSTANCE 0x0) [Validation]  [ VUID-vkCreateDevice-ppEnabledExtensionNames-01387 ] Object: VK_NULL_HANDLE (Type = 1) | Missing extensions required by the device extension VK_KHR_sampler_ycbcr_conversion: VK_KHR_maintenance1, VK_KHR_bind_memory2, VK_KHR_get_memory_requirements2, VK_KHR_get_physical_device_properties2. The Vulkan spec states: All required extensions for each extension in the VkDeviceCreateInfo::ppEnabledExtensionNames list must also be present in that list. (https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VUID-vkCreateDevice-ppEnabledExtensionNames-01387)
ERROR: (INSTANCE 0x0) [Validation]  [ VUID-vkCreateDevice-ppEnabledExtensionNames-01387 ] Object: VK_NULL_HANDLE (Type = 1) | Missing extension required by the device extension VK_EXT_queue_family_foreign: VK_KHR_external_memory. The Vulkan spec states: All required extensions for each extension in the VkDeviceCreateInfo::ppEnabledExtensionNames list must also be present in that list. (https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VUID-vkCreateDevice-ppEnabledExtensionNames-01387)

VK_KHR_external_memory 已升级为 1.1,当我查询 vkEnumerateInstanceVersion 时,我得到的是 1.1 版本。如果我添加 VK_KHR_external_memory 它会依次请求 VK_KHR_external_memory_capabilities,当我添加 VK_KHR_external_memory_capabilities 时系统会抱怨扩展不可用,尽管它也已升级到 1.1 .

我错误地将 VK_KHR_external_memory_capabilities 添加为设备扩展,而实际上它是一个实例扩展,即使它是设备扩展的依赖项。正确添加所有依赖项后,我没有任何失败或验证错误。

此外,我没有正确请求 1.1 API 版本。一旦我这样做了,我就不再需要明确指定 1.1 升级的扩展。