From cafca76fa2c73f4b79bd0e99f077534e100d7826 Mon Sep 17 00:00:00 2001 From: Hamish Arblaster Date: Sun, 19 Dec 2021 00:10:11 +0000 Subject: [PATCH] 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//VulkanSDK//MoltenVK -Dc_std=c11 Reviewed-by: Hoe Hao Cheng Part-of: --- 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)