meson: implement default driver arguments
authorDylan Baker <dylan@pnwbakers.com>
Mon, 30 Oct 2017 17:17:22 +0000 (10:17 -0700)
committerDylan Baker <dylan@pnwbakers.com>
Thu, 9 Nov 2017 21:10:59 +0000 (13:10 -0800)
This allows drivers to be set by OS/arch in a sane manner.

v2: - set _drivers to a list of drivers instead of manually assigning
      each with_*
v3: - Use "auto" instead of "default", which matches the value of other
      automatically configured options.
    - Set vulkan drivers as well
    - Add error message if no automatic drivers are known for a given
      arch/OS combo
    - use not(darwin or windows) instead of (linux or *bsd), which is
      probably more accurate (that way Solaris and other *nix systems
      aren't excluded)
    - rename softpipe to swrast, as swrast is the actual option name

Signed-off-by: Dylan Baker <dylanx.c.baker@intel.com>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
meson.build
meson_options.txt

index 51d19c02b80c85875382580f50b825aba776bdd4..855c80ed65812830c6739dee8a69dea88da861c9 100644 (file)
@@ -92,6 +92,18 @@ with_dri_r200 = false
 with_dri_nouveau = false
 with_dri_swrast = false
 _drivers = get_option('dri-drivers')
+if _drivers == 'auto'
+  # TODO: PPC, Sparc
+  if not ['darwin', 'windows'].contains(host_machine.system())
+    if ['x86', 'x86_64'].contains(host_machine.cpu_family())
+      _drivers = 'i915,i965,r100,r200,nouveau'
+    else
+      error('Unknown architecture. Please pass -Ddri-drivers to set driver options. Patches gladly accepted to fix this.')
+    endif
+  else
+    error('Unknown OS. Please pass -Ddri-drivers to set driver options. Patches gladly accepted to fix this.')
+  endif
+endif
 if _drivers != ''
   _split = _drivers.split(',')
   with_dri_i915 = _split.contains('i915')
@@ -114,6 +126,20 @@ with_gallium_vc5 = false
 with_gallium_etnaviv = false
 with_gallium_imx = false
 _drivers = get_option('gallium-drivers')
+if _drivers == 'auto'
+  if not ['darwin', 'windows'].contains(host_machine.system())
+    # TODO: PPC, Sparc
+    if ['x86', 'x86_64'].contains(host_machine.cpu_family())
+      _drivers = 'radeonsi,nouveau,swrast'
+    elif ['arm', 'aarch64'].contains(host_machine.cpu_family())
+      _drivers = 'pl111,vc4,vc5,freedreno,etnaviv,imx,swrast'
+    else
+      error('Unknown architecture. Please pass -Dgallium-drivers to set driver options. Patches gladly accepted to fix this.')
+    endif
+  else
+    error('Unknown OS. Please pass -Dgallium-drivers to set driver options. Patches gladly accepted to fix this.')
+  endif
+endif
 if _drivers != ''
   _split = _drivers.split(',')
   with_gallium_pl111 = _split.contains('pl111')
@@ -252,6 +278,18 @@ with_intel_vk = false
 with_amd_vk = false
 with_any_vk = false
 _vulkan_drivers = get_option('vulkan-drivers')
+if _vulkan_drivers == 'auto'
+  if not ['darwin', 'windows'].contains(host_machine.system())
+    if host_machine.cpu_family().startswith('x86')
+      _vulkan_drivers = 'amd,intel'
+    else
+      error('Unknown architecture. Please pass -Dvulkan-drivers to set driver options. Patches gladly accepted to fix this.')
+    endif
+  else
+    # No vulkan driver supports windows or macOS currently
+    _vulkan_drivers = ''
+  endif
+endif
 if _vulkan_drivers != ''
   _split = _vulkan_drivers.split(',')
   with_intel_vk = _split.contains('intel')
index d93dd6eab2a656961057eb48dc850267292692df..6c9cd33998c806696b872f1e3c9e216ab043e906 100644 (file)
@@ -34,8 +34,8 @@ option(
 option(
   'dri-drivers',
   type : 'string',
-  value : 'i915,i965,r100,r200,nouveau',
-  description : 'comma separated list of dri drivers to build.'
+  value : 'auto',
+  description : 'comma separated list of dri drivers to build. If this is set to auto all drivers applicable to the target OS/architecture will be built'
 )
 option(
   'dri-drivers-path',
@@ -46,8 +46,8 @@ option(
 option(
   'gallium-drivers',
   type : 'string',
-  value : 'pl111,radeonsi,nouveau,freedreno,swrast,vc4,etnaviv,imx',
-  description : 'comma separated list of gallium drivers to build.'
+  value : 'auto',
+  description : 'comma separated list of gallium drivers to build. If this is set to auto all drivers applicable to the target OS/architecture will be built'
 )
 option(
   'gallium-media',
@@ -58,8 +58,8 @@ option(
 option(
   'vulkan-drivers',
   type : 'string',
-  value : 'intel,amd',
-  description : 'comma separated list of vulkan drivers to build.'
+  value : 'auto',
+  description : 'comma separated list of vulkan drivers to build. If this is set to auto all drivers applicable to the target OS/architecture will be built'
 )
 option(
   'shader-cache',