intel: Add a macro for printing a debug warning once.
authorEric Anholt <eric@anholt.net>
Fri, 12 Oct 2012 19:41:56 +0000 (12:41 -0700)
committerEric Anholt <eric@anholt.net>
Tue, 16 Oct 2012 20:13:44 +0000 (13:13 -0700)
There are a number of places where some obscure piece of the code is not
currently worth fixing, and we have some workaround behavior available.  It's
nicer for users to do some lame workaround than to just assert, but without
asserts we never knew when the workaround was at fault.

This should give us a nice compromise: Execute the workaround, but mention
that the obscure workaround was hit.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/drivers/dri/intel/intel_context.h

index b732696bdafe7b1f889715607005a54cd66e0714..eeefadffb299ee6eff89711d3cb3851b07cda587 100644 (file)
@@ -483,6 +483,17 @@ extern int INTEL_DEBUG;
                dbg_printf(__VA_ARGS__);                        \
 } while(0)
 
+#define WARN_ONCE(cond, fmt...) do {                            \
+   if (unlikely(cond)) {                                        \
+      static bool _warned = false;                              \
+      if (!_warned) {                                           \
+         fprintf(stderr, "WARNING: ");                          \
+         fprintf(stderr, fmt);                                  \
+         _warned = true;                                        \
+      }                                                         \
+   }                                                            \
+} while (0)
+
 #define PCI_CHIP_845_G                 0x2562
 #define PCI_CHIP_I830_M                        0x3577
 #define PCI_CHIP_I855_GM               0x3582