我尝试在Mac OS上使用Vulkan API(使用Intel HD Graphics 5000 1536 Mo)。但当我使用VkCreateInstance(...)
创建示例时VkCreateInstance(...)
的结果是VK错误不兼容驱动程序。
这里是我的代码初始化我的VkInstance:
VkApplicationInfo vkAppInfo = {};
vkAppInfo.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO;
vkAppInfo.pApplicationName = "S2Engine";
vkAppInfo.applicationVersion = VK_MAKE_VERSION(1, 0, 0);
vkAppInfo.pEngineName = "No Engine"; //TODO plus tard
vkAppInfo.engineVersion = VK_MAKE_VERSION(1, 0, 0);
vkAppInfo.apiVersion = VK_API_VERSION_1_0;
//Obligatoire
VkInstanceCreateInfo vkInstanceCreateInfo = {};
vkInstanceCreateInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;
vkInstanceCreateInfo.pApplicationInfo = &vkAppInfo;
uint32_t glfwExtensionCount = 0;
const char** glfwExtensions ;
glfwExtensions = glfwGetRequiredInstanceExtensions(&glfwExtensionCount);
vkInstanceCreateInfo.enabledExtensionCount = glfwExtensionCount;
vkInstanceCreateInfo.ppEnabledExtensionNames = glfwExtensions;
vkInstanceCreateInfo.enabledLayerCount = 0;
if (vkCreateInstance(&vkInstanceCreateInfo, nullptr /*custom allocator*/, &_vkInstance) != VK_SUCCESS) {
throw std::runtime_error("failed to create instance!");
}
所以我的问题是Vulkan API是否可以在我的Mac OS上使用MoltenVK?如果可以,我该怎么做才能让我的应用程序工作?
4条答案
按热度按时间isr3a4wc1#
我遇到了同样的问题,我通过在SDK中运行以下命令解决了它:
oknwwptz2#
从Vulkan SDK 1.3.216开始,我们还必须启用VK_KHR_portability_enumeration扩展,并在创建示例时设置
VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR
标志,才能使用MoltenVK。如果不启用VK_KHR_portability_enumeration扩展,我观察到加载程序将返回VK_ERROR_INCOMPATIBLE_DRIVER
。zfycwa2u3#
这里的答案从vulkan论坛,希望它能帮助其他人谁试图开发与Vulkan在Mac OS:
你可以检查link的硬件支持-快速浏览一下,我没有看到你的GPU在那里。(与在硬件上运行不同的操作系统相反)您无法直接访问Vulkan,因为操作系统不支持它。您可以使用MoltenVK(这是Vulkan SDK的一部分,因此您可能已经拥有它),一个将Vulkan API调用转换为相应的Metal API调用的转换层。
wkyowqbh4#
可以通过在
VK_ICD_FILENAMES
环境变量中添加MoltenVK_icd.json
的路径来解决。MoltenVK_icd.json
反过来应该指向libMoltenVK.dylib
。