[Mlir-commits] [mlir] efe603e - [mlir][vulkan-runner] fix VK_ERROR_INCOMPATIBLE_DRIVER error

Lei Zhang llvmlistbot at llvm.org
Wed Jun 22 16:40:55 PDT 2022


Author: jackalcooper
Date: 2022-06-22T19:36:35-04:00
New Revision: efe603e70deca30fb891e8cf1f50a8af343ec1b2

URL: https://github.com/llvm/llvm-project/commit/efe603e70deca30fb891e8cf1f50a8af343ec1b2
DIFF: https://github.com/llvm/llvm-project/commit/efe603e70deca30fb891e8cf1f50a8af343ec1b2.diff

LOG: [mlir][vulkan-runner] fix VK_ERROR_INCOMPATIBLE_DRIVER error

On macOS, Vulkan is emulated by MoltenVK. Some extra flags are
required for "building robust and portable Vulkan based
applications that are good citizens in the Vulkan ecosystem".

More information:
https://vulkan.lunarg.com/doc/sdk/1.3.216.0/mac/getting_started.html

Reviewed By: antiagainst

Differential Revision: https://reviews.llvm.org/D128173

Added: 
    

Modified: 
    mlir/tools/mlir-vulkan-runner/VulkanRuntime.cpp

Removed: 
    


################################################################################
diff  --git a/mlir/tools/mlir-vulkan-runner/VulkanRuntime.cpp b/mlir/tools/mlir-vulkan-runner/VulkanRuntime.cpp
index 0c41fd274229..9f653b2900f4 100644
--- a/mlir/tools/mlir-vulkan-runner/VulkanRuntime.cpp
+++ b/mlir/tools/mlir-vulkan-runner/VulkanRuntime.cpp
@@ -234,12 +234,23 @@ LogicalResult VulkanRuntime::createInstance() {
   VkInstanceCreateInfo instanceCreateInfo = {};
   instanceCreateInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;
   instanceCreateInfo.pNext = nullptr;
-  instanceCreateInfo.flags = 0;
   instanceCreateInfo.pApplicationInfo = &applicationInfo;
   instanceCreateInfo.enabledLayerCount = 0;
   instanceCreateInfo.ppEnabledLayerNames = nullptr;
-  instanceCreateInfo.enabledExtensionCount = 0;
-  instanceCreateInfo.ppEnabledExtensionNames = nullptr;
+
+  std::vector<const char *> extNames;
+#if defined(__APPLE__)
+  // enumerate MoltenVK for Vulkan 1.0
+  instanceCreateInfo.flags = VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR;
+  // add KHR portability instance extensions
+  extNames.push_back(VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
+  extNames.push_back(VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME);
+#else
+  instanceCreateInfo.flags = 0;
+#endif // __APPLE__
+  instanceCreateInfo.enabledExtensionCount =
+      static_cast<uint32_t>(extNames.size());
+  instanceCreateInfo.ppEnabledExtensionNames = extNames.data();
 
   RETURN_ON_VULKAN_ERROR(
       vkCreateInstance(&instanceCreateInfo, nullptr, &instance),


        


More information about the Mlir-commits mailing list