[Mesa-dev] [PATCH v11 12/20] configure.ac, meson: Check for SPIRV-Tools and llvm-spirv
Dylan Baker
dylan at pnwbakers.com
Wed Jan 16 22:23:03 UTC 2019
Quoting Pierre Moreau (2019-01-16 12:30:37)
> Changes since:
> * v10:
> - Add a new flag (`--enable-opencl-spirv` for autotools, and
> `-Dopencl-spirv=true` for meson) for enabling SPIR-V support in
> clover, and never automagically enable it without that flag. (Dylan Baker)
> - When enabling the SPIR-V support, the SPIRV-Tools and
> SPIRV-LLVM-Translator libraries are now required dependencies.
> * v7:
> - Properly align LLVMSPIRVLib comment (Dylan Baker)
> - Only define CLOVER_ALLOW_SPIRV when **both** dependencies are found:
> autotools was only requiring one or the other.
> * v6: Replace the llvm-spirv repository by the new official
> SPIRV-LLVM-Translator.
> * v4: Add a comment saying where to find llvm-spirv (Karol Herbst).
> * v3:
> - make SPIRV-Tools and llvm-spirv optional (Francisco Jerez);
> - bump requirement for llvm-spirv to version 0.2
> * v2:
> - Bump the required version of SPIRV-Tools to the latest release;
> - Add a dependency on llvm-spirv.
>
> Signed-off-by: Pierre Moreau <pierre.morrow at free.fr>
> ---
> Dylan, I dropped your Rb since the modification were substantial, even though
> you were the one asking for them. I could easily have gotten them wrong. :-)
>
>
> configure.ac | 38 ++++++++++++++++++++++++++++++++++++++
> meson.build | 12 ++++++++++++
> meson_options.txt | 6 ++++++
> 3 files changed, 56 insertions(+)
>
> diff --git a/configure.ac b/configure.ac
> index e4d20054d5f..8f00aafae9d 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -1380,6 +1380,12 @@ AC_ARG_ENABLE([opencl_icd],
> @<:@default=enabled@:>@])],
> [enable_opencl_icd="$enableval"],
> [enable_opencl_icd=yes])
> +AC_ARG_ENABLE([opencl_spirv],
> + [AS_HELP_STRING([--enable-opencl-spirv],
> + [Build an OpenCL library that can consume SPIR-V binaries
> + @<:@default=enabled@:>@])],
> + [enable_opencl_spirv="$enableval"],
> + [enable_opencl_spirv=no])
>
> AC_ARG_ENABLE([gallium-tests],
> [AS_HELP_STRING([--enable-gallium-tests],
> @@ -2438,6 +2444,13 @@ AC_ARG_WITH([clang-libdir],
>
> PKG_CHECK_EXISTS([libclc], [have_libclc=yes], [have_libclc=no])
>
> +PKG_CHECK_MODULES([SPIRV_TOOLS], [SPIRV-Tools >= 2018.0],
> + [have_spirv_tools=yes], [have_spirv_tools=no])
> +
> +# LLVMSPIRVLib is available at https://github.com/KhronosGroup/SPIRV-LLVM-Translator
> +PKG_CHECK_MODULES([LLVMSPIRVLIB], [LLVMSPIRVLib >= 0.2.1],
> + [have_llvmspirvlib=yes], [have_llvmspirvlib=no])
> +
> if test "x$enable_opencl" = xyes; then
> if test -z "$with_gallium_drivers"; then
> AC_MSG_ERROR([cannot enable OpenCL without Gallium])
> @@ -2507,9 +2520,34 @@ if test "x$enable_opencl" = xyes; then
> CLANG_RESOURCE_DIR=$CLANG_LIBDIR/clang/${LLVM_VERSION}
> AS_IF([test ! -f "$CLANG_RESOURCE_DIR/include/stddef.h"],
> [AC_MSG_ERROR([Could not find clang internal header stddef.h in $CLANG_RESOURCE_DIR Use --with-clang-libdir to specify the correct path to the clang libraries.])])
> +
> + if test "x$enable_opencl_spirv" = xyes; then
> + if test "x$have_spirv_tools" = xno; then
> + AC_MSG_ERROR([pkg-config cannot find SPIRV-Tools.pc which is
> + required to build clover with SPIR-V support.
> + Make sure the directory containing SPIRV-Tools.pc is specified in your
> + PKG_CONFIG_PATH environment variable.])
> + else
> + if test "x$have_llvmspirvlib" = xno; then
> + AC_MSG_ERROR([pkg-config cannot find LLVMSPIRVLib.pc which is
> + required to build clover with SPIR-V support.
> + Make sure the directory containing LLVMSPIRVLib.pc is specified in your
> + PKG_CONFIG_PATH environment variable.])
> + else
> + AC_SUBST([SPIRV_TOOLS_CFLAGS])
> + AC_SUBST([SPIRV_TOOLS_LIBS])
> +
> + AC_SUBST([LLVMSPIRVLIB_CFLAGS])
> + AC_SUBST([LLVMSPIRVLIB_LIBS])
> +
> + DEFINES="$DEFINES -DCLOVER_ALLOW_SPIRV"
> + fi
> + fi
> + fi
> fi
> AM_CONDITIONAL(HAVE_CLOVER, test "x$enable_opencl" = xyes)
> AM_CONDITIONAL(HAVE_CLOVER_ICD, test "x$enable_opencl_icd" = xyes)
> +AM_CONDITIONAL(CLOVER_ALLOW_SPIRV, test "x$enable_opencl_spirv" = xyes)
> AC_SUBST([OPENCL_LIBNAME])
> AC_SUBST([CLANG_RESOURCE_DIR])
>
> diff --git a/meson.build b/meson.build
> index e759bbf96a5..069c3b97f72 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -658,6 +658,16 @@ if _opencl != 'disabled'
> with_gallium_opencl = true
> with_opencl_icd = _opencl == 'icd'
>
> + if get_option('opencl-spirv')
> + dep_spirv_tools = dependency('SPIRV-Tools', required : true, version : '>= 2018.0')
> + # LLVMSPIRVLib is available at https://github.com/KhronosGroup/SPIRV-LLVM-Translator
> + dep_llvmspirvlib = dependency('LLVMSPIRVLib', required : true, version : '>= 0.2.1')
> + pre_args += '-DCLOVER_ALLOW_SPIRV'
> + else
> + dep_spirv_tools = null_dep
> + dep_llvmspirvlib = null_dep
> + endif
> +
> if host_machine.cpu_family().startswith('ppc') and cpp.compiles('''
> #if !defined(__VEC__) || !defined(__ALTIVEC__)
> #error "AltiVec not enabled"
> @@ -667,6 +677,8 @@ if _opencl != 'disabled'
> endif
> else
> dep_clc = null_dep
> + dep_spirv_tools = null_dep
> + dep_llvmspirvlib = null_dep
> with_gallium_opencl = false
> with_opencl_icd = false
> endif
> diff --git a/meson_options.txt b/meson_options.txt
> index bfb06c4dd42..72b0a00ee9a 100644
> --- a/meson_options.txt
> +++ b/meson_options.txt
> @@ -142,6 +142,12 @@ option(
> value : 'disabled',
> description : 'build gallium "clover" OpenCL state tracker.',
> )
> +option(
> + 'opencl-spirv',
> + type : 'boolean',
> + value : false,
> + description : 'build gallium "clover" OpenCL state tracker with SPIR-V binary support.',
> +)
> option(
> 'd3d-drivers-path',
> type : 'string',
> --
> 2.20.1
>
Thanks, looks good to me. For this patch:
Reviewed-by: Dylan Baker <dylan at pnwbakers.com>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: signature
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20190116/bcece59d/attachment.sig>
More information about the mesa-dev
mailing list