Mesa (main): zink: Fix MacOS compiling issues
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Fri Jun 4 09:27:08 UTC 2021
Module: Mesa
Branch: main
Commit: a2d6a5f88528ea4cacb9fc981c060e4613089229
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=a2d6a5f88528ea4cacb9fc981c060e4613089229
Author: Duncan Hopkins <duncan at thefoundry.co.uk>
Date: Wed Jun 2 10:28:32 2021 +0100
zink: Fix MacOS compiling issues
Add a moltenvk-dir build option to supply the MacOS Vulkan SDK MoltenVK location.
Force compiler, for zink only, into object-c mode when MoltenVK is used to allow for the MacOS ioSurface and CAMetalLayer types that the headers expose.
Reviewed-by: Erik Faye-Lund <erik.faye-lund at collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11129>
---
meson.build | 1 +
meson_options.txt | 6 ++++++
src/gallium/drivers/zink/meson.build | 11 ++++++++++-
src/gallium/drivers/zink/zink_batch.c | 3 +++
src/gallium/drivers/zink/zink_resource.c | 3 +++
5 files changed, 23 insertions(+), 1 deletion(-)
diff --git a/meson.build b/meson.build
index 00bf9cc1456..33db495afcc 100644
--- a/meson.build
+++ b/meson.build
@@ -51,6 +51,7 @@ pre_args = [
c_args = []
cpp_args = []
+with_moltenvk_dir = get_option('moltenvk-dir')
with_vulkan_icd_dir = get_option('vulkan-icd-dir')
with_tests = get_option('build-tests')
with_aco_tests = get_option('build-aco-tests')
diff --git a/meson_options.txt b/meson_options.txt
index fa6a9809e11..11feb3f6763 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -223,6 +223,12 @@ option(
value : '',
description : 'Location relative to prefix to put vulkan icds on install. Default: $datadir/vulkan/icd.d'
)
+option(
+ 'moltenvk-dir',
+ type : 'string',
+ value : '',
+ description : 'Location of the MoltenVk SDK. Default: '
+)
option(
'vulkan-layers',
type : 'array',
diff --git a/src/gallium/drivers/zink/meson.build b/src/gallium/drivers/zink/meson.build
index dc029088fdb..90f743ca6eb 100644
--- a/src/gallium/drivers/zink/meson.build
+++ b/src/gallium/drivers/zink/meson.build
@@ -74,15 +74,24 @@ zink_nir_algebraic_c = custom_target(
)
zink_c_args = []
+inc_zink_vk = []
+
if with_swrast_vk
zink_c_args += '-DZINK_WITH_SWRAST_VK'
endif
+# MoltenVK options
+if with_moltenvk_dir != ''
+ inc_zink_vk = [inc_zink_vk, include_directories( join_paths(with_moltenvk_dir, 'include') )]
+ zink_c_args += ['-x','objective-c'] # Put compiler into objective-C mode to allow for MacOS types, like IOSurface and CAMetalLayer
+ zink_c_args += ['-iframework' , 'Foundation']
+endif
+
libzink = static_library(
'zink',
[files_libzink, zink_device_info, zink_instance, zink_nir_algebraic_c],
gnu_symbol_visibility : 'hidden',
- include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux, inc_vulkan_wsi, inc_vulkan_util],
+ include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux, inc_vulkan_wsi, inc_vulkan_util, inc_zink_vk],
dependencies: [dep_vulkan, idep_nir_headers, idep_mesautil],
c_args: zink_c_args,
)
diff --git a/src/gallium/drivers/zink/zink_batch.c b/src/gallium/drivers/zink/zink_batch.c
index 846a91f5424..799ba1a4cf4 100644
--- a/src/gallium/drivers/zink/zink_batch.c
+++ b/src/gallium/drivers/zink/zink_batch.c
@@ -14,6 +14,9 @@
#include "util/u_debug.h"
#include "util/set.h"
+#ifdef VK_USE_PLATFORM_METAL_EXT
+#include "QuartzCore/CAMetalLayer.h"
+#endif
#include "wsi_common.h"
void
diff --git a/src/gallium/drivers/zink/zink_resource.c b/src/gallium/drivers/zink/zink_resource.c
index 60db3c8a15d..1e811f6703d 100644
--- a/src/gallium/drivers/zink/zink_resource.c
+++ b/src/gallium/drivers/zink/zink_resource.c
@@ -29,6 +29,9 @@
#include "zink_program.h"
#include "zink_screen.h"
+#ifdef VK_USE_PLATFORM_METAL_EXT
+#include "QuartzCore/CAMetalLayer.h"
+#endif
#include "vulkan/wsi/wsi_common.h"
#include "util/slab.h"
More information about the mesa-commit
mailing list