【问题标题】:Vulkan validation failure promoted device extension dependencyVulkan 验证失败提升了设备扩展依赖
【发布时间】:2020-05-13 00:31:40
【问题描述】:

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。我在设备扩展名中包含以下元素:

  • VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME
  • VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME
  • VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME

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

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。

【问题讨论】:

  • 好点@NicolBolas。将我的评论移至答案部分。

标签: vulkan


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-29
    • 2021-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-20
    • 2021-01-05
    相关资源
    最近更新 更多