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.
This commit is contained in:
parent
31425974b4
commit
0ea2c7904a
1 changed files with 64 additions and 13 deletions
|
@ -26,36 +26,87 @@
|
||||||
|
|
||||||
|
|
||||||
class Mesa(AutotoolsPackage):
|
class Mesa(AutotoolsPackage):
|
||||||
"""Mesa is an open-source implementation of the OpenGL
|
"""Mesa is an open-source implementation of the OpenGL specification
|
||||||
specification - a system for rendering interactive 3D graphics."""
|
- a system for rendering interactive 3D graphics."""
|
||||||
|
|
||||||
homepage = "http://www.mesa3d.org"
|
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
|
# General dependencies
|
||||||
depends_on('python@2.6.4:')
|
depends_on('python@2.6.4:')
|
||||||
depends_on('py-mako@0.3.4:', type=('build', 'run'))
|
depends_on('py-mako@0.3.4:', type=('build', 'run'))
|
||||||
depends_on('flex@2.5.35:', type='build')
|
depends_on('flex@2.5.35:', type='build')
|
||||||
depends_on('bison@2.4.1:', 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
|
# For DRI and hardware acceleration
|
||||||
depends_on('libpthread-stubs')
|
depends_on('libpthread-stubs')
|
||||||
depends_on('libdrm')
|
depends_on('libdrm')
|
||||||
depends_on('openssl')
|
depends_on('openssl')
|
||||||
depends_on('libxcb@1.9.3:')
|
depends_on('libxcb@1.9.3:')
|
||||||
depends_on('libxshmfence@1.1:')
|
depends_on('libxshmfence@1.1:', when='~swrender')
|
||||||
depends_on('libx11')
|
depends_on('libx11', when='~swrender')
|
||||||
depends_on('libxext')
|
depends_on('libxext', when='~swrender')
|
||||||
depends_on('libxdamage')
|
depends_on('libxdamage', when='~swrender')
|
||||||
depends_on('libxfixes')
|
depends_on('libxfixes')
|
||||||
|
# depends_on('expat', when='~swrender')
|
||||||
|
depends_on('libelf', when='+llvm~swrender')
|
||||||
|
|
||||||
depends_on('glproto@1.4.14:', type='build')
|
depends_on('glproto@1.4.14:', type='build', when='~swrender')
|
||||||
depends_on('dri2proto@2.6:', type='build')
|
depends_on('dri2proto@2.6:', type='build', when='~swrender')
|
||||||
depends_on('dri3proto@1.0:', type='build')
|
depends_on('dri3proto@1.0:', type='build', when='~swrender')
|
||||||
depends_on('presentproto@1.0:', type='build')
|
depends_on('presentproto@1.0:', type='build', when='~swrender')
|
||||||
depends_on('pkg-config@0.9.0:', type='build')
|
|
||||||
|
|
||||||
# TODO: Add package for systemd, provides libudev
|
# TODO: Add package for systemd, provides libudev
|
||||||
# Using the system package manager to install systemd didn't work for me
|
# 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
|
||||||
|
|
Loading…
Reference in a new issue