On Wed, Nov 26, 2014 at 10:39 AM, Matt Turner <matts...@gmail.com> wrote:
> --- > src/mesa/drivers/dri/i965/brw_eu_compact.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/src/mesa/drivers/dri/i965/brw_eu_compact.c > b/src/mesa/drivers/dri/i965/brw_eu_compact.c > index 7117890..8e33bcb 100644 > --- a/src/mesa/drivers/dri/i965/brw_eu_compact.c > +++ b/src/mesa/drivers/dri/i965/brw_eu_compact.c > @@ -75,6 +75,7 @@ > #include "brw_context.h" > #include "brw_eu.h" > #include "intel_asm_annotation.h" > +#include "util/u_atomic.h" /* for p_atomic_cmpxchg */ > > static const uint32_t g45_control_index_table[32] = { > 0b00000000000000000, > @@ -1247,6 +1248,10 @@ update_gen4_jump_count(struct brw_context *brw, > brw_inst *insn, > void > brw_init_compaction_tables(struct brw_context *brw) > { > + static bool initialized; > + if (initialized || p_atomic_cmpxchg(&initialized, false, true) != > false) > + return; > + > Sure, this protects the initialized flag, but what happens if a thread tries to use compaction after someone else starts initializing but before they've finished? Same comment for the other two patches that do more-or-less the same thing. --Jason > assert(g45_control_index_table[ARRAY_SIZE(g45_control_index_table) - > 1] != 0); > assert(g45_datatype_table[ARRAY_SIZE(g45_datatype_table) - 1] != 0); > assert(g45_subreg_table[ARRAY_SIZE(g45_subreg_table) - 1] != 0); > -- > 2.0.4 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev >
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev