Signed-off-by: Samuel Pitoiset <samuel.pitoi...@gmail.com> --- .../drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-)
diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp index 21138b1..46caa3c 100644 --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp @@ -1279,8 +1279,26 @@ CodeEmitterGK110::emitBAR(const Instruction *i) emitPredicate(i); - srcId(i->src(0), 10); - srcId(i->src(1), 23); + // barrier id + if (i->src(0).getFile() == FILE_GPR) { + srcId(i->src(0), 10); + } else { + ImmediateValue *imm = i->getSrc(0)->asImm(); + assert(imm); + code[0] |= imm->reg.data.u32 << 10; + code[1] |= 0x8000; + } + + // thread count + if (i->src(1).getFile() == FILE_GPR) { + srcId(i->src(1), 23); + } else { + ImmediateValue *imm = i->getSrc(0)->asImm(); + assert(imm); + code[0] |= imm->reg.data.u32 << 23; + code[1] |= imm->reg.data.u32 >> 9; + code[1] |= 0x4000; + } } void CodeEmitterGK110::emitMEMBAR(const Instruction *i) -- 2.7.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev