From 7477161a05da0880aa642212df40f0dc910f26c9 Mon Sep 17 00:00:00 2001 From: Chuck Atkins Date: Wed, 6 Apr 2022 10:11:19 -0500 Subject: mesa, mesa18: Package updates (#29573) * mesa, mesa18: Implement the swr variant consistently between mesa and mesa18 * mesa: Bump to 21.3.7 * mesa: Build release by default tie swr to release builds * mesa, mesa18: re-enable the llvm variant by default This reverts the change made in #29360 --- var/spack/repos/builtin/packages/mesa/package.py | 35 ++++++++++++---- var/spack/repos/builtin/packages/mesa18/package.py | 46 +++++++++++++++------- 2 files changed, 58 insertions(+), 23 deletions(-) (limited to 'var') diff --git a/var/spack/repos/builtin/packages/mesa/package.py b/var/spack/repos/builtin/packages/mesa/package.py index 3168e66e08..350e8d59e0 100644 --- a/var/spack/repos/builtin/packages/mesa/package.py +++ b/var/spack/repos/builtin/packages/mesa/package.py @@ -19,6 +19,11 @@ class Mesa(MesonPackage): url = "https://archive.mesa3d.org/mesa-20.2.1.tar.xz" version('master', tag='master') + # Note: If v22.x or greater is added please leave 21.3.7 as preferred. The swr + # multithreaded cpu driver was dropped 22.x and is currently necessary to get + # reasonable rendering performance on HPC OpenGL workloads. + # See https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11264 + version('21.3.7', sha256='b4fa9db7aa61bf209ef0b40bef83080999d86ad98df8b8b4fada7c128a1efc3d', preferred=True) version('21.3.1', sha256='2b0dc2540cb192525741d00f706dbc4586349185dafc65729c7fda0800cc474d') version('21.2.6', sha256='1e7e22d93c6e8859fa044b1121119d26b2e67e4184b92ebb81c66497dc80c954') version('21.2.5', sha256='8e49585fb760d973723dab6435d0c86f7849b8305b1e6d99f475138d896bacbb') @@ -43,15 +48,29 @@ class Mesa(MesonPackage): depends_on('expat') depends_on('zlib@1.2.3:') + # Override the build type variant so we can default to release + variant('buildtype', default='release', + description='Meson build type', + values=('plain', 'debug', 'debugoptimized', 'release', 'minsize')) + # Internal options - variant('llvm', default=False, description="Enable LLVM.") - _SWR_AUTO_VALUE = 'auto' - _SWR_ENABLED_VALUES = (_SWR_AUTO_VALUE, 'avx', 'avx2', 'knl', 'skx') - _SWR_DISABLED_VALUES = ('none',) - variant('swr', default=_SWR_AUTO_VALUE, - values=_SWR_DISABLED_VALUES + _SWR_ENABLED_VALUES, - multi=True, when='+llvm', - description="Enable the SWR driver.") + variant('llvm', default=True, description="Enable LLVM.") + + # when clauses: + # +llvm - swr requires llvm + # buildtype=release - swr has known assert failures in debug that can be ignored + # @:21 - swr was removed in 22.0; see note above + variant( + 'swr', + values=spack.variant.DisjointSetsOfValues( + ('none',), ('auto',), ('avx', 'avx2', 'knl', 'skx',), + ) + .with_non_feature_values('auto') + .with_non_feature_values('none') + .with_default('auto'), + when='+llvm buildtype=release @:21', + description="Enable the SWR driver.", + ) # Front ends variant('osmesa', default=True, description="Enable the OSMesa frontend.") diff --git a/var/spack/repos/builtin/packages/mesa18/package.py b/var/spack/repos/builtin/packages/mesa18/package.py index 0cbd8296fe..b74ba20e35 100644 --- a/var/spack/repos/builtin/packages/mesa18/package.py +++ b/var/spack/repos/builtin/packages/mesa18/package.py @@ -41,11 +41,18 @@ class Mesa18(AutotoolsPackage): depends_on('ncurses+termlib') # Internal options - variant('llvm', default=False, description="Enable LLVM.") - _SWR_ENABLED_VALUES = ('avx', 'avx2', 'knl', 'skx') - variant('swr', values=any_combination_of(*_SWR_ENABLED_VALUES), - description="Enable the SWR driver.") - # conflicts('~llvm', when='~swr=none') + variant('llvm', default=True, description="Enable LLVM.") + variant( + 'swr', + values=spack.variant.DisjointSetsOfValues( + ('none',), ('auto',), ('avx', 'avx2', 'knl', 'skx',), + ) + .with_non_feature_values('auto') + .with_non_feature_values('none') + .with_default('auto'), + when='+llvm', + description="Enable the SWR driver.", + ) # Front ends variant('osmesa', default=True, description="Enable the OSMesa frontend.") @@ -148,17 +155,26 @@ class Mesa18(AutotoolsPackage): args.append('--disable-llvm') args_swr_arches = [] - if 'swr=avx' in spec: - args_swr_arches.append('avx') - if 'swr=avx2' in spec: - args_swr_arches.append('avx2') - if 'swr=knl' in spec: - args_swr_arches.append('knl') - if 'swr=skx' in spec: - args_swr_arches.append('skx') + if 'swr=auto' in spec: + if 'avx' in spec.target: + args_swr_arches.append('avx') + if 'avx2' in spec.target: + args_swr_arches.append('avx2') + if 'avx512f' in spec.target: + if 'avx512er' in spec.target: + args_swr_arches.append('knl') + if 'avx512bw' in spec.target: + args_swr_arches.append('skx') + else: + if 'swr=avx' in spec: + args_swr_arches.append('avx') + if 'swr=avx2' in spec: + args_swr_arches.append('avx2') + if 'swr=knl' in spec: + args_swr_arches.append('knl') + if 'swr=skx' in spec: + args_swr_arches.append('skx') if args_swr_arches: - if '+llvm' not in spec: - raise SpecError('Variant swr requires +llvm') args_gallium_drivers.append('swr') args.append('--with-swr-archs=' + ','.join(args_swr_arches)) -- cgit v1.2.3-60-g2f50