meson: rework mesa-clc=system handling
In theory you can build a driver using OpenCL kernels with a -Dmesa-clc=system. That shouldn't require any LLVM/Clang/etc... But the checks to find the pre-compiled mesa_clc & vtn_bindgen binaries are in meson files or conditions only triggered if you build with LLVM (: Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Acked-by: Alyssa Rosenzweig <alyssa@rosenzweig.io> Tested-by: Matt Turner <mattst88@gmail.com> Reviewed-by: Dylan Baker <None> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33014>
This commit is contained in:

committed by
Marge Bot

parent
db11165c07
commit
5adac011b8
37
meson.build
37
meson.build
@@ -306,24 +306,26 @@ with_any_broadcom = [
|
||||
with_broadcom_vk,
|
||||
].contains(true)
|
||||
|
||||
if get_option('intel-clc') != 'system' and get_option('precomp-compiler') != 'system'
|
||||
with_intel_vk_rt = get_option('intel-rt') \
|
||||
.disable_auto_if(not with_intel_vk) \
|
||||
.disable_if(get_option('intel-bvh-grl') and \
|
||||
host_machine.cpu_family() != 'x86_64', \
|
||||
error_message : 'Intel Ray Tracing is only supported on x86_64') \
|
||||
.allowed()
|
||||
|
||||
with_intel_bvh_grl = get_option('intel-bvh-grl')
|
||||
|
||||
if get_option('intel-clc') != 'system' and \
|
||||
get_option('precomp-compiler') != 'system' and \
|
||||
with_intel_bvh_grl
|
||||
# Require intel-clc with Anv & Iris (for internal shaders)
|
||||
with_intel_clc = get_option('intel-clc') == 'enabled' or \
|
||||
get_option('precomp-compiler') == 'enabled' or \
|
||||
with_intel_vk or with_gallium_iris
|
||||
with_intel_bvh_grl
|
||||
else
|
||||
with_intel_clc = false
|
||||
endif
|
||||
|
||||
with_intel_vk_rt = get_option('intel-rt') \
|
||||
.disable_auto_if(not with_intel_vk) \
|
||||
.disable_if(host_machine.cpu_family() != 'x86_64', error_message : 'Intel Ray Tracing is only supported on x86_64') \
|
||||
.allowed()
|
||||
|
||||
if with_intel_vk_rt
|
||||
with_intel_bvh_grl = get_option('intel-bvh-grl')
|
||||
endif
|
||||
|
||||
with_any_intel = [
|
||||
with_gallium_crocus,
|
||||
with_gallium_i915,
|
||||
@@ -825,7 +827,18 @@ else
|
||||
with_drivers_clc = false
|
||||
endif
|
||||
|
||||
with_clc = get_option('mesa-clc') != 'auto' or with_microsoft_clc or with_intel_vk or with_gallium_iris or with_drivers_clc or with_gallium_asahi or with_asahi_vk or with_gallium_rusticl
|
||||
if get_option('mesa-clc') == 'system'
|
||||
prog_mesa_clc = find_program('mesa_clc', native : true)
|
||||
prog_vtn_bindgen = find_program('vtn_bindgen', native : true)
|
||||
# Even with mesa-clc already built, rusticl still needs clc.
|
||||
with_clc = with_gallium_rusticl
|
||||
else
|
||||
with_clc = get_option('mesa-clc') != 'auto' or \
|
||||
with_microsoft_clc or with_drivers_clc or \
|
||||
with_gallium_iris or with_intel_vk or \
|
||||
with_gallium_asahi or with_asahi_vk or \
|
||||
with_gallium_rusticl
|
||||
endif
|
||||
|
||||
dep_clc = null_dep
|
||||
if with_gallium_clover or with_clc
|
||||
|
@@ -117,9 +117,11 @@ idep_mesaclc = declare_dependency(
|
||||
link_args : _idep_mesaclc_link_args,
|
||||
)
|
||||
|
||||
if get_option('mesa-clc') == 'system'
|
||||
prog_mesa_clc = find_program('mesa_clc', native : true)
|
||||
else
|
||||
if get_option('mesa-clc') != 'system' and (with_gallium_asahi or \
|
||||
with_asahi_vk or \
|
||||
with_intel_vk or \
|
||||
with_gallium_iris or \
|
||||
get_option('install-mesa-clc'))
|
||||
prog_mesa_clc = executable(
|
||||
'mesa_clc',
|
||||
['mesa_clc.c'],
|
||||
|
@@ -77,14 +77,11 @@ spirv2nir = executable(
|
||||
install : with_tools.contains('nir'),
|
||||
)
|
||||
|
||||
if get_option('mesa-clc') == 'system'
|
||||
prog_vtn_bindgen = find_program('vtn_bindgen', native : true)
|
||||
# Due to the cross build issues in current meson, we only build vtn_bindgen when
|
||||
# building drivers that need it or mesa-clc is explictly required.
|
||||
#
|
||||
# XXX: Build by default once https://github.com/mesonbuild/meson/pull/12022
|
||||
# ships.
|
||||
elif get_option('mesa-clc') != 'auto' or with_gallium_asahi or with_asahi_vk or with_intel_vk or with_gallium_iris
|
||||
if get_option('mesa-clc') != 'system' and (with_gallium_asahi or \
|
||||
with_asahi_vk or \
|
||||
with_intel_vk or \
|
||||
with_gallium_iris or \
|
||||
get_option('install-mesa-clc'))
|
||||
prog_vtn_bindgen = executable(
|
||||
'vtn_bindgen',
|
||||
['vtn_bindgen.c'],
|
||||
|
@@ -167,6 +167,7 @@ idep_intel_compiler_brw = declare_dependency(
|
||||
)
|
||||
|
||||
# For now this tool is only going to be used by Anv
|
||||
if with_intel_bvh_grl
|
||||
if get_option('intel-clc') == 'system' or get_option('precomp-compiler') == 'system'
|
||||
prog_intel_clc = find_program('intel_clc', native : true)
|
||||
dep_prog_intel_clc = []
|
||||
@@ -196,6 +197,9 @@ elif with_intel_clc
|
||||
)
|
||||
dep_prog_intel_clc = [prog_intel_clc]
|
||||
endif
|
||||
else
|
||||
dep_prog_intel_clc = []
|
||||
endif
|
||||
|
||||
if with_tests
|
||||
test(
|
||||
|
Reference in New Issue
Block a user