Mesa (master): nir: Lock around validation fail shader dumping

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Sat Mar 30 02:58:02 UTC 2019


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

Author: Jason Ekstrand <jason at jlekstrand.net>
Date:   Wed Mar 27 10:13:28 2019 -0500

nir: Lock around validation fail shader dumping

This prevents getting mixed-up results if a multi-threaded app has two
validation errors in different threads.

Reviewed-by: Timothy Arceri <tarceri at itsqueeze.com>

---

 src/compiler/nir/nir_validate.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/src/compiler/nir/nir_validate.c b/src/compiler/nir/nir_validate.c
index 80f397098a2..5f812974720 100644
--- a/src/compiler/nir/nir_validate.c
+++ b/src/compiler/nir/nir_validate.c
@@ -26,6 +26,7 @@
  */
 
 #include "nir.h"
+#include "c11/threads.h"
 #include <assert.h>
 
 /*
@@ -1180,11 +1181,18 @@ destroy_validate_state(validate_state *state)
    _mesa_hash_table_destroy(state->errors, NULL);
 }
 
+mtx_t fail_dump_mutex = _MTX_INITIALIZER_NP;
+
 static void
 dump_errors(validate_state *state, const char *when)
 {
    struct hash_table *errors = state->errors;
 
+   /* Lock around dumping so that we get clean dumps in a multi-threaded
+    * scenario
+    */
+   mtx_lock(&fail_dump_mutex);
+
    if (when) {
       fprintf(stderr, "NIR validation failed %s\n", when);
       fprintf(stderr, "%d errors:\n", _mesa_hash_table_num_entries(errors));
@@ -1203,6 +1211,8 @@ dump_errors(validate_state *state, const char *when)
       }
    }
 
+   mtx_unlock(&fail_dump_mutex);
+
    abort();
 }
 




More information about the mesa-commit mailing list