vulkan - 如何在遵循 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 芯片,但现在设备上没有显示任何信息:(
解决方案
我添加到 deviceExtension 向量“VK_KHR_get_physical_device_properties2”
VK_KHR_get_physical_device_properties2
是一个实例扩展,因此属于vkCreateInstance
(不是设备)。
据报道,这解决了你的问题。
推荐阅读
- cmake - add_custom_target 并不总是重新运行
- haskell - If 语句使用 IO Int haskell
- c# - 右键单击部署时如何运行--publish-local-settings?
- r - dplyr: case_when() over multiple columns with multiple conditions
- azure - 在 ARM 模板中为所有可能的OutboundIpAddresses 配置 FirewallRules
- solr - edismax 查询 - 如何在 solr 中实现类似 db2 的搜索
- mongodb - 使用 Rasa 进行 NoSQL 注入
- php - 内部页面的htaccess重定向问题
- python - 我的动画图像没有使用 matplotlib imshow 动画改变
- javascript - 如何将 404 错误 XMLHttpRequest 修复到本地主机