Signed-off-by: Samuel Pitoiset <samuel.pitoi...@gmail.com> --- .../drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+)
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 053df8b..782d068 100644 --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp @@ -75,6 +75,7 @@ private: void emitLOAD(const Instruction *); void emitSTORE(const Instruction *); void emitMOV(const Instruction *); + void emitMEMBAR(const Instruction *); void emitINTERP(const Instruction *); void emitAFETCH(const Instruction *); @@ -1687,6 +1688,23 @@ CodeEmitterGK110::emitMOV(const Instruction *i) } } +void CodeEmitterGK110::emitMEMBAR(const Instruction *i) +{ + code[0] = 0x001c0000; + code[1] = 0x7cc00000; + + switch (NV50_IR_SUBOP_MEMBAR_SCOPE(i->subOp)) { + case NV50_IR_SUBOP_MEMBAR_CTA: code[0] |= 0x002; break; + case NV50_IR_SUBOP_MEMBAR_GL: code[0] |= 0x402; break; + default: + code[0] |= 0x802; + assert(NV50_IR_SUBOP_MEMBAR_SCOPE(i->subOp) == NV50_IR_SUBOP_MEMBAR_SYS); + break; + } + + emitPredicate(i); +} + bool CodeEmitterGK110::emitInstruction(Instruction *insn) { @@ -1918,6 +1936,9 @@ CodeEmitterGK110::emitInstruction(Instruction *insn) case OP_BAR: emitBAR(insn); break; + case OP_MEMBAR: + emitMEMBAR(insn); + break; case OP_PHI: case OP_UNION: case OP_CONSTRAINT: -- 2.6.2 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev