Mesa (main): zink: Fix building on macOS

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Dec 29 03:49:38 UTC 2021


Module: Mesa
Branch: main
Commit: cafca76fa2c73f4b79bd0e99f077534e100d7826
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=cafca76fa2c73f4b79bd0e99f077534e100d7826

Author: Hamish Arblaster <hamarb123 at gmail.com>
Date:   Sun Dec 19 00:10:11 2021 +0000

zink: Fix building on macOS

This fixes building on macOS:
  Disable ZINK_USE_DMABUF on macOS, it is unsupported.
  Import vk_mvk_moltenvk.h for MVK_VERSION in zink_resource.c.
  Add additional build arguments (see meson.build) to build properly.

To build on macOS, you will probably need to run:
  brew install bison llvm cmake libxext xquartz ninja xorgproto meson

And you also need to setup meson with something like:
  -Dmoltenvk-dir=/Users/<Username>/VulkanSDK/<VersionNumber>/MoltenVK
  -Dc_std=c11

Reviewed-by: Hoe Hao Cheng <haochengho12907 at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14255>

---

 meson.build                              | 9 +++++++++
 src/gallium/drivers/zink/zink_resource.c | 6 +++++-
 2 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/meson.build b/meson.build
index f23af107966..64d9a5cfabc 100644
--- a/meson.build
+++ b/meson.build
@@ -426,6 +426,15 @@ if system_has_kms_drm and not with_platform_android
   c_args += '-DVK_USE_PLATFORM_DISPLAY_KHR'
   cpp_args += '-DVK_USE_PLATFORM_DISPLAY_KHR'
 endif
+if host_machine.system() == 'darwin'
+  c_args += '-DVK_USE_PLATFORM_MACOS_MVK'
+  cpp_args += '-DVK_USE_PLATFORM_MACOS_MVK'
+  c_args += '-DVK_USE_PLATFORM_METAL_EXT'
+  cpp_args += '-DVK_USE_PLATFORM_METAL_EXT'
+  #macOS seems to need beta extensions to build for now:
+  c_args += '-DVK_ENABLE_BETA_EXTENSIONS'
+  cpp_args += '-DVK_ENABLE_BETA_EXTENSIONS'
+endif
 
 _egl = get_option('egl')
 if _egl == 'true'
diff --git a/src/gallium/drivers/zink/zink_resource.c b/src/gallium/drivers/zink/zink_resource.c
index 205d32c8fb5..5b1d439f843 100644
--- a/src/gallium/drivers/zink/zink_resource.c
+++ b/src/gallium/drivers/zink/zink_resource.c
@@ -45,7 +45,7 @@
 #include "util/os_file.h"
 #include "frontend/sw_winsys.h"
 
-#ifndef _WIN32
+#if !defined(_WIN32) && !defined(__APPLE__)
 #define ZINK_USE_DMABUF
 #endif
 
@@ -58,6 +58,10 @@
 #define DRM_FORMAT_MOD_LINEAR 0
 #endif
 
+#if defined(__APPLE__)
+// Source of MVK_VERSION
+#include "MoltenVK/vk_mvk_moltenvk.h"
+#endif
 
 static bool
 equals_ivci(const void *a, const void *b)



More information about the mesa-commit mailing list