From 0ea2c7904a75290ce577588ed4539c8c532818f7 Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Thu, 20 Jul 2017 20:12:05 +0100 Subject: add mesa +swrender variants (gallium software/off-screen rendering) (#4602) - +swrender variant lets you compile an off-screen only version for software rendering on clusters. - +swrender+llvm for using llvm for the software pipe - added newer versions (17.1 and 13.0) and corrected the url location to use the canonical location. --- var/spack/repos/builtin/packages/mesa/package.py | 77 ++++++++++++++++++++---- 1 file changed, 64 insertions(+), 13 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 22439c46d3..de36acbb73 100644 --- a/var/spack/repos/builtin/packages/mesa/package.py +++ b/var/spack/repos/builtin/packages/mesa/package.py @@ -26,36 +26,87 @@ from spack import * class Mesa(AutotoolsPackage): - """Mesa is an open-source implementation of the OpenGL - specification - a system for rendering interactive 3D graphics.""" + """Mesa is an open-source implementation of the OpenGL specification + - a system for rendering interactive 3D graphics.""" homepage = "http://www.mesa3d.org" - url = "http://ftp.iij.ad.jp/pub/X11/x.org/pub/mesa/12.0.3/mesa-12.0.3.tar.gz" + url = "https://mesa.freedesktop.org/archive/13.0.6/mesa-13.0.6.tar.xz" + list_url = "https://mesa.freedesktop.org/archive" + list_depth = 2 - version('12.0.3', '60c5f9897ddc38b46f8144c7366e84ad') + version('17.1.3', '1946a93d543bc219427e2bebe2ac4752') + version('13.0.6', '1e5a769bc6cfd839cf3febcb179c27cc') + version('12.0.6', '1a3d4fea0656c208db59289e4ed33b3f') + version('12.0.3', '1113699c714042d8c4df4766be8c57d8') + + variant('swrender', default=False, + description="Build with (gallium) software rendering.") + + variant('llvm', default=False, + description="Use llvm for rendering pipes.") # General dependencies depends_on('python@2.6.4:') depends_on('py-mako@0.3.4:', type=('build', 'run')) depends_on('flex@2.5.35:', type='build') depends_on('bison@2.4.1:', type='build') + depends_on('pkg-config@0.9.0:', type='build') + + # Off-screen with llvmpipe + # Note: there must be a better way of selecting the preferred llvm + depends_on('llvm+link_dylib', when='+llvm') # For DRI and hardware acceleration depends_on('libpthread-stubs') depends_on('libdrm') depends_on('openssl') depends_on('libxcb@1.9.3:') - depends_on('libxshmfence@1.1:') - depends_on('libx11') - depends_on('libxext') - depends_on('libxdamage') + depends_on('libxshmfence@1.1:', when='~swrender') + depends_on('libx11', when='~swrender') + depends_on('libxext', when='~swrender') + depends_on('libxdamage', when='~swrender') depends_on('libxfixes') + # depends_on('expat', when='~swrender') + depends_on('libelf', when='+llvm~swrender') - depends_on('glproto@1.4.14:', type='build') - depends_on('dri2proto@2.6:', type='build') - depends_on('dri3proto@1.0:', type='build') - depends_on('presentproto@1.0:', type='build') - depends_on('pkg-config@0.9.0:', type='build') + depends_on('glproto@1.4.14:', type='build', when='~swrender') + depends_on('dri2proto@2.6:', type='build', when='~swrender') + depends_on('dri3proto@1.0:', type='build', when='~swrender') + depends_on('presentproto@1.0:', type='build', when='~swrender') # TODO: Add package for systemd, provides libudev # Using the system package manager to install systemd didn't work for me + + def configure_args(self): + spec = self.spec + args = [] + drivers = [] + if '+swrender' in spec: + drivers = ['swrast'] + # Needs +llvm, but also C++14? -> drivers.append('swr') + args.extend([ + '--disable-dri', + '--disable-egl', + '--disable-gbm', + '--disable-gles1', + '--disable-glx', + '--disable-xvmc', + '--enable-texture-float', + '--enable-gallium-osmesa', + ]) + + if '+llvm' in spec: + if self.spec.version < Version('17'): + args.append('--enable-gallium-llvm') + else: + args.append('--enable-llvm') + if '+link_dylib' in self.spec['llvm']: + args.append('--enable-llvm-shared-libs') + else: + args.append('--disable-llvm-shared-libs') + args.append('--with-llvm-prefix=%s' % spec['llvm'].prefix) + + if drivers: + args.append('--with-gallium-drivers=' + ','.join(drivers)) + + return args -- cgit v1.2.3-70-g09d2