v3d: Fix build of NEON code with Mesa's cflags not targeting NEON.
authorEric Anholt <eric@anholt.net>
Fri, 1 Mar 2019 20:48:51 +0000 (12:48 -0800)
committerEric Anholt <eric@anholt.net>
Fri, 1 Mar 2019 22:21:49 +0000 (14:21 -0800)
v3d may be built as part of a set of drivers in a system not requiring
NEON, but we know V3D devices will be paired with CPUs with NEON so we
should be able to use this asm.

Fixes: 0c05198d6b5b ("v3d: Always enable the NEON utile load/store code.")
src/gallium/drivers/v3d/meson.build

index 4f517ada9cd12b395a34da78173cb130d61f566f..7f9fdf10ac248a9e22b8df0a18dab6aaf425f244 100644 (file)
@@ -37,8 +37,6 @@ files_libv3d = files(
   'v3d_screen.h',
   'v3d_simulator.c',
   'v3d_simulator_wrapper.cpp',
-  'v3d_tiling.c',
-  'v3d_tiling.h',
   'v3d_uniforms.c',
 )
 
@@ -77,6 +75,22 @@ foreach ver : v3d_versions
 
 endforeach
 
+v3d_neon_c_args = []
+if host_machine.cpu_family() == 'arm'
+    v3d_neon_c_args = '-mfpu=neon'
+endif
+
+libv3d_neon = static_library(
+  'v3d_neon',
+  'v3d_tiling.c',
+  include_directories : [
+    inc_src, inc_include, inc_gallium, inc_gallium_aux, inc_broadcom,
+    inc_gallium_drivers,
+  ],
+  c_args : [c_vis_args, v3d_args, v3d_neon_c_args],
+  dependencies : [dep_v3dv3, dep_libdrm, dep_valgrind, idep_nir_headers],
+)
+
 libv3d = static_library(
   'v3d',
   [files_libv3d, v3d_xml_pack],
@@ -87,7 +101,7 @@ libv3d = static_library(
   c_args : [c_vis_args, v3d_args],
   cpp_args : [cpp_vis_args, v3d_args],
   dependencies : [dep_v3dv3, dep_libdrm, dep_valgrind, idep_nir_headers],
-  link_with: per_version_libs,
+  link_with: [per_version_libs, libv3d_neon],
 )
 
 driver_v3d = declare_dependency(