VK_ERROR_INCOMPATIBLE_DRIVER 与 Mac OS 和 Vulkan MoltenVK

Ben*_*ane 4 c++ macos sdk vulkan moltenvk

我正在尝试在我的 mac 操作系统上使用 Vulkan API(使用我的 Intel HD Graphics 5000 1536 Mo)。但是当我创建一个实例时VkCreateInstance(...)

结果 VkCreateInstance(...)是 VK_ERROR_INCOMPATIBLE_DRIVER。

这是我初始化 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!");
    }
Run Code Online (Sandbox Code Playgroud)

所以我的问题是 vulkan API 是否可以在我的 Mac 操作系统上使用 MoltenVK 使用?如果是,我该怎么做才能使我的应用程序正常运行?

小智 5

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

sudo ./install_vulkan.py --force-install
Run Code Online (Sandbox Code Playgroud)


Nat*_*eed 5

从 Vulkan SDK 1.3.216 开始,我们还必须启用VK_KHR_portability_enumeration扩展,并VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR在创建实例时设置该标志,才能使用 MoltenVK。如果没有这个,我观察到加载程序将返回VK_ERROR_INCOMPATIBLE_DRIVER

  • 天啊,这让我免去了几个小时的沮丧。如果没有 Stack Overflow,人们如何知道这些事情呢?:) (2认同)