summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp
diff options
context:
space:
mode:
authorIlia Mirkin <imirkin@alum.mit.edu>2014-03-14 06:20:36 -0400
committerIlia Mirkin <imirkin@alum.mit.edu>2014-03-18 05:56:55 -0400
commit34bf5e27c6d798bcaa63c7541ecea1d3e99fdd3b (patch)
tree609d7848192a3e6a4b8139f7fe175779eb4b1f17 /src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp
parent3c40be2615872b9f9c95f6b551b37498561273d2 (diff)
nv50/ir/gk110: add 64/128-bit fetch/export support
Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Diffstat (limited to 'src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp')
-rw-r--r--src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp4
1 files changed, 4 insertions, 0 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 7c60837eb68..d248a1a8c1b 100644
--- a/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp
+++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp
@@ -1217,10 +1217,12 @@ CodeEmitterGK110::emitPFETCH(const Instruction *i)
void
CodeEmitterGK110::emitVFETCH(const Instruction *i)
{
+ unsigned int size = typeSizeof(i->dType);
uint32_t offset = i->src(0).get()->reg.data.offset;
code[0] = 0x00000002 | (offset << 23);
code[1] = 0x7ec00000 | (offset >> 9);
+ code[1] |= (size / 4 - 1) << 18;
#if 0
if (i->perPatch)
@@ -1239,10 +1241,12 @@ CodeEmitterGK110::emitVFETCH(const Instruction *i)
void
CodeEmitterGK110::emitEXPORT(const Instruction *i)
{
+ unsigned int size = typeSizeof(i->dType);
uint32_t offset = i->src(0).get()->reg.data.offset;
code[0] = 0x00000002 | (offset << 23);
code[1] = 0x7f000000 | (offset >> 9);
+ code[1] |= (size / 4 - 1) << 18;
#if 0
if (i->perPatch)