Mesa (master): nvc0/ir: support 2d constbuf indexing
Ilia Mirkin
imirkin at kemper.freedesktop.org
Thu Jul 24 12:31:40 UTC 2014
Module: Mesa
Branch: master
Commit: 0ddc28b026688df79e54d3af1d7914ff04b12fed
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=0ddc28b026688df79e54d3af1d7914ff04b12fed
Author: Ilia Mirkin <imirkin at alum.mit.edu>
Date: Sun Jul 6 02:06:04 2014 -0400
nvc0/ir: support 2d constbuf indexing
Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
---
.../drivers/nouveau/codegen/nv50_ir_lowering_nvc0.cpp | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_nvc0.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_nvc0.cpp
index cc4808c..f010767 100644
--- a/src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_nvc0.cpp
+++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_nvc0.cpp
@@ -1610,6 +1610,20 @@ NVC0LoweringPass::visit(Instruction *i)
i->op = OP_VFETCH;
assert(prog->getType() != Program::TYPE_FRAGMENT); // INTERP
}
+ } else if (i->src(0).getFile() == FILE_MEMORY_CONST) {
+ if (i->src(0).isIndirect(1)) {
+ Value *ptr;
+ if (i->src(0).isIndirect(0))
+ ptr = bld.mkOp3v(OP_INSBF, TYPE_U32, bld.getSSA(),
+ i->getIndirect(0, 1), bld.mkImm(0x1010),
+ i->getIndirect(0, 0));
+ else
+ ptr = bld.mkOp2v(OP_SHL, TYPE_U32, bld.getSSA(),
+ i->getIndirect(0, 1), bld.mkImm(16));
+ i->setIndirect(0, 1, NULL);
+ i->setIndirect(0, 0, ptr);
+ i->subOp = NV50_IR_SUBOP_LDC_IS;
+ }
}
break;
case OP_ATOM:
More information about the mesa-commit
mailing list