Skip to content

No ICD Drivers found with MoltenVK [macos] #135

@s-daveb

Description

@s-daveb

Please see my reply, I may have a fix

Describe the bug
I was able to build everything on my system, with minimal warnings, but when I run the program, I get an exception and vulkan layer errors.

To Reproduce

brew install molten-vk vulkan-extensionlayer vulkan-tools vulkan-volk vulkan-headers vulkan-utility-libraries vulkan-loader vulkan-validationlayers ```

cd ~/Developer/C++/Acid
cmake -B Build -G Ninja -DCMAKE_BUILD_TYPE=Debug
cmake --build Build
Build/bin/Tutorial1
Version: 0.14.3
Git: 2ff8adee3 on master
Compiled on: Darwin-22.6.0 from: Ninja with: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++

Instance Layers: VK_LAYER_KHRONOS_timeline_semaphore, VK_LAYER_KHRONOS_validation, VK_LAYER_KHRONOS_synchronization2, VK_LAYER_KHRONOS_shader_object,

Searching for ICD drivers named ../../../lib/libMoltenVK.dylib
vkCreateInstance: Found drivers that contain devices which support the portability subset, but the instance does not enumerate portability drivers! Applications that wish to enumerate portability drivers must set the VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR bit in the VkInstanceCreateInfo flags and enable the VK_KHR_portability_enumeration instance extension.
vkCreateInstance: Found no drivers!
libc++abi: terminating due to uncaught exception of type std::runtime_error: Vulkan error: The requested version of Vulkan is not supported by the driver or is otherwise incompatible

Expected behaviour*
The tutorial runs

Screenshots
N/A

Hardware:

  • Device: Macbook Pro 2017 (Touchbar)
  • OS: macOS Ventura 13.6.4

Additional context

╰─➤  brew search moltenvk
==> Formulae
molten-vk ✔

╰─➤  brew search vulkan
==> Formulae
vulkan-extensionlayer ✔           vulkan-tools ✔                    vulkan-volk ✔
vulkan-headers ✔                  vulkan-utility-libraries ✔
vulkan-loader ✔                   vulkan-validationlayers ✔

I think maybe Vulkan is being initialized without portability extensions?
I've done very little Vulkan programming, but when I have, I have to add:

#ifdef __APPLE__
       extensions.push_back(VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
        extensions.push_back(VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME);
#endif

//...

vk::InstanceCreateInfo createInfo({}, &appInfo, 0, nullptr, static_cast<uint32_t>(extensions.size()), extensions.data());

#ifdef __APPLE__
        createInfo.setFlags(vk::InstanceCreateFlagBits::eEnumeratePortabilityKHR);
#endif

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions