diff options
author | Karol Herbst <kherbst@redhat.com> | 2018-12-07 09:47:05 +0100 |
---|---|---|
committer | Karol Herbst <kherbst@redhat.com> | 2018-12-09 04:43:17 +0100 |
commit | a28ff2229513d68ae39e2ea927d21b327a356348 (patch) | |
tree | 30f396ad2511e29950fd249efc95f4822a891fd4 | |
parent | cc6a5e937b45bc54a990f8b25b8bc57de35feae9 (diff) |
nv50/ir: initialize relDegree staticly
this race condition is pretty harmless, but also pretty trivial to fix
Signed-off-by: Karol Herbst <kherbst@redhat.com>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
-rw-r--r-- | src/gallium/drivers/nouveau/codegen/nv50_ir_ra.cpp | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_ra.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_ra.cpp index 1e08f2176c5..322b79fe62e 100644 --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_ra.cpp +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_ra.cpp @@ -803,7 +803,21 @@ private: Function *func; Program *prog; - static uint8_t relDegree[17][17]; + struct RelDegree { + uint8_t data[17][17]; + + RelDegree() { + for (int i = 1; i <= 16; ++i) + for (int j = 1; j <= 16; ++j) + data[i][j] = j * ((i + j - 1) / j); + } + + const uint8_t* operator[](std::size_t i) const { + return data[i]; + } + }; + + static const RelDegree relDegree; RegisterSet regs; @@ -815,7 +829,7 @@ private: std::list<ValuePair> mustSpill; }; -uint8_t GCRA::relDegree[17][17]; +const GCRA::RelDegree GCRA::relDegree; GCRA::RIG_Node::RIG_Node() : Node(NULL), next(this), prev(this) { @@ -1155,11 +1169,6 @@ GCRA::GCRA(Function *fn, SpillCodeInserter& spill) : spill(spill) { prog = func->getProgram(); - - // initialize relative degrees array - i takes away from j - for (int i = 1; i <= 16; ++i) - for (int j = 1; j <= 16; ++j) - relDegree[i][j] = j * ((i + j - 1) / j); } GCRA::~GCRA() |