Mesa (master): util: Add helgrind support for simple_mtx

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Nov 24 21:24:54 UTC 2020


Module: Mesa
Branch: master
Commit: 53f7d539cd93aff35f64a113a7f22fd91f1eb841
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=53f7d539cd93aff35f64a113a7f22fd91f1eb841

Author: Rob Clark <robdclark at chromium.org>
Date:   Tue Nov 17 11:29:52 2020 -0800

util: Add helgrind support for simple_mtx

Annoyingly mtypes.h pulls in simple_mtx, which means we end up needing
to sprinkle a lot of idep_mesautil around.

Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/3773
Signed-off-by: Rob Clark <robdclark at chromium.org>
Reviewed-by: Kristian H. Kristensen <hoegsberg at google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7644>

---

 src/amd/common/meson.build                    |  2 +-
 src/compiler/glsl/glcpp/meson.build           |  1 +
 src/compiler/glsl/meson.build                 |  4 ++--
 src/compiler/nir/meson.build                  |  3 ++-
 src/freedreno/fdl/meson.build                 |  2 +-
 src/freedreno/ir3/meson.build                 |  2 +-
 src/freedreno/rnn/meson.build                 |  2 +-
 src/gallium/auxiliary/meson.build             |  4 +++-
 src/gallium/auxiliary/pipe-loader/meson.build |  2 +-
 src/gallium/drivers/freedreno/meson.build     |  7 ++++++-
 src/gallium/drivers/llvmpipe/meson.build      |  4 ++--
 src/gallium/drivers/nouveau/meson.build       |  2 +-
 src/gallium/drivers/panfrost/meson.build      |  1 +
 src/gallium/frontends/dri/meson.build         |  5 ++++-
 src/gallium/frontends/va/meson.build          |  2 +-
 src/gallium/frontends/vdpau/meson.build       |  2 +-
 src/gallium/frontends/xa/meson.build          |  1 +
 src/gallium/frontends/xvmc/meson.build        |  2 +-
 src/gallium/winsys/freedreno/drm/meson.build  |  5 ++++-
 src/gallium/winsys/nouveau/drm/meson.build    |  2 +-
 src/gallium/winsys/sw/dri/meson.build         |  1 +
 src/gallium/winsys/sw/kms-dri/meson.build     |  2 +-
 src/gallium/winsys/sw/null/meson.build        |  1 +
 src/gallium/winsys/sw/wrapper/meson.build     |  1 +
 src/gallium/winsys/vc4/drm/meson.build        |  1 +
 src/intel/blorp/meson.build                   |  2 +-
 src/intel/common/meson.build                  |  2 +-
 src/intel/compiler/meson.build                |  2 +-
 src/intel/dev/meson.build                     |  1 +
 src/intel/isl/meson.build                     |  4 ++++
 src/mesa/drivers/dri/common/meson.build       |  2 +-
 src/mesa/drivers/dri/i915/meson.build         |  2 +-
 src/mesa/drivers/dri/i965/meson.build         |  2 +-
 src/mesa/drivers/dri/nouveau/meson.build      |  2 +-
 src/mesa/drivers/dri/r200/meson.build         |  2 +-
 src/mesa/drivers/dri/radeon/meson.build       |  2 +-
 src/mesa/meson.build                          |  6 +++---
 src/meson.build                               |  1 +
 src/panfrost/lib/meson.build                  |  1 +
 src/panfrost/shared/meson.build               |  1 +
 src/util/format/meson.build                   |  4 +++-
 src/util/meson.build                          |  2 +-
 src/util/simple_mtx.h                         | 15 +++++++++++++++
 src/vulkan/util/meson.build                   |  2 +-
 44 files changed, 81 insertions(+), 35 deletions(-)

diff --git a/src/amd/common/meson.build b/src/amd/common/meson.build
index 1131260260d..af95c2e8974 100644
--- a/src/amd/common/meson.build
+++ b/src/amd/common/meson.build
@@ -107,7 +107,7 @@ test(
     include_directories : [
       inc_amd, inc_gallium, inc_include, inc_src,
     ],
-    dependencies: [idep_amdgfxregs_h, dep_libdrm_amdgpu],
+    dependencies: [idep_amdgfxregs_h, dep_libdrm_amdgpu, idep_mesautil],
   ),
   suite: ['amd']
 )
diff --git a/src/compiler/glsl/glcpp/meson.build b/src/compiler/glsl/glcpp/meson.build
index bc892604ff0..bdfbb80735f 100644
--- a/src/compiler/glsl/glcpp/meson.build
+++ b/src/compiler/glsl/glcpp/meson.build
@@ -60,6 +60,7 @@ libglcpp_standalone = static_library(
   'glcpp_standalone',
   'pp_standalone_scaffolding.c',
   link_with : libglcpp,
+  dependencies : idep_mesautil,
   include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux],
   c_args : [no_override_init_args, c_msvc_compat_args, _extra_args],
   cpp_args : [cpp_msvc_compat_args, _extra_args],
diff --git a/src/compiler/glsl/meson.build b/src/compiler/glsl/meson.build
index 82e7df889ec..92635958adf 100644
--- a/src/compiler/glsl/meson.build
+++ b/src/compiler/glsl/meson.build
@@ -254,7 +254,7 @@ glsl_compiler = executable(
   c_args : [c_msvc_compat_args, no_override_init_args],
   cpp_args : [cpp_msvc_compat_args],
   gnu_symbol_visibility : 'hidden',
-  dependencies : [dep_clock, dep_thread, idep_getopt],
+  dependencies : [dep_clock, dep_thread, idep_getopt, idep_mesautil],
   include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux],
   link_with : [libglsl_standalone],
   build_by_default : with_tools.contains('glsl'),
@@ -269,7 +269,7 @@ glsl_test = executable(
   cpp_args : [cpp_msvc_compat_args],
   gnu_symbol_visibility : 'hidden',
   include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux],
-  dependencies : [dep_clock, dep_thread, idep_getopt],
+  dependencies : [dep_clock, dep_thread, idep_getopt, idep_mesautil],
   link_with : [libglsl, libglsl_standalone, libglsl_util],
   build_by_default : with_tools.contains('glsl'),
   install : with_tools.contains('glsl'),
diff --git a/src/compiler/nir/meson.build b/src/compiler/nir/meson.build
index 32ef91294ca..3741316216d 100644
--- a/src/compiler/nir/meson.build
+++ b/src/compiler/nir/meson.build
@@ -327,6 +327,7 @@ _libnir = static_library(
   include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux, inc_compiler, include_directories('../spirv')],
   c_args : [c_msvc_compat_args, no_override_init_args, _libnir_args],
   gnu_symbol_visibility : 'hidden',
+  dependencies : dep_valgrind,
   link_with : libcompiler,
   build_by_default : false,
 )
@@ -339,7 +340,7 @@ idep_nir_headers = declare_dependency(
 
 # Also link with nir
 idep_nir = declare_dependency(
-  dependencies : idep_nir_headers,
+  dependencies : [idep_nir_headers, idep_mesautil],
   link_with : _libnir,
 )
 
diff --git a/src/freedreno/fdl/meson.build b/src/freedreno/fdl/meson.build
index 7f7cdd87eb9..83becbbb33d 100644
--- a/src/freedreno/fdl/meson.build
+++ b/src/freedreno/fdl/meson.build
@@ -28,7 +28,7 @@ libfreedreno_layout = static_library(
   include_directories : [inc_freedreno, inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux],
   c_args : [no_override_init_args],
   gnu_symbol_visibility : 'hidden',
-  dependencies : idep_nir_headers,
+  dependencies : [idep_nir_headers, idep_mesautil],
   build_by_default : false,
 )
 
diff --git a/src/freedreno/ir3/meson.build b/src/freedreno/ir3/meson.build
index 192a8608103..bda6699eda1 100644
--- a/src/freedreno/ir3/meson.build
+++ b/src/freedreno/ir3/meson.build
@@ -112,7 +112,7 @@ libfreedreno_ir3 = static_library(
   include_directories : [inc_freedreno, inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux],
   c_args : [no_override_init_args],
   gnu_symbol_visibility : 'hidden',
-  dependencies : [idep_nir_headers, dep_dl],
+  dependencies : [idep_nir_headers, dep_dl, idep_mesautil],
   build_by_default : false,
 )
 
diff --git a/src/freedreno/rnn/meson.build b/src/freedreno/rnn/meson.build
index 4711d8f3198..b9379e6e239 100644
--- a/src/freedreno/rnn/meson.build
+++ b/src/freedreno/rnn/meson.build
@@ -42,7 +42,7 @@ libfreedreno_rnn = static_library(
     '-DRNN_DEF_PATH="' + rnn_path + '"',
   ],
   gnu_symbol_visibility: 'hidden',
-  dependencies: [ dep_libxml2 ],
+  dependencies: [ dep_libxml2, idep_mesautil ],
   build_by_default: false,
 )
 
diff --git a/src/gallium/auxiliary/meson.build b/src/gallium/auxiliary/meson.build
index b3032a7f7fa..79df2476e2a 100644
--- a/src/gallium/auxiliary/meson.build
+++ b/src/gallium/auxiliary/meson.build
@@ -519,6 +519,7 @@ libgalliumvl_stub = static_library(
   cpp_args : [cpp_msvc_compat_args],
   gnu_symbol_visibility : 'hidden',
   include_directories: [inc_gallium, inc_include, inc_src],
+  dependencies : idep_mesautil,
   build_by_default : false,
 )
 
@@ -529,6 +530,7 @@ libgalliumvl = static_library(
   cpp_args : [cpp_msvc_compat_args],
   gnu_symbol_visibility : 'hidden',
   include_directories : [inc_gallium, inc_include, inc_src],
+  dependencies : idep_mesautil,
   build_by_default : false,
 )
 
@@ -537,6 +539,6 @@ libgalliumvlwinsys = static_library(
   'galliumvlwinsys',
   files_libgalliumvlwinsys,
   include_directories : [inc_gallium, inc_include, inc_loader, inc_src],
-  dependencies : [dep_libdrm, vlwinsys_deps],
+  dependencies : [dep_libdrm, vlwinsys_deps, idep_mesautil],
   build_by_default : false,
 )
diff --git a/src/gallium/auxiliary/pipe-loader/meson.build b/src/gallium/auxiliary/pipe-loader/meson.build
index bc3284e11ac..06a9137850a 100644
--- a/src/gallium/auxiliary/pipe-loader/meson.build
+++ b/src/gallium/auxiliary/pipe-loader/meson.build
@@ -53,7 +53,7 @@ libpipe_loader_static = static_library(
   c_args : [libpipe_loader_defines, '-DGALLIUM_STATIC_TARGETS=1'],
   gnu_symbol_visibility : 'hidden',
   link_with : [libpipe_loader_links],
-  dependencies : [dep_libdrm, idep_xmlconfig],
+  dependencies : [dep_libdrm, idep_xmlconfig, idep_mesautil],
   build_by_default : false,
 )
 
diff --git a/src/gallium/drivers/freedreno/meson.build b/src/gallium/drivers/freedreno/meson.build
index 9a3638239f1..20c0d4fd819 100644
--- a/src/gallium/drivers/freedreno/meson.build
+++ b/src/gallium/drivers/freedreno/meson.build
@@ -240,7 +240,12 @@ libfreedreno = static_library(
   c_args : [freedreno_c_args],
   cpp_args : [freedreno_cpp_args],
   gnu_symbol_visibility : 'hidden',
-  dependencies : [dep_libdrm, idep_nir_headers, idep_libfreedreno_common],
+  dependencies : [
+    dep_libdrm,
+    idep_mesautil,
+    idep_nir_headers,
+    idep_libfreedreno_common
+  ],
 )
 
 driver_freedreno = declare_dependency(
diff --git a/src/gallium/drivers/llvmpipe/meson.build b/src/gallium/drivers/llvmpipe/meson.build
index 7a4766ca4d3..d91260bdaf5 100644
--- a/src/gallium/drivers/llvmpipe/meson.build
+++ b/src/gallium/drivers/llvmpipe/meson.build
@@ -103,7 +103,7 @@ libllvmpipe = static_library(
   cpp_args : [cpp_msvc_compat_args],
   gnu_symbol_visibility : 'hidden',
   include_directories : [inc_gallium, inc_gallium_aux, inc_include, inc_src],
-  dependencies : [ dep_llvm, idep_nir_headers, ],
+  dependencies : [ dep_llvm, idep_nir_headers, idep_mesautil ],
 )
 
 # This overwrites the softpipe driver dependency, but itself depends on the
@@ -111,7 +111,7 @@ libllvmpipe = static_library(
 driver_swrast = declare_dependency(
   compile_args : '-DGALLIUM_LLVMPIPE',
   link_with : libllvmpipe,
-  dependencies : [driver_swrast, dep_llvm],
+  dependencies : [driver_swrast, dep_llvm, idep_mesautil],
 )
 
 if with_tests and with_gallium_softpipe and with_llvm
diff --git a/src/gallium/drivers/nouveau/meson.build b/src/gallium/drivers/nouveau/meson.build
index a7197ddff79..b2a481944dc 100644
--- a/src/gallium/drivers/nouveau/meson.build
+++ b/src/gallium/drivers/nouveau/meson.build
@@ -231,7 +231,7 @@ libnouveau = static_library(
     inc_src, inc_include, inc_gallium, inc_gallium_aux, inc_mapi, inc_mesa,
   ],
   gnu_symbol_visibility : 'hidden',
-  dependencies : [dep_libdrm, dep_libdrm_nouveau, idep_nir_headers],
+  dependencies : [dep_libdrm, dep_libdrm_nouveau, idep_mesautil, idep_nir_headers],
 )
 
 nouveau_compiler = executable(
diff --git a/src/gallium/drivers/panfrost/meson.build b/src/gallium/drivers/panfrost/meson.build
index 7222d40c3c3..36da44cc918 100644
--- a/src/gallium/drivers/panfrost/meson.build
+++ b/src/gallium/drivers/panfrost/meson.build
@@ -64,6 +64,7 @@ libpanfrost = static_library(
   dependencies: [
     dep_thread,
     dep_libdrm,
+    idep_mesautil,
     idep_nir,
     idep_midgard_pack
   ],
diff --git a/src/gallium/frontends/dri/meson.build b/src/gallium/frontends/dri/meson.build
index 21390865fd3..36c9ba07a85 100644
--- a/src/gallium/frontends/dri/meson.build
+++ b/src/gallium/frontends/dri/meson.build
@@ -55,5 +55,8 @@ libdri = static_library(
   ],
   c_args : [libdri_c_args],
   gnu_symbol_visibility : 'hidden',
-  dependencies : dep_libdrm,
+  dependencies : [
+    dep_libdrm,
+    idep_mesautil,
+  ],
 )
diff --git a/src/gallium/frontends/va/meson.build b/src/gallium/frontends/va/meson.build
index c1d6f2a099b..94df9edd1b8 100644
--- a/src/gallium/frontends/va/meson.build
+++ b/src/gallium/frontends/va/meson.build
@@ -37,6 +37,6 @@ libva_st = static_library(
   include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux],
   dependencies : [
     dep_va_headers, dep_x11_xcb, dep_xcb, dep_xcb_dri2, dep_xcb_dri3,
-    dep_libdrm,
+    dep_libdrm, idep_mesautil,
   ],
 )
diff --git a/src/gallium/frontends/vdpau/meson.build b/src/gallium/frontends/vdpau/meson.build
index 6f318df093e..7480ad06720 100644
--- a/src/gallium/frontends/vdpau/meson.build
+++ b/src/gallium/frontends/vdpau/meson.build
@@ -35,5 +35,5 @@ libvdpau_st = static_library(
   include_directories : [
     inc_include, inc_src, inc_util, inc_gallium, inc_gallium_aux,
   ],
-  dependencies : [dep_vdpau, dep_xcb, dep_x11_xcb, dep_xcb_dri2, dep_libdrm],
+  dependencies : [dep_vdpau, dep_xcb, dep_x11_xcb, dep_xcb_dri2, dep_libdrm, idep_mesautil],
 )
diff --git a/src/gallium/frontends/xa/meson.build b/src/gallium/frontends/xa/meson.build
index 3bc1783acb7..935cc8be543 100644
--- a/src/gallium/frontends/xa/meson.build
+++ b/src/gallium/frontends/xa/meson.build
@@ -40,6 +40,7 @@ libxa_st = static_library(
   )],
   c_args : ['-pedantic'],
   gnu_symbol_visibility : 'hidden',
+  dependencies : idep_mesautil,
   include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux],
 )
 
diff --git a/src/gallium/frontends/xvmc/meson.build b/src/gallium/frontends/xvmc/meson.build
index 75a2716a239..cf9b37db659 100644
--- a/src/gallium/frontends/xvmc/meson.build
+++ b/src/gallium/frontends/xvmc/meson.build
@@ -28,7 +28,7 @@ libxvmc_st = static_library(
   include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux],
   dependencies : [
     dep_xvmc, dep_x11_xcb, dep_xcb, dep_xcb_dri2, dep_xcb_dri3, dep_xv,
-    dep_libdrm,
+    dep_libdrm, idep_mesautil,
   ],
 )
 
diff --git a/src/gallium/winsys/freedreno/drm/meson.build b/src/gallium/winsys/freedreno/drm/meson.build
index c563165d776..7ca3d21e792 100644
--- a/src/gallium/winsys/freedreno/drm/meson.build
+++ b/src/gallium/winsys/freedreno/drm/meson.build
@@ -29,5 +29,8 @@ libfreedrenowinsys = static_library(
     inc_freedreno,
   ],
   gnu_symbol_visibility : 'hidden',
-  dependencies : [dep_libdrm],
+  dependencies : [
+    dep_libdrm,
+    idep_mesautil,
+  ],
 )
diff --git a/src/gallium/winsys/nouveau/drm/meson.build b/src/gallium/winsys/nouveau/drm/meson.build
index a6f1f8a6b4f..60671eb37e0 100644
--- a/src/gallium/winsys/nouveau/drm/meson.build
+++ b/src/gallium/winsys/nouveau/drm/meson.build
@@ -25,5 +25,5 @@ libnouveauwinsys = static_library(
     inc_src, inc_include, inc_gallium, inc_gallium_aux, inc_gallium_drivers,
   ],
   gnu_symbol_visibility : 'hidden',
-  dependencies : [dep_libdrm_nouveau],
+  dependencies : [dep_libdrm_nouveau, idep_mesautil],
 )
diff --git a/src/gallium/winsys/sw/dri/meson.build b/src/gallium/winsys/sw/dri/meson.build
index 49a0da82726..d8ba95ddd88 100644
--- a/src/gallium/winsys/sw/dri/meson.build
+++ b/src/gallium/winsys/sw/dri/meson.build
@@ -24,4 +24,5 @@ libswdri = static_library(
   files('dri_sw_winsys.c', 'dri_sw_winsys.h'),
   gnu_symbol_visibility : 'hidden',
   include_directories : [inc_gallium, inc_include, inc_src, inc_gallium_aux],
+  dependencies : idep_mesautil,
 )
diff --git a/src/gallium/winsys/sw/kms-dri/meson.build b/src/gallium/winsys/sw/kms-dri/meson.build
index 36cf568977c..b352a5e8f5b 100644
--- a/src/gallium/winsys/sw/kms-dri/meson.build
+++ b/src/gallium/winsys/sw/kms-dri/meson.build
@@ -24,5 +24,5 @@ libswkmsdri = static_library(
   files('kms_dri_sw_winsys.c', 'kms_dri_sw_winsys.h'),
   gnu_symbol_visibility : 'hidden',
   include_directories : [inc_gallium, inc_include, inc_src, inc_gallium_aux],
-  dependencies : dep_libdrm,
+  dependencies : [dep_libdrm, idep_mesautil],
 )
diff --git a/src/gallium/winsys/sw/null/meson.build b/src/gallium/winsys/sw/null/meson.build
index 32ce1b082d7..0a937dc6cf3 100644
--- a/src/gallium/winsys/sw/null/meson.build
+++ b/src/gallium/winsys/sw/null/meson.build
@@ -23,5 +23,6 @@ libws_null = static_library(
   files('null_sw_winsys.c', 'null_sw_winsys.h'),
   gnu_symbol_visibility : 'hidden',
   include_directories : [inc_gallium, inc_src, inc_gallium_aux, inc_include],
+  dependencies : idep_mesautil,
   build_by_default : false,
 )
diff --git a/src/gallium/winsys/sw/wrapper/meson.build b/src/gallium/winsys/sw/wrapper/meson.build
index f02f5ddf6af..ba1f2d33963 100644
--- a/src/gallium/winsys/sw/wrapper/meson.build
+++ b/src/gallium/winsys/sw/wrapper/meson.build
@@ -23,5 +23,6 @@ libwsw = static_library(
   files('wrapper_sw_winsys.c', 'wrapper_sw_winsys.h'),
   gnu_symbol_visibility : 'hidden',
   include_directories : [inc_gallium, inc_include, inc_src, inc_gallium_aux],
+  dependencies : idep_mesautil,
   build_by_default : false,
 )
diff --git a/src/gallium/winsys/vc4/drm/meson.build b/src/gallium/winsys/vc4/drm/meson.build
index 2e4200ef00f..34b685a0d09 100644
--- a/src/gallium/winsys/vc4/drm/meson.build
+++ b/src/gallium/winsys/vc4/drm/meson.build
@@ -32,6 +32,7 @@ endif
 libvc4winsys = static_library(
   'vc4winsys',
   files('vc4_drm_winsys.c'),
+  dependencies : idep_mesautil,
   include_directories : [
     inc_src, inc_include,
     inc_gallium, inc_gallium_aux, inc_gallium_drivers, inc_gallium_winsys,
diff --git a/src/intel/blorp/meson.build b/src/intel/blorp/meson.build
index 9d2dee9de9c..83fb7d7e1c5 100644
--- a/src/intel/blorp/meson.build
+++ b/src/intel/blorp/meson.build
@@ -34,5 +34,5 @@ libblorp = static_library(
   include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_intel],
   c_args : [no_override_init_args],
   gnu_symbol_visibility : 'hidden',
-  dependencies : [idep_nir_headers, idep_genxml],
+  dependencies : [idep_nir_headers, idep_genxml, idep_mesautil],
 )
diff --git a/src/intel/common/meson.build b/src/intel/common/meson.build
index 66e09672439..2586b4cf956 100644
--- a/src/intel/common/meson.build
+++ b/src/intel/common/meson.build
@@ -48,7 +48,7 @@ libintel_common = static_library(
   c_args : [no_override_init_args],
   gnu_symbol_visibility : 'hidden',
   link_with : [libisl],
-  dependencies : [dep_expat, dep_libdrm, dep_thread, idep_genxml],
+  dependencies : [dep_expat, dep_libdrm, dep_thread, idep_genxml, idep_mesautil],
 )
 
 libintel_extra_dependencies = []
diff --git a/src/intel/compiler/meson.build b/src/intel/compiler/meson.build
index 452f71238ff..8a7279b181f 100644
--- a/src/intel/compiler/meson.build
+++ b/src/intel/compiler/meson.build
@@ -145,7 +145,7 @@ libintel_compiler = static_library(
   include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_intel],
   c_args : [no_override_init_args],
   gnu_symbol_visibility : 'hidden',
-  dependencies : idep_nir_headers,
+  dependencies : [idep_nir_headers, idep_mesautil],
   build_by_default : false,
 )
 
diff --git a/src/intel/dev/meson.build b/src/intel/dev/meson.build
index fa18e1a3bdd..0979da2a5df 100644
--- a/src/intel/dev/meson.build
+++ b/src/intel/dev/meson.build
@@ -31,6 +31,7 @@ libintel_dev = static_library(
   ['intel_dev'],
   [files_libintel_dev, sha1_h],
   include_directories : [inc_include, inc_src, inc_intel],
+  dependencies : idep_mesautil,
   c_args : [no_override_init_args],
   gnu_symbol_visibility : 'hidden',
 )
diff --git a/src/intel/isl/meson.build b/src/intel/isl/meson.build
index c8ca6dfca1a..ad84cc4238c 100644
--- a/src/intel/isl/meson.build
+++ b/src/intel/isl/meson.build
@@ -62,6 +62,7 @@ foreach g : [['40', isl_gen4_files], ['50', []], ['60', isl_gen6_files],
     'isl_gen at 0@'.format(_gen),
     [g[1], isl_gen_files, gen_xml_pack],
     include_directories : [inc_include, inc_src, inc_gallium, inc_intel],
+    dependencies : idep_mesautil,
     c_args : [
       no_override_init_args,
       '-DGEN_VERSIONx10=@0@'.format(_gen)
@@ -91,6 +92,7 @@ isl_tiled_memcpy = static_library(
   include_directories : [
     inc_include, inc_src, inc_mesa, inc_gallium, inc_intel,
   ],
+  dependencies : idep_mesautil,
   c_args : [no_override_init_args, '-msse2'],
   gnu_symbol_visibility : 'hidden',
   extra_files : ['isl_tiled_memcpy.c']
@@ -103,6 +105,7 @@ if with_sse41
     include_directories : [
       inc_include, inc_src, inc_mesa, inc_gallium, inc_intel,
     ],
+    dependencies : idep_mesautil,
     link_args : ['-Wl,--exclude-libs=ALL'],
     c_args : [no_override_init_args, '-msse2', sse41_args],
     gnu_symbol_visibility : 'hidden',
@@ -128,6 +131,7 @@ libisl = static_library(
   [libisl_files, isl_format_layout_c, genX_bits_h],
   include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_intel],
   link_with : [isl_gen_libs, isl_tiled_memcpy, isl_tiled_memcpy_sse41],
+  dependencies : idep_mesautil,
   c_args : [no_override_init_args],
   gnu_symbol_visibility : 'hidden',
 )
diff --git a/src/mesa/drivers/dri/common/meson.build b/src/mesa/drivers/dri/common/meson.build
index c8a19f2bbfd..d2d063a8cc1 100644
--- a/src/mesa/drivers/dri/common/meson.build
+++ b/src/mesa/drivers/dri/common/meson.build
@@ -25,7 +25,7 @@ libdricommon = static_library(
   files('utils.c', 'utils.h', 'dri_util.c', 'dri_util.h'),
   include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux, inc_util],
   gnu_symbol_visibility : 'hidden',
-  dependencies : dep_libdrm,
+  dependencies : [dep_libdrm, idep_mesautil],
   build_by_default : false,
 )
 
diff --git a/src/mesa/drivers/dri/i915/meson.build b/src/mesa/drivers/dri/i915/meson.build
index 7910278fd92..3e9c3ab4dde 100644
--- a/src/mesa/drivers/dri/i915/meson.build
+++ b/src/mesa/drivers/dri/i915/meson.build
@@ -90,5 +90,5 @@ libi915 = static_library(
   include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux, inc_dri_common, inc_util],
   c_args : [no_override_init_args],
   gnu_symbol_visibility : 'hidden',
-  dependencies : [dep_libdrm, dep_libdrm_intel],
+  dependencies : [dep_libdrm, dep_libdrm_intel, idep_mesautil],
 )
diff --git a/src/mesa/drivers/dri/i965/meson.build b/src/mesa/drivers/dri/i965/meson.build
index 68459b1111a..f4bdb38ca15 100644
--- a/src/mesa/drivers/dri/i965/meson.build
+++ b/src/mesa/drivers/dri/i965/meson.build
@@ -142,7 +142,7 @@ foreach v : ['40', '45', '50', '60', '70', '75', '80', '90', '110']
       '-DGEN_VERSIONx10=@0@'.format(v),
     ],
     gnu_symbol_visibility : 'hidden',
-    dependencies : [dep_libdrm, idep_nir_headers],
+    dependencies : [dep_libdrm, idep_nir_headers, idep_mesautil],
   )
 endforeach
 
diff --git a/src/mesa/drivers/dri/nouveau/meson.build b/src/mesa/drivers/dri/nouveau/meson.build
index 3a7de03f6cf..e2c2ad9574d 100644
--- a/src/mesa/drivers/dri/nouveau/meson.build
+++ b/src/mesa/drivers/dri/nouveau/meson.build
@@ -84,5 +84,5 @@ libnouveau_vieux = static_library(
   files_nouveau_vieux,
   include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux, inc_dri_common, inc_util],
   gnu_symbol_visibility : 'hidden',
-  dependencies : [dep_libdrm, dep_libdrm_nouveau],
+  dependencies : [dep_libdrm, dep_libdrm_nouveau, idep_mesautil],
 )
diff --git a/src/mesa/drivers/dri/r200/meson.build b/src/mesa/drivers/dri/r200/meson.build
index aea7c1eded8..6dfad43cd6a 100644
--- a/src/mesa/drivers/dri/r200/meson.build
+++ b/src/mesa/drivers/dri/r200/meson.build
@@ -84,5 +84,5 @@ libr200 = static_library(
   ],
   c_args : ['-DRADEON_R200'],
   gnu_symbol_visibility : 'hidden',
-  dependencies : [dep_libdrm, dep_libdrm_radeon],
+  dependencies : [dep_libdrm, dep_libdrm_radeon, idep_mesautil],
 )
diff --git a/src/mesa/drivers/dri/radeon/meson.build b/src/mesa/drivers/dri/radeon/meson.build
index 5618dac42f7..13dcf149436 100644
--- a/src/mesa/drivers/dri/radeon/meson.build
+++ b/src/mesa/drivers/dri/radeon/meson.build
@@ -80,5 +80,5 @@ libr100 = static_library(
   ],
   c_args : ['-DRADEON_R100'],
   gnu_symbol_visibility : 'hidden',
-  dependencies : [dep_libdrm, dep_libdrm_radeon],
+  dependencies : [dep_libdrm, dep_libdrm_radeon, idep_mesautil],
 )
diff --git a/src/mesa/meson.build b/src/mesa/meson.build
index 4910f97792a..1bf381c13f0 100644
--- a/src/mesa/meson.build
+++ b/src/mesa/meson.build
@@ -731,7 +731,7 @@ libmesa_common = static_library(
   cpp_args : [cpp_msvc_compat_args, _mesa_windows_args],
   gnu_symbol_visibility : 'hidden',
   include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux, inc_libmesa_asm, include_directories('main')],
-  dependencies : idep_nir_headers,
+  dependencies : [idep_nir_headers, idep_mesautil],
   build_by_default : false,
 )
 
@@ -743,7 +743,7 @@ libmesa_classic = static_library(
   gnu_symbol_visibility : 'hidden',
   include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux, inc_libmesa_asm, include_directories('main')],
   link_with : [libmesa_common, libglsl, libmesa_sse41],
-  dependencies : idep_nir_headers,
+  dependencies : [idep_nir_headers, idep_mesautil],
   build_by_default : false,
 )
 
@@ -755,7 +755,7 @@ libmesa_gallium = static_library(
   gnu_symbol_visibility : 'hidden',
   include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux, inc_libmesa_asm, include_directories('main')],
   link_with : [libmesa_common, libglsl, libmesa_sse41],
-  dependencies : [idep_nir_headers, dep_vdpau],
+  dependencies : [idep_nir_headers, dep_vdpau, idep_mesautil],
   build_by_default : false,
 )
 
diff --git a/src/meson.build b/src/meson.build
index 7deb202207a..8547d16dac5 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -35,6 +35,7 @@ libglsl_util = static_library(
     'mesa/program/dummy_errors.c',
   ),
   include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux],
+  dependencies : dep_valgrind,
   gnu_symbol_visibility : 'hidden',
   build_by_default : false,
 )
diff --git a/src/panfrost/lib/meson.build b/src/panfrost/lib/meson.build
index efcc55e2942..57800f836be 100644
--- a/src/panfrost/lib/meson.build
+++ b/src/panfrost/lib/meson.build
@@ -69,6 +69,7 @@ libpanfrost_decode = static_library(
   'panfrost_decode',
   [libpanfrost_decode_files, midgard_pack],
   include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux, inc_panfrost],
+  dependencies : idep_mesautil,
   c_args : [no_override_init_args],
   gnu_symbol_visibility : 'hidden',
   build_by_default : false,
diff --git a/src/panfrost/shared/meson.build b/src/panfrost/shared/meson.build
index 1884846f075..cfe5bfedd82 100644
--- a/src/panfrost/shared/meson.build
+++ b/src/panfrost/shared/meson.build
@@ -31,6 +31,7 @@ libpanfrost_shared = static_library(
   'panfrost_shared',
   [libpanfrost_shared_files],
   include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux],
+  dependencies : idep_mesautil,
   c_args : [no_override_init_args, '-O3'],
   gnu_symbol_visibility : 'hidden',
   build_by_default : false,
diff --git a/src/util/format/meson.build b/src/util/format/meson.build
index 59b2adf870c..7f21941eae6 100644
--- a/src/util/format/meson.build
+++ b/src/util/format/meson.build
@@ -53,7 +53,9 @@ libmesa_format = static_library(
   'mesa_format',
   [files_mesa_format, u_format_table_c, u_format_pack_h],
   include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux],
-  dependencies : dep_m,
+  # NOTE dep_valgrind used here instead of idep_mesautil due to chicken/egg
+  # dependencies between util and util/format
+  dependencies : [dep_m, dep_valgrind],
   c_args : [c_msvc_compat_args],
   gnu_symbol_visibility : 'hidden',
   build_by_default : false
diff --git a/src/util/meson.build b/src/util/meson.build
index a8206751e80..188ff1d3c6c 100644
--- a/src/util/meson.build
+++ b/src/util/meson.build
@@ -196,7 +196,7 @@ _libmesa_util = static_library(
 idep_mesautil = declare_dependency(
   link_with : _libmesa_util,
   include_directories : inc_util,
-  dependencies : [dep_zlib, dep_clock, dep_thread, dep_atomic, dep_m],
+  dependencies : [dep_zlib, dep_clock, dep_thread, dep_atomic, dep_m, dep_valgrind],
 )
 
 xmlconfig_deps = []
diff --git a/src/util/simple_mtx.h b/src/util/simple_mtx.h
index 1bd57ac8001..b44ddf5386a 100644
--- a/src/util/simple_mtx.h
+++ b/src/util/simple_mtx.h
@@ -31,6 +31,14 @@
 
 #if UTIL_FUTEX_SUPPORTED
 
+#if defined(HAVE_VALGRIND) && !defined(NDEBUG)
+#  include <valgrind.h>
+#  include <helgrind.h>
+#  define HG(x) x
+#else
+#  define HG(x)
+#endif
+
 /* mtx_t - Fast, simple mutex
  *
  * While modern pthread mutexes are very fast (implemented using futex), they
@@ -69,11 +77,14 @@ simple_mtx_init(simple_mtx_t *mtx, ASSERTED int type)
    assert(type == mtx_plain);
 
    mtx->val = 0;
+
+   HG(ANNOTATE_RWLOCK_CREATE(mtx));
 }
 
 static inline void
 simple_mtx_destroy(ASSERTED simple_mtx_t *mtx)
 {
+   HG(ANNOTATE_RWLOCK_DESTROY(mtx));
 #ifndef NDEBUG
    mtx->val = _SIMPLE_MTX_INVALID_VALUE;
 #endif
@@ -96,6 +107,8 @@ simple_mtx_lock(simple_mtx_t *mtx)
          c = __sync_lock_test_and_set(&mtx->val, 2);
       }
    }
+
+   HG(ANNOTATE_RWLOCK_ACQUIRED(mtx, 1));
 }
 
 static inline void
@@ -103,6 +116,8 @@ simple_mtx_unlock(simple_mtx_t *mtx)
 {
    uint32_t c;
 
+   HG(ANNOTATE_RWLOCK_RELEASED(mtx, 1));
+
    c = __sync_fetch_and_sub(&mtx->val, 1);
 
    assert(c != _SIMPLE_MTX_INVALID_VALUE);
diff --git a/src/vulkan/util/meson.build b/src/vulkan/util/meson.build
index 649179f5230..687a7d48d10 100644
--- a/src/vulkan/util/meson.build
+++ b/src/vulkan/util/meson.build
@@ -43,7 +43,7 @@ libvulkan_util = static_library(
   'vulkan_util',
   [files_vulkan_util, vk_enum_to_str],
   include_directories : [inc_include, inc_src, inc_gallium],
-  dependencies : vulkan_wsi_deps,
+  dependencies : [vulkan_wsi_deps, idep_mesautil],
   c_args : [vulkan_wsi_args],
   gnu_symbol_visibility : 'hidden',
   build_by_default : false,



More information about the mesa-commit mailing list