summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGrazvydas Ignotas <[email protected]>2017-03-05 23:23:25 +0200
committerMatt Turner <[email protected]>2017-03-06 11:07:20 -0800
commitb384c23b9e804916f125354e06c735bd3bb22811 (patch)
tree954b253540e10783f32879f0fa4eeb4b59012374
parent290d7e892dfa6d04767142f4f6d7ec689933a105 (diff)
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 <[email protected]>
-rw-r--r--src/intel/common/gen_debug.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/intel/common/gen_debug.c b/src/intel/common/gen_debug.c
index 858f04db432..96efdab65f7 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);
}