c++ VK错误驱动程序与Mac操作系统和Vulkan MoltenVK不兼容

axzmvihb  于 2023-01-18  发布在  Mac
关注(0)|答案(4)|浏览(457)

我尝试在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?如果可以,我该怎么做才能让我的应用程序工作?

isr3a4wc

isr3a4wc1#

我遇到了同样的问题,我通过在SDK中运行以下命令解决了它:

sudo ./install_vulkan.py --force-install
oknwwptz

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

zfycwa2u

zfycwa2u3#

这里的答案从vulkan论坛,希望它能帮助其他人谁试图开发与Vulkan在Mac OS:
你可以检查link的硬件支持-快速浏览一下,我没有看到你的GPU在那里。(与在硬件上运行不同的操作系统相反)您无法直接访问Vulkan,因为操作系统不支持它。您可以使用MoltenVK(这是Vulkan SDK的一部分,因此您可能已经拥有它),一个将Vulkan API调用转换为相应的Metal API调用的转换层。

wkyowqbh

wkyowqbh4#

可以通过在VK_ICD_FILENAMES环境变量中添加MoltenVK_icd.json的路径来解决。MoltenVK_icd.json反过来应该指向libMoltenVK.dylib

相关问题