summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Olesen <Mark.Olesen@gmx.net>2017-07-20 20:12:05 +0100
committerAdam J. Stewart <ajstewart426@gmail.com>2017-07-20 14:12:05 -0500
commit0ea2c7904a75290ce577588ed4539c8c532818f7 (patch)
tree5e663f5b88afcef3d944cec49b13e33bf4703616
parent31425974b45c94111121218da46b782cebd5e8ab (diff)
downloadspack-0ea2c7904a75290ce577588ed4539c8c532818f7.tar.gz
spack-0ea2c7904a75290ce577588ed4539c8c532818f7.tar.bz2
spack-0ea2c7904a75290ce577588ed4539c8c532818f7.tar.xz
spack-0ea2c7904a75290ce577588ed4539c8c532818f7.zip
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.
-rw-r--r--var/spack/repos/builtin/packages/mesa/package.py77
1 files changed, 64 insertions, 13 deletions
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