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:
		 Mark Olesen
					Mark Olesen
				
			
				
					committed by
					
						 Adam J. Stewart
						Adam J. Stewart
					
				
			
			
				
	
			
			
			 Adam J. Stewart
						Adam J. Stewart
					
				
			
						parent
						
							31425974b4
						
					
				
				
					commit
					0ea2c7904a
				
			| @@ -26,36 +26,87 @@ | ||||
|  | ||||
|  | ||||
| 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 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user