Mesa (master): i965: don't require 64bit cmpxchg

Matt Turner mattst88 at kemper.freedesktop.org
Mon Mar 6 19:07:47 UTC 2017


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

Author: Grazvydas Ignotas <notasas at gmail.com>
Date:   Sun Mar  5 23:23:25 2017 +0200

i965: don't require 64bit cmpxchg

There are still some distributions trying to support unfortunate people
with old or exotic CPUs that don't have 64bit atomic operations. The
only thing preventing compile of the Intel driver for them seems to be
initialization of a debug variable.

v2: use call_once() instead of unsafe code, as suggested by Matt Turner

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=93089
Signed-off-by: Grazvydas Ignotas <notasas at gmail.com>

---

 src/intel/common/gen_debug.c | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/src/intel/common/gen_debug.c b/src/intel/common/gen_debug.c
index 858f04d..96efdab 100644
--- a/src/intel/common/gen_debug.c
+++ b/src/intel/common/gen_debug.c
@@ -33,8 +33,8 @@
 
 #include "common/gen_debug.h"
 #include "util/macros.h"
-#include "util/u_atomic.h" /* for p_atomic_cmpxchg */
 #include "util/debug.h"
+#include "c11/threads.h"
 
 uint64_t INTEL_DEBUG = 0;
 
@@ -101,9 +101,17 @@ intel_debug_flag_for_shader_stage(gl_shader_stage stage)
    return flags[stage];
 }
 
+static void
+brw_process_intel_debug_variable_once(void)
+{
+   INTEL_DEBUG = parse_debug_string(getenv("INTEL_DEBUG"), debug_control);
+}
+
 void
 brw_process_intel_debug_variable(void)
 {
-   uint64_t intel_debug = parse_debug_string(getenv("INTEL_DEBUG"), debug_control);
-   (void) p_atomic_cmpxchg(&INTEL_DEBUG, 0, intel_debug);
+   static once_flag process_intel_debug_variable_flag = ONCE_FLAG_INIT;
+
+   call_once(&process_intel_debug_variable_flag,
+             brw_process_intel_debug_variable_once);
 }




More information about the mesa-commit mailing list