首页 > 解决方案 > 如何在遵循 vulkan 教程时修复 mac m1 上的 VK_KHR_portability_subset 错误

问题描述

嗨,我在编译时出错。显然我错过了一个扩展:

验证层:验证错误:[VUID-VkDeviceCreateInfo-pProperties-04451] 对象 0:句柄 = 0x1055040c0,类型 = VK_OBJECT_TYPE_PHYSICAL_DEVICE;| 消息 ID = 0x3a3b6ca0 | vkCreateDevice:必须启用 VK_KHR_portability_subset,因为物理设备 VkPhysicalDevice 0x1055040c0[] 支持它 Vulkan 规范指出:如果 [VK_KHR_portability_subset] 扩展包含在 vkEnumerateDeviceExtensionProperties 的 pProperties 中,则 ppEnabledExtensions 必须包含“VK_KHR_portability_subset”。(https://vulkan.lunarg.com/doc/view/1.2.176.1/mac/1.2-extensions/vkspec.html#VUID-VkDeviceCreateInfo-pProperties-04451

我天真地添加到 deviceExtension 向量“VK_KHR_portability_subset”,然后得到第二个错误,似乎与前一个错误相似。

验证层:验证错误:[VUID-vkCreateDevice-ppEnabledExtensionNames-01387] 对象 0:VK_NULL_HANDLE,类型 = VK_OBJECT_TYPE_INSTANCE;| 消息 ID = 0x12537a2c | 缺少设备扩展 VK_KHR_portability_subset 所需的扩展:VK_KHR_get_physical_device_properties2。Vulkan 规范指出: VkDeviceCreateInfo::ppEnabledExtensionNames 列表中每个扩展的所有必需扩展也必须存在于该列表中(https://vulkan.lunarg.com/doc/view/1.2.176.1/mac/1.2-extensions/ vkspec.html#VUID-vkCreateDevice-ppEnabledExtensionNames-01387

我添加到 deviceExtension 向量“VK_KHR_get_physical_device_properties2”,然后得到第三个错误:

libc++abi:以 std::runtime_error 类型的未捕获异常终止:找不到合适的 GPU!

问题是以前他认识到我使用的是 m1 芯片,但现在设备上没有显示任何信息:(

标签: vulkanapple-m1

解决方案


我添加到 deviceExtension 向量“VK_KHR_get_physical_device_properties2”

VK_KHR_get_physical_device_properties2是一个实例扩展,因此属于vkCreateInstance不是设备)。

据报道,这解决了你的问题。


推荐阅读