intel: Allow using intel_clc from the system
authorMatt Turner <mattst88@gmail.com>
Thu, 31 Aug 2023 17:16:29 +0000 (13:16 -0400)
committerMarge Bot <emma+marge@anholt.net>
Fri, 1 Sep 2023 21:36:02 +0000 (21:36 +0000)
With -Dintel-clc=system, the build system will search for an `intel_clc`
binary and use it instead of building `intel_clc` itself.

This allows Intel Vulkan ray tracing support to be built when cross
compiling without terrible hacks (that would otherwise be necessary due
to `intel_clc`'s dependence on SPIRV-LLVM-Translator, libclc, clang, and
LLVM).

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24983>

meson.build
meson_options.txt
src/intel/compiler/meson.build
src/intel/vulkan/grl/meson.build

index 63b7621..75c4d38 100644 (file)
@@ -252,12 +252,11 @@ with_any_broadcom = [
 ].contains(true)
 
 if ['x86_64'].contains(host_machine.cpu_family())
-  with_intel_clc = get_option('intel-clc').enabled()
-  with_intel_vk_rt = with_intel_vk and with_intel_clc
+  with_intel_clc = get_option('intel-clc') == 'enabled'
 else
   with_intel_clc = false
-  with_intel_vk_rt = false
 endif
+with_intel_vk_rt = with_intel_vk and get_option('intel-clc') != 'disabled'
 
 with_any_intel = [
   with_gallium_crocus,
index 80a25ee..3d8425f 100644 (file)
@@ -616,9 +616,12 @@ option(
 
 option(
   'intel-clc',
-  type : 'feature',
+  type : 'combo',
   deprecated: {'true': 'enabled', 'false': 'disabled'},
   value : 'disabled',
+  choices : [
+    'enabled', 'disabled', 'system',
+  ],
   description : 'Build the intel-clc compiler (enables Vulkan Intel ' +
                 'Ray Tracing on supported hardware).'
 )
index 6898bfa..e936bac 100644 (file)
@@ -169,7 +169,10 @@ libintel_compiler = static_library(
 )
 
 # For now this tool is only going to be used by Anv
-if with_intel_clc
+if get_option('intel-clc') == 'system'
+  prog_intel_clc = find_program('intel_clc', native : true)
+  dep_prog_intel_clc = []
+elif with_intel_clc
   prog_intel_clc = executable(
     'intel_clc',
     ['intel_clc.c', 'brw_kernel.c'],
@@ -182,6 +185,7 @@ if with_intel_clc
     dependencies : [idep_nir, idep_vtn, idep_mesaclc, idep_mesautil, idep_intel_dev],
     native : true,
   )
+  dep_prog_intel_clc = [prog_intel_clc]
 endif
 
 if with_tests
index 62f7006..ab4b47c 100644 (file)
@@ -143,7 +143,7 @@ foreach t : [['125', 'gfx125', 'dg2']]
                                    # if fixed there
       ],
       env: ['MESA_SHADER_CACHE_DISABLE=true'],
-      depends : [prog_intel_clc]
+      depends : dep_prog_intel_clc
     )
   endforeach