【问题标题】:VK_ERROR_INCOMPATIBLE_DRIVER with Mac OS and Vulkan MoltenVKVK_ERROR_INCOMPATIBLE_DRIVER 与 Mac OS 和 Vulkan MoltenVK
【发布时间】:2019-11-06 14:32:54
【问题描述】:

我正在尝试在我的 mac OS 上使用 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!");
    }

所以我的问题是 vulkan API 在我的带有 MoltenVK 的 Mac OS 上可用吗?如果是,我该怎么做才能让我的应用正常运行?

【问题讨论】:

  • glfw 的版本是什么?
  • glfw的版本是3.3
  • 你在使用 MoltenVK 吗? @trojanfoe OP 没有提到这个,没有标记这个,我在任何地方都没有看到它。
  • @opa OP 和我有history。当然,查看 那个 问题似乎表明正在使用非标准 MoltenVK 库......
  • 确实我不使用 MoltenVK Wrapper

标签: c++ macos sdk vulkan moltenvk


【解决方案1】:

这里是来自 vulkan 论坛的回答,希望对尝试在 Mac OS 上使用 Vulkan 进行开发的其他人有所帮助:

您可以查看link 以获得硬件支持 - 快速浏览一下,我看不到您的 GPU。 但是,如果您在 macOS 上(而不是在硬件上运行不同的操作系统),您将无法直接访问 Vulkan,因为操作系统不支持它。您可以使用 MoltenVK(它是 Vulkan SDK 的一部分,因此您可能已经拥有它),这是一个将 Vulkan API 调用转换为相应 Metal API 调用的翻译层。

【讨论】:

    【解决方案2】:

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

    sudo ./install_vulkan.py --force-install
    

    【讨论】:

      猜你喜欢
      • 2019-08-26
      • 1970-01-01
      • 2012-08-20
      • 1970-01-01
      • 1970-01-01
      • 2022-06-29
      • 1970-01-01
      • 1970-01-01
      • 2011-07-14
      相关资源
      最近更新 更多