[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